huffman编码实现 w = {2,3,5,7,11,13,17,19,23,29,31,37,41}谢谢了···

生存困难休眠ING2022-10-04 11:39:541条回答

已提交,审核后显示!提交回复

共1条回复
╱╳冰╱葑灬 共回答了21个问题 | 采纳率76.2%
41:111
37:110
31:100
29:010
23:001
19:000
17:1010
13:0111
11:0110
7:10110
5:101110
3:1011111
2:1011110
Huffman编码结果不唯一哦!
下面附上参考程序哈:
void Error(char *message) //错误提示
{
system("cls"); //清屏
fprintf(stderr,"Error:%sn",message); //显示错误信息
exit(1);
}
HuffmanCode HuffmanCoding(HuffmanTree HT,HuffmanCode HC,unsigned int *w,unsigned int n) //Huffman编码函数,先构建Huffman树
{
unsigned int i,s1=0,s2=0;
HuffmanTree p;
char *cd;
unsigned int f,c,start,m;
MinCode min;
if(nparent=0;
p->lchild=0;
p->rchild=0;
}
for(;iweight=0;
p->parent=0;
p->lchild=0;
p->rchild=0;
}
for(i=n+1;i
1年前

相关推荐

Huffman编码的步骤.如信源符号及其概率如下:
Huffman编码的步骤.如信源符号及其概率如下:
a a1 a2 a3 a4 a5
p(a) 0.5 0.25 0.125 0.0625 0.0625
求其huffman编码
水户口1年前2
wu_kiss 共回答了27个问题 | 采纳率92.6%
霍夫曼(Huffman)编码原理
霍夫曼(Huffman)编码是1952年为文本文件而建立,是一种统计编码.属于无损压缩编码.
霍夫曼编码的码长是变化的,对于出现频率高的信息,编码的长度较短;而对于出现频率低的信息,编码长度较长.这样,处理全部信息的总码长一定小于实际信息的符号长度.
步骤进行:
l)将信号源的符号按照出现概率递减的顺序排列.
2)将两个最小出现概率进行合并相加,得到的结果作为新符号的出现概率.
3)重复进行步骤1和2直到概率相加的结果等于1为止.
4)在合并运算时,概率大的符号用编码0表示,概率小的符号用编码1表示.
5)记录下概率为1处到当前信号源符号之间的0,l序列,从而得到每个符号的编码.
对一个7符号信源做出Huffman编码 ,并求出在该编码下的平均码长.信源符号及概率如下
对一个7符号信源做出Huffman编码 ,并求出在该编码下的平均码长.信源符号及概率如下
对一个7符号信源做出Huffman编码
,并求出在该编码下的平均码长.信
源符号及概率如下:
P7 P6 P5 P4 P3 P2 P1
0.01 0.10 0.19 0.17 0.18 0.15 0.20
ben1xiong1年前1
sdfsdgwewq 共回答了16个问题 | 采纳率100%
p7:1000
P6:1001
P5:00
P4:110
P3:111
P2:101
P1:01
平均码长:4*0.01+4*0.1+2*0.19+3*0.17+3*0.18+3*0.15+2*0.2=2.72
应该给分的.LZ
Huffman编码的算法举例学通信的,只要算法举例就可以,不用编程,就是每一步具体怎么做,书上没有例子,马上要期末考了,
Huffman编码的算法举例
学通信的,只要算法举例就可以,不用编程,就是每一步具体怎么做,书上没有例子,马上要期末考了,急,
比如设信号源为 s={s1,s2,s3,s4,s5}
对应的概率为p={0.25,0.22,0.20,0.18,0.15}
binghai0071年前1
liusai 共回答了22个问题 | 采纳率86.4%
出现概率小的在树底,大的在树顶.以达到加权平均最小.