  We say that an algorithm is stable if small changes in the input result in
small changes in the output. This kind of algorithm stability is particularly
relevant when analyzing and visualizing time-varying data. Stability in general
plays an important role in a wide variety of areas, such as numerical analysis,
machine learning, and topology, but is poorly understood in the context of
(combinatorial) algorithms. In this paper we present a framework for analyzing
the stability of algorithms. We focus in particular on the tradeoff between the
stability of an algorithm and the quality of the solution it computes. Our
framework allows for three types of stability analysis with increasing degrees
of complexity: event stability, topological stability, and Lipschitz stability.
We demonstrate the use of our stability framework by applying it to kinetic
Euclidean minimum spanning trees.
