but only under the assumption that the next symbol in the message sequence is not new (or is not already a tree leaf) and that all symbols are nearly equally probable. For these reasons, algorithm V generally outperforms FGK in terms of number of transmitted bits, and it can be shown that this number is, at worse, one extra bit greater than that of the static Huffman code payload. Lempel-Ziv coding The adaptive coding devised in 1977 by Lempel and Ziv, now widely referred to as Lempel-Ziv (LZ), or Ziv-Lempel, or more commonly LZ77, is fundamentally different from the previous Huffman/FGK/algorithm-V approach. In a way that recalls the prin- ciple of static arithmetic coding, the LZ codewords are generated by symbol blocks. As previously described, arithmetic coding is a defined-word scheme: it maps all possible source-symbol blocks into a final codeword set, as allowed by the maximum codeword size (or arithmetic resolution). With LZ, symbol blocks are dynamically analyzed and corresponding codewords are generated on the fly. One sometimes refers to LZ as free-parse algorithm, meaning that codewords are generated as the incoming message sequence is parsed. Here, the word parsing defines the action of breaking up a message string into different substring patterns, which are called phrases. The term distinct parsing refers to the case where no two phrases are identical. Basically, the LZ algorithm consists of analyzing the source-message string by blocks of variable size (substrings). The maximum block size is defined by some prescribed integer L1, for instance L = 16 bits. The substring analysis makes it possible to identify previously observed patterns or phrases. These phrases are assigned a codeword whose length, called L2, is fixed, for instance L2 = 8 bits. The phrases are defined SO that their probabilities of occurrence are nearly equal. As a result, the most frequently occurring symbols are grouped into longer phrases, and the reverse for the least frequently occur- ring ones. Therefore, the same codeword l