Interval Heaps Interval: - (C, D) Is Contained in (A, B) - A C - D B
Interval Heaps Interval: - (C, D) Is Contained in (A, B) - A C - D B
Complete binary tree. Each node (except possibly last one) has 2 elements. Last node has 1 or 2 elements. Let a and b be the elements in a node P, a <= b. [a, b] is the interval represented by P. The interval represented by a node that has just one element a is [a, a]. The interval [c, d] is contained in interval [a, b] iff a <= c <= d <= b. In an interval heap each nodes (except for root) interval is contained in that of its parent.
a c
Interval
b d
30,60 35,50
25,60
30,50
16,19
17,17
50,55
47,58
40,45
40,43
25,60
30,50
16,19
17,17
50,55
47,58
40,45
40,43
28,55
35
Left end points define a min heap. Right end points define a max heap.
28,55
35
Min and max elements are in the root. Store as an array. Height is ~log2 n.
Insert An Element
10,90
Another Insert
10,90
30,60 35,50
25,60
30,50
16,19
17,17
50,55
47,58
40,45
40,43
25,60
30,50
16,19
17,17
50,55
47,58
40,45
40,43
28,55
27,35 35
Insert 27. New element becomes a left end point. Insert new element into min heap.
28,55
35
Insert 18. New element becomes a left end point. Insert new element into min heap.
Another Insert
10,90
Another Insert
10,90
30,60 35,50
25,60 ,60
30,50
16,19
17,17
50,55
47,58
40,45
40,43
20,60
30,50
16,19
17,17
50,55
47,58
40,45
40,43
28,55
25,35
Insert 18. New element becomes a left end point. Insert new element into min heap.
28,55
25,35
Insert 18. New element becomes a left end point. Insert new element into min heap.
After 82 Inserted
10,90
30,60 35,50
25,60
30,50
16,19
17,17
50,55
47,58
40,45
40,43
25,70
30,50
16,19
17,17
50,55
47,58
40,45
40,43
28,55
35
Insert 82. New element becomes a right end point. Insert new element into max heap.
28,55
35,60
After 8 Is Inserted
8,90
30,60 35,50
25,70
30,50
16,19
17,17
50,55
47,58
40,45
40,43
20,70
30,50
16,19
17,17
50,55
47,58
40,45
40,43
28,55
Insert 8. New element becomes both a left and a right end point. Insert new element into min heap.
28,55
25
30,60 35,50
25,70
30,50
16,19
17,17
50,55
47,58
40,45
40,43
28,55
35,60 ,60
Remove left end point from root. Remove left end point from last node. Delete last node if now empty. Reinsert into min heap, begin at root.
30,60 35,50
25,70
30,50
16,19
17,17
50,55
47,58
40,45
40,43
25,70
30,50
16,19
17,17
50,55
47,58
40,45
40,43
28,55
60
28,55
60
15,82 20,80 20 25,70 30,50 16,19 ,19 17,17 50,55 47,58 16,35 45,60
30,60 35,50
40,45
40,43
25,70
30,50
19,20
17,17
50,55
47,58
40,45
40,43
28,55
60
28,55
60
Initialize
70,39
Cache Optimization
Heap operations.
35,50
1,12
Uniformly distributed keys. Insert percolates 1.6 levels up the heap on average. Remove min (max) height 1 levels down the heap.
25,19
57,50
46,19
17,37
50,25
47,28
20,45
40,13
68,55
35,14
Examine nodes bottom to top. Swap end points in current root if needed. Reinsert left end point into min heap. Reinsert right end point into max heap.
d-ary Heap
Complete n node tree whose degree is d. Min (max) tree. Number nodes in breadth-first manner with root being numbered 1. Parent(i) = ceil((i 1)/d). Children are d*(i 1) + 2, , min{d*i + 1, n}. Height is logdn. Height of 4-ary heap is half that of 2-ary heap.
d = 4, 4-Heap
Worst-case insert moves up half as many levels as when d = 2.
Average remains at about 1.6 levels.
Remove-min operations now do 4 compares per level rather than 2 (determine smallest child and see if this child is smaller than element being relocated).
But, number of levels is half. Other operations associated with remove min are halved (move small element up, loop iterations, etc.)
Example
10,90
Example
10,90
30,60 35,50
25,60
30,50
16,19
17,17
50,55
47,58
40,45
40,43
25,60
30,50
16,19
17,17
50,55
47,58
40,45
40,43
28,55
35
[5,100] [2,65]
28,55
35
[2,65]