Eliminating Amortization: On Data Structures with Guaranteed Response Time

An efficient amortized data structure is one that ensures that the average time per operation spent on processing any sequence of operations is small. Amortized data structures typically have very non-uniform response times, i.e., individual operations can be occasionally and unpredictably slow, although the average time over the sequence is kept small by completing most of the other operations quickly. This makes amortized data structures unsuitable in many important contexts, such as real-time systems, parallel programs, persistent data structures and interactive software. On the other hand, an efficient (single-operation) worst-case data structure guarantees that every operation will be processed quickly. The construction of worst-case data structures from amortized ones is a fundamental problem which is also of pragmatic interest. Progress has been slow so far, both because the techniques used were of a limited nature and because the resulting data structures had much larger hidden constant factors. I try to address both these issues in this thesis. I consider several inter-related dynamic data structuring problems for which only efficient amortized solutions were known and obtain new worst-case algorithms for them using a unified framework, that of "pebble" games. These two-player combinatorial games are formulated so that winning strategies translate fairly readily into worst-case algorithms for data structures. I analyze these games and obtain tight bounds on the payoffs to the players. These results are then made to yield new worst-case algorithms for finger search trees, partially and fully persistent linked data structures, fully persistent union-find, dynamic fractional cascading, range trees and segment trees. With my new algorithms I often get worst-case running times that match the old amortized bounds, in a few cases settling for considerable improvements over the best existing worst-case algorithm. Several of the new algorithms are comparable in simplicity to the amortized algorithms they are based on. The data structures considered in this thesis have numerous uses. Persistent data structures support efficient access to old versions of the data structure. They have been used in geometric algorithms, implementations of object oriented languages, optimistic discrete event simulation and tree pattern matching. Fractional cascading, segment trees and range trees are used extensively in geometric algorithms and range trees in databases as well. In addition pebble games appear to have applications unrelated to data structuring and may also be of independent interest, as they are similar in form to "vector balancing" and "chip firing" games studied by combinatorial mathematicians.