因此,假设我有一个包含 N 个具有优先级的项目的优先级队列,其中 N 是数千个,使用一个使用二叉堆实现的优先级队列。我了解EXTRACT-MIN
andINSERT
原语(请参阅Cormen、Leiserson、Rivest使用-MAX
而不是-MIN
)。
但是DELETE
,DECREASE-KEY
两者似乎都要求优先级队列能够在给定项目本身的情况下在堆中找到项目的索引(或者,该索引需要由优先级队列的消费者提供,但这似乎违反了抽象).. ..这看起来像是一个疏忽。有没有一种方法可以有效地做到这一点,而不必在堆顶部添加哈希表?