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