簡體   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