如何计算源图和目标相同的图中两个节点之间的最短路径?
图表:
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
答案 0 :(得分:0)
将顶点分割为两个:B1和B2,其中原始图形中以B开头的所有边将以B1开始;在B中终止的所有边将终止于B2。
之后,你可以运行Dijkstra来找到修改过的图形中从B1到B2的最短路径。
注意:如果要保留图表中的所有路径,请添加额外的边B2-> B1。这不会改变循环搜索的结果,原始图形和修改图形中的所有路径都是等效的