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