假設我有一個優先級隊列,其中有N個優先級隊列,其中N的數量是幾千個,使用一個優先隊列來實現,隊列的優先級爲binary heap。我瞭解EXTRACT-MIN
和INSERT
原語(請參閱Cormen, Leiserson, Rivest,它使用-MAX
而不是-MIN
)。二進制堆優先級隊列的位置索引?
但是DELETE
和DECREASE-KEY
都似乎要求優先級隊列能夠在給定項目本身的堆中找到項目的索引(或者,該索引需要由優先級隊列的使用者給出,但這似乎是抽象違規)......看起來像是一個疏忽。有沒有辦法有效地做到這一點,而不必在堆頂部添加散列表?
它是*堆的API,而不是優先級隊列。 –
此外,只要您從堆中插入或提取項目,索引不再保證有效,因此瞭解某個時間點項目的索引並不一定能幫助您知道索引項目在另一個時間點。 –