Various diff (longest common subsequence) algorithms, used in practice:
Myers' diff, in time O((N+M)D) and space O(N+M), where N and M are the sizes of the old and new version, respectively. See the original article by Eugene W. Myers.
Patience diff, in time O(N log N + M log M + (N+M)D), and space O(N+M), which tends to give more human-readable outputs. See Bram Cohen's blog post describing it.
Myers' diff algorithm
Patience diff algorithm
A "differ" that combines deletions and insertions to give blocks of maximal length, and replacements when appropriate.
A trait for reacting to an edit script from the "old" version to the "new" version.