要在未加权图上实现Dijkstra的最短路径算法,使其在线性时间内运行,应该使用哪种数据结构?

时间:2017-02-05 17:34:34

标签: algorithm graph stack queue dijkstra

要在未加权图表上实现Dijkstra的最短路径算法,使其以线性时间运行,要使用的数据结构为:

  1. 队列
  2. Stack
  3. B树
  4. 我找到了以下答案:

    1. 一个队列,因为我们可以通过使用广度优先搜索(BFS)算法找到未加权图中的单源最短路径,该算法使用“队列”数据结构,其时间为O(m + n)(即相对于顶点和边的数量。)

    2. 需要min heap来在线性时间内实现它,因为如果我们在这里删除min heap中的一个节点,它将不会花费任何时间进行调整,因为所有r具有相同的权重,因此删除将采用O(1)一个节点..所以对于n-1节点,它将是O(n)。

    3. 有人可以解释哪一个是正确答案吗?

1 个答案:

答案 0 :(得分:4)

请注意,如果图表未加权,则不需要dijekstra,简单的BFS将完美地用于O(E + V)==>线性时间 算法的简单实现需要一个队列数据结构。