优于O(logn)的最小堆增加密钥?

时间:2009-06-04 19:27:30

标签: heap complexity-theory performance priority-queue

我正在使用优先级队列,该队列最初将其元素的优先级基于启发式算法。当元素出列时,启发式更新,当前队列中的元素可能会增加其键。

我知道有些堆(特别是斐波那契堆)已经摊销O(1)减少了关键操作,但是有没有任何堆结构在增加键操作上有类似的界限?

对于我的应用程序来说,这远远不是性能问题(二进制堆工作正常),它实际上只是学术上的好奇心。

编辑:澄清一下,我正在寻找一个比增加密钥操作快于O(logn)时间的数据结构,而不是减少密钥。我的应用程序永远不会减少密钥,因为启发式过度估计优先级。

3 个答案:

答案 0 :(得分:1)

二进制堆太不灵活,无法击败对数复杂度。 二项式堆只允许更有效的连接操作。

具有良好降低关键绩效的其他堆是pairing heaps2-3 heaps

答案 1 :(得分:0)

二项式堆需要o(log n)时间来减少键操作!这不是比斐波纳契堆慢吗?

答案 2 :(得分:0)

实际上,对于Fibonacci堆,增加键操作与减少键相同。恕我直言,将操作命名为“减少键”只是一种传统,因为它在某些算法中使用。但Fibonacci堆实现允许两者。