1

I have been trying to implementing heap data structures for use in my research work. As part of that, I am trying to implement increase-key operations for min-heaps. I know that min-heaps generally support decrease-key. I was able to write the increase-key operation for a binary min-heap, wherein, I exchange increased key with the least child recursively.

In the case of the Fibonacci heap, In 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, nor could I find anything in CLRS (Introduction to Algorithms by Cormen).

Can someone tell me how I can go about implementing the increase-key operation efficiently and also without disturbing the data structure's amortized bounds for all the other operations?

MrSmith42
  • 9,961
  • 6
  • 38
  • 49

1 Answers1

2

First, note that increase-key must be (log) if we wish for insert and find-min to stay (1) as they are in a Fibonacci heap.

If it weren't you'd be able to sort in () time by doing inserts, followed by repeatedly using find-min to get the minimum and then increase-key on the head by with ∀:> to push the head to the end.

Now, knowing that increase-key must be (log), we can provide a straightforward asymptotically optimal implementation for it. To increase a node to value , first you decrease-key(,−∞), then delete-min() followed by insert(,).
Refer here

braceletboy
  • 98
  • 2
  • 7