Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 寻找无向图中所有节点之间所有简单路径的最省时方法_Algorithm_Graph_Graph Theory_Graph Algorithm - Fatal编程技术网

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

Algorithm 寻找无向图中所有节点之间所有简单路径的最省时方法,algorithm,graph,graph-theory,graph-algorithm,Algorithm,Graph,Graph Theory,Graph Algorithm,为了扩展标题,我需要一个非常大的无向图中所有节点之间的所有简单非循环路径 我能想到的最明显的优化是,一旦我计算了一对特定节点之间的所有路径,我就可以将它们全部反转,而不是在需要进行相反计算时重新计算 我在研究可传递闭包和Floyd–Warshall算法,但如果我沿着这条路线走下去,看起来我能做的最好的事情就是只找到所有节点之间的最短路径 有什么想法吗?现在,我正在查看在图中的每个节点上运行DFS,在我看来,这似乎远远低于最佳值。我不理解您认为DFS明显低于最佳值的原因。事实上,DFS在这里显然是

为了扩展标题,我需要一个非常大的无向图中所有节点之间的所有简单非循环路径

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

我在研究可传递闭包和Floyd–Warshall算法,但如果我沿着这条路线走下去,看起来我能做的最好的事情就是只找到所有节点之间的最短路径


有什么想法吗?现在,我正在查看在图中的每个节点上运行DFS,在我看来,这似乎远远低于最佳值。

我不理解您认为DFS明显低于最佳值的原因。事实上,DFS在这里显然是最优的

如果遍历图,将分支仅限于迄今为止未在此分支中访问的顶点,则DFS树中的节点总数将等于从起始顶点到所有其他顶点的简单路径数。由于所有这些路径都是输出的一部分,因此无法对算法进行有意义的改进,因为无法将复杂性降低到输出的大小以下


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

感觉这里需要的是某种动态规划。如果你找到一条路径a->B,并且你已经找到了B->C的路径,那么你过滤掉那些有共同节点的路径,你得到了路径a->C。路径的数量是指数的,因此本质上没有有效的多项式算法。我认为不能保证路径的大小是指数的。例如,大小为N的环和大小为N+1的环都只有一条路径,但仍然可能以某种方式呈指数分布。所有简单路径的含义是什么?最短路径还是所有简单路径?如果它不仅是最短的,那么路径数是指数的,例如,对于图K_n,两个节点之间的路径数是和i!,为了0