我正在尝试解决霍夫曼编码问题,但我并不完全确定我完全理解这个话题。我想弄清楚以下是否是有效的霍夫曼代码:
A: 0
B: 01
C: 11
D: 110
E: 111
我在想的是它无效,因为A或1会侵犯B或01.虽然我不是正面的。有人可以启发我吗?
编辑:对不起,我打算输入A为0而不是1。
答案 0 :(得分:1)
没有。霍夫曼代码是前缀代码,这意味着没有代码可以是任何其他代码的前缀。在您的示例中,A是B的前缀,C是D和E的前缀。
有效的前缀代码为:
A: 0
B: 10
C: 11
您可以使用长度为1,2和2的代码。任何其他代码都是这些代码的前缀。不可能有长度为1,2,3,3和3的前缀代码。
这是五个符号的有效前缀代码:
A: 0
B: 10
C: 110
D: 1110
E: 1111
就是这样:
A: 00
B: 01
C: 10
D: 110
E: 111