[英]Heap in Dijkstra algorithm
有人可以解释一下HeapDesc在ShaneSaunders Dijkstra算法中的重要性以及它在这里的使用方法吗? 一般来说,我知道Dijkstra算法是如何工作的。 但是,我还没有把堆放在实现中。
它是一个很大的代码。 因此,如果您想查看它,我会发布一个链接。
这里是http://www.cosc.canterbury.ac.nz/research/RG/alg/dijkstra.cpp
在Dijkstra中,您需要一个高效的数据结构,为您提供最低成本的优势,使您可以到达另一个顶点。
堆正是一种数据结构,允许您存储边缘集并以最低成本有效地检索边。
HeapDesc可能实现工厂设计模式以创建不同类型的堆。 如果检查文件http://www.cosc.canterbury.ac.nz/research/RG/alg/dijkstra.h ,您会注意到构造函数中的堆变量是Heap类型的对象。
看看这篇文章的工厂设计模式。 http://en.wikipedia.org/wiki/Factory_method_pattern
Dijkstra的算法涉及很多“成本最低的路径”查找。
最小或最大查找是Heap针对(O(1))进行优化的原因,这就是使用它的原因。
至于HeapDesc
本身,它似乎只是一个工厂方法 ,用于分配Heap对象。
Heap *newInstance(int n) const { return new T(n); }; // from heap.h
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.