要在未加权图上实现 Dijkstra 最短路径算法使其在线性时间内运行,应该使用哪种数据结构?
To implement Dijkstra’s shortest path algorithm on unweighted graphs so that it runs in linear time, which data structure should be used?
要在未加权图上实现Dijkstra的最短路径算法,使其在线性时间内运行,要使用的数据结构是:
- 队列
- 堆叠
- 堆
- B-树
我找到了以下答案:
一个队列,因为我们可以通过使用"Queue"数据结构的广度优先搜索(BFS)算法在未加权图中找到单源最短路径,时间O(m + n) (即关于顶点和边的数量是线性的。)
需要一个最小堆来在线性时间内实现它,因为如果我们在这里删除最小堆中的一个节点,它不会花费任何时间进行调整,因为所有 r 具有相同的权重,所以删除将花费 O (1) 对于一个节点 .. 所以对于 n-1 个节点它将是 O(n).
谁能解释一下正确答案是什么?
请注意,如果图表未加权,则不需要 dijekstra 一个简单的 BFS 将在 O(E + V) ==> 线性时间中完美运行
该算法的简单实现需要一个队列数据结构。
要在未加权图上实现Dijkstra的最短路径算法,使其在线性时间内运行,要使用的数据结构是:
- 队列
- 堆叠
- 堆
- B-树
我找到了以下答案:
一个队列,因为我们可以通过使用"Queue"数据结构的广度优先搜索(BFS)算法在未加权图中找到单源最短路径,时间O(m + n) (即关于顶点和边的数量是线性的。)
需要一个最小堆来在线性时间内实现它,因为如果我们在这里删除最小堆中的一个节点,它不会花费任何时间进行调整,因为所有 r 具有相同的权重,所以删除将花费 O (1) 对于一个节点 .. 所以对于 n-1 个节点它将是 O(n).
谁能解释一下正确答案是什么?
请注意,如果图表未加权,则不需要 dijekstra 一个简单的 BFS 将在 O(E + V) ==> 线性时间中完美运行 该算法的简单实现需要一个队列数据结构。