谁能说出我的算法为什么错误?

时间:2019-01-04 03:04:59

标签: algorithm shortest-path

我正在研究单源最短路径问题,并对bfs进行了修改以解决该问题。该算法运行时间为O(2E)次,我只是不明白为什么它是错误的(必须是dijstra的算法不是最有效的算法)。

kubectl apply -f . # where . is the current directory

1 个答案:

答案 0 :(得分:2)

在Dijkstra的算法中,优先级队列可确保您在不知道顶点与源的距离之前不对其进行处理。

BFS没有此属性。如果到顶点的最短路径的边多于具有最少边的路径,那么将过早处理它。

例如,当您想要从ST的最短路径时,请考虑以下图表:

S--5--C--1--T
|     |
1     1
|     |
A--1--B

将在顶点C之前访问顶点B。您会认为到C的距离是5,因为您还没有发现更短的路径。当访问C时,它将为T指定6的距离。这是不正确的,并且永远不会得到解决,因为C将不会再次被访问。