I need to describe an algorithm that finds the second smallest element in a Fibonacci-Heap using the Operations: Insert, ExtractMin, DecreaseKey and GetMin. The last one is an algorithm previously implemented to find and return the smallest element of the heap.
I thought I'd start by extracting the minimum, which results in its children becoming roots. I could then use GetMin to find the second smallest element. But it seems to me that I'm overlooking other cases because I don't know when to use Insert and DecreaseKey, and the way the question is phrased seems to suggest I should need them.
-
3a=extractMin; res=getMin; insert(a);return res;ratchet freak– ratchet freak2013年01月11日 10:49:43 +00:00Commented Jan 11, 2013 at 10:49
-
Why do I need to insert a again? And also, does it not matter that I still haven't used DecreaseKey then?Longeyes– Longeyes2013年01月11日 11:24:17 +00:00Commented Jan 11, 2013 at 11:24
-
only if you want to keep the heap unchanged after the call to getSecondMin, and no it doesn't matter that you didn't use itratchet freak– ratchet freak2013年01月11日 11:26:59 +00:00Commented Jan 11, 2013 at 11:26
-
1@ratchetfreak : Why not post your comment as an answer? :)C.B.– C.B.2013年06月18日 09:29:36 +00:00Commented Jun 18, 2013 at 9:29
1 Answer 1
a=extractMin; res=getMin; insert(a);return res;
[Folks: when answers are posted as comments, would you please add them as an answer and close the question. Thanks]