Encoding 我如何知道我的哈夫曼树是否正确?

Encoding 我如何知道我的哈夫曼树是否正确?,encoding,compression,huffman-code,Encoding,Compression,Huffman Code,问题是: 创建一个哈夫曼树并为以下数字编码:24、55、13、, 67,88,36,17,61,24,76 所以我创建了这棵树: 但是,既然有多棵树,我怎么知道我的树是否正确,因为有多个元素具有相同的频率?将“数字”解释为与频率相反的符号,我们就有了频率集{1,1,1,1,1,1,1,2}。由于在哈夫曼算法的某些步骤中有多个选择,因此可能会产生多个拓扑。根据您所做的选择,以下是三种拓扑结构不同的树: 对于其中的每一个,您可以任意选择在每个长度放置哪个符号。对于前两棵树,2必须是符号24,但剩

问题是:

创建一个哈夫曼树并为以下数字编码:24、55、13、, 67,88,36,17,61,24,76

所以我创建了这棵树:

但是,既然有多棵树,我怎么知道我的树是否正确,因为有多个元素具有相同的频率?

将“数字”解释为与频率相反的符号,我们就有了频率集{1,1,1,1,1,1,1,2}。由于在哈夫曼算法的某些步骤中有多个选择,因此可能会产生多个拓扑。根据您所做的选择,以下是三种拓扑结构不同的树:

对于其中的每一个,您可以任意选择在每个长度放置哪个符号。对于前两棵树,2必须是符号24,但剩余的八个符号可以在每组四个符号中任意分割。对于这两棵树中的每一棵树,都有70种可能的唯一长度指定。对于第三棵树,2也必须是符号24,但是剩余的符号可以根据您的喜好分成2和6两组,共有28种可能的选择

做出这些选择后,您现在可以将代码分配给每个叶,在每个分支上,您可以独立且任意地将0分配给左分支,将1分配给右分支,或将1分配给左分支,将0分配给右分支。对于每个树和符号长度分配,这将提供256个可能的代码分配

总而言之,有43008个可能的代码可以从哈夫曼算法得到。所有这些选择都是正确的。它们都会在消息中产生相同的最佳位数(32)


这是。

我想我误解了这些问题。“最短路径有一个最低频率,24。频率为88的叶子应该有到根的最短路径”24是给定集合中唯一重复两次的数字,因此它应该有最高频率,2。88,在另一方面,是不重复的,因此它的频率是1作为所有其他元素。我是不是误解了这个问题?也许是我误解了。我把数字理解为符号的频率,而不是符号本身。你是说你可以用a,b,c,d,e,f,g,h和i来代替这些数字吗?