1. 费诺编码原理:(百度百科)
https://baike.baidu.com/item/%E8%B4%B9%E8%AF%BA%E7%BC%96%E7%A0%81/6479275
2. 费诺编码实现的编程方向的选择:递归or循环?
- 递归方法实现费诺编码
用递归方法实现费诺编码,逻辑思路无疑是最清晰和最好理解的。
function [y]=fano(大小1Xn的概率矩阵B)
XXXX; %排序,分组,分配0、1码等操作
if(不满足递归返回条件) %递归返回判断
fano(B的子矩阵1); %以靠前的分组为新参数,调用自身
fano(B的子矩阵2); %以靠后的分组为新参数,调用自身
end
end
函数基本的逻辑描述:
求分组概率和a,求前i项累加概率,若大于a/2,分配0/1码à对两个新分组再调用自身。
递归返回条件的讨论:(如何判断某一分支的编码已经完成)
- 前一次分组后,该分组里只有两个元素:分配0、1码,该分支编码结束。
- 前一次分组后,该分组里只有一个元素:该分支编码在上一次分组时就已经结束。