Two different ways to calculate r-ary Huffman Code

Calculating a binary Huffman code is easy: amalgamate the symbols in the source, two-by-two, and then reverse it to get the code.

But what of an r-ary Huffman code, of arbitary r .

Text books give two “different” methods which puzzled me at first until (not too much, I admit) thinking convinced me they were the same.

In a normal Huffman ‘compression’ we might have a source S of q elements, for a code of base r we would reduce S to S^{\prime} with q - (r - 1) elements by merging r symbols in S .

To do this properly we need to have r symbols left for the final merge. To do this then, if we start with N symbols, then 1 \equiv N mod(r - 1) .

The difference between the two methods suggested in text books is either positing additional symbols of probability zero such that 1 \equiv N mod(r-1) or ensuring the first merger is of only q symbols where (N-q) mod(r-1) = 0 .

Both, are of course, functionally similar. For instance, with N = 8 and r = 4 , then N mod(r -1) = 2, so we can begin by adding two symbols of probability zero or the first reduction should be of size s such that (N-s) mod(r-1) = 0 – and we can see that, in this case, s = 2 .