我正在解决关于压缩的书中的练习,它说如果我们有字母[A,B,C]和可能性P(A)= 0.5,P(B)= 0.4,P(C) )= 0.1用霍夫曼和算术编码BBB所需的位数。
现在这本书本身在一节&#34中说; BBB需要6位带霍夫曼但只有4位带算术"我已经证实算术需要4位但不知道为什么霍夫曼需要6 。
我这样解决了霍夫曼:
B(3)
P1(3)
EOF(0)B(3)
所以B只用一位编码!!
我想也许我应该像这样包括整个字母:
A(0),C(0),B(3)
P1(0)B(3)
A(0)C(0)
P2(3)
P1(0)B(3)
A(0)C(0)
仍然B需要1位(但A和C 2位,仍然没有6 !!)。
我在这里做错了什么?
答案 0 :(得分:0)
我想通了,因为P(B)= 0.4所以我们有3个字母,我们有3 * 0.4 = 1.2,大约是1,P(A)= 0.5和3 * 0.5 = 1.5,它介于1和2,P(C)= 0.1,0.1 * 3 = 0.3,约为0.
因此,如果我们对它们进行排序,我们得到:
A(1或2),B(1),C(0)
树是:
A(1或2)P1(1)
B(1)C(0)
P2(2或3)
A(1或2)P1(1)
B(1)C(0)
最后一个B需要2位,因此BBB需要6位进行编码,问题解决了。:)