簡體   English   中英

在有向圖中找到強連接的組件?

[英]Finding strongly connected component in a directed Graph?

我正在關注Skiena的算法設計手冊。 我正在努力的實現是用於尋找牢固連接的組件。 但是,書中有一個我不理解的說法是“ 只要v的最低可達頂點是v,就會發現一個新的強連接組件”。 例如,如下所示的有向圖

帶連接組件的有向圖

在此,上面的聲明對於頂點“ V3”是正確的,並且將為我們提供強連接的組件,但是對於不提供任何強連接的組件的V2,也可以使用該聲明。

我的問題是上述陳述如何始終成立?

我不能將它與我的Skienna算法設計手冊的第一個版本聯系在一起,但是如果我認為這是該算法( http://en.wikipedia.org/wiki/Kosaraju%27s_algorithm ),這是一個由兩部分組成的算法的第二部分,第一部分的效果是,在您的圖表中,將從V3開始進行深度優先搜索,然后從V2中刪除該組件,然后再進行深度優先搜索。從V1開始。

第一部分運行連續的深度優先搜索,並按深度優先搜索最后一次訪問節點的順序對節點進行編號。 您正在描述的第二部分將按照分配的數字的降序啟動深度優先搜索,並且節點之間的邊將反轉。

如果A可以到達B,但是B不能到達A,則如果第一部分在B之前先到達A,它將以該深度優先訪問B,且數字A大於B,因為它在退出B后退出A。 B在A之前也會比B大A,因為它不會從B到達A,因此在以后的深度優先搜索中將訪問A。

因此,如果A可以到達B而B不能到達A,則在第二遍(邊反轉)中B可以到達A但A不能到達B。它將從A開始並輸出其強分量,然后再輸出從B開始並輸出其強分量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM