簡體   English   中英

查找所有緊密連接的元素

[英]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.

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