2016-10-23 40 views
1

我在執行(不是代碼)DFS時遇到了麻煩,該算法結合雙組分算法來查找圖中的關節點,該算法在我的計算機科學講座中提出,沒有把握實施。 (只是爲了澄清我知道如何實現DFS)讓我解釋一下:我們給出了一個圖表,我們必須執行一個DFS來查找所有關節點,使用後面的數字和DFS號碼。我的主要問題是使用給定的算法找到每個節點的背部編號。使用DFS和雙組分算法查找關節點

我們給了一個教程作爲練習來實現算法,我做了它,但我不知道它是否正確。有人可以檢查我是否做得正確,如果可能的話糾正我。教程問題如下

使用類中的算法做一個 深度優先搜索樹的算法。對於每個頂點發現:

•在DFS-數

•背號

•它是否是一個關節點 enter image description here 算法和我的解決辦法是: enter image description here 感謝。希望有人可以幫助

+0

你爲什麼認爲J應該是一個清晰點?它不是一個。 B也不是一個關節點。 – kraskevich

+0

因爲根據關節點條件15> 14,因此它是一個關節點,但我知道這是不正確的,因爲如果我們刪除J,它不會斷開圖 – amine

+0

您有dfs-time = 14和back-數= 12。根據你的算法,它不是關節點,它確實不是一個表達點。 – kraskevich

回答

0

你算法幾乎是正確的。處理不當的唯一情況是根:當且僅當在dfs樹中有兩個或更多子項時,根纔是關節點。

+0

謝謝,關於在這種情況下的根源,它是一種表達,因爲它確實有兩個孩子,那麼爲什麼它處理不當? – amine

+0

@胺dfs-tree中的兩個孩子,而不是原始圖。如果只有一個孩子(這是你問題中的圖形的情況),即使對於任何孩子,Back(w)> = dfs-time(root)也不是一個清晰點。 – kraskevich