我有一张表格,显示事件发生的概率。 我对第1部分很好,但第2部分没有点击我。我正试图弄清楚如何 二进制数是在第2部分中得出的?
我知道0被赋予最大概率,我们从那里开始工作,但我们如何计算出下一组二进制数是什么?数字周围的圆圈是什么意思/ 2个灰色阴影区别?
这不是点击。也许有人可以用一种让我理解的方式解释它?
答案 0 :(得分:4)
要构建霍夫曼代码,一种方法是使用优先级队列构建二叉树,在该队列中插入要分配的数据代码,按频率排序。
首先,您有一个只有叶节点的队列,代表您的每个数据。
在每个步骤中,从队列中获取两个最低优先级的节点,创建一个频率等于两个已删除节点总和的新节点,然后将这两个节点作为左右子节点附加。根据它的频率,将这个新节点重新插入队列。
重复此操作,直到队列中只有一个节点为止。
现在,您可以遍历树从根到任何叶节点,并且您在每个级别所采用的路径(无论是向左还是向右)都会给出0或1,以及路径的长度(如何在树的远处,节点是)给出了代码的长度。
实际上,您可以在构建树时构建此代码,但在每个节点的代码中附加0或1,根据它所属的子树是否添加到左侧或右侧一些新的父母。
在你的图表中,圆圈中的数字表示在构建树的每个阶段合并的两个节点的频率之和。
你还应该看到被组合的两个被分配了不同的位(一个为0,另一个为1)。
图表可能有所帮助。为我的手写道歉: