标题:关于HUFFMAN编码的一个题目,求助
只看楼主
小墨
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2006-12-26
 问题点数:0 回复次数:2 
关于HUFFMAN编码的一个题目,求助

我是一个据说全国排名末尾的本科院校学生,平日不学无术,啥事不干就爱在天涯潜水...课程设计有点难,是关于H编码,网上也找不到什么有用资料.没法,来要饭了,哪位大哥大姐帮忙解一下,我拿去抄抄. :P\
关于H编码似乎是霍(哈,赫)夫曼编码
  它的编码常规如下.H码的编码步骤可以简述为:
  1.首先将N个信号按值的大小排列
  2.将最小的两个信号合并成一个新的信号,新信号的值为该两信号值的和,
   从而将原N个信号缩减N-1个信号.
  3.把缩减后的信号仍按值递减排列,然后将其中最小的两个信号合并成一
   个新信号,这样又缩减为N-2个信号.
  4.依次类推,知道只剩下1个信号为止.
  5.将没次合并的两个信号分别用"0"和"1"两个符号表示.
  6.从最后一级开始,向前返回,就得出各信号所对应的符号序列,即为个信
   号对应的码字.
  
   上面的编码方法可称为二元编码,其思想推广到M元编码.不同的只是每次
  把值最小的M个信号合并成一个新的信号,并分别用0,1,…,M-1等M个符号
  来表示.
   对于M元编码,信号个数N必须满足下式:
  
   N=(M-1)Q+M
  
   式中:N——信号个数
   M——码元数
   Q——缩减次数
  
   对于二元码,总能找一个Q,满足上式。但对于M元码,当N为任意正整数
  时,不一定能找到一个Q满足上式,此时,可以认为地增加一些值为零的信号
  以满足上式。然后取值最小的M个信号合并成一个新信号,并把这些的值想家
  最为该新信号的值,重新由大到小排序,再取最小的M个信号合并,如此下去。
   M元的H编码步骤如下:
   1.验证所给N是否满足上式,若不满足,可以人为地增加一些值为零的信号,以
   使最后一步有M个信号;
   2.取最小的M个符号合并成一个新信号,并分别用0,1,…,M-1给个分支赋值,把
   这些新信号的值相加作为该信号的值;
   3.把新信号和剩下信号重新排序,重复第2步.
   4.从最后一级开始,向前返回,就的出各信号所对应的符号序列,即为个信号对
   应的码字.
   后来新加的值为零的信号,虽也赋予码字,但实际上是荣誉码字,并未用上,但这
  样编成的码,仍是最佳的,也就是平均码长最短,如果等值信号排队时注意到顺于,则
  码长的方差也是最小的.

具体题目如下
  H编码,二元H码和m元H码
  编写代码,设有50个信号,用两种方法,运行程序后,显现下面的参考界面
  
  
  
   H码编码
   =============
  
   1.方法A
   2.方法B
  
   请选择(1或2,0:退出):


哪位大哥帮下忙看下感激不尽,永铭五内,不敢或忘啊~


搜索更多相关主题的帖子: HUFFMAN 编码 
2006-12-26 10:34
smartwind
Rank: 1
等 级:新手上路
威 望:1
帖 子:277
专家分:0
注 册:2006-11-13
得分:0 

1.首先将N个信号按值的大小排列
  2.将最小的两个信号合并成一个新的信号,新信号的值为该两信号值的和,
   从而将原N个信号缩减N-1个信号.
  3.把缩减后的信号仍按值递减排列,然后将其中最小的两个信号合并成一
   个新信号,这样又缩减为N-2个信号.
  4.依次类推,知道只剩下1个信号为止.
  5.将没次合并的两个信号分别用"0"和"1"两个符号表示.
  6.从最后一级开始,向前返回,就得出各信号所对应的符号序列,即为个信
   号对应的码字.

你的算法说明就是错的
是按信号的出现率编码,不是按信号的值

2006-12-27 11:42
小墨
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2006-12-26
得分:0 
我是照课题一字一字码的,难怪高手都不回我。。。谢谢smartwind
我决定放弃了。。。谢谢你~
2007-01-01 03:56



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-112146-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019996 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved