为什么我从这个参考树中得到一个不同的霍夫曼编码树?

时间:2013-10-07 18:12:14

标签: java algorithm discrete-mathematics huffman-code

我有以下值

Event  Probability   
 A      0.3  
 B      0.3 
 C      0.13     
 D      0.12      
 E      0.1  
 F      0.05    

My Tree看起来像这样

                                 [1]
                              /0     \1
                            [.4]    [.6]
                          0/   \1    /0   \1
                       [.27][.13] [.3] [.3]
                     0/   \1
                  [.15]  [.12]
                 0/    \1
                [.1]  [.05]

我很抱歉代表不好,但这是我能做的最好的事情。

我在网上关注这个例子,但我的价值观并不相同。我无法理解我做错了什么?如果有人能引导我朝着正确的方向前进。

示例:http://www.math.upenn.edu/~deturck/m170/wk7/lecture/huffman/huffman.html

我的价值观是这样的:

A = 10 
B = 11

但在示例中,A = 00,B = 01

的值

1 个答案:

答案 0 :(得分:1)

我认为这里可能存在的一个问题是最左边的子树。您正确地将概率为0.05和0.10的树合并在一起,形成净概率为0.15的树。但是,此时可用的树具有概率

0.3    A
0.3    B
0.15   EF
0.13   C
0.12   D

霍夫曼编码算法总是选择具有最低总概率的两棵树合并在一起,所以下一步就是合并C和D.从你的树上,你好像合并了EF和D,这是不正确的

尝试使用其他方法进行合并,看看是否可以解决问题。

希望这有帮助!