【问题标题】:Why am I getting a different Huffman encoding tree from this reference tree?为什么我从这个参考树中得到一个不同的 Huffman 编码树?
【发布时间】:2013-10-07 18:12:13
【问题描述】:

我有以下价值观

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

我的树看起来像这样

                                 [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 的值

【问题讨论】:

  • @SajalDutta 确实有帮助,但我猜仍然没有回答我的问题。我对帖子进行了更多编辑,希望对您有所帮助

标签: java algorithm discrete-mathematics huffman-code


【解决方案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,这是不正确的.

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

希望这会有所帮助!

【讨论】:

  • 我想我明白你的意思。我会尝试这种方法。我唯一感到困惑的问题是,我会制作 3 棵单独的树然后将它们合并在一起吗?这是正确的方法吗?
  • @Maddy- 一般算法是 (1) 将所有内容放入按优先级排序的优先级队列中,(2) 反复将两棵最低优先级树出列并合并,然后将它们放回树中.这有帮助吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-15
  • 2012-07-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多