【发布时间】: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
以下字符的最佳霍夫曼编码是什么? 频率是前 8 个斐波那契数:a : 1, b : 1, c : 2, d :3,e:5,f:8,g:13,h:21?概括案例以找到一个 频率为前 n 个斐波那契数时的最优代码。
这是我遇到的作业问题之一。我不是要求一个直接的答案,只是为了一些资源。
我应该从哪里拼凑起来回答问题?
【问题讨论】:
标签: algorithm fibonacci huffman-code
霍夫曼编码算法将两个频率最低的节点连接起来形成一个父节点,该父节点的频率等于子节点的总和。在符号的随机频率中,我们每次都需要计算要组合的至少两个节点,但在斐波那契频率序列的情况下,斐波那契数列中的序列与霍夫曼编码中的序列相同。
示例:- 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))
上面可以简化为直接公式。
【讨论】:
阅读 - http://en.wikipedia.org/wiki/Huffman_coding - 特别注意短语“从左到右生成二叉树,将两个最不可能的符号放在一起形成另一个等价符号,其概率等于这两个符号。重复该过程,直到只有一个符号”。
以上与斐波那契数列有何关系?
【讨论】: