用于在有向图中找到不同路径的数量的算法

时间:2009-10-29 07:37:55

标签: algorithm graph

  

可能重复:
  Graph Algorithm To Find All Connections Between Two Arbitrary Vertices

我有一个有向图,我可以使用什么算法来查找2个特定顶点之间的不同非循环路径的数量,并计算在这些不同路径中使用任何路径的最大次数? 如果它们访问不同数量的顶点或以不同的顺序访问顶点,则两条路径是不同的。

1 个答案:

答案 0 :(得分:5)

如果您遵循稍微修改过的Dijkstra算法,则可以使用全对解决方案。

解释:从uv的路径是以下内容的总和:

  1. uv的路径未通过w
  2. 经过w的路径=从uw 次的路径数w到{{1}的路径数}
  3. 使用零初始化矩阵,除非有vi的边(即1)。 然后,以下算法将为您提供结果(all-pair-path-count)

    j

    毋庸置疑: for i = 1 to n: for j = 1 to n: for k = 1 to n: paths[i][i] += paths[i][k] * paths[k][j]

    渴望阅读单对解决方案。 :)