本文的目地是對算法導論中深度優先的內容作一筆記,總體更像該章節的剪輯以及總結。算法
與圖的廣度優先遍歷比較:spa
廣度優先遍歷更多的是可以反應圖中點的距離,而深度優先遍歷則主要是反映圖的形狀。
搜索
括號定理遍歷
在一個(有向或無向)圖G=(V,E)的任何深度優先搜索中,任意兩頂點u, v 知足下列性質im
區間[d[u], f[u]]和區間[d[v], f[v]]徹底不相交,且都不是對方的後裔總結
區間[d[u], f[u]] 徹底包含於區間d[[v], f[v]]中,且 u是 v的後裔img
區間[d[v], f[v]] 徹底包含於區間d[[u], f[u]]中,且 v是 u的後裔di
後裔區間嵌套display
在一個(有向或無向)圖G=(V,E)的任何深度優先搜索中,任意兩頂點u, v ,若v是u的後裔則算法導論
d[u] < d[v] < f[v] < f[u]
白色路徑定理
在一個(有向或無向)圖G=(V,E)的任何深度優先搜索中,任意兩頂點u, v ,若v是u的後裔則當且僅當於時刻的d[u]發現u時,能夠從頂點u出發通過一條白色路徑到達v
定義
樹邊:在深度優先森林Gπ總共的邊,若是頂點v是探尋邊(u,v)時首次被發現的,那麼(u,v)就是一條樹邊
反向邊:深度優先樹中,鏈接頂點u到它的某一祖先的那些邊。有向圖出現的自環也是反向邊
正向邊:在深度優先搜索中,鏈接u和某個後裔的非樹邊(u,v)
交叉邊:同一棵深度優先搜索樹的兩個頂點之間,條件是其中一個頂點不是另外一個頂點的祖先。也能夠在不一樣度優先搜索樹之間的頂點之間
性質
樹邊或前向邊,當且僅當d[u]<d[v]<f[v]<f[u]
反向邊,當且僅當d[v]<=d[u]<f[u]<=f[v]
交叉邊,當且僅當d[v]<f[v]<d[u]<f[u]
結合僞代碼顏色變化分析
對於每條邊 (u,v),當該邊第一次被搜索到時,根據點v的顏色進行區分
白色: 樹邊
灰色: 反向邊
黑色: 正向邊或交叉邊