檢測週期在圖
回答
從視圖多個數學點:
輸入:圖形G =(V,E)
假設你的圖形是不相交(有每兩個頂點之間存在路徑)
計算spanning tree T中的曲線圖的(有容易的算法來做到這一點)
令E」是的一個子集E,它們不屬於生成樹T.對於E'中的每個邊e,它對樹的添加只產生一個單獨的循環。讓我們把所有這些循環置於集合B中。
我們在圖中定義了一個binary cycle space循環。在該空間中,可以添加兩個循環。加法僅僅是邊緣上的獨佔總和。
循環組B是一個「循環基礎」。在圖形中,每隔一個週期可以形成爲週期的線性組合B.
這樣,你在你的圖獲得所有可能的週期。
警告:如果輸入圖有v頂點和Ë邊緣則有2 ^(Ë - v +1)-1不同的週期!這相當多 - 你可能不想明確地寫出所有這些。
我認爲DFS會做你的工作怎麼把我們紀念訪問節點,如果我們發現該節點再有一個週期
這種方法是不正確的。就拿這個例子 '1 - > 2 2 - > 3 1 - > 3' 現在,在這種情況下,我們做的DFS(1)。這將會調用dfs(2)並將2標記爲已訪問。這將調用dfs(3)並將3標記爲已訪問。 現在DFS(3)將再次從節點1調用,因爲它已經訪問了,你會錯誤地推斷,它的一個週期 – 2012-04-03 12:16:58
A BFS alg。也沒關係。我相信它比DFS更容易實現,因爲它將訪問/訪問節點保持在隊列中。檢查某個節點是否已經訪問過很容易。
- 1. 在圖中檢測週期的條件
- 2. 圖:在一個週期中檢測週期
- 3. 週期檢測含有多個週期
- 4. 圖算法檢測偶數週期
- 5. 週期檢測算法
- 6. 使用sql檢測週期
- 7. cp:檢測到週期:
- 8. scons檢測依賴週期
- 9. 在單向鏈表中檢測週期
- 10. iOS檢測日期是否在上週
- 11. 插入期間檢測週期
- 12. 在圖中檢測週期(使用三種顏色機制)
- 13. 在圖中應用訪問者模式來檢測週期
- 14. JAXB:在對象圖中檢測到週期
- 15. 使用DFS在無向圖中檢測週期
- 16. 使用密碼在neo4j屬性圖中檢測週期
- 17. 圖:如何使用DFS檢測非直接圖中的週期
- 18. 布倫特週期檢測算法
- 19. 檢測正弦波的頻率/週期
- 20. 城堡溫莎:週期檢測配置
- 21. C#UWP工具包ImageEx週期檢測
- 22. Angular 2自動更改檢測週期
- 23. Hakyll說:「檢測到依賴週期:...」
- 24. 格拉夫發現和週期檢測
- 25. 檢測週期爲SQL約束
- 26. C#中有向圖中檢測週期的簡單實現
- 27. 如何檢測定向圖中週期的循環
- 28. Node.js:打印具有周期檢測的對象圖嗎?
- 29. 使用DFS檢測有向圖中的週期?
- 30. 在無向圖的DFS-XOR週期檢測中去除假週期算法結果
我想那裏的問題,雖然mared作爲「回答」它沒有正確回答。 – CygnusX1 2011-03-01 21:23:48
@Cygn這不是允許dups的理由。只要去那裏,通過發表意見來「加熱」這個問題,說明 – 2011-03-01 22:22:09
有一個實現來檢測名爲'networkx'的python庫中的圖中的所有周期。 **這真的很簡單!** 我在下面的帖子中給出了詳細的答案:http://stackoverflow.com/questions/546655/finding-all-cycles-in-graph/33956957#33956957 – fernandosjp 2016-10-28 14:18:10