有人可以解释一下 HeapDesc 在ShaneSaunders Dijkstra算法中的重要性以及如何在这里使用它? 一般来说,我知道Dijkstra算法是如何工作的。但是,我没有把堆放在实施中。
它是一个很大的代码。因此,如果您想查看它,我会发布一个链接。
这里是http://www.cosc.canterbury.ac.nz/research/RG/alg/dijkstra.cpp
答案 0 :(得分:1)
在Dijkstra中,您需要一个高效的数据结构,为您提供最低成本的优势,使您能够到达另一个顶点。
Heap正是一种数据结构,允许您存储边缘集并以最低成本有效地检索边缘。
答案 1 :(得分:1)
HeapDesc可能实现工厂设计模式以创建不同类型的堆。如果检查文件http://www.cosc.canterbury.ac.nz/research/RG/alg/dijkstra.h,您会注意到构造函数中的堆变量是Heap类型的对象。
看一下本文的工厂设计模式。 http://en.wikipedia.org/wiki/Factory_method_pattern
答案 2 :(得分:0)
Dijkstra's algorithm涉及很多成本最低的路径"抬头。
最小或最大查找是针对(O(1))优化的Heap,这就是它被使用的原因。
对于HeapDesc
本身,它似乎只是a factory method,用于分配Heap对象。
Heap *newInstance(int n) const { return new T(n); }; // from heap.h