【发布时间】:2009-08-17 16:00:07
【问题描述】:
假设我有一个包含 N 个具有优先级的项目的优先级队列,其中 N 是数千个,使用通过 binary heap 实现的优先级队列。我了解EXTRACT-MIN 和INSERT 原语(请参阅Cormen, Leiserson, Rivest,它使用-MAX 而不是-MIN)。
但是DELETE 和DECREASE-KEY 似乎都要求优先级队列能够在给定项目本身的情况下在堆中找到项目的索引(或者,该索引需要由优先级队列的消费者提供,但是这似乎违反了抽象)....看起来像是疏忽。有没有一种方法可以有效地做到这一点,而不必在堆顶部添加哈希表?
【问题讨论】:
标签: data-structures priority-queue