【问题标题】:Adaptative Huffman decoding自适应霍夫曼解码
【发布时间】:2019-01-15 11:31:13
【问题描述】:

我目前正在研究压缩算法,并且遇到了 Adaptative Huffman。与“通常的”霍夫曼不同,在这个中我们不知道每个符号的频率先验。我遇到了一个我无法弄清楚的练习。

给定字母 A = {1,2,3,4,5,6,7,8} 并假设使用了自适应霍夫曼编码器,确定对应于比特流 0110010000011010 的消息

我不明白是否必须构建霍夫曼树,或者是否有其他方法不构建树,因为我试图为字母表的每个符号分配二进制代码:1 表示 000,2 表示 001, 010 为 3,011 为 4,...(基于 2^e + r = 8,e = 3 和 r = 0),但与正确的 awser 不匹配。

感谢您的宝贵时间

【问题讨论】:

    标签: encoding compression decoding huffman-code


    【解决方案1】:

    自适应 Huffman 没有明确的版本,以下是我为提出一种可能的解决方案所做的一些假设:

    • 编码器是按符号自适应的
    • 树是在飞行中构建的,你从一棵空树开始 仅包含转义符号
    • 转义符号的权重始终为 0
    • 左分支为代码位 0,右分支为 1

    起初,树存根中没有分支,因此解码转义符号需要 0 位。

    接下来,接收到文字代码 011=>4。添加了两个新节点:父节点(权重 1)和符号 4(代码 0,权重 1)。转义符号的代码为 1,权重为 0。

    接下来,解码代码0 =>4,符号4的权重为2。

    接下来,解码代码 0 =>4,符号 4 的权重为 3。

    接下来,解码代码 1 =>转义。接收到文字代码 000=>1。添加了两个新节点:父节点(权重 1)和符号 1(代码 10,权重 1)。转义符号的代码为 11,权重为 0。

    等等..在某些时候可能需要移动节点来纠正不平衡,但显然不是在这个练习中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多