2016-11-05 108 views
0

我试图解决一个霍夫曼编码问题,但我不完全确定我完全理解这个话题。我试图找出如果下面是是一个有效的霍夫曼代码:有效的霍夫曼编码?

A: 0 
B: 01 
C: 11 
D: 110 
E: 111 

我在想什么的是,它是无效的,因为A,或1,会侵害到B,或01我虽然不是积极的。有人能为此启发我吗?

编辑:对不起,我想键入A作为0而不是1

+2

非常无效。 A是C和D和E的前缀,C是D和E的前缀.A和B虽然很好。 – harold

+0

对不起,我犯了一个错字。 A实际上是0,而不是1.感谢您的快速回答!答:0仍然成立? –

+1

仍然无效,您无法判断“00111”是“AAE”还是“ABC”,“110”是否可以是“D”或“CA”等。 –

回答

1

号的霍夫曼码是一个前缀码,这意味着没有代码可以是任何其它码的前缀。在你的榜样,A是B的前缀,C是既d和E的前缀

有效的前缀码是:

A: 0 
B: 10 
C: 11 

那至于你可以用代码去长度为1,2和2.任何其他代码都是这些代码的前缀。这是不可能具有与长度1,2,2,3的前缀码,和3

这是为五个符号的有效前缀码:

A: 0 
B: 10 
C: 110 
D: 1110 
E: 1111 

为是这样的:

A: 00 
B: 01 
C: 10 
D: 110 
E: 111