我是一个据说全国排名末尾的本科院校学生,平日不学无术,啥事不干就爱在天涯潜水...课程设计有点难,是关于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编码的一个题目,求助