External Memory
6.854 Notes #28

David Karger

External Memory

Memory \(M\), block size \(B\), problem size \(N\)

basic operations:

matrix operations

Linked list

Search trees:

Sorting:

Optimal for comparison sort:

Buffer Trees

Mismatch:

Basic idea:

Details:

“Flush” operation

Extensions

Cache Oblivious Algorithms

In practice, don’t want to consider \(B\) and \(M\)

Assumption: optimal memory management

Example: scanning contiguous array

Matrix Multiply

Adding matrices is easy

Standard sequential algorithm

store second matrix column major?

Divide and conquer

Binary Search Trees

\(B\)-trees are optimal, but you need to know \(B\)

Divide and conquer

Van Emde Boas insight

Generalizations:

Linked Lists

Want \(O(1)\) insert/delete but \(O(1/B\) scan

Solution:

Analysis

Controlling size