r does not need to know what n might be. The idea is always to keep the -node for the n - m symbols that have not been observed yet by the encoder, and to compute the Huffman coding tree for the other m symbols, out of an observed sequence of k symbols. The resulting coding tree is Huffman tree h(k), which has k + 1 leaves: one leaf is the -node (probability or weight zero) and the other k leaves represent the k symbols (nonzero probabilities or weights), ordered by siblings of nondecreasing weights, and labeled in that order. Whenever a new or previously unobserved symbol is identified, the -node is split into a new -node and a new leaf node is created for this symbol. The coding tree is also reconfigured. Figure 10.3 illustrates the evolution of the coding tree, as recomputed at each step for the 12-symbol sequence example GOODTOSEEYOU, from step k = 1(G) to step k = 6 (GOODTO). From the orderly sequence of node weights, we observe that all trees in Fig. 10.3 have the sibling property. The evolving codeword assignment for each different symbol (G, O, D, T, S, E, Y, U, 0), as determined by both encoder and decoder from the same static Huffman algorithm, is also shown in the figure. The symbol codewords up to step k = 12 are shown in Table 10.3. We observe from the table that, as expected, the codeword assignment changes at each computational step k. The table also shows, for each step k, the value of entropy H, the mean codeword length L, and the corresponding coding efficiency N. The entropy and coding efficiency are plotted in Fig. 10.4. We observe from the figure that the entropy increases with the message length, following a sawtooth pat- tern. The entropy's slope progressively decreases while remaining globally positive. The occasional downward slope changes correspond to the accidental occurrence of repeated symbols, which decreases the mean uncertainty or Shannon information. Clearly, the drops observed at k = 6 and k = 11 can be attributed to the repeated occurrences of O in the GOODTOSEEYOU message sequ