我正在学习霍夫曼编码并试图找到以下答案:
哈夫曼树可以是一个列表吗?如果是,那么在什么情况下?如果不是,那为什么?
嗯,确切地说不是一个列表,但它可以是一棵树,其中所有左子节点都是叶子,唯一的右节点叶子将位于最深的节点上。当一个符号的概率高于所有其他节点的总和时,就会发生这种情况,然后在下一级,最可能的节点的分数高于其余节点的总和,依此类推,如本例所示:
-
/ \
0.5 -
/ \
0.25 -
/ \
.10 -
/ \
.2 .1
(这仅显示概率,而不显示相应的符号,对于本次讨论来说,这些符号是任意的)
当然,对于一棵包含 256 个符号的树来说,要发生这种情况,最常见符号的总体数量需要非常大。
在哈夫曼编码中,是否可能恰好有两个码字长度最长的符号?如果是,那么在什么情况下?
当然 - 事实上,这正是上面树中所发生的情况:
-
/ \
0 - (1 - non-leaf)
/ \
10 - (11 - non-leaf)
/ \
110 - (111 - non-leaf)
/ \
1110 1111
不完全是一个列表,但它可以类似于一棵树,所有左子节点充当叶子,而右侧节点的单独叶子位于最深的节点上。检查此网站了解更多信息。