如何找到圖表中最長的路徑?我以爲我可以使用深度優先搜索,但我找不到任何更簡單的實施?圖表最長路徑
圖表最長路徑
回答
由於brainjam在評論中指出這是NP完整。如果圖是非循環的,它只是多項式。如果它的DAG甚至是線性的。請參閱the wikipage瞭解更多信息。
爲一個相當簡單的平面圖很容易實現獲取所有路徑(=>獲取最長的路徑)。看看這裏: http://stackoverflow.com/questions/2500877/count-of-distinct-acyclic-paths-from-aa-b-to-ac-d/2532646#2532646 (並只使用路徑是最長的),這應該給你一個關於如何用一般圖表做的事情的想法:只遍歷當前頂點的所有邊而不是4 nextCell()調用 – Karussell 2010-03-28 12:02:09
嘗試使用用於向圖拓撲排序之間的路徑的長度/重量。 它是專爲任務調度的目的意...
如果它是一個DAG G =(V,E),你可以簡單的做一個拓撲排序。
然後您將某個節點標記爲s和t。
然後你可以使用動態編程,其中opt(I)= max(opt(j)+1)
其中j
邊緣(J,I)是E.
只需設置選擇(S)= 0和他人-INF和S前後忽略節點t的拓撲排序(你不能從s到達這個節點,並且在你傳遞t之後,你不能返回)。
請注意,其工作只適用於DAG(定向非循環圖)。
請注意,如果它不是DAG,那麼您可以將每條邊乘以-1,然後使用Bellman Ford,但是(!)如果您有負循環,它將不起作用。
- 1. 最長路徑
- 2. 有序圖中最長的路徑
- 3. 計算最長路徑
- 4. Deduce最長的路徑
- 5. 如何在圖表中找到最長的簡單路徑?
- 6. 最長最短路徑(不完全)
- 7. 圖最短路徑?
- 8. 地圖API:在兩個給定路徑中查找最長的公共路徑
- 9. 如何拆分圖形以最小化最長路徑的長度
- 10. Boost:從最短路徑創建圖表
- 11. 給定最大長度的最長路徑
- 12. 算法 - 最長路徑電網益智
- 13. Dijkstra在DAG中的最長路徑
- 14. 查找最長遞增路徑矩陣
- 15. BST的最長路徑的平均值
- 16. 兩點之間最長的路徑
- 17. 的Python:尋找最長路徑
- 18. 爲什麼我們不能把最長路徑變成最短路徑?
- 19. JGraphT圖最短路徑
- 20. 查找圖表和打印路由的最短路徑表
- 21. 循環圖中最長路徑問題的優化
- 22. 無向圖解決方案中最長路徑(邊權重= 1)?
- 23. 在有向非循環圖中尋找最長路徑
- 24. 如何在圖中找到最長的路徑?
- 25. 稀疏循環圖中最長的簡單路徑
- 26. 直接非循環圖中最長的路徑
- 27. 定向未加權圖中最長的非循環路徑
- 28. 加權有向非循環圖的最長路徑
- 29. 替代Directory.CreateDirectory(路徑)支持長路徑
- 30. 長文件路徑
你確定你不是指兩個節點之間的最大距離嗎? – 2010-03-27 11:49:39
這可能取決於圖的規則和特徵。你允許重新訪問節點嗎?你允許回縮邊緣嗎?該圖可以脫節嗎?它是否被定向?它是無環的嗎? – 2010-03-27 11:52:11
這似乎是旅行推銷員的變化。它甚至可以解決嗎? – 2010-03-27 11:56:14