【问题标题】:Algorithm to find the number of distinct paths in a directed graph [duplicate]在有向图中查找不同路径数量的算法[重复]
【发布时间】:2009-10-29 07:37:55
【问题描述】:

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

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

【问题讨论】:

标签: algorithm graph


【解决方案1】:

如果您遵循稍微修改的 Dijkstra 算法,您可以获得全对解决方案。

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

  1. uv 的路径不通过w
  2. 经过w 的路径 = 从uw 的路径数wv 的路径数

用零初始化矩阵,除非存在从ij(即1)的边。 然后下面的算法会给你结果(all-pair-path-count)

for i = 1 to n:
    for j = 1 to n:
        for k = 1 to n:
            paths[i][i] += paths[i][k] * paths[k][j]

不用说:O(n^3)

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

【讨论】:

  • 此解决方案无法正确处理路径必须没有循环的要求。
  • 这是改装的 Bellman-Ford,而不是改装的 Dijkstra(因此存在循环问题)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-12
  • 2011-07-17
  • 1970-01-01
  • 2010-12-31
相关资源
最近更新 更多