3
A
回答
4
您有一個有向無環圖(DAG),並且您想查找具有最大節點數的路徑。這實際上在DAG中找到了longest path
。
這個問題在多項式時間內可以解決DAG。閱讀更多關於它在這裏: - Wikipedia.
+0
感謝您的提示。我最終通過使用Floyd-Warshall算法來解決這個問題,每個邊的權重都是-1。 – 2012-04-01 12:30:00
2
如果圖有一個循環,那麼是「無限」長度的路徑。
如果圖是非循環的: 您應該運行拓撲排序。然後:
foreach(node in topological_sort_order) {
foreach(prev_node in neibhours[node]) {
// there is edge from prev_node to node
// since vertices are sorted in topological order than
// value for longest_path[prev_node] is already computed
longest_path[node] = max(longest_path[node], longest_path[prev_node] + 1);
}
}
0
由於您的輸入是有向圖,而不是向無環圖則是NP完全和提到的解決方案不起作用。但是,正如logic_max所說:這是最長的路徑問題,並且通過給每條邊設置一個成本來減少這個問題。
相關問題
- 1. 圖中有多個「必須有」節點的最短路徑
- 2. 查找沿路徑的節點數量
- 3. 有向無環圖:找到特定節點的所有路徑
- 4. 找到有向圖的最短路徑
- 5. 如何找到遍歷無向圖中最大節點數的路徑?
- 6. 查找無向圖中兩個節點之間的所有可能路徑
- 7. 查找樹中一組節點之間的最長路徑
- 8. 尋找最近點的路徑向前
- 9. 查找圖中每個節點最多有兩個輸入邊和兩個輸出邊的最長路徑
- 10. 查找有循環的有向圖中的所有路徑
- 11. 通過多個節點的最短單向路徑
- 12. 查找覆蓋neo4j中所有節點的路徑
- 13. 從源節點上查找DAG上的最長路徑
- 14. 查找節點樹的最大路徑總和
- 15. 有向圖中有多條路徑?
- 16. 查找無向圖路徑的算法
- 17. 如何在有向循環圖中找到最長的簡單路徑(包括所有中間節點)?
- 18. JavaScript - 通過圖中數百個節點的最短路徑
- 19. 考慮節點和邊的圖上的路徑查找算法
- 20. 我們可以使用BFS(以最優方式)查找加權有向非循環圖中從源節點到所有其他節點的最短路徑嗎?
- 21. 多維數組中的路徑查找
- 22. 查找包含節點的所有關係的路徑
- 23. 如何找到覆蓋有向循環圖中所有節點的最短路徑?
- 24. 在有向圖中找到2個節點之間的路由?
- 25. 在有向圖中查找從節點到根的路徑的高效圖算法
- 26. 使用加權有向圖中的DFS查找兩個節點之間的所有路徑
- 27. Neo4j查找所有返回到同一節點的路徑
- 28. 查找N組節點之間的所有可能路徑
- 29. 查找兩個節點之間的所有路徑
- 30. 高效找出兩個節點之間的一些路徑上的所有節點有向圖
你的意思是你想要一個算法來解決[最長路徑問題](http://en.wikipedia.org/wiki/Longest_path_problem)? – 2012-03-29 14:45:57
你的圖是一棵樹。好吧差不多...... :) – 2012-03-30 10:54:20