EECS 311: and Data Management Lecture 21, 22 Binomial Queues Binomial Queues & Heaps

Reading: Chapter 6 (except 6.4–6.7); Chap- binomial structure: ter 11, Sections 2 and 4. • n is power of 2. • n = 1: binomial tree is a single Binomal Heaps and Queues node. • n =2i two 2i−1 node binomial trees, binary heaps based queues may be improv- make one a child of root of other. able. Example: 1. perform some operations faster? • One node trees: 2. binomial queue 2 . 9 • O(log n) merge. • Two node trees: 3. redundant binomial queue 2 5

• O(1) insert 9 7 • Θ(log n) delete-min, reduce-key. • Four node trees: 4. Fibonacci heaps 2 1

• O(1) insert, reduce-key 9 5 6 3 • O(log n) delete-min 7 8 • Dijkstra’s shortest paths + fi- conacci ⇒ Θ(n log n + m). • Eight node tree:

Binomial Heaps 1

Def: a binomial heaps is a tree that satis- 6 3 2 fies 8 9 5 heap order: key at node is smaller than keys of children. 7

1 Def: a binomial queue is 1. make k into single-node queue Q′.

′ • a list of binomial heaps. 2. merge Q and Q . • for each i, at most one heap of size 2i. Runtime: merge = Θ(log n) Algorithm: delete-min Algorithm: binomial heap merge Input: Q Input: H1 and H2, two n node binomial i heaps. 1. find heap with min key ⇒ Hi, size 2

′ • Make tree with greater root-key child of 2. remove heap Hi ⇒ Q root of other tree. 3. delete root of Hi ⇒ i heaps sizes Runtime: O(1) {1,...,i} Analogy: 4. treats heaps as queue Q′′.

′ ′′ • size n binomial queue ⇔ number n 5. merge Q and Q . • heap of size 2i in list ⇔ ith binary digit Runtime: search + merge = Θ(log n) of n is 1. Algorithm: reduce-key Input: Q, key k, value v. Example: 1. find (k′, v) in queue (assume we have 0 1 2 3 4 5 pointer) / / / • • • 2. reduce k′ to k and percolate-up.

10 X 0 1 Runtime: percolate-up = Θ(log n). Claim: from empty queue, n inserts costs 4 6 3 2 Θ(n). 8 9 5 Proof:

7 • merge ⇔ add • insert ⇔ increment Algorithm: merge queue Input: Q1, Q2 • n increments from zero costs Θ(n).

1. treat queues like numbers 2 Algorithm: 2. add numbers. build-heap Input: unordered list Runtime: Θ(log n) 1. initialize empty queue. Algorithm: insert Input: queue Q, key k 2. insert each object.

2 Redundant Binomial Queue

“Θ(1) worst-case insert” Recall: redundant binary counter

• digits are 0, 1, or 2.

• regularity property: 0s and 2s alter- nate.

Def: a redundant binomial queue is

• a list of binomial heaps.

• for each i, at most two heaps of size 2i.

• heaps (as digits) satisfy redundant counter regularity.

Claim: all queue operations can be imple- mented to maintain regularity. Proof: all queue operations are like arith- metic operations Claim: redundant binary counter has Θ(1) insert, and Θ(log n) merge, delete-min, reduce-key.

3