algorithm - 如何在计算没有边的顶点时找到最短路径?

标签 algorithm graph shortest-path

我有一个来自 Graphs 的任务,我需要找到最短路径。

这不是正常的算法,因为您不必计算路径,您需要计算顶点。

规则就像通过特定顶点的成本是:

| P = costOfPathFromThePreviousVertex - costOfPathToTheNextVertex |

例如,当您有 Graph 时: A-> B-> C->

成本是

  A->B = 10 ;
  B->C = 15 ;

通过顶点 B 的成本为: P = | 10 - 15 |

假设根顶点和目标顶点的成本 = 0。

所以在上述情况下,从 A 经 B 到 C 的成本将为 5。

说起来容易,但我不知道当我有 x 个顶点时我需要实现哪种算法才能得到结果。我也在考虑 Dijkstra 的算法和 DFS,但在那种情况下它们是不正确的。

任何帮助将不胜感激。

最佳答案

我会添加一个连接到实际起点和终点的虚拟起点和终点顶点。

然后将您的图形变成 line graph每条边都有一个顶点,例如v1="A->B"和 v2="B->C"。

根据您的公式为新图中的边分配权重。

例如,连接 v1 和 v2 的边的权重为 |10-15|。

然后在这个折线图上使用 Dijkstra 算法找到 dummy 起始边和 dummy 结束边之间的最短路径。

关于algorithm - 如何在计算没有边的顶点时找到最短路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22336840/

相关文章:

javascript - Highcharts - 需要高级工具提示功能

algorithm - 具有有限边数的未加权无向图中两个节点之间的所有路径

java - 使用最小堆实现 Dijkstra 算法但失败

java - 邻接表添加关系

algorithm - 图算法

python - 接受图表的 A* 算法

ios - 查找适合 iPad 屏幕的图像数量(不同尺寸)的算法

java - Hailstone 递归在 Java 中不起作用

算法:是否有 map-reduce 方法通过删除所有子集来合并一组集合

algorithm - bellman-ford 是否可以在一次迭代中完成?