‣ Binary Heaps ‣ D-Ary Heaps ‣ Binomial Heaps ‣ Fibonacci Heaps

‣ Binary Heaps ‣ D-Ary Heaps ‣ Binomial Heaps ‣ Fibonacci Heaps

PRIORITY QUEUES ‣ binary heaps ‣ d-ary heaps ‣ binomial heaps ‣ Fibonacci heaps Lecture slides by Kevin Wayne Copyright © 2005 Pearson-Addison Wesley http://www.cs.princeton.edu/~wayne/kleinberg-tardos Last updated on 7/25/17 11:07 AM Priority queue data type A min-oriented priority queue supports the following core operations: ・MAKE-HEAP(): create an empty heap. ・INSERT(H, x): insert an element x into the heap. ・EXTRACT-MIN(H): remove and return an element with the smallest key. ・DECREASE-KEY(H, x, k): decrease the key of element x to k. The following operations are also useful: ・IS-EMPTY(H): is the heap empty? ・FIND-MIN(H): return an element with smallest key. ・DELETE(H, x): delete element x from the heap. ・MELD(H1, H2): replace heaps H1 and H2 with their union. Note. Each element contains a key (duplicate keys are permitted) from a totally-ordered universe. 2 Priority queue applications Applications. ・A* search. ・Heapsort. ・Online median. ・Huffman encoding. ・Prim’s MST algorithm. ・Discrete event-driven simulation. ・Network bandwidth management. ・Dijkstra’s shortest-paths algorithm. ・… http://younginc.site11.com/source/5895/fos0092.html 3 PRIORITY QUEUES ‣ binary heaps ‣ d-ary heaps ‣ binomial heaps Algorithms ‣ Fibonacci heaps FOURTH EDITION ROBERT SEDGEWICK | KEVIN WAYNE SECTION 2.4 Complete binary tree Binary tree. Empty or node with links to two disjoint binary trees. Complete tree. Perfectly balanced, except for bottom level. complete tree with n = 16 nodes (height = 4) Property. Height of complete binary tree with n nodes is ⎣log2 n⎦. Pf. Height increases (by 1) only when n is a power of 2. ▪ 5 A complete binary tree in nature 6 Binary heap Binary heap. Heap-ordered complete binary tree. Heap-ordered tree. For each child, the key in child ≥ key in parent. 6 parent 10 8 child 12 18 child 11 25 21 17 19 7 Explicit binary heap Pointer representation. Each node has a pointer to parent and two children. ・Maintain number of elements n. ・Maintain pointer to root node. ・Can find pointer to last node or next node in O(log n) time. root 6 10 8 12 18 11 25 21 17 19 last next 8 Implicit binary heap Array representation. Indices start at 1. ・Take nodes in level order. ・Parent of node at k is at ⎣k / 2⎦. ・Children of node at k are at 2k and 2k + 1. 1 6 2 3 10 8 4 5 6 7 12 18 11 25 8 9 10 21 17 19 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 6 10 8 12 18 11 25 21 17 19 9 Binary heap demo heap ordered 6 10 8 12 18 11 25 21 17 19 10 Binary heap: insert Insert. Add element in new node at end; repeatedly exchange new element with element in its parent until heap order is restored. 6 10 8 12 18 11 25 add key to heap 21 17 19 7 (violates heap order) 6 7 8 12 10 11 25 21 17 19 18 swim up 11 Binary heap: extract the minimum Extract min. Exchange element in root node with last node; repeatedly exchange element in root with its smaller child until heap order is restored. element to 6 remove 7 8 12 10 11 25 exchange 21 17 19 18 with root sink down violates 18 7 heap order 7 8 10 8 12 10 11 25 12 18 11 25 remove 21 17 19 6 21 17 19 6 from heap 12 Binary heap: decrease key Decrease key. Given a handle to node, repeatedly exchange element with its parent until heap order is restored. decrease key of node x to 11 6 10 8 12 18 11 25 21 17 19 x 13 Binary heap: analysis Theorem. In an implicit binary heap, any sequence of m INSERT, EXTRACT-MIN, and DECREASE-KEY operations with n INSERT operations takes O(m log n) time. Pf. ・Each heap op touches nodes only on a path from the root to a leaf; the height of the tree is at most log2 n. ・The total cost of expanding and contracting the arrays is O(n). ▪ Theorem. In an explicit binary heap with n nodes, the operations INSERT, DECREASE-KEY, and EXTRACT-MIN take O(log n) time in the worst case. 14 Binary heap: find-min Find the minimum. Return element in the root node. root 6 7 10 12 8 11 25 21 17 9 15 Binary heap: delete Delete. Given a handle to a node, exchange element in node with last node; either swim down or sink up the node until heap order is restored. delete node x or y 6 x 7 10 12 8 11 25 y 21 17 9 last 16 Binary heap: meld Meld. Given two binary heaps H1 and H2, merge into a single binary heap. Observation. No easy solution: Ω(n) time apparently required. H1 H2 7 10 12 8 11 25 21 17 9 17 Binary heap: heapify Heapify. Given n elements, construct a binary heap containing them. Observation. Can do in O(n log n) time by inserting each element. Bottom-up method. For i = n to 1, repeatedly exchange the element in node i with its smaller child until subtree rooted at i is heap-ordered. 1 8 2 12 3 9 4 7 5 22 6 3 7 26 8 14 9 11 10 15 11 22 8 12 9 7 22 3 26 14 11 15 22 1 2 3 4 5 6 7 8 9 10 11 18 Binary heap: heapify Theorem. Given n elements, can construct a binary heap containing those n elements in O(n) time. Pf. ・There are at most ⎡n / 2h+1⎤ nodes of height h. ・The amount of work to sink a node is proportional to its height h. Thus, the total work is bounded by: ・ log n log n 2 2 n/2h+1 h nh/2h ≤ logh2=0n logh2=0n 2 2 n/2h+1 h nh/2h n/2 h ∞ nh/2 k ≤ n h/2h i k 1 h=0 ≤ h=0 =2 h=1 2i − 2k − 2k 1 ∞ i=1 − =2n n h/2h ≤ ▪ 2 h=1 ≤ h=1 =2n Corollary. Given two binary heaps H1 and H2 containing n elements in total, can implement MELD in O(n) time. 19 Priority queues performance cost summary operation linked list binary heap MAKE-HEAP O(1) O(1) ISEMPTY O(1) O(1) INSERT O(1) O(log n) EXTRACT-MIN O(n) O(log n) DECREASE-KEY O(1) O(log n) DELETE O(1) O(log n) MELD O(1) O(n) FIND-MIN O(n) O(1) 20 Priority queues performance cost summary Q. Reanalyze so that EXTRACT-MIN and DELETE take O(1) amortized time? operation linked list binary heap binary heap † MAKE-HEAP O(1) O(1) O(1) ISEMPTY O(1) O(1) O(1) INSERT O(1) O(log n) O(log n) EXTRACT-MIN O(n) O(log n) O(1) † DECREASE-KEY O(1) O(log n) O(log n) DELETE O(1) O(log n) O(1) † MELD O(1) O(n) O(n) FIND-MIN O(n) O(1) O(1) † amortized 21 PRIORITY QUEUES ‣ binary heaps ‣ d-ary heaps ‣ binomial heaps Algorithms ‣ Fibonacci heaps FOURTH EDITION ROBERT SEDGEWICK | KEVIN WAYNE SECTION 2.4 Complete d-ary tree d-ary tree. Empty or node with links to d disjoint d-ary trees. Complete tree. Perfectly balanced, except for bottom level. Fact. The height of a complete d-ary tree with n nodes is ≤ ⎡logd n⎤. 23 d-ary heap d-ary heap. Heap-ordered complete d-ary tree. Heap-ordered tree. For each child, the key in child ≥ key in parent. 4 30 10 20 80 32 34 55 22 34 46 20 40 82 90 24 d-ary heap: insert Insert. Add node at end; repeatedly exchange element in child with element in parent until heap order is restored. Running time. Proportional to height = O(logd n). 4 30 10 20 80 32 34 55 22 34 46 20 40 82 90 25 d-ary heap: extract the minimum Extract min. Exchange root node with last node; repeatedly exchange element in parent with element in largest child until heap order is restored. Running time. Proportional to d ⨉ height = O(d logd n). 4 30 10 20 80 32 34 55 22 34 46 20 40 82 90 26 d-ary heap: decrease key Decrease key. Given a handle to an element x, repeatedly exchange it with its parent until heap order is restored. Running time. Proportional to height = O(logd n). 4 30 10 20 80 32 34 55 22 34 46 20 40 82 90 27 Priority queues performance cost summary operation linked list binary heap d-ary heap MAKE-HEAP O(1) O(1) O(1) ISEMPTY O(1) O(1) O(1) INSERT O(1) O(log n) O(logd n) EXTRACT-MIN O(n) O(log n) O(d logd n) DECREASE-KEY O(1) O(log n) O(logd n) DELETE O(1) O(log n) O(d logd n) MELD O(1) O(n) O(n) FIND-MIN O(n) O(1) O(1) 28 PRIORITY QUEUES ‣ binary heaps ‣ d-ary heaps ‣ binomial heaps ‣ Fibonacci heaps CHAPTER 6 (2ND EDITION) Priority queues performance cost summary operation linked list binary heap d-ary heap MAKE-HEAP O(1) O(1) O(1) ISEMPTY O(1) O(1) O(1) INSERT O(1) O(log n) O(logd n) EXTRACT-MIN O(n) O(log n) O(d logd n) DECREASE-KEY O(1) O(log n) O(logd n) DELETE O(1) O(log n) O(d logd n) MELD O(1) O(n) O(n) FIND-MIN O(n) O(1) O(1) Goal.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    55 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