我知道霍夫曼编码是一种用于文件压缩的流行技术,并且我知道它可以通过编码更短的更频繁的字符来工作。问题是您只有在拥有树的情况下才能对其进行解码。您实际上也必须发送树吗?如果可以,采用什么形式?请提供详细信息。
答案 0 :(得分:0)
是的,您必须先发送代码的表示形式。霍夫曼代码为bidirectional @OneToMany
which is more efficient,因此您只需发送代码中与每个符号相对应的位数即可。然后可以从另一端的长度重建规范代码。您无需发送树。
长度本身也可以压缩,以提高效率和复杂性。有关如何有效传输霍夫曼码的示例,请参见canonical。
答案 1 :(得分:0)
霍夫曼树的传输方式完全取决于压缩格式。
静态霍夫曼编码树。 Deflate算法仅编码the number of bits per symbol。
对于Adaptive Huffman,不需要对树进行显式编码,因为会不时地重建(或稍加修改)树。然后对初始树进行硬编码。