用Dijks求循环图的最短路径

2024-04-26 11:45:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个循环有向图。下面是用python dict表示的图

graph = {
          'A': {'B': 5, 'D': 5, 'E': 7 },
          'B': {'C': 4},
          'C': {'D': 8, 'E': 2},
          'D': {'C': 8, 'E':  6},
          'E': {'B': 3}
        }

我写了一个Dijkstra最短路径的简单实现。这似乎对两点都有效。下面是我的实现。在

^{pr2}$

现在这个简单的实现似乎起作用了。例如,如果我这样做

shortestpath('A', 'C')

它会给我路径和最短的重量

(9, ['A', 'B', 'C'])

在这种情况下。 {cd1>但是只要程序中断。 现在有一条从B to B的最短路径,因为它是一个循环图,路径是B-C-E-B。我只是不知道如何检查它,并相应地修改Dijktra的算法,让它检查像这样的循环情况。如有任何建议,我们将不胜感激。谢谢:)


Tags: to路径程序算法情况建议dictgraph