Fibonacci Heaps

Fibonacci Heaps

Priority Queues Fibonacci Heaps Heaps Operation Linked List Binary Binomial Fibonacci † Relaxed make-heap 1 1 1 1 1 insert 1 log N log N 1 1 These lecture slides are adapted find-min N 1 log N 1 1 from CLRS, Chapter 20. delete-min N log N log N log N log N union 1 N log N 1 1 decrease-key 1 log N log N 1 1 delete N log N log N log N log N is-empty 1 1 1 1 1 †amortized this time Princeton University • COS 423 • Theory of Algorithms • Spring 2002 • Kevin Wayne 2 Fibonacci Heaps Fibonacci Heaps: Structure Fibonacci heap history. Fredman and Tarjan (1986) Fibonacci heap. ■ Ingenious data structure and analysis. ■ Set of min-heap ordered trees. ■ Original motivation: O(m + n log n) shortest path algorithm. – also led to faster algorithms for MST, weighted bipartite matching ■ Still ahead of its time. Fibonacci heap intuition. ■ Similar to binomial heaps, but less structured. ■ Decrease-key and union run in O(1) time. min ■ "Lazy" unions. 17 24 23 7 3 30 26 46 marked 18 52 41 35 H 39 44 3 4 Fibonacci Heaps: Implementation Fibonacci Heaps: Potential Function Implementation. Key quantities. ■ Represent trees using left-child, right sibling pointers and circular, ■ Degree[x] = degree of node x. doubly linked list. ■ Mark[x] = mark of node x (black or gray). – can quickly splice off subtrees ■ t(H) = # trees. ■ Roots of trees connected with circular doubly linked list. ■ m(H) = # marked nodes. – fast union ■ Φ(H) = t(H) + 2m(H) = potential function. ■ Pointer to root of tree with min element. – fast find-min t(H) = 5, m(H) = 3 Φ(H) = 11 min degree = 3 min 17 24 23 7 3 17 24 23 7 3 30 26 46 30 26 46 18 52 41 18 52 41 35 35 H 39 44 H 39 44 5 6 Fibonacci Heaps: Insert Fibonacci Heaps: Insert Insert. Insert. ■ Create a new singleton tree. ■ Create a new singleton tree. ■ Add to left of min pointer. ■ Add to left of min pointer. ■ Update min pointer. ■ Update min pointer. Insert 21 Insert 21 21 min min 17 24 23 7 3 17 24 23 7 21 3 30 26 46 30 26 46 18 52 41 18 52 41 35 35 H 39 44 H 39 44 7 8 Fibonacci Heaps: Insert Fibonacci Heaps: Union Insert. Union. ■ Create a new singleton tree. ■ Concatenate two Fibonacci heaps. ■ Add to left of min pointer. ■ Root lists are circular, doubly linked lists. ■ Update min pointer. Running time. O(1) amortized Insert 21 ■ Actual cost = O(1). ■ Change in potential = +1. ■ Amortized cost = O(1). min min min 17 24 23 7 21 3 23 24 17 7 3 21 H' H'' 30 26 46 30 26 46 18 52 41 18 52 41 35 35 H 39 44 39 44 9 10 Fibonacci Heaps: Union Fibonacci Heaps: Delete Min Union. Delete min. ■ Concatenate two Fibonacci heaps. ■ Delete min and concatenate its children into root list. ■ Root lists are circular, doubly linked lists. ■ Consolidate trees so that no two roots have same degree. Running time. O(1) amortized ■ Actual cost = O(1). ■ Change in potential = 0. min ■ Amortized cost = O(1). min 7 24 23 17 3 23 24 17 7 3 21 30 26 46 18 52 41 H' H'' 30 26 46 18 52 41 35 39 44 35 39 44 11 12 Fibonacci Heaps: Delete Min Fibonacci Heaps: Delete Min Delete min. Delete min. ■ Delete min and concatenate its children into root list. ■ Delete min and concatenate its children into root list. ■ Consolidate trees so that no two roots have same degree. ■ Consolidate trees so that no two roots have same degree. 0 1 2 3 current current min min 7 24 23 17 18 52 41 7 24 23 17 18 52 41 30 26 46 39 44 30 26 46 39 44 35 35 13 14 Fibonacci Heaps: Delete Min Fibonacci Heaps: Delete Min Delete min. Delete min. ■ Delete min and concatenate its children into root list. ■ Delete min and concatenate its children into root list. ■ Consolidate trees so that no two roots have same degree. ■ Consolidate trees so that no two roots have same degree. 0 1 2 3 0 1 2 3 current min min 7 24 23 17 18 52 41 7 24 23 17 18 52 41 39 44 39 44 30 26 46 30 26 46 current 35 35 15 16 Fibonacci Heaps: Delete Min Fibonacci Heaps: Delete Min Delete min. Delete min. ■ Delete min and concatenate its children into root list. ■ Delete min and concatenate its children into root list. ■ Consolidate trees so that no two roots have same degree. ■ Consolidate trees so that no two roots have same degree. 0 1 2 3 0 1 2 3 current min min 7 24 23 17 18 52 41 7 24 17 18 52 41 39 44 23 39 44 30 26 46 current 30 26 46 35 35 Merge 17 and 23 trees. Merge 7 and 17 trees. 17 18 Fibonacci Heaps: Delete Min Fibonacci Heaps: Delete Min Delete min. Delete min. ■ Delete min and concatenate its children into root list. ■ Delete min and concatenate its children into root list. ■ Consolidate trees so that no two roots have same degree. ■ Consolidate trees so that no two roots have same degree. 0 1 2 3 0 1 2 3 min current min current 24 7 18 52 41 7 18 52 41 26 46 17 30 39 44 24 17 30 39 44 35 23 26 46 23 Merge 7 and 24 trees. 35 19 20 Fibonacci Heaps: Delete Min Fibonacci Heaps: Delete Min Delete min. Delete min. ■ Delete min and concatenate its children into root list. ■ Delete min and concatenate its children into root list. ■ Consolidate trees so that no two roots have same degree. ■ Consolidate trees so that no two roots have same degree. 0 1 2 3 0 1 2 3 min current min current 7 18 52 41 7 18 52 41 24 17 30 39 44 24 17 30 39 44 26 46 23 26 46 23 35 35 21 22 Fibonacci Heaps: Delete Min Fibonacci Heaps: Delete Min Delete min. Delete min. ■ Delete min and concatenate its children into root list. ■ Delete min and concatenate its children into root list. ■ Consolidate trees so that no two roots have same degree. ■ Consolidate trees so that no two roots have same degree. 0 1 2 3 0 1 2 3 min current min current 7 18 52 41 7 52 18 24 17 30 39 44 24 17 30 41 39 26 46 23 26 46 23 44 Merge 41 and 18 trees. 35 35 23 24 Fibonacci Heaps: Delete Min Fibonacci Heaps: Delete Min Delete min. Delete min. ■ Delete min and concatenate its children into root list. ■ Delete min and concatenate its children into root list. ■ Consolidate trees so that no two roots have same degree. ■ Consolidate trees so that no two roots have same degree. 0 1 2 3 min current min 7 52 18 7 52 18 24 17 30 41 39 24 17 30 41 39 26 46 23 44 26 46 23 44 Stop. 35 35 25 26 Fibonacci Heaps: Delete Min Analysis Fibonacci Heaps: Delete Min Analysis Notation. Is amortized cost of O(D(n)) good? ■ D(n) = max degree of any node in Fibonacci heap with n nodes. ■ t(H) = # trees in heap H. ■ Yes, if only Insert, Delete-min, and Union operations supported. ■ Φ(H) = t(H) + 2m(H). – in this case, Fibonacci heap contains only binomial trees since we only merge trees of equal root degree – this implies D(n) ≤log N Actual cost. O(D(n) + t(H)) 2 ■ O(D(n)) work adding min's children into root list and updating min. – at most D(n) children of min node ■ Yes, if we support Decrease-key in clever way. – we'll show that D(n) ≤logφ N, where φ is golden ratio ■ O(D(n) + t(H)) work consolidating trees. – φ2 = 1 + φ – work is proportional to size of root list since number of roots decreases by one after each merging – φ = (1 + √5) / 2 = 1.618… – ≤ D(n) + t(H) - 1 root nodes at beginning of consolidation – limiting ratio between successive Fibonacci numbers! Amortized cost. O(D(n)) ■ t(H') ≤ D(n) + 1 since no two trees have same degree. ■ ∆Φ(H) ≤ D(n) + 1 - t(H). 27 28 Fibonacci Heaps: Decrease Key Fibonacci Heaps: Decrease Key Decrease key of element x to k. Decrease key of element x to k. ■ Case 0: min-heap property not violated. ■ Case 1: parent of x is unmarked. – decrease key of x to k – decrease key of x to k – change heap min pointer if necessary – cut off link between x and its parent – mark parent – add tree rooted at x to root list, updating heap min pointer min min 7 18 38 7 18 38 24 17 23 21 39 41 24 17 23 21 39 41 26 4645 30 52 26 4515 30 52 Decrease 46 to 45. Decrease 45 to 15. 35 88 72 35 88 72 29 30 Fibonacci Heaps: Decrease Key Fibonacci Heaps: Decrease Key Decrease key of element x to k. Decrease key of element x to k. ■ Case 1: parent of x is unmarked. ■ Case 1: parent of x is unmarked. – decrease key of x to k – decrease key of x to k – cut off link between x and its parent – cut off link between x and its parent – mark parent – mark parent – add tree rooted at x to root list, updating heap min pointer – add tree rooted at x to root list, updating heap min pointer min min 7 18 38 15 7 18 38 24 17 23 21 39 41 72 24 17 23 21 39 41 26 15 30 52 26 30 52 Decrease 45 to 15.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    12 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us