150 likes | 247 Views
I/O-Algorithms. Lars Arge Spring 2012 April 17, 2012. I/O-Model. Parameters N = # elements in problem instance B = # elements that fits in disk block M = # elements that fits in main memory T = # output size in searching problem We often assume that M>B 2
E N D
I/O-Algorithms Lars Arge Spring 2012 April 17, 2012
I/O-algorithms I/O-Model • Parameters N = # elements in problem instance B = # elements that fits in disk block M = # elements that fits in main memory T = # output size in searching problem • We often assume that M>B2 • I/O: Movement of block between memory and disk D Block I/O M P
I/O-Algorithms Fundamental Bounds Internal External • Scanning: N • Sorting: N log N • Permuting • Searching: • Note: • Linear I/O: O(N/B) • Permuting not linear • Permuting and sorting bounds are equal in all practical cases • B factor VERY important: • Cannot sort optimally with search tree
I/O-Algorithms Scalability Problems: Block Access Matters • Example: Traversing linked list (List ranking) • Array size N = 10 elements • Disk block size B = 2 elements • Main memory size M = 4 elements (2 blocks) • Large difference between N and N/B large since block size is large • Example: N = 256 x 106, B = 8000 , 1ms disk access time N I/Os take 256 x 103 sec = 4266 min = 71 hr N/B I/Os take 256/8 sec = 32 sec 1 5 2 6 3 8 9 4 10 1 2 10 9 5 6 3 4 7 7 8 Algorithm 1: N=10 I/Os Algorithm 2: N/B=5 I/Os
3 4 5 9 8 7 10 2 6 I/O-algorithms List Ranking • Problem: • Given N-vertex linked list stored in array • Compute rank (number in list) of each vertex • One of the simplest graph problem one can think of • Straightforward O(N) internal algorithm • Also uses O(N) I/Os in external memory • Much harder to get external algorithm 1 5 2 6 3 8 9 4 10 7
I/O-algorithms List Ranking • We will solve more general problem: • Given N-vertex linked list with edge-weights stored in array • Compute sum of weights (rank) from start for each vertex • List ranking: All edge weights one • Note: Weight stored in array entry together with edge (next vertex) 1 1 1 1 1 1 1 1 1 5 2 6 3 8 9 4 10 7 1 1
2 2 2 1 1 1 1 1 1 1 2 3 4 5 6 7 8 9 10 I/O-algorithms List Ranking • Algorithm: • Find and mark independent set of vertices • “Bridge-out” independent set: Add new edges • Recursively rank resulting list • “Bridge-in” independent set: Compute rank of independent set • Step 1, 2 and 4 in I/Os • Independent set of size αN for 0 < α≤ 1 I/Os 1 1 1 1
3 4 8 9 7 10 2 6 8 3 4 5 9 7 10 2 6 8 3 4 5 9 7 10 2 6 I/O-algorithms List Ranking: Bridge-out/in • Obtain information (edge or rang) of successor • Make copy of original list • Sort original list by successor id • Scan original and copy together to obtain successor information • Sort modified original list by id I/Os 2 10 4 6 5 9 8 2 7 3 1 1
3 4 5 9 8 7 10 2 6 I/O-algorithms List Ranking: Independent Set • Easy to design randomized algorithm: • Scan list and flip a coin for each vertex • Independent set is vertices with head and successor with tails Independent set of expected size N/4 • Deterministic algorithm: • 3-color vertices (no vertex same color as predecessor/successor) • Independent set is vertices with most popular color Independent set of size at least N/3 • 3-coloring I/O algorithm
I/O-algorithms List Ranking: 3-coloring • Algorithm: • Consider forward and backward lists (heads/tails in two lists) • Color forward lists (except tail) alternately red and blue • Color backward lists (except tail) alternately green and blue 3-coloring 3 4 5 9 8 7 10 2 6
3 4 5 9 8 7 10 2 6 I/O-algorithms List Ranking: Forward List Coloring • Identify heads and tails • For each head, insert red element in priority-queue (priority=position) • Repeatedly: • Extract minimal element from queue • Access and color corresponding element in list • Insert opposite color element corresponding to successor in queue • Scan of list • O(N) priority-queue operations I/Os `
3 4 5 9 8 7 10 2 6 I/O-algorithms Summary: List Ranking • Simplest graph problem: Traverse linked list • Very easy O(N) algorithm in internal memory • Much more difficult external memory • Finding independent set via 3-coloring • Bridging vertices in/out • Permuting bound best possible • Also true for other graph problems 1 5 2 6 3 8 9 4 10 7
3 4 5 9 8 7 10 2 6 I/O-algorithms Summary: List Ranking • External list ranking algorithm similar to PRAM algorithm • Sometimes external algorithms by “PRAM algorithm simulation” • Forward list coloring algorithm example of “time forward processing” • Use external priority-queue to send information “forward in time” to vertices to be processed later
I/O-algorithms Algorithms on Trees TBD
I/O-algorithms References • External-Memory Graph Algorithms Y-J. Chiang, M. T. Goodrich, E.F. Grove, R. Tamassia. D. E. Vengroff, and J. S. Vitter. Proc. SODA'95 • Section 3-6 • I/O-Efficient Graph Algorithms Norbert Zeh. Lecture notes • Section 2-4 • Cache-Oblivious Priority Queue and Graph Algorithm Applications L. Arge, M. Bender, E. Demaine, B. Holland-Minkley and I. Munro. SICOMP, 36(6), 2007 • Section 3.1-3-2