永发信息网

算法怎么做?

答案:2  悬赏:10  手机版
解决时间 2021-03-31 13:50
  • 提问者网友:趣果有间
  • 2021-03-30 15:58
算法怎么做?
最佳答案
  • 五星知识达人网友:夜风逐马
  • 2021-03-30 17:23


如图
追问怎么做的。过程原理。追答哈夫曼树的构造
构造哈夫曼树的过程是这样的
一、构成初始集合
对给定的n个权值{W1,W2,W3,...,Wi,...,Wn}构成n棵二叉树的初始集合F={T1,T2,T3,...,Ti,...,Tn},其中每棵二叉树Ti中只有一个权值为Wi的根结点,它的左右子树均为空。(为方便在计算机上实现算法,一般还要求以Ti的权值Wi的升序排列。)
二、选取左右子树
在F中选取两棵根结点权值最小的树作为新构造的二叉树的左右子树,新二叉树的根结点的权值为其左右子树的根结点的权值之和。
三、删除左右子树
从F中删除这两棵树,并把这棵新的二叉树同样以升序排列加入到集合F中。
四、重复二和三两步,
重复二和三两步,直到集合F中只有一棵二叉树为止。

编码总长度的求法:
编码字符的个数X该字符的编码长度,所有的字符求总和。追问还不是太懂。。那个第二步是要看情况的吧,编码总长度也看不懂,还有你的前缀码和试卷上的不一样,是都可以吗?追答选取两棵根结点权值最小的树----就是要看情况的啊。

编码总长度----挺容易理解的啊,A有30个,每个编码为01(长度为2)于是对总长度的贡献为30*2,其余的类推。

同一情况,构造的哈夫曼树本身不是唯一的,但是其编码总长度是唯一的。追问如果两个数的和正好是下一步的两个最小数的其中的一个那么这个树直接往上生长就可以了。如果这两个数的和比较大不是下一步的两个最小数的其中一个那么,就并列生长。
上面第二句话的意思是(两个数的和比剩下的数中最小的两个数大的话就并列)对不对?就是你图上根结点100左子树的来历对不对?追答对的,就是这样。追问好的,谢谢
全部回答
  • 1楼网友:大漠
  • 2021-03-30 18:36
这是数据结构里的题吗?追问是追答我还没学这个呢,不过感觉跟离散里的最小生成树有点像追问。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯