Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm Dijkstra算法的空间复杂度是多少?_Algorithm_Graph Algorithm_Dijkstra - Fatal编程技术网

Algorithm Dijkstra算法的空间复杂度是多少?

Algorithm Dijkstra算法的空间复杂度是多少?,algorithm,graph-algorithm,dijkstra,Algorithm,Graph Algorithm,Dijkstra,使用数组的Dijkstra算法的时间复杂度为O(V^2),如果实现了优先级队列,我们可以进一步将复杂度提高到O(E log V)。但是它的空间复杂性呢?这两种情况都是O(V)吗?如果您使用MinHeap(也称为优先级队列)实现Disjkstra的最短路径算法,该算法反过来使用数组存储堆,并且如果您使用数组存储图中每个节点的最短距离值,那么您的空间复杂度将是O(V)+O(V)=O(2V)=~O(V)Dijkstra算法的时间和空间: 时间:O(| V |+| E |)log V) 空格:O(|

使用数组的Dijkstra算法的时间复杂度为O(V^2),如果实现了优先级队列,我们可以进一步将复杂度提高到O(E log V)。但是它的空间复杂性呢?这两种情况都是O(V)吗?

如果您使用MinHeap(也称为优先级队列)实现Disjkstra的最短路径算法,该算法反过来使用数组存储堆,并且如果您使用数组存储图中每个节点的最短距离值,那么您的空间复杂度将是
O(V)+O(V)=O(2V)=~O(V)

Dijkstra算法的时间和空间:
  • 时间:O(| V |+| E |)log V)
  • 空格:O(| V |+| E |)
然而,(E>=V-1)所以| V |+| E |==>E |。但通常我们同时使用V和E

  • Dijkstra实现(Python3):

您自己分析过吗?尝试计算算法应该存储的值,向我们展示您的方法。