2

我有一张表格,显示事件发生的概率。我对第 1 部分很好,但第 2 部分不适合我。我试图弄清楚第 2 部分中二进制数是如何得出的?

我知道 0 被分配给最大概率,我们从那里开始工作,但是我们如何计算出下一组二进制数是什么?数字周围的圆圈意味着什么/ 2个灰色阴影区分?

它只是没有点击。也许有人可以用一种让我理解的方式来解释它?

图1 图 2

4

1 回答 1

4

要构建霍夫曼代码,一种方法是构建二叉树,使用优先队列,其中插入要分配代码的数据,按频率排序。

首先,您有一个只有叶节点的队列,代表您的每个数据。

在每个步骤中,您从队列中取出两个最低优先级节点,创建一个频率等于两个已删除节点之和的新节点,然后将这两个节点作为左右子节点附加。这个新节点会根据它的频率重新插入到队列中。

重复此操作,直到队列中只有一个节点,即根节点。

现在您可以从根到任何叶节点遍历树,并且您在每个级别所走的路径(无论是向左还是向右)都会给您一个 0 或 1,以及路径的长度(向下多远)节点所在的树)为您提供代码的长度。

实际上,您可以在构建树时构建此代码,但在每个节点的代码中附加 0 或 1,具体取决于它所属的子树是添加到某个新父节点的左侧还是右侧.

在您的图表中,圆圈中的数字表示在构建树的每个阶段已组合的两个节点的频率之和。

您还应该看到被组合的两者被分配了不同的位(一个为 0,另一个为 1)。

图表可能会有所帮助。为我的手写道歉:

在此处输入图像描述

于 2013-01-21T07:14:42.690 回答