在Huffman算法中,我们形成一个树,然后用树值1和0替换每个字符,为什么我们不使用像a=0,b=1,c=10,d=01,e=11
这样的二进制数字等等,而不是用字符和解压缩时应用反向并用字母替换二进制数字。
喜欢这样:
character Huffman-code binary-code
a 00 0
b 01 1
c 101 01
依旧......
答案 0 :(得分:2)
霍夫曼码的重要条件是没有两个是彼此的前缀。如果你只是重新编号(因为我认为这是你的建议),你就失去了这个属性。
要了解为什么会中断,请查看" 01"作为输出。在非霍夫曼版本中,它可能是" 0"其次是" 1" (因此" ab"),或" 01" (因此" c"),你无法分辨哪个。