首頁 >常見問題 >深度優先遍歷與廣度優先遍歷

深度優先遍歷與廣度優先遍歷

(*-*)浩
(*-*)浩原創
2019-12-19 09:29:0216026瀏覽

深度優先遍歷與廣度優先遍歷

深度優先遍歷

假設給定圖G的初態是所有頂點均未曾造訪過。在G中任選一頂點v為初始出發點(源點),則深度優先遍歷可定義如下:首先訪問出發點v,並將其標記為已訪問過;然後依次從v出發搜尋v的每個鄰接點w。 (推薦學習:web前端視訊教學

若w未曾造訪過,則以w為新的出發點繼續進行深度優先遍歷,直至圖中所有和來源點v有路徑相通的頂點(亦稱為從源點可達的頂點)均已被存取為止。

若此時圖中仍有未訪問的頂點,則另選一個尚未訪問的頂點作為新的來源點重複上述過程,直至圖中所有頂點均已被訪問為止。

圖的深度優先遍歷類似於樹的前序遍歷。所採用的搜尋方法的特點是盡可能先對縱深方向進行搜尋。這種搜尋方法稱為深度優先搜尋(Depth-First Search)。相應地,用此方法遍歷圖就很自然地稱之為圖的深度優先遍歷。

說白了深度優先遍歷就是一種不撞南牆不會頭的演算法,他會把一條路走完之後再回溯到有分叉的節點繼續遍歷。

如圖:

深度優先遍歷與廣度優先遍歷

#廣度優先遍歷

從圖中某個頂點V0出發,並訪問此頂點;

從V0出發,訪問V0的各個未曾訪問的鄰接點W1,W2,…,Wk;然後,依次從W1,W2,…,Wk出發訪問各自未被訪問的鄰接點;

重複步驟2,直到全部頂點都被訪問為止。

這是一種層層遞進的演算法,與樹的層序遍歷類似。

在廣度優先搜尋時,會從起點開始「一層一層」擴展的方法來遍歷,擴展時每發現一個點就將這個點加入到隊列,直到整張圖都被遍歷過位置。

深度優先遍歷與廣度優先遍歷

以上是深度優先遍歷與廣度優先遍歷的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn