- 61 Views
- Uploaded on
- Presentation posted in: General

I/O-Algorithms

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

I/O-Algorithms

Lars Arge

Spring 2012

April 17, 2012

I/O-algorithms

- 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

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

- 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

- Example: N = 256 x 106, B = 8000 , 1ms disk access time

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

- 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

- 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

- 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

- 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

- 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

- 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

- 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

- 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

- 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

TBD

I/O-algorithms

- 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