Fibonacci数的最优Huffman码

时间:2013-11-09 21:02:45

标签: algorithm fibonacci huffman-code

  

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

这是我的任务之一。我不是要求一个直接的答案,只是为了一些资源。

我应该把哪些部分放在一起回答问题?

2 个答案:

答案 0 :(得分:2)

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

以上如何与斐波那契系列相关?

答案 1 :(得分:2)

霍夫曼编码算法采用两个最小频率节点并将它们连接以形成具有频率等于子节点之和的父节点。在符号的随机频率中,我们需要计算每次至少两个节点的组合,但在斐波纳契频率序列的情况下,斐波那契序列中的序列与霍夫曼编码中的序列相同。

示例: - 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

。 。 。 last = 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))

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