Rank-Pairing Heaps Bernhard Haeupler, Siddhartha Sen, and Robert Tarjan, ESA 2009 1.
-
date post
20-Dec-2015 -
Category
Documents
-
view
215 -
download
1
Transcript of Rank-Pairing Heaps Bernhard Haeupler, Siddhartha Sen, and Robert Tarjan, ESA 2009 1.
![Page 1: Rank-Pairing Heaps Bernhard Haeupler, Siddhartha Sen, and Robert Tarjan, ESA 2009 1.](https://reader030.fdocuments.in/reader030/viewer/2022032800/56649d4e5503460f94a2d7b3/html5/thumbnails/1.jpg)
Rank-Pairing Heaps
Bernhard Haeupler, Siddhartha Sen,and Robert Tarjan, ESA 2009
1
![Page 2: Rank-Pairing Heaps Bernhard Haeupler, Siddhartha Sen, and Robert Tarjan, ESA 2009 1.](https://reader030.fdocuments.in/reader030/viewer/2022032800/56649d4e5503460f94a2d7b3/html5/thumbnails/2.jpg)
Observation
Computer science is (still) a young field.
We often settle for the first (good) solution.
It may not be the best: the design space is rich.
2
![Page 3: Rank-Pairing Heaps Bernhard Haeupler, Siddhartha Sen, and Robert Tarjan, ESA 2009 1.](https://reader030.fdocuments.in/reader030/viewer/2022032800/56649d4e5503460f94a2d7b3/html5/thumbnails/3.jpg)
3
Research Agenda
For fundamental problems, systematically explore the design space to find the best solutions, seeking
elegance: “a quality of neatness and ingenious simplicity in the solution of a problem (especially in science or mathematics).”
wordnet.princeton.edu/perl/webwn
Keep the design simple, allow complexity in the analysis.
![Page 4: Rank-Pairing Heaps Bernhard Haeupler, Siddhartha Sen, and Robert Tarjan, ESA 2009 1.](https://reader030.fdocuments.in/reader030/viewer/2022032800/56649d4e5503460f94a2d7b3/html5/thumbnails/4.jpg)
Heap (Priority Queue) ProblemMaintain a set (heap) of items, each with a real-valued key,under the operations
Find minimum: find the item of minimum key in a heapInsert: add a new item to a heapDelete minimum : remove the item of minimum keyMeld: Combine two item-disjoint heaps into oneDecrease key: subtract a given positive amount from the key
of a given item in a known heap
Goal: O(log n) for delete min, O(1) for others
![Page 5: Rank-Pairing Heaps Bernhard Haeupler, Siddhartha Sen, and Robert Tarjan, ESA 2009 1.](https://reader030.fdocuments.in/reader030/viewer/2022032800/56649d4e5503460f94a2d7b3/html5/thumbnails/5.jpg)
Related Work
Fibonacci heaps achieve the desired bounds (Fredman & Tarjan, 1984); so do
• Peterson’s heaps (1987)• Høyer’s heaps (1995)• Brodal’s heaps (1996), worst-case• Thin heaps (Kaplan & Tarjan, 2008)• Violation heaps (Elmasry, 2008)• Quake heaps (Chan, 2009)
Not pairing heaps:(loglog n) time per key decrease, but good in practice
![Page 6: Rank-Pairing Heaps Bernhard Haeupler, Siddhartha Sen, and Robert Tarjan, ESA 2009 1.](https://reader030.fdocuments.in/reader030/viewer/2022032800/56649d4e5503460f94a2d7b3/html5/thumbnails/6.jpg)
Heap-ordered modelHalf-ordered model
11
17 13
8
7
45
3
![Page 7: Rank-Pairing Heaps Bernhard Haeupler, Siddhartha Sen, and Robert Tarjan, ESA 2009 1.](https://reader030.fdocuments.in/reader030/viewer/2022032800/56649d4e5503460f94a2d7b3/html5/thumbnails/7.jpg)
Half-ordered model
11
17 13
8
7
45
3
![Page 8: Rank-Pairing Heaps Bernhard Haeupler, Siddhartha Sen, and Robert Tarjan, ESA 2009 1.](https://reader030.fdocuments.in/reader030/viewer/2022032800/56649d4e5503460f94a2d7b3/html5/thumbnails/8.jpg)
Half-ordered model
11 17
7
5
3
13 8
4
![Page 9: Rank-Pairing Heaps Bernhard Haeupler, Siddhartha Sen, and Robert Tarjan, ESA 2009 1.](https://reader030.fdocuments.in/reader030/viewer/2022032800/56649d4e5503460f94a2d7b3/html5/thumbnails/9.jpg)
Half-ordered tree: binary tree, one item per node, each item less than all items in left subtree
Half tree: half-ordered binary tree with no right subtree
Link two half trees:
O(1) time, preserves half order
5
10
A B
10
A
5
B++
![Page 10: Rank-Pairing Heaps Bernhard Haeupler, Siddhartha Sen, and Robert Tarjan, ESA 2009 1.](https://reader030.fdocuments.in/reader030/viewer/2022032800/56649d4e5503460f94a2d7b3/html5/thumbnails/10.jpg)
Heap: a set (circular singly-linked list) of half trees, with minimum root first on list; access via last on list
Find min: return minimumInsert: Form a new one-node tree, combine with
current set of half trees, update the minimumMeld: Combine sets of half trees, update the minimumDelete min: Remove minimum root (forming new half
trees); Repeatedly link half trees, form a set of the remaining trees
![Page 11: Rank-Pairing Heaps Bernhard Haeupler, Siddhartha Sen, and Robert Tarjan, ESA 2009 1.](https://reader030.fdocuments.in/reader030/viewer/2022032800/56649d4e5503460f94a2d7b3/html5/thumbnails/11.jpg)
How to link? Use ranks: leaves have rank zero,only link trees whose roots have equal rank,increase winner’s rank by one:
All rank differences are 1: a half tree of rank k is a perfect binary tree plus a root: 2k nodes, rank = lg n
++k
k - 1
k
k - 1 k
k - 1 k - 1
k + 1
Vuillemin’s binomial queues!
Vuillemin’s binomial queues!
![Page 12: Rank-Pairing Heaps Bernhard Haeupler, Siddhartha Sen, and Robert Tarjan, ESA 2009 1.](https://reader030.fdocuments.in/reader030/viewer/2022032800/56649d4e5503460f94a2d7b3/html5/thumbnails/12.jpg)
Delete minimum
Delete min
Each node on right path becomes a new root
![Page 13: Rank-Pairing Heaps Bernhard Haeupler, Siddhartha Sen, and Robert Tarjan, ESA 2009 1.](https://reader030.fdocuments.in/reader030/viewer/2022032800/56649d4e5503460f94a2d7b3/html5/thumbnails/13.jpg)
Link half trees of equal rankArray of buckets, at most one per rank
Delete min
![Page 14: Rank-Pairing Heaps Bernhard Haeupler, Siddhartha Sen, and Robert Tarjan, ESA 2009 1.](https://reader030.fdocuments.in/reader030/viewer/2022032800/56649d4e5503460f94a2d7b3/html5/thumbnails/14.jpg)
Delete min
Link half trees of equal rankArray of buckets, at most one per rankForm new set of half trees
“multipass”
![Page 15: Rank-Pairing Heaps Bernhard Haeupler, Siddhartha Sen, and Robert Tarjan, ESA 2009 1.](https://reader030.fdocuments.in/reader030/viewer/2022032800/56649d4e5503460f94a2d7b3/html5/thumbnails/15.jpg)
Delete min
Form new set of half treesFind new minimum in O(log n) time
![Page 16: Rank-Pairing Heaps Bernhard Haeupler, Siddhartha Sen, and Robert Tarjan, ESA 2009 1.](https://reader030.fdocuments.in/reader030/viewer/2022032800/56649d4e5503460f94a2d7b3/html5/thumbnails/16.jpg)
Keep track of minimum during linksFind minimum in O(log n)
additional time
Delete min: lazier linking
“one-pass”
![Page 17: Rank-Pairing Heaps Bernhard Haeupler, Siddhartha Sen, and Robert Tarjan, ESA 2009 1.](https://reader030.fdocuments.in/reader030/viewer/2022032800/56649d4e5503460f94a2d7b3/html5/thumbnails/17.jpg)
Form new set of half trees
Delete min: lazier linking
![Page 18: Rank-Pairing Heaps Bernhard Haeupler, Siddhartha Sen, and Robert Tarjan, ESA 2009 1.](https://reader030.fdocuments.in/reader030/viewer/2022032800/56649d4e5503460f94a2d7b3/html5/thumbnails/18.jpg)
Amortized Analysis of Lazy Binomial Queues
= #treesLink: O(1) time, = -1, amortized time = 0Insert: O(1) time, = 1Meld: O(1) time, = 0Delete min: if k trees after root removal, time is
O(k), potential decreases by k/2 – O(log n) O(log n) amortized time
![Page 19: Rank-Pairing Heaps Bernhard Haeupler, Siddhartha Sen, and Robert Tarjan, ESA 2009 1.](https://reader030.fdocuments.in/reader030/viewer/2022032800/56649d4e5503460f94a2d7b3/html5/thumbnails/19.jpg)
Decrease key?
Application: Dijkstra’s shortest path algorithm, othersMethod: To decrease key of x, detach its half tree,
restructure if necessary
(If x is the right child of u, no easy way to tell if half order is violated)
u
x
y
u
y
x
![Page 20: Rank-Pairing Heaps Bernhard Haeupler, Siddhartha Sen, and Robert Tarjan, ESA 2009 1.](https://reader030.fdocuments.in/reader030/viewer/2022032800/56649d4e5503460f94a2d7b3/html5/thumbnails/20.jpg)
How to maintain structure?
All previous methods, starting with Fibonacci heaps, change ranks and restructure
Some, like Quake heaps (Chan, 2009) and Relaxed heaps (Driscoll et al., 1988), do not restructure during key decrease, but this just postpones restructuring
But all that is needed is rank changes:Trees can have arbitrary structure!
Rank-Pairing Heaps = rp-heaps
Goal is SIMPLICITY
Goal is SIMPLICITY
![Page 21: Rank-Pairing Heaps Bernhard Haeupler, Siddhartha Sen, and Robert Tarjan, ESA 2009 1.](https://reader030.fdocuments.in/reader030/viewer/2022032800/56649d4e5503460f94a2d7b3/html5/thumbnails/21.jpg)
21
Node RanksEach node has a non-negative integer rank
Convention: missing nodes have rank -1 (leaves have rank 0)
rank difference of a child =rank of parent - rank of child
i-child: node of rank difference ii,j-node: children have rank differences i and j
Convention: the child of a root is a 1-child
![Page 22: Rank-Pairing Heaps Bernhard Haeupler, Siddhartha Sen, and Robert Tarjan, ESA 2009 1.](https://reader030.fdocuments.in/reader030/viewer/2022032800/56649d4e5503460f94a2d7b3/html5/thumbnails/22.jpg)
1
Rank Rules
Easy-to-analyze version (type 2):All rank differences are non-negativeIf rank difference exceeds 2, sibling has rank difference 0If rank difference is 0, sibling has rank difference at least 2
Simpler but harder-to-analyze version (type 1):If rank difference exceeds 1, sibling has rank difference 0If rank difference is 0, sibling has rank difference ≥ 1
1 12 21 0≥ 2 ≥ 20
11 0≥ 1 ≥ 10
![Page 23: Rank-Pairing Heaps Bernhard Haeupler, Siddhartha Sen, and Robert Tarjan, ESA 2009 1.](https://reader030.fdocuments.in/reader030/viewer/2022032800/56649d4e5503460f94a2d7b3/html5/thumbnails/23.jpg)
Tree Size
If nk is minimum number of descendants of a node of rank k,
n0 = 1, nk = nk-1 + nk-2 : Fibonacci numbers
nk ≥ k, =
k log n
251
![Page 24: Rank-Pairing Heaps Bernhard Haeupler, Siddhartha Sen, and Robert Tarjan, ESA 2009 1.](https://reader030.fdocuments.in/reader030/viewer/2022032800/56649d4e5503460f94a2d7b3/html5/thumbnails/24.jpg)
2
0102
10
Decrease key
x
u
0 6
6 0
8
0
1k - 1
1 1
k1
y
Detach half treeRestore rank rule
8
0
u0 2
6u
1 1
6u
0 5
u k - 1
u
0-children block propagation of rank decreases from sibling’s subtree
![Page 25: Rank-Pairing Heaps Bernhard Haeupler, Siddhartha Sen, and Robert Tarjan, ESA 2009 1.](https://reader030.fdocuments.in/reader030/viewer/2022032800/56649d4e5503460f94a2d7b3/html5/thumbnails/25.jpg)
Amortized AnalysisPotential of node = sum of rank differences of children - 1 +1 if root (= 1) -1 if 1,1-node (= 0)
Link is free:
One unit pays for link
Insert needs 1 unit, meld none
++1
(+1) (+1) (+1)
(0)1 1
1 1
![Page 26: Rank-Pairing Heaps Bernhard Haeupler, Siddhartha Sen, and Robert Tarjan, ESA 2009 1.](https://reader030.fdocuments.in/reader030/viewer/2022032800/56649d4e5503460f94a2d7b3/html5/thumbnails/26.jpg)
Delete min rank k
Each 1,1 needs potential 1, adding at most k in total.Delete min takes O(log n) amortized time
1
1 unit needed
1
0≥ 2
12
![Page 27: Rank-Pairing Heaps Bernhard Haeupler, Siddhartha Sen, and Robert Tarjan, ESA 2009 1.](https://reader030.fdocuments.in/reader030/viewer/2022032800/56649d4e5503460f94a2d7b3/html5/thumbnails/27.jpg)
Decrease KeySuccessive rank decreases are non-increasing
At most two 1,1’s occur on path of rank decreases – 1,1 becomes 0, j : prev decrease >1, next decrease = 1 1,1 becomes 1,2 : terminal
Give each 1,1 one extra unit of potential
Each rank decrease releases a unit to pay for decrease: rank diffs of both children decrease by k, rank diff of
parent increases by k
![Page 28: Rank-Pairing Heaps Bernhard Haeupler, Siddhartha Sen, and Robert Tarjan, ESA 2009 1.](https://reader030.fdocuments.in/reader030/viewer/2022032800/56649d4e5503460f94a2d7b3/html5/thumbnails/28.jpg)
121
064
5110
5131
71712
2
010
10
Decrease key
9
0 6
6 0
8
0
1k - 1
1 1
k1
Detach half treeRestore rank rule
8
0
0 2
61 1
60 5
k - 11
![Page 29: Rank-Pairing Heaps Bernhard Haeupler, Siddhartha Sen, and Robert Tarjan, ESA 2009 1.](https://reader030.fdocuments.in/reader030/viewer/2022032800/56649d4e5503460f94a2d7b3/html5/thumbnails/29.jpg)
Type-1 rp-heaps
Max k lg n
Analysis requires a more elaborate potential based on rank differences of children and grandchildren
Same bounds as type-2 rp-heaps, provided we preferentially link half trees from disassembly
![Page 30: Rank-Pairing Heaps Bernhard Haeupler, Siddhartha Sen, and Robert Tarjan, ESA 2009 1.](https://reader030.fdocuments.in/reader030/viewer/2022032800/56649d4e5503460f94a2d7b3/html5/thumbnails/30.jpg)
Summary
Rank-pairing heaps combine performance guarantees of Fibonacci heaps with simplicity approaching pairing heaps
Type-1 rp-heaps are especially simple, but not simple to analyze
Results build on prior work by Peterson, Høyer, and Kaplan and Tarjan, and may be the natural conclusion of this work
Simpler methods of doing key decrease are not efficient (see paper)
Preliminary experiments show rp-heaps are competitive with pairing heaps on typical input sequences, and better on worst-case sequences
![Page 31: Rank-Pairing Heaps Bernhard Haeupler, Siddhartha Sen, and Robert Tarjan, ESA 2009 1.](https://reader030.fdocuments.in/reader030/viewer/2022032800/56649d4e5503460f94a2d7b3/html5/thumbnails/31.jpg)
Additional Questions
One-tree version of rp-heaps?Yes, but unfair links add losers to the bottom of the loser list instead of the top
Decrease key without cascading rank changes?No, with O(log n) time per delete minMaybe, with O(log m) time per delete min
need at least one rank decrease
Simplify Brodal’s heaps?