• 6.5210/18.415: Advanced Algorithms
  • PSets
  • Calendar
  • Materials
  • Information
  • External Memory

    David Karger

    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