作业帮 > 数学 > 作业

数据结构 求哈弗曼编码

来源:学生作业帮 编辑:拍题作业网作业帮 分类:数学作业 时间:2024/04/27 23:25:05
数据结构 求哈弗曼编码
已知某系统在通信联络中只可能出现八种字符,其出现的概率分别是0.05,0.29,0.07,0.08,0.14,0.23,0.03,0.11,试构造一棵哈夫曼树.并得出哈夫曼编码.
有两种做法,但是求得的树不一样,大家看看哪种是对的
NO.1
no2_________________(1.00)___________________
________________/______\__________________
___________(0.42)______(0.58)_____________
___________/____\______/____\_____________
_______(0.19)_(0.23)_(0.29)_(0.29)________
_______/____\_______________/____\________
____(0.08)_(0.11)_______(0.14)_(0.15)_____
____/____\_____________________/____\_____
_(0.03)_(0.05)______________(0.07)_(0.08)_
为了方便找最小的,可以对它进行排序:
0.03,0.05,0.07,0.08,0.11,0.14,0.23,0.29
最小的两个是:0.03+0.05=0.08
再排序:
0.07,0.08,(0.08),0.11,0.14,0.23,0.29
最小的两个是:0.07+0.08=0.15
这里有两个0.08,用不同的0.08建树有不同的结果而且那个最短路径也不同
这两种方法从表面上看都没有问题,第一种最短路径是279,第二种是271,显然第二种路径要短,所以我们肯定第二种是对的.我们在从本质上分析,哈弗曼数最直观的表象是权值越小的叶子离根越近,所以当一个结点和一个叶子的权值一样时就应该选取叶子与那个结点先组合.