簡體   English   中英

最小堆優先級隊列的減少密鑰功能的實現

[英]Implementation of decrease key function for a min heap priority queue

我正在嘗試運行Dijkstra的算法,並且需要實現一個decreaseKey函數。 我在做這件事時遇到麻煩。 在這里閱讀了一種解決方案但是通過將哈希映射存儲在堆中,它占用了大量內存。 是否有實施方式decreaseKey沒有一個哈希表,並仍然保持O(log n)的時間?

到目前為止,我decreaseKey函數有兩個參數:頂點和newDistance。 當我調用decreaseKey(vertex * v, int newDistance) ,算法必須找到存儲頂點“ v”的索引,然后更改其距離。 我無法弄清楚如何“找到”頂點以獲取其索引並將其保持在O(log n)時間。

您不需要哈希映射即可存儲信息; 您只需要從頂點到優先級隊列位置的映射。 如果您的頂點由連續的整數標識,則映射由| V |的數組組成 整數(其中| V |是頂點數)。

雖然這不是一個小數目的空間,但每個圖形頂點只有一個單詞,大大少於邊列表所占據的空間。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM