Funnel Heap
- A Cache-Oblivious Priority Queue
Gerth Stølting Brodal Rolf Fagerberg
BRICS
University of Aarhus
Thirteenth International Symposium on Algorithms and Computation Vancouver, BC, Canada, November 22, 2002
1
Funnel Heap - A Cache-Oblivious Priority Queue Gerth Stlting Brodal - - PowerPoint PPT Presentation
Funnel Heap - A Cache-Oblivious Priority Queue Gerth Stlting Brodal Rolf Fagerberg BRICS University of Aarhus Thirteenth International Symposium on Algorithms and Computation Vancouver, BC, Canada, November 22, 2002 1 Outline of talk
Thirteenth International Symposium on Algorithms and Computation Vancouver, BC, Canada, November 22, 2002
1
Brodal, Fagerberg: Funnel Heap
2
CPU A R M
Brodal, Fagerberg: Funnel Heap
3
CPU A R M
Disk CPU L2 L1 A R M C a c C c a e h h e
Brodal, Fagerberg: Funnel Heap
3
CPU External I/O Memory y r
e M
Aggarwal and Vitter 1988
N
4
Frigo, Leiserson, Prokop, Ramachandran 1999
Brodal, Fagerberg: Funnel Heap
5
Frigo, Leiserson, Prokop, Ramachandran, FOCS’99
Prokop 99 Bender, Demaine, Farach-Colton, FOCS’00 Rahman, Cole, Raman, WAE’01 Bender, Duan, Iacono, Wu and Brodal, Fagerberg, Jacob, SODA’02
Arge, Bender, Demaine, Holland-Minkley, Munro, STOC’02
Bender, Cole, Raman, ICALP’02 Brodal, Fagerberg, ICALP’02
Bender, Cole, Demaine, Farach-Colton, ESA’02
Brodal, Fagerberg: Funnel Heap
6
Williams 1964
Brodal, Fagerberg: Funnel Heap
7
Williams 1964
Brodal, Fagerberg: Funnel Heap
7
Williams 1964
1
Sort(N)
Arge 1995
Brodal, Fagerberg: Funnel Heap
7
1
Arge, Bender, Demaine, Holland-Minkley, Munro 2002
Brodal, Fagerberg: Funnel Heap
8
1
Arge, Bender, Demaine, Holland-Minkley, Munro 2002
1
Brodal, Fagerberg: Funnel Heap
8
✲ ✸ s
Brodal, Fagerberg: Funnel Heap
9
✲ ✸ s
✲ ✍ ◆ ✲ ✣ ❫ ✲ ✸ s ✲ ✶ q ✲ ✶ q ✲ ✸ s ✲ ✶ q ✲ ✶ q ✲ ✣ ❫ ✲ ✸ s ✲ ✶ q ✲ ✶ q ✲ ✸ s ✲ ✶ q ✲ ✶ q
Brodal, Fagerberg: Funnel Heap
9
Fill(v) while out-buffer not full if left in-buffer empty Fill(left child) if right in-buffer empty Fill(right child) perform one merge step ✲ ✍ ◆ ✲ ✣ ❫ ✲ ✸ s ✲ ✶ q ✲ ✶ q ✲ ✸ s ✲ ✶ q ✲ ✶ q ✲ ✣ ❫ ✲ ✸ s ✲ ✶ q ✲ ✶ q ✲ ✸ s ✲ ✶ q ✲ ✶ q
Brodal, Fagerberg: Funnel Heap
10
k3 k
B1 B0 · · · · · · M1 M√ k M0 B√ k · · · M0 M1 B1 B√ k M√ k B2 M2 B0
Recursive memory layout Recursive defi nition of buffer sizes
B logM(k3) + k) I/Os per invocation (if M ≥ B2) Frigo, Leiserson, Prokop, Ramachandran 1999 Brodal, Fagerberg 2002
Brodal, Fagerberg: Funnel Heap
11
✛ ✻ ✻ ✻✻ ✛ ✻ ✻ ✻✻ ✻
✛ ✛ · · · ✛ ✻ ✻ ✻✻ ✻
✛ ✛ · · · ✛ ✻ ✻ ✻✻ ✻
✛
Brodal, Fagerberg: Funnel Heap
12
✛ ✻ ✻ ✻✻ ✛ ✻ ✻ ✻✻ ✻
✛ ✛ · · · ✛ ✻ ✻ ✻✻ ✻
✛ ✛ · · · ✛ ✻ ✻ ✻✻ ✻
✛
i
i
i
Brodal, Fagerberg: Funnel Heap
12
✛ ✻ ✻ ✻✻ ✛ ✻ ✻ ✻✻ ✻
✛ ✛ · · · ✛ ✻ ✻ ✻✻ ✻
✛ ✛ · · · ✛ ✻ ✻ ✻✻ ✻
✛
i
i
i
Brodal, Fagerberg: Funnel Heap
12
·· · · · · · · · · · · · · · A1 v1 I
Brodal, Fagerberg: Funnel Heap
13
·· · · · · · · · · · · · · · ki I c1 c2 ci
j=1 kjsj
Brodal, Fagerberg: Funnel Heap
14
·· · · · · · · · · · · · · ·
B logM/B si
∞
1
Brodal, Fagerberg: Funnel Heap
15
·· · · · · · · · · · · · · ·
1
Brodal, Fagerberg: Funnel Heap
16
·· · · · · · · · · · · · · ·
Brodal, Fagerberg: Funnel Heap
17