Fibonacci Heaps - 臺灣大學計算機中心ccf.ee.ntu.edu.tw/~yen/courses/ds19/chapter-5c.pdf ·...

37
Fibonacci Heaps (Fibonacci Heaps) Data Structures and Programming Spring 2019 1 / 37

Transcript of Fibonacci Heaps - 臺灣大學計算機中心ccf.ee.ntu.edu.tw/~yen/courses/ds19/chapter-5c.pdf ·...

Page 1: Fibonacci Heaps - 臺灣大學計算機中心ccf.ee.ntu.edu.tw/~yen/courses/ds19/chapter-5c.pdf · 2019-05-05 · Fibonacci Heaps Fibonacci heap history. Fredman and Tarjan (1986)

Fibonacci Heaps

(Fibonacci Heaps) Data Structures and Programming Spring 2019 1 / 37

Page 2: Fibonacci Heaps - 臺灣大學計算機中心ccf.ee.ntu.edu.tw/~yen/courses/ds19/chapter-5c.pdf · 2019-05-05 · Fibonacci Heaps Fibonacci heap history. Fredman and Tarjan (1986)

Fibonacci Heaps

Fibonacci heap history. Fredman and Tarjan (1986)I Ingenious data structure and analysis.I Original motivation: O(m + nlogn) shortest path algorithm.

F also led to faster algorithms for MST, weighted bipartite matchingI Still ahead of its time.

Fibonacci heap intuition.I Similar to binomial heaps, but less structured.I Decrease-key and union run in O(1) time.I ”Lazy” unions.

(Fibonacci Heaps) Data Structures and Programming Spring 2019 2 / 37

Page 3: Fibonacci Heaps - 臺灣大學計算機中心ccf.ee.ntu.edu.tw/~yen/courses/ds19/chapter-5c.pdf · 2019-05-05 · Fibonacci Heaps Fibonacci heap history. Fredman and Tarjan (1986)

Fibonacci Heaps: Structure

Fibonacci heap.Set of min-heap ordered trees.

(Fibonacci Heaps) Data Structures and Programming Spring 2019 3 / 37

Page 4: Fibonacci Heaps - 臺灣大學計算機中心ccf.ee.ntu.edu.tw/~yen/courses/ds19/chapter-5c.pdf · 2019-05-05 · Fibonacci Heaps Fibonacci heap history. Fredman and Tarjan (1986)

Fibonacci Heaps: Implementation

(Fibonacci Heaps) Data Structures and Programming Spring 2019 4 / 37

Page 5: Fibonacci Heaps - 臺灣大學計算機中心ccf.ee.ntu.edu.tw/~yen/courses/ds19/chapter-5c.pdf · 2019-05-05 · Fibonacci Heaps Fibonacci heap history. Fredman and Tarjan (1986)

Fibonacci Heaps: Potential Function

(Fibonacci Heaps) Data Structures and Programming Spring 2019 5 / 37

Page 6: Fibonacci Heaps - 臺灣大學計算機中心ccf.ee.ntu.edu.tw/~yen/courses/ds19/chapter-5c.pdf · 2019-05-05 · Fibonacci Heaps Fibonacci heap history. Fredman and Tarjan (1986)

Fibonacci Heaps: Insert

(Fibonacci Heaps) Data Structures and Programming Spring 2019 6 / 37

Page 7: Fibonacci Heaps - 臺灣大學計算機中心ccf.ee.ntu.edu.tw/~yen/courses/ds19/chapter-5c.pdf · 2019-05-05 · Fibonacci Heaps Fibonacci heap history. Fredman and Tarjan (1986)

Fibonacci Heaps: Insert

(Fibonacci Heaps) Data Structures and Programming Spring 2019 7 / 37

Page 8: Fibonacci Heaps - 臺灣大學計算機中心ccf.ee.ntu.edu.tw/~yen/courses/ds19/chapter-5c.pdf · 2019-05-05 · Fibonacci Heaps Fibonacci heap history. Fredman and Tarjan (1986)

Fibonacci Heaps: Insert

(Fibonacci Heaps) Data Structures and Programming Spring 2019 8 / 37

Page 9: Fibonacci Heaps - 臺灣大學計算機中心ccf.ee.ntu.edu.tw/~yen/courses/ds19/chapter-5c.pdf · 2019-05-05 · Fibonacci Heaps Fibonacci heap history. Fredman and Tarjan (1986)

Binomial Heap: Union

(Fibonacci Heaps) Data Structures and Programming Spring 2019 9 / 37

Page 10: Fibonacci Heaps - 臺灣大學計算機中心ccf.ee.ntu.edu.tw/~yen/courses/ds19/chapter-5c.pdf · 2019-05-05 · Fibonacci Heaps Fibonacci heap history. Fredman and Tarjan (1986)

Fibonacci Heaps: Union

(Fibonacci Heaps) Data Structures and Programming Spring 2019 10 / 37

Page 11: Fibonacci Heaps - 臺灣大學計算機中心ccf.ee.ntu.edu.tw/~yen/courses/ds19/chapter-5c.pdf · 2019-05-05 · Fibonacci Heaps Fibonacci heap history. Fredman and Tarjan (1986)

Fibonacci Heaps: Delete Min

(Fibonacci Heaps) Data Structures and Programming Spring 2019 11 / 37

Page 12: Fibonacci Heaps - 臺灣大學計算機中心ccf.ee.ntu.edu.tw/~yen/courses/ds19/chapter-5c.pdf · 2019-05-05 · Fibonacci Heaps Fibonacci heap history. Fredman and Tarjan (1986)

Fibonacci Heaps: Delete Min

(Fibonacci Heaps) Data Structures and Programming Spring 2019 12 / 37

Page 13: Fibonacci Heaps - 臺灣大學計算機中心ccf.ee.ntu.edu.tw/~yen/courses/ds19/chapter-5c.pdf · 2019-05-05 · Fibonacci Heaps Fibonacci heap history. Fredman and Tarjan (1986)

Fibonacci Heaps: Delete Min

(Fibonacci Heaps) Data Structures and Programming Spring 2019 13 / 37

Page 14: Fibonacci Heaps - 臺灣大學計算機中心ccf.ee.ntu.edu.tw/~yen/courses/ds19/chapter-5c.pdf · 2019-05-05 · Fibonacci Heaps Fibonacci heap history. Fredman and Tarjan (1986)

Fibonacci Heaps: Delete Min

(Fibonacci Heaps) Data Structures and Programming Spring 2019 14 / 37

Page 15: Fibonacci Heaps - 臺灣大學計算機中心ccf.ee.ntu.edu.tw/~yen/courses/ds19/chapter-5c.pdf · 2019-05-05 · Fibonacci Heaps Fibonacci heap history. Fredman and Tarjan (1986)

Fibonacci Heaps: Delete Min

(Fibonacci Heaps) Data Structures and Programming Spring 2019 15 / 37

Page 16: Fibonacci Heaps - 臺灣大學計算機中心ccf.ee.ntu.edu.tw/~yen/courses/ds19/chapter-5c.pdf · 2019-05-05 · Fibonacci Heaps Fibonacci heap history. Fredman and Tarjan (1986)

Fibonacci Heaps: Delete Min

(Fibonacci Heaps) Data Structures and Programming Spring 2019 16 / 37

Page 17: Fibonacci Heaps - 臺灣大學計算機中心ccf.ee.ntu.edu.tw/~yen/courses/ds19/chapter-5c.pdf · 2019-05-05 · Fibonacci Heaps Fibonacci heap history. Fredman and Tarjan (1986)

Fibonacci Heaps: Delete Min

(Fibonacci Heaps) Data Structures and Programming Spring 2019 17 / 37

Page 18: Fibonacci Heaps - 臺灣大學計算機中心ccf.ee.ntu.edu.tw/~yen/courses/ds19/chapter-5c.pdf · 2019-05-05 · Fibonacci Heaps Fibonacci heap history. Fredman and Tarjan (1986)

Fibonacci Heaps: Delete Min

(Fibonacci Heaps) Data Structures and Programming Spring 2019 18 / 37

Page 19: Fibonacci Heaps - 臺灣大學計算機中心ccf.ee.ntu.edu.tw/~yen/courses/ds19/chapter-5c.pdf · 2019-05-05 · Fibonacci Heaps Fibonacci heap history. Fredman and Tarjan (1986)

Fibonacci Heaps: Delete Min

(Fibonacci Heaps) Data Structures and Programming Spring 2019 19 / 37

Page 20: Fibonacci Heaps - 臺灣大學計算機中心ccf.ee.ntu.edu.tw/~yen/courses/ds19/chapter-5c.pdf · 2019-05-05 · Fibonacci Heaps Fibonacci heap history. Fredman and Tarjan (1986)

Fibonacci Heaps: Delete Min

(Fibonacci Heaps) Data Structures and Programming Spring 2019 20 / 37

Page 21: Fibonacci Heaps - 臺灣大學計算機中心ccf.ee.ntu.edu.tw/~yen/courses/ds19/chapter-5c.pdf · 2019-05-05 · Fibonacci Heaps Fibonacci heap history. Fredman and Tarjan (1986)

Fibonacci Heaps: Delete Min

(Fibonacci Heaps) Data Structures and Programming Spring 2019 21 / 37

Page 22: Fibonacci Heaps - 臺灣大學計算機中心ccf.ee.ntu.edu.tw/~yen/courses/ds19/chapter-5c.pdf · 2019-05-05 · Fibonacci Heaps Fibonacci heap history. Fredman and Tarjan (1986)

Fibonacci Heaps: Delete Min

(Fibonacci Heaps) Data Structures and Programming Spring 2019 22 / 37

Page 23: Fibonacci Heaps - 臺灣大學計算機中心ccf.ee.ntu.edu.tw/~yen/courses/ds19/chapter-5c.pdf · 2019-05-05 · Fibonacci Heaps Fibonacci heap history. Fredman and Tarjan (1986)

Fibonacci Heaps: Delete Min

(Fibonacci Heaps) Data Structures and Programming Spring 2019 23 / 37

Page 24: Fibonacci Heaps - 臺灣大學計算機中心ccf.ee.ntu.edu.tw/~yen/courses/ds19/chapter-5c.pdf · 2019-05-05 · Fibonacci Heaps Fibonacci heap history. Fredman and Tarjan (1986)

Fibonacci Heaps: Delete Min

(Fibonacci Heaps) Data Structures and Programming Spring 2019 24 / 37

Page 25: Fibonacci Heaps - 臺灣大學計算機中心ccf.ee.ntu.edu.tw/~yen/courses/ds19/chapter-5c.pdf · 2019-05-05 · Fibonacci Heaps Fibonacci heap history. Fredman and Tarjan (1986)

Fibonacci Heaps: Delete Min

(Fibonacci Heaps) Data Structures and Programming Spring 2019 25 / 37

Page 26: Fibonacci Heaps - 臺灣大學計算機中心ccf.ee.ntu.edu.tw/~yen/courses/ds19/chapter-5c.pdf · 2019-05-05 · Fibonacci Heaps Fibonacci heap history. Fredman and Tarjan (1986)

Fibonacci Heaps: Delete Min Analysis

(Fibonacci Heaps) Data Structures and Programming Spring 2019 26 / 37

Page 27: Fibonacci Heaps - 臺灣大學計算機中心ccf.ee.ntu.edu.tw/~yen/courses/ds19/chapter-5c.pdf · 2019-05-05 · Fibonacci Heaps Fibonacci heap history. Fredman and Tarjan (1986)

Fibonacci Heaps: Delete Min Analysis

(Fibonacci Heaps) Data Structures and Programming Spring 2019 27 / 37

Page 28: Fibonacci Heaps - 臺灣大學計算機中心ccf.ee.ntu.edu.tw/~yen/courses/ds19/chapter-5c.pdf · 2019-05-05 · Fibonacci Heaps Fibonacci heap history. Fredman and Tarjan (1986)

Fibonacci Heaps: Decrease Key

(Fibonacci Heaps) Data Structures and Programming Spring 2019 28 / 37

Page 29: Fibonacci Heaps - 臺灣大學計算機中心ccf.ee.ntu.edu.tw/~yen/courses/ds19/chapter-5c.pdf · 2019-05-05 · Fibonacci Heaps Fibonacci heap history. Fredman and Tarjan (1986)

Fibonacci Heaps: Decrease Key

(Fibonacci Heaps) Data Structures and Programming Spring 2019 29 / 37

Page 30: Fibonacci Heaps - 臺灣大學計算機中心ccf.ee.ntu.edu.tw/~yen/courses/ds19/chapter-5c.pdf · 2019-05-05 · Fibonacci Heaps Fibonacci heap history. Fredman and Tarjan (1986)

Fibonacci Heaps: Decrease Key

(Fibonacci Heaps) Data Structures and Programming Spring 2019 30 / 37

Page 31: Fibonacci Heaps - 臺灣大學計算機中心ccf.ee.ntu.edu.tw/~yen/courses/ds19/chapter-5c.pdf · 2019-05-05 · Fibonacci Heaps Fibonacci heap history. Fredman and Tarjan (1986)

Fibonacci Heaps: Decrease Key

(Fibonacci Heaps) Data Structures and Programming Spring 2019 31 / 37

Page 32: Fibonacci Heaps - 臺灣大學計算機中心ccf.ee.ntu.edu.tw/~yen/courses/ds19/chapter-5c.pdf · 2019-05-05 · Fibonacci Heaps Fibonacci heap history. Fredman and Tarjan (1986)

Fibonacci Heaps: Decrease Key

(Fibonacci Heaps) Data Structures and Programming Spring 2019 32 / 37

Page 33: Fibonacci Heaps - 臺灣大學計算機中心ccf.ee.ntu.edu.tw/~yen/courses/ds19/chapter-5c.pdf · 2019-05-05 · Fibonacci Heaps Fibonacci heap history. Fredman and Tarjan (1986)

Fibonacci Heaps: Decrease Key

(Fibonacci Heaps) Data Structures and Programming Spring 2019 33 / 37

Page 34: Fibonacci Heaps - 臺灣大學計算機中心ccf.ee.ntu.edu.tw/~yen/courses/ds19/chapter-5c.pdf · 2019-05-05 · Fibonacci Heaps Fibonacci heap history. Fredman and Tarjan (1986)

Fibonacci Heaps: Decrease Key

(Fibonacci Heaps) Data Structures and Programming Spring 2019 34 / 37

Page 35: Fibonacci Heaps - 臺灣大學計算機中心ccf.ee.ntu.edu.tw/~yen/courses/ds19/chapter-5c.pdf · 2019-05-05 · Fibonacci Heaps Fibonacci heap history. Fredman and Tarjan (1986)

Fibonacci Heaps: Decrease Key

(Fibonacci Heaps) Data Structures and Programming Spring 2019 35 / 37

Page 36: Fibonacci Heaps - 臺灣大學計算機中心ccf.ee.ntu.edu.tw/~yen/courses/ds19/chapter-5c.pdf · 2019-05-05 · Fibonacci Heaps Fibonacci heap history. Fredman and Tarjan (1986)

Fibonacci Heaps: Decrease Key Analysis

(Fibonacci Heaps) Data Structures and Programming Spring 2019 36 / 37

Page 37: Fibonacci Heaps - 臺灣大學計算機中心ccf.ee.ntu.edu.tw/~yen/courses/ds19/chapter-5c.pdf · 2019-05-05 · Fibonacci Heaps Fibonacci heap history. Fredman and Tarjan (1986)

Fibonacci Heaps: Delete

(Fibonacci Heaps) Data Structures and Programming Spring 2019 37 / 37