数据文件包含一系列8位字符,使得所有256个字符大致相同:最大字符频率小于最小字符频率的两倍。证明在这种情况下霍夫曼编码并不比使用普通的8位固定长度代码更有效。
答案 0 :(得分:3)
证据是直接的。假设w.l.o.g.字符按频率的升序排序。我们知道f(1)和f(2)将首先连接到f'(1),并且因为f(2)> = f(1)和2 * f(1)> f(256),直到f(256)与某些东西结合后才会加入。出于同样的原因,f(3)和f(4)将与f'(2)> = f'(1)> F(256)。因此,我们得到f(253)和f(254)加入f'(127)> = ...> = f'(1)> F(256)。最后,f(255)和f(256)被连接成f'(128)> = f'(127)> = ...> = f'(1)。我们现在认识到,因为f(256)< 2 * f(1)< = f'(1)和f'(128)< = 2 * f(256),f'(128)< = 2 * f(256)< 4 * f(1)< = 2 * f'(1)。 Ergo,f'(128)< 2 * f'(1),与第一轮霍夫曼算法相同的条件。
由于这一轮的条件成立,因此可以直截了当地说它将同样适用于所有轮次。霍夫曼将执行8轮,直到所有节点都连接到一个根(128,64,32,16,8,4,2,1),此时算法将终止。因为在每个阶段,每个节点都连接到另一个节点,到那时,通过霍夫曼算法接收相同的处理,树的每个分支将具有相同的长度:8。
这有些是非正式的,更多的是草图而不是证据,实际上,但它应该足以让你写出更正式的东西。