如果有 N(10 个或更多)个符号,如何找到用霍夫曼编码的码字的平均长度?

How can I find the average length of a codeword encoded in Huffman if there are N(10 or more) symbols?

我正在为考试练习,我发现了一个问题,要求找到用霍夫曼编码的码字的平均长度。

这通常并不难,但在这个问题中,我们必须对 100 个符号进行编码,这些符号都具有相同的概率 (1/100)。

由于尝试手动编码 100 个符号显然没有意义,我想知道是否有一种方法可以在不实际经过编码过程的情况下找出平均长度。

我猜这是可能的,因为所有的概率都是相等的,但是我在网上找不到任何东西。

感谢任何帮助!

100个等概率符号,有的编码为6位,有的编码为7位。霍夫曼码是一个完整的前缀码。 “完整”意味着使用了所有可能的位模式。

假设 i 代码是六位长,j 代码是七位长。我们知道 i + j = 100。有 64 种可能的 six-bit 代码,所以在 i 用完后,还剩下 64 - i。向其中的每一个添加一位,使它们长七位,使可能的代码数量加倍。所以现在我们最多可以有 2(64 - i) seven-bit 个代码。

为了使代码完整,必须使用所有这些代码,因此 j = 2(64 - i)。我们现在有两个包含两个未知数的方程。我们得到 i = 28j = 72.

由于所有符号都是等概率的,所以每个符号使用的平均位数是(28x6 + 72x7) / 100,即6.72.还不错,考虑到每个符号的熵是6.64位。