【问题标题】:weighted graph - find all paths from X to y with max stops加权图 - 找到从 X 到 y 的所有路径,最大停靠点
【发布时间】:2018-12-15 22:08:14
【问题描述】:

我正在处理一个 Java 项目,该项目需要在其他事情之间返回从 x 到 y 的所有可能路径,并且最大停止。

例如每个节点都是一个城市,从一个城市到另一个城市的每条路径都有一个成本值。

我使用这篇文章作为参考,这里是我使用的相同模型。 http://www.vogella.com/tutorials/JavaAlgorithmsDijkstra/article.html

返回从 x 到 Y 的最短路径可以正常工作,但我需要每个路径的所有可能路径和成本。

例如:

在给定的最大停靠点数内查找任何给定城镇对的所有可用路线。

输入图: AB5、BC4、CD8、DC8、DE6、AD5、CE2、EB3、AE7

从 C 到 C 的路线,最多停靠 3 个站点:

CDC(2 站) CEBC(3 站)

从 A 到 C 的路线,最多停靠 4 个站点:

ABC(2 站) ADC(2 站) AEBC(3 站) ADEBC(4 站)

【问题讨论】:

  • 我认为您实际上是想说“每个节点访问一次最大的所有可能路径”?因为否则可能的路径数是无限的。
  • 我已更新问题以便更好地理解。
  • 如需更有效的帮助,请在minimal reproducible example 上发布测试数据和预期输出。

标签: java graph graph-theory dijkstra


【解决方案1】:

每个节点链接的权重是两者之间的距离。

即)A---> 7 ----> B ---> 3 ---> C ---> 等等...

在这种情况下,从 A 到 C 的这条路径的总权重将是每个坐标之间所有权重(距离)的总和。

所有低于最大值的可能路径都可以通过上述计算记录

【讨论】:

  • 不明白。我更新了问题以便更好地理解。
  • 您需要图表中两点之间的距离。 A--(distanceFromAtoB)--B--(distanceFromBtoC)--C(2站)
【解决方案2】:

老实说,我会使用 BFS 而不是 Dijkstra。您不是在寻找最短路径,而是在寻找任何路径。因此,您可以从节点 x 运行 BFS,并在它执行 k 步之后(我将您的最大步数称为 k),您可以停止它。每次到达 y 时,您都可以将路径添加到您的答案中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-25
    • 2016-01-21
    • 2013-10-25
    • 2015-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多