深度與廣度

深度優先搜索經過棧來實現,而廣度優先搜索經過隊列來實現。  算法

深度優先搜索:
下面圖中的數字顯示了深度優先搜索頂點被訪問的順序。隊列

爲了實現深度優先搜索,首先選擇一個起始頂點並須要遵照三個規則:
(1) 若是可能,訪問一個鄰接的未訪問頂點,標記它,並把它放入棧中。
(2) 當不能執行規則1時,若是棧不空,就從棧中彈出一個頂點。
(3) 若是不能執行規則1和規則2,就完成了整個搜索過程。搜索

廣度優先搜索:
在深度優先搜索中,算法表現得好像要儘快地遠離起始點似的。相反,在廣度優先搜索中,算法好像要儘量地靠近起始點。它首先訪問起始頂點的全部鄰接點,而後再訪問較遠的區域。它是用隊列來實現的。
下面圖中的數字顯示了廣度優先搜索頂點被訪問的順序。數字

實現廣度優先搜索,也要遵照三個規則: (1) 訪問下一個將來訪問的鄰接點,這個頂點必須是當前頂點的鄰接點,標記它,並把它插入到隊列中。 (2) 若是由於已經沒有未訪問頂點而不能執行規則1時,那麼從隊列頭取一個頂點,並使其成爲當前頂點。 (3) 若是由於隊列爲空而不能執行規則2,則搜索結束。  

相關文章
相關標籤/搜索