【发布时间】:2020-02-16 09:25:54
【问题描述】:
Dijkstra 算法不能使用 DFS 来实现,该 DFS 跟踪当前行进路径的长度,并且每次到达未访问节点时,它都会更新到该节点的最短路径的长度,以及节点是否到达at已经被访问过,如果当前长度小于节点中的长度,是否更新长度?
这只是 DFS,这意味着运行时间应该是线性的( O(|V| + |E|) )。
【问题讨论】:
-
嗯,不,因为那样就不再是 Dijkstra 的算法了。
-
它实现的不是一样的吗?
-
你怎么知道,它是“最短的”(当你没有(重新)对节点进行排序时...... dijksra 用额外的
O(log(|V|))时间复杂度来做)......?跨度> -
并非如此,如果您“如果当前长度小于节点中的长度则更新长度”,当从更新的节点到达它们时,可能还有其他节点需要更新。
-
如果我把DFS换成BFS,估计也有问题,你知道吗?
标签: algorithm depth-first-search dijkstra