香农编码、费诺编码、哈弗曼编码
来源:互联网 发布:八门神器修改数据闪退 编辑:程序博客网 时间:2024/05/22 07:19
香农编码
香农编码法冗余度稍大,实用性不大,但有重要的理论意义。
编码步骤如下:
(1) 将信源消息符号按其出现的概率大小依次排列
p(x1)≥p(x2)≥„≥p(xn)
(2) 确定满足下列不等式整数码长Ki:
-log2p(xi)≤Ki<-log2p(xi)+1
(3) 为了编成唯一可译码,计算第i个消息的累加概率
Pi=p(xk)
(4) 将累加概率Pi变成二进制数。
(5) 取Pi二进制数的小数点后Ki位即为该消息符号的二进制码字。
费诺编码
编首先,将信源符号以概率递减的次序排列进来,将排列好的信源符号划分为两大组,使两组的概率和近于相同,并各赋于一个二元码符号”0”和”1”.然后,将每一大组的信源符号再分成两组,使同一组的两个小组的概率和近于相同,并又分别赋予一个二元码符号。依次下去,直至每一个小组只剩下一个信源符号为止。这样,信源符号所对应的码符号序列则为编得的码字。译码原理,按照编码的二叉树从树根开始,按译码序列进行逐个的向其叶子结点走,直到找到相应的信源符号为止。之后再把指示标记回调到树根,按照同样的方式进行下一序列的译码到序列结束。如果整个译码序列能够完整的译出则返回成功,否则则返回译码失败。
编码方法
编码过程如下 :
(1) 将信源符号按概率递减顺序排列 ;
(2) 把两个最小的概率加起来 , 作为新符号的概率;
(3) 重复步骤 (1) 、(2), 直到概率和达到1 为止;
(4) 在每次合并消息时,将被合并的消息赋以1和0或0和1;
(5) 寻找从每个信源符号到概率为1处的路径,记录下路径上的1和0;
(6) 对每个符号写出"1"、"0"序列(从码数的根到终节点)。
- 香农编码、费诺编码、哈弗曼编码
- 香农编码
- 费诺编码
- 费诺编码
- 香农编码Shannon
- 信源编码算法(费诺编码&&哈夫曼编码)
- 信源编码算法(费诺编码&哈夫曼编码)
- c程序实现香农编码
- 费诺编码C语言实现
- 使用链表编写的香农编码
- 香农编码C程序及演示结果
- 编码
- 编码
- 编码
- 编码
- 编码
- 编码
- 编码
- 实现ItemStateListener接口时的问题
- VMware运行虚拟机时,提示“内部错误”
- CLDC1.1中DataOutputStream无writeDouble函数?
- 因为老板让我做一个WAP 游戏!所以百分求!WAP版的斗地主游戏 地址!我玩一玩参考一下!希望有玩过的给我一个连接!谢谢
- RabbitMQ学习(一)-----------服务器管理
- 香农编码、费诺编码、哈弗曼编码
- Conda:误解与迷思
- CentOS7下yum源搭建编程环境
- 用c++画椭圆
- sizeof
- 【数据库学习】数据库安全、SQL Server、SQList、android之sqlite
- J2ME是闯进电信丛林的兔子?
- Linux命令(1)
- 数据结构-二叉树(Binary Tree)