【问题标题】:how to calculate the shortest path between two nodes in a graph where the source and target are the same?如何计算源和目标相同的图中两个节点之间的最短路径?
【发布时间】:2012-04-13 03:11:33
【问题描述】:

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

图表:

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

【问题讨论】:

  • 你不能问“从 X->B 的最短路径是什么?”对于任何有边 B->X 的节点 X,取其中的最小值,然后添加 B->X?

标签: graph shortest-path dijkstra


【解决方案1】:

将顶点一分为二:B1和B2,其中原图中所有从B开始的边都将从B1开始;所有在 B 中终止的边都将在 B2 中终止。

之后,您可以运行 Dijkstra 在修改后的图中找到从 B1 到 B2 的最短路径。

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

【讨论】:

    猜你喜欢
    • 2019-04-20
    • 1970-01-01
    • 1970-01-01
    • 2015-06-12
    • 2016-03-04
    • 2017-04-18
    • 2016-03-26
    • 2021-12-18
    • 2017-09-27
    相关资源
    最近更新 更多