如何计算源和目标相同的图中两个节点之间的最短路径?

时间:2012-04-13 03:11:34

标签: graph shortest-path dijkstra

如何计算源图和目标相同的图中两个节点之间的最短路径?

图表:

A->B(5)
A->D(5)
A->E(7)
B->C(4)
C->D(8)
C->E(2)
D->C(8)
D->E(6)
E->B(3)

例如B和B之间的最短路径是什么?我尝试使用dijkstra但没有工作,它总是在第一步返回B-> B。

正确的答案:B-> C-> E-> B

1 个答案:

答案 0 :(得分:0)

将顶点分割为两个:B1和B2,其中原始图形中以B开头的所有边将以B1开始;在B中终止的所有边将终止于B2。

之后,你可以运行Dijkstra来找到修改过的图形中从B1到B2的最短路径。

注意:如果要保留图表中的所有路径,请添加额外的边B2-> B1。这不会改变循环搜索的结果,原始图形和修改图形中的所有路径都是等效的