可能重複:
How can I implement decrease-key functionality in Python's heapq?如何在O(lgn)中heapq heapq?
嗨,
我使用heapq在Python實現優先級隊列。隊列中的項目改變了他們的優先級,當發生這種情況時,我需要heapq heapify。
問題是,heapq只有heapify函數可以堆積整個堆,而不是heapify,從heap中的某個項目開始,知道其餘的已經是一個有序堆(像經典的CS文本堆heapify) 。
由於每個heapify調用是O(n)而不是O(lgn),所以差別很大。 是否可以在不使用標準列表實現堆的情況下完成?
謝謝!
看來,我的問題是How can I implement decrease-key functionality in Python's heapq?
答案重複出現表明有各地重新實現基於堆的隊列與特定項目的正確O(LGN)heapify沒有辦法。
可能的重複http://stackoverflow.com/questions/1465662/how-can-i-implement-decrease-key-functionality-in-pythons-heapq – 2010-12-10 23:42:58
是的,它是足夠接近(我不遞減,但原理是一樣的)。我想我會重新實現一堆...... – 2010-12-10 23:46:35
或者只是按照Alex Martelli在他的回答結束時給出的建議。投票結束重複。 – 2010-12-10 23:56:37