Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/155.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
C++ Dijkstra算法中的堆_C++_Algorithm_Dijkstra - Fatal编程技术网

C++ Dijkstra算法中的堆

C++ Dijkstra算法中的堆,c++,algorithm,dijkstra,C++,Algorithm,Dijkstra,有人能解释一下在ShaneSaunders Dijkstra算法中,HeapDesc的重要性是什么,以及它是如何在这里使用的吗? 总的来说,我知道Dijkstra算法是如何工作的。但是,我在实现中没有得到堆部分 这是一个大代码。因此,我张贴一个链接,如果你想看看它 这里的涉及很多“成本最低的路径”查找 最小或最大查找是针对(O(1))优化的,这就是使用它的原因 至于HeapDesc本身,它似乎只是用来分配一个Heap对象 Heap *newInstance(int n) const { retu

有人能解释一下在ShaneSaunders Dijkstra算法中,HeapDesc的重要性是什么,以及它是如何在这里使用的吗? 总的来说,我知道Dijkstra算法是如何工作的。但是,我在实现中没有得到堆部分

这是一个大代码。因此,我张贴一个链接,如果你想看看它

这里的

涉及很多“成本最低的路径”查找

最小或最大查找是针对(O(1))优化的,这就是使用它的原因

至于
HeapDesc
本身,它似乎只是用来分配一个Heap对象

Heap *newInstance(int n) const { return new T(n); }; // from heap.h

在Dijkstra,您需要一个高效的数据结构,该结构为您提供最低成本的优势,允许您到达另一个顶点


正是一种数据结构,允许您存储边集并以最低成本高效检索边集。

HeapDesc可能实现factory设计模式以创建不同类型的堆。如果检查该文件,您会注意到构造函数中的heap变量是heap类型的对象

看看这篇文章,了解工厂设计模式。

您不清楚哪些部分?HeapDesc的定义或它的使用方式?我可能会将“数据结构”更改为“数据结构”,但是,这在他的代码中代表了什么。heap=heapDD->newInstance(nn);他是如何定义的it@NRK我不确定HeapDesc本身是什么,但它看起来像是用来创建堆的分配器或工厂方法。您需要查看它的“heaps/heap.h”。