为什么我们不使用简单的二进制值来压缩数据
Why don't we use simple binary values to compress data
在霍夫曼算法中,我们形成一棵树,然后用树值 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
等等...
霍夫曼码的重要条件是没有两个是彼此的前缀。如果你只是对它们重新编号(我认为这就是你的建议),你会失去这个 属性.
要了解为什么会中断,请查看“01”作为输出。在非霍夫曼版本中,它可能是“0”后跟“1”(因此 "ab"),或者是“01”(因此 "c"),你无法分辨是哪个。
在霍夫曼算法中,我们形成一棵树,然后用树值 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
等等...
霍夫曼码的重要条件是没有两个是彼此的前缀。如果你只是对它们重新编号(我认为这就是你的建议),你会失去这个 属性.
要了解为什么会中断,请查看“01”作为输出。在非霍夫曼版本中,它可能是“0”后跟“1”(因此 "ab"),或者是“01”(因此 "c"),你无法分辨是哪个。