繁体   English   中英

堆在Dijkstra算法中

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM