Min Fibonacci Heap - 如何实现 increase-key 操作?

Min Fibonacci Heap - How to implement increase-key operation?

我一直在尝试实现堆数据结构以用于我的研究工作。作为其中的一部分,我正在尝试为 min-heaps 实施 increase-key 操作。我知道min-heaps一般都支持decrease-key。我能够为二进制 min-heap 编写 increase-key 操作,其中,我递归地用最少 child 交换增加的密钥。

对于 Fibonacci 堆,在 this reference, they say that the Fibonacci heap also supports an increase-key operation. But, I couldn't find anything about it in the original paper on Fibonacci Heaps 中,我也无法在 CLRS(Cormen 的算法导论)中找到任何内容。

谁能告诉我如何才能有效地实施 increase-key 操作,同时又不影响所有其他操作的数据结构的分摊界限?

首先,如果我们希望 insert 和 find-min 在 Fibonacci 堆中保持 (1),请注意 increase-key 必须是 (log)。

如果不是,你可以通过插入在 () 时间内排序,然后反复使用 find-min 得到最小值,然后在头部增加键值 with ∀:> 到把头推到最后。

现在,知道 increase-key 必须是 (log),我们可以为它提供一个简单的渐近最优实现。要将节点增加到 value ,首先减少键 (,−∞),然后删除最小值 (),然后插入 (,)。
Refer here