100 likes | 309 Views
Strict Fibonacci Heaps Gerth Stølting Brodal Aarhus University George Lagogiannis Robert Endre Tarjan Agricultural University of Athens Princeton University & HP 44th Annual ACM Symposium on Theory of Computing, New Yorker Hotel, New York, May 22, 2012.
E N D
Strict Fibonacci Heaps • GerthStøltingBrodal • Aarhus University • George Lagogiannis Robert EndreTarjanAgricultural University of AthensPrinceton University & HP 44th Annual ACM Symposium on Theory of Computing, New Yorker Hotel, New York, May 22, 2012
The Problem — Priority Queues Q1 • Insert(value, key) • FindMin • DeleteMin / Delete(&value) • Meld(Q1,Q2) • DecreaseKey(&value, Δ) (C,11) (M,36) (B,14) • ShortestPath Dijkstra (1956) • Minimum SpanningTree Borůvka (1926)Jarník (1930) (n node, m edges) (J,6) (X,86) 12 (A,27) (K,54) A 15 (W,6) (Z,29) Q2 (D,24) 3 11 3 t 11 4 17 4 17 Applications 6 22 2 6 22 2 13 25 13 25 16 11 5 16 11 15 5 15 • Insert/DeleteMin 10 1 10 s 1 • (m+n)∙log n • m+n∙logn • m∙β(m,n) 14 19 14 19 9 12 8 9 12 8 • Fredman, Tarjan 1984 • + DecreaseKey • MST • only • Fredman, Tarjan 1984 • + DecreaseKey
History StrictFibonacci heaps Run-relaxedheaps Binomial queues Fibonacciheaps Binaryheaps Arrays Complicated Pointer Based Amortizedcomplexity (Tarjan 1983)
TechnicalHistory Min 7 4 6 13 12 11 16 17 27 86 27 3 24 34 8 42 6 54 36 86 • Binaryheaps • Bionomialqueues • Fibonacciheaps single tree
whiteroot Ideas 4 11 7 color white 8 12 color 16 white red 5 6 42 14 14 11 12 23 23 15 15 21 Meld smallest treered + link 1 0 2 0 0 0
Priority Queue Operations • FindMin=returnroot • Insert=make single red node +Meld • Delete=DecreaseKeyto -+DeleteMin • Meld=color smaller treered +link + O(1) transformations • DecreaseKey= cut + link with root+ O(1) transformations • DeleteMin= cut root+ find new root+O(log n) link+ O(log n) transformations 0 0 rootdegree +1 rootdegree +1; whiteroot (+1); marks (+1) 2 rootdegree +O(log n); whiteroot +O(log n) 0 0
root root x y z y belowroot x 1/0 x ≥ 2 marks y 0/0 z z belowroot r/1 x y r/0 y x r/1 r/0 z Transformations r / m = rang / #marks
rank colorrecord Q-next flag active ref-count parent right x left left-child ... Q-prev heap record size root pointers from unmarkedwhitenodes with rank 1 color-record and with whiteparent maximum non-linkable-child rank inc dec Q-head rank-list 4 3 2 1 0 rank-list singles marked whiteroots fix-list rank fix-list 3 3 1 1 4 0 2 1 3 3 4 0 0 left right node transformable transformable whiteroots nodes with marks Representation
ThankYou Run-relaxedheaps StrictFibonacci heaps Binomial queues Fibonacciheaps Binaryheaps Arrays Pointer Based Amortized