【问题标题】:Optimal Huffman Code for Fibonacci numbers斐波那契数的最佳霍夫曼代码
【发布时间】:2013-11-21 21:09:06
【问题描述】:

以下字符的最佳霍夫曼编码是什么? 频率是前 8 个斐波那契数:a : 1, b : 1, c : 2, d :3,e:5,f:8,g:13,h:21?概括案例以找到一个 频率为前 n 个斐波那契数时的最优代码。

这是我遇到的作业问题之一。我不是要求一个直接的答案,只是为了一些资源。

我应该从哪里拼凑起来回答问题?

【问题讨论】:

    标签: algorithm fibonacci huffman-code


    【解决方案1】:

    霍夫曼编码算法将两个频率最低的节点连接起来形成一个父节点,该父节点的频率等于子节点的总和。在符号的随机频率中,我们每次都需要计算要组合的至少两个节点,但在斐波那契频率序列的情况下,斐波那契数列中的序列与霍夫曼编码中的序列相同。

    示例:- a:1,b:1,c:2,d:3,e:5,f:8,g:13,h:21

    它将形成一个左偏或右偏的树,其中每个符号的编码都可以使用简单的公式得出

    如果 n 不是符号数

    a = (n-2)*0 + 0

    b = (n-2)*0 + 1

    c = (n-3)*0 + 1

    d = (n-4)*0 + 1

    e = (n-5)*0 + 1

    。 . . 最后一个 = 1

    上面的例子

    a = (n-2)*0 + 0 = (6)*0 + 0 = 0000000

    b = (6)*0 + 1 = 0000001

    c = (5)*0 + 1 = 000001

    .......

    我希望你能得到模式

    有趣的是平均比特长度的计算

    avg = ((n-1)*2 + sumof((n-i+1)*fib(i)) 其中 i in (3,n))/(sumof(fib(i)) 其中 i in (1,n))

    上面可以简化为直接公式。

    【讨论】:

      【解决方案2】:

      阅读 - http://en.wikipedia.org/wiki/Huffman_coding - 特别注意短语“从左到右生成二叉树,将两个最不可能的符号放在一起形成另一个等价符号,其概率等于这两个符号。重复该过程,直到只有一个符号”。

      以上与斐波那契数列有何关系?

      【讨论】:

      • 斐波那契数列作为符号频率具有一个有趣的特性,即对于给定的符号总数,它们会产生最长的代码长度,以及代码长度与计算得到的零阶熵之间的最大差异符号。
      猜你喜欢
      • 2023-03-30
      • 1970-01-01
      • 2015-06-23
      • 1970-01-01
      • 1970-01-01
      • 2010-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多