查找无向图中所有节点之间所有简单路径的最有效时间的方法

时间:2012-09-02 02:39:00

标签: algorithm graph graph-theory graph-algorithm

要扩展标题,我需要在非常大的无向图中的所有节点之间的所有简单(非循环)路径。

我能想到的最明显的优化是,一旦我计算了一对特定节点之间的所有路径,我就可以将它们全部反转,而不是在我需要另一种方式时重新计算。

我正在研究传递闭包和Floyd-Warshall算法,但如果我走下去,那么看起来我能做的最好的事情就是找到所有节点之间的最短路径。

有什么想法吗?现在我正在考虑在图中的每个节点上运行DFS,这在我看来显然不是最优的。

1 个答案:

答案 0 :(得分:0)

我不明白你的想法背后的原因DFS明显低于最佳。事实上,DFS在这里显然是最佳的。

如果遍历图形,仅将分支限制为此分支中尚未访问过的顶点,则DFS树中的节点总数将等于起始顶点的简单路径数到所有其他顶点。由于所有这些路径都是输出的一部分,因此无法有效地改进算法,因为无法将复杂度降低到输出大小以下。

无论问题是什么或使用什么算法,都无法在多项式时间内输出因子数量的数据。