Python 算法设计

Python 算法设计,python,algorithm,graph-algorithm,Python,Algorithm,Graph Algorithm,哪一个更适合设计生成有向图中两个顶点之间所有路径的算法 回溯 分而治之 贪婪方法 动态规划 由于BFS和DFS的原因,我一直在考虑回溯,但我不确定。谢谢。请注意,输出中的路径数可能是指数级的。 实际上,在每对ij的n顶点的有向图中,从1到n有2n-2条路径:除了端点之外的每个顶点都可以出现在路径中,也可以省略。 因此,如果我们真的想输出所有路径(而不是,例如,制作一个聪明的惰性结构,以便在以后逐个列出它们),那么没有先进的技术可以帮助实现多项式复杂性 找到所有简单路径的最简单方法是递归构造一

哪一个更适合设计生成有向图中两个顶点之间所有路径的算法

  • 回溯

  • 分而治之

  • 贪婪方法

  • 动态规划


由于BFS和DFS的原因,我一直在考虑回溯,但我不确定。谢谢。

请注意,输出中的路径数可能是指数级的。 实际上,在每对
i
具有边
i>j
n
顶点的有向图中,从
1
n
有2n-2条路径:除了端点之外的每个顶点都可以出现在路径中,也可以省略。 因此,如果我们真的想输出所有路径(而不是,例如,制作一个聪明的惰性结构,以便在以后逐个列出它们),那么没有先进的技术可以帮助实现多项式复杂性

找到所有简单路径的最简单方法是递归构造一条路径,并在到达端点后将当前路径添加到答案中。 为了改进它,我们可以使用。 事实上,对于每个顶点,我们可以首先计算是否可以从它到达最终顶点,并在多项式时间内进行计算。
稍后,我们只使用答案为正的顶点。

是否存在循环?在两个固定点之间还是每对点之间?如果存在任何循环,如果没有循环,会改变答案吗?此外,仅在2个修复垂直循环之间,可能存在无限路径。comp sci stack exchange站点更适合此类问题,因为这本身不是编程问题:非常有用!非常感谢:)