【问题标题】:Min Fibonacci Heap - How to implement increase-key operation?Min Fibonacci Heap - 如何实现增加键操作?
【发布时间】:2019-12-17 08:09:28
【问题描述】:

我一直在尝试实现堆数据结构以用于我的研究工作。作为其中的一部分,我正在尝试为最小堆实现增加键操作。我知道最小堆通常支持减少键。我能够为二进制最小堆编写增加密钥操作,其中,我递归地与最小的孩子交换增加的密钥。

在斐波那契堆的情况下,在this 参考中,他们说斐波那契堆还支持增加键操作。但是,我在 Fibonacci Heaps 上的 original paper 中找不到任何相关内容,在 CLRS(Cormen 的算法简介)中也找不到任何内容。

谁能告诉我如何才能有效地实现增加键操作,同时又不干扰数据结构对所有其他操作的摊销界限?

【问题讨论】:

    标签: algorithm data-structures heap fibonacci-heap


    【解决方案1】:

    首先,请注意,如果我们希望 insert 和 find-min 保持 ?(1),因为它们在斐波那契堆中,则 increase-key 必须是 ?(log?)。

    如果不是这样,您可以在 ?(?) 时间内进行排序:?>? 把头推到底。​​p>

    现在,知道增加键必须是?(log?),我们可以为其提供一个简单的渐近最优实现。要将节点 ? 增加到 ?,首先要减少键(?,−∞),然后 delete-min() 再插入(?,?)。
    Refer here

    【讨论】:

      猜你喜欢
      • 2022-10-08
      • 2011-07-27
      • 2014-03-14
      • 1970-01-01
      • 1970-01-01
      • 2011-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多