\documentclass{article} \usepackage{me} \setlength{\parindent}{0pt}

External Memory

Memory $M$, block size $B$, problem size $N$

basic operations:

matrix operations

Linked list

2013 Lecture 27 End

Search trees:

2011 Lecture 24 end. 2012 Lecture 26 end.

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