圖的遍歷
深度優先遍歷DFS
很想走迷宮,我們爲了不重複的走,可以約定一個右手原則:
在沒有碰到頂點的情況下,分叉路口始終是向右手邊走,每路過一個頂點就做一個標記。
很像是遞歸,也很像是樹的前序遍歷。
遍歷順序如下圖:
藍色是遵循右手原則走出來的,紅色是已經走過重複了,不會再走的。只看藍色的路線,ABCDEFGH(GFED)I,括號爲發現ED已經重複而返回退到D直到出現I。
藍色的樹是前序遍歷。
遞歸就是給一個條件,讓程序自己向深處探索。
馬踏棋盤問題
哈密爾頓路徑
廣度優先遍歷BFS
和深度優先不一樣,廣度優先是從最明顯到次明顯,而不是深度排查一個地方,再深度排查另一個。
這樣的排序和深度的那個圖一個樣子,但是整齊了很多。
很像層序遍歷
可以用隊列來實現,遍歷的順序是出隊列的順序。
最小生成樹
通信網路和電路板
普利姆算法
克魯斯卡爾算法