我不清楚IndexMinPQ数据结构的用途。给出了一个实现IndexMinPQ.java。
虽然本书本身提供了简要介绍但不清楚。我不清楚为什么我们需要这种数据结构和其他操作?
最佳答案
优先级队列的堆实现问题在于,很难找到特定的节点。例如,假设您有一个包含100,000个项目的堆,并且想要降低值为732的节点的优先级。找到该节点的唯一方法是对堆进行线性搜索。降低节点的优先级是O(log n)操作,但是找到节点的操作是O(n)。
索引优先级队列维护查找结构,以便您可以在O(1)中找到该节点。
在需要修改优先级队列中的节点的任何系统中,此功能都很重要。例如,一个作业计划程序,在其中您经常需要调整作业的优先级或取消作业。