LZ78
Jacob Ziv & Abraham Lempel, 1978
O(n)LZ78 extends the Lempel–Ziv idea by maintaining an explicit dictionary of strings. For each step the encoder finds the longest dictionary phrase matching the start of the unread input, outputs its index and the following symbol, then appends phrase+symbol to the dictionary. The ribbon shows consumed input, the growing dictionary, and the (index, char) token stream.