[英]Find all strongly connected elements
我有一個看起來像這樣的清單:
elements=[(1,2),(1,3),(2,3),(3,4),(4,5),(3,5),(5,6),(12,13)]
我想列出所有緊密聯系的精英。
對於給定的列表,元素將為: [[1,2,3],[3,4,5]]
請建議我該怎么做
請使用Kosaraju的算法在任何圖中查找強連接的組件。 我想您可能會在geeksforgeeks網站上找到它。 它像這樣。
假設有5個節點,0到4。0,1,2是強連接的,3和4是強連接的。 3連接說0。
然后算法就可以了:(來源: https : //www.geeksforgeeks.org/strongly-connected-components/ )
1)創建一個空棧'S'並進行圖的DFS遍歷。 在DFS遍歷中,在為頂點的相鄰頂點調用遞歸DFS之后,將頂點推入堆棧。 在上圖中,如果我們從頂點0開始DFS,則堆棧中的頂點為1,2,4,3,0。
2)反轉所有圓弧以獲得轉置圖。
3)當S不為空時,從S逐一彈出頂點。 讓彈出的頂點為“ v”。 將v作為源並執行DFS(調用DFSUtil(v))。 從v開始的DFS會打印v的強連接部分。在上面的示例中,我們以0、3、4、2、1(從堆棧中彈出的一個)順序處理頂點。
編輯:無向圖的SCC沒有意義。 理論上,僅針對有向圖定義了SCC。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.