霍夫曼树编码可以因人而异吗?

Can a huffman tree enconding be different from one person to anoher?

我需要为一个大学项目制作一个霍夫曼树,但我真的很困惑它是如何 works.I 实现霍夫曼树的编码部分的,但它不同于 http://huffman.ooz.ie/ 所有时间.

一个人对另一个人的编码可能不同,但正确吗?

是的。

首先,您可以任意将 0 和 1,或 1 和 0 分配给树的每对分支,以获得同等有效的代码。

其次,在哈夫曼算法的每一步寻找最低频率组时,你可以运行进入最低频率被三个或更多组共享的情况,或者次低频率被共享的情况两个或多个组。然后,您有两个或更多选择,可以选择在该步骤中组合哪些组。在那种情况下,您最终可能会得到不同的相邻符号,甚至是拓扑不同的树,所有这些都是同样最优的。

对于链接示例,在第一步中有五个频率 1 符号可供选择,因此第一次配对有十个不同的选择。然后在第二步中有三个频率一的符号可供选择,第二次配对有三个不同的选择。因此,马上就有 30 种不同的树可以构造,这些树具有指定的符号。

这些在拓扑上都是等价的。在第三步变得更有趣,第二低的频率有三个选择,其中两个是分支,一个是叶子。所以会产生两种不同的拓扑结构。

总而言之,那组特定的频率可以产生 24 棵拓扑不同的树,乘以每个拓扑的大量不同符号和位分配。所以实际上你最终得到与示例中所示完全相同的树的概率应该很小!

这是频率 {1, 1, 1, 1, 1, 2, 3, 3, 3, 3, 3, 4, 5, 5, 6, 7, 9, 10 , 12, 16}: