深度優先搜索與廣度優先搜索

有兩種經常使用的方法可用來搜索圖:即深度優先搜索和廣度優先搜索。它們最終都會到達全部連通的頂點。深度優先搜索經過棧來實現,而廣度優先搜索經過隊列來實現。算法

深度優先搜索:.net

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

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

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

 

參考:方法

http://blog.csdn.net/andyelvis/article/details/1728378vi

相關文章
相關標籤/搜索