使用將節點標記爲未訪問,已發現或已完成(或白色,灰色,黑色)的遞歸DFS,可以根據三類(後緣,樹/前緣,交叉邊緣)對邊緣進行分類。迭代DFS中的邊緣分類
我們是否也可以使用算法的迭代版本對比邊緣(參見Depth-First Search)?
procedure DFS-iterative(G,v):
2 let S be a stack
3 S.push(v)
4 while S is not empty
5 v = S.pop()
6 if v is not labeled as discovered:
7 label v as discovered
8 for all edges from v to w in G.adjacentEdges(v) do
9 S.push(w)
該版本只使用兩個類別,未訪問和發現。在所有相鄰節點被推入堆棧之後,我們可以將節點標記爲完成,但它不會給出預期的結果。 (澄清):問題是,我們可以修改上面給出的DFS的迭代版本,以便將邊緣分類爲樹/前緣,交叉邊緣和後緣,就像它通常用遞歸版本完成的一樣利用節點標籤/顏色?
我不確定你的問題是什麼。你可以重寫嗎? – xenteros
你可以請包括類別的定義。 – Yerken
據我瞭解,類別的定義如下,取自[here](https://en.wikipedia.org/wiki/Depth-first_search):_forward edges_從樹的一個節點指向它的一個後裔,_back edges_從一個節點指向其祖先之一,_cross邊緣_都沒有。 – Codor