Advanced Data Structures
Prof. Erik DemainePersistent data structures, retroactive structures, geometric range queries, dynamic optimality, splay trees, van Emde Boas trees, fusion trees, cache-oblivious structures, and succinct representations.
Syllabus
221. Persistent Data Structures
This lecture introduces the formal definitions of partial, full, and confluent persistence in data structures, crucial for understanding immutable data and functional programming paradigms. Key concepts include managing multiple versions of a data structure and enabling modification or merging of past states.
2. Retroactive Data Structures
This lecture introduces the concept of retroactive data structures, examining partial, full, and non-oblivious retroactivity. It explores methods for altering and manipulating the timeline of operations on data structures.
3. Geometric Structures I
This lecture, part of MIT's advanced data structures course, examines techniques for point location and range searching within geometric structures. It details persistence, retroactivity, dynamization via weight balance, and the application of fractional cascading.
4. Geometric Structures II
This lecture explores advanced geometric data structures, specifically covering fractional cascading for optimal 3D orthogonal range searching and introducing kinetic data structures such as kinetic predecessor structures and priority queues for managing moving points.
5. Dynamic Optimality I
This lecture introduces the concept of dynamic optimality in the context of binary search trees, exploring analytic bounds, the structure of splay trees, a geometric perspective on their performance, and greedy algorithms for dynamic tree operations.
6. Dynamic Optimality II
This lecture explores advanced topics in dynamic optimality for data structures, including independent rectangle and Wilber lower bounds, Signed Greedy algorithms, and the analysis of key-independent optimality and Tango trees.
7. Memory Hierarchy Models
This lecture introduces memory hierarchy models and analyzes cache-efficient data structures. It details the performance of B-trees for block-based data transfer between different memory levels, achieving O(logB N) complexity for key operations.
8. Cache-Oblivious Structures I
This lecture introduces the formal model of cache-oblivious algorithms, examining their application to ordered-file maintenance, list labeling, and the design of cache-oblivious priority queues.
Lecture 9: Cache-Oblivious Structures II (6.851)
This lecture delves into cache-oblivious structures, specifically examining distribution sweeping via lazy funnelsort and the complexities of orthogonal 2D range searching in both batched and online modes.
Lecture 10: Dictionaries (6.851)
The session explores various dictionary implementations, including universal, k-wise independent, and simple tabulation hashing, alongside dynamic perfect hashing, linear probing, and cuckoo hashing techniques.
Lecture 11: Integer Models (6.851)
This lecture covers integer data structure models, addressing the predecessor problem and detailing the architecture and function of van Emde Boas, x-fast, and y-fast trees, alongside the concept of indirection.
Lecture 12: Fusion Trees (6.851)
The session introduces fusion trees, focusing on key mechanisms like sketching, parallel comparison, and efficient identification of the most significant set bit, crucial for accelerating integer operations.
Lecture 13: Integer Lower Bounds (6.851)
This lecture establishes integer data structure lower bounds, proving the optimality of van Emde Boas and fusion trees for static predecessor structures, up to a log log factor, under polynomial space constraints.
Lecture 14: Sorting in Linear Time (6.851)
The lecture explores integer sorting in linear time, specifically when the word size w = O(lg2+ëµ n), and discusses advanced priority queue implementations for such scenarios.
Lecture 15: Static Trees (6.851)
This lecture examines static tree structures, focusing on efficient algorithms for least common ancestor (LCA), range minimum queries (RMQ), and level ancestor problems.
Lecture 16: Strings (6.851)
The session covers advanced string data structures, including suffix trees and arrays, their linear-time construction for large alphabets, suffix trays, and applications in document retrieval.
Lecture 17: Succinct Structures I (6.851)
This lecture introduces succinct data structures, detailing techniques for efficient rank and select operations, and their application within tries to minimize space while maintaining query performance.
Lecture 18: Succinct Structures II (6.851)
Building on the previous session, this lecture focuses on constructing compact suffix arrays and suffix trees, highlighting methods to reduce memory footprint while preserving their utility for string operations.
Lecture 19: Dynamic Graphs I (6.851)
This lecture introduces dynamic graph algorithms, specifically examining link-cut trees and heavy-light decomposition as foundational techniques for maintaining graph properties under updates.
Lecture 20: Dynamic Graphs II (6.851)
The session advances into dynamic graph connectivity, discussing Euler tour trees, decremental connectivity in trees with O(1) complexity, and fully dynamic connectivity in O(lg2 n) time.
Lecture 21: Dynamic Connectivity Lower Bound (6.851)
This lecture establishes the ë©(lg n) lower bound for dynamic connectivity in graphs, providing a theoretical foundation for understanding the inherent complexity limits of such problems.
Lecture 22: History of Memory Models (6.851)
The session provides a historical overview of memory models, tracing their evolution from idealized 2-level models and the red-blue pebble game to external memory, HMM, BT, (U)MH, and cache-oblivious models.





















