具有常量(摊销)运行时间的插入/ delmin操作的优先级队列

时间:2015-02-09 21:12:03

标签: data-structures queue priority-queue

如果我知道优先级的范围,是否可以实现具有O(1)(摊销)运行时间insertdelete_min(具有最低优先级的删除元素)的优先级队列?< / p>

我想到了Fibonacci堆的一些修改,但由于delete_min的O(logn)摊销运行时间,它似乎不起作用。

类似于bucket-sort的方法可以完成这项工作吗?

1 个答案:

答案 0 :(得分:0)

您可以创建一个哈希表,将每个优先级映射到它的当前频率。

当您insert为优先级时,您可以平均在固定时间内执行此操作:您可以找到输入和增加优先级的频率。

当您delete_min时,您必须遍历哈希表以找到非零频率的最小优先级,然后递减此频率。但由于您具有恒定数量的不同优先级值,因此也会在恒定时间内运行。如果优先级的数量很大,它具有理论价值。