编码算法

步骤1:开始时,统计字符串中信源符号(K)的符号总个数(N),并计算不同信源的概率分布(qK),即qK = NumK / N;

步骤2:将A,B,C三个信源符号按其概率(qK)递减排序:q0>=q1>=q2,其中q0,q1,q2代表qA,qB,qC按其概率大小排列的结果(概率相同的情况按字母升序排列,比如qA = qB,且都大于qC,则q0代表qA,q1代表qB);

步骤3:进行第一次分组:

1.将依次排列的信源符号(K)按概率分为两大组,使两大组分别的概率和相差最小(算法可简化为概率最大的信源符号作第一组,其他两个符号作为第二组);

2.第一组中Code[0][0] = 0,第二组中Code[m][0] = 1,其中m = 1和2;

步骤4:进行二次分组:

1.按步骤3中分组方法将第一次分组中第二组的信源符号(K)进一步分成两组;

2.其中分组后的第一组中Code[1][1] = 0;第二组中Code[2][1] = 1;

步骤5:输出信源符号(K)所对应的费诺编码(Code),其中Code数组中的一行(Code[m])代表某个信源符号(K)对应的费诺编码;

步骤6:输出字符串对应的费诺编码码流并结束。

注意:若某两个信源符号出现概率相同,对其概率从大到小排序时应按字母表升序排序。

费诺编码示例

运行结果:

代码是C语言实现的,想需要的可以给我留言单独发送。

源码下载链接:(1条消息) 费诺算法源码(技能大赛中算法)-电信文档类资源-CSDN下载

简易费诺算法的C语言实现相关推荐

  1. c语言实验--字符编码,费诺编码的C语言实现实验论文.doc

    费诺编码的C语言实现实验论文 #include //头文件 #include #include #define Bmax 10 //最长码长度 #define Smax 20 //数组最大长度 /** ...

  2. 费诺编码实验报告c语言,信息论编码实验报告费诺编码附源代码..doc

    信息论编码实验报告费诺编码附源代码. 中南大学 信息论与编码实验报告 选 题: 费诺编码 学生姓名: 学 号: 专业班级: 通信工程 指导老师: 学 院: 信息科学与工程学院 时 间: 2015 目录 ...

  3. 狄斯奎诺算法 c语言,图的邻接表实现迪杰斯特拉算法(C语言).doc

    图的邻接表实现迪杰斯特拉算法(C语言) /*迪杰斯特拉算法(狄斯奎诺算法)解决的是从源点到其它所有顶点的最短路径问题*/ //算法实现: #include #include #define MAX 2 ...

  4. 狄斯奎诺算法 c语言,图的邻接表实现迪杰斯特拉算法(C语言)

    图的邻接表实现迪杰斯特拉算法(C语言). 迪杰斯特拉算法(狄斯奎诺算法)解决的是从源点到其它所有顶点的最短路径问题. 图的邻接表实现迪杰斯特拉算法(C语言) /*迪杰斯特拉算法(狄斯奎诺算法)解决的是 ...

  5. 信源编码算法(费诺编码哈夫曼编码)

    信源编码算法 费诺编码 Fano coding 哈夫曼编码 Huffman coding 费诺编码 编码步骤 将信源符号按照其概率大小,从大到小排列: 将这一组信源符号分成概率之和尽可能接近或者相等的 ...

  6. 香农费诺编码 c语言实现,信息论课程设计(香农、费诺编码)

    <信息论课程设计(香农.费诺编码)>由会员分享,可在线阅读,更多相关<信息论课程设计(香农.费诺编码)(34页珍藏版)>请在人人文库网上搜索. 1.华北科技学院信息论基础课程设 ...

  7. 香农费诺编码 c语言实现,对于香农编码、费诺编码和哈夫曼编码,编码方法惟一的是()。...

    问题标题 对于香农编码.费诺编码和哈夫曼编码,编码方法惟一的是(). 2019-8-15来自ip:15.170.14.227的网友咨询 浏览量:533 手机版 问题补充: 题目类型:[填空题] 对于香 ...

  8. java费诺编码_费诺编码的分析与实现.doc

    费诺编码的分析与实现 吉林建筑大学 电气与电子信息工程学院 设计题目: 费诺编码的分析与实现 专业班级: 电子信息工程 111 学生姓名: 马 超 学 号: 指导教师: 吕卅 王超 设计时间: 201 ...

  9. java实现.费诺编码_信息论编码实验报告费诺编码附源代码

    信息论编码实验报告费诺编码附源代码 中南大学信息论与编码实验报告选 题: 费诺编码 学生姓名: 学 号: 专业班级: 通信工程 指导老师: 学 院: 信息科学与工程学院 时 间: 2015 目录1.实 ...

最新文章

  1. Log4j显示异常的奇怪问题
  2. 【bzoj1486】[HNOI2009]最小圈 分数规划+Spfa
  3. springmvc+mybatis整合
  4. ASP.NET MVC之从控制器传递数据到视图四种方式(一)
  5. Java 高并发_JAVA并发编程与高并发解决方案 JAVA高并发项目实战课程 没有项目经验的朋友不要错过!...
  6. ar路由器 pppoe下发ipv6 dns_移动宽带如何获取IPV6地址
  7. 互联网常识(持续更新)
  8. dual mysql 获取序列_MySQL JDBC客户端反序列化漏洞
  9. 离开互联网行业_如何使用互联网再也不会离开家
  10. 单元测试怎么测试线程_单元测试线程代码的5个技巧
  11. synchronized 详解,偏向锁,轻量锁,重量锁
  12. java多线程通信 例子
  13. Vue+elementUI导出xlsl表格,支持复杂表头,自动合拼单元格。xlsx+file-saver插件
  14. Unity3D 局部截图、全屏截图、带UI截图三种方法
  15. 使用python调整图片大小
  16. Merriam-Webster‘s Vocabular Builder ( BELL )
  17. 文本分类——KNN算法
  18. 关闭 Windows 安全中心警报 及 用户账户允许此应用对你的设备进行更改 通知 及 打开文件 - 安全警告 通知
  19. Office 2019 激活-探索(仅供参考)
  20. js  计算是今天多少周

热门文章

  1. Windows Update被管理员禁用怎么解决
  2. android原生界面太烦了,Android进阶(二十七)Android原生扰人烦的布局
  3. Flutter GridView 组件 以及动态 GridView
  4. 微波射频学习笔记7--------阻抗匹配
  5. CC00012.druid——|HadoopOLAP_Druid.V12|——|Druid.v12|实战|Druid实战案例.V1|
  6. [js高手之路] dom常用API【appendChild,insertBefore,removeChild,replaceChild,cloneNode】详解与应用
  7. 数据库-MySQL-基础(2)-DDL操作
  8. zuiqingchun3
  9. 学会思考--菜鸟程序员晋升大神之路
  10. LK(Lucas-Kanade)稀疏光流法