带有查找表的霍夫曼代码

Huffman code with lookup table

本文关键字:霍夫曼 代码 查找      更新时间:2023-10-16

我在互联网上读过一篇文章,知道从根目录遍历解码的自然方式,但我想用查找表更快地完成。

看完之后,我仍然不明白要点。

例如:

输入:"abcdaabaabaaa"代码数据0 a10 b110摄氏度111 d

文章说,由于长度可变,它通过取最大代码长度,并将其用作索引。

输出:"010110111001000010000"需要索引索引(二进制)代码位0 000 a 11 001 a 12010年2月1日3 011 a 14 100 b 25 101 b 26 110 c 37 111 d 3

我的问题是:

  1. due to variable length, it determine the length by taking a bit of string of max code length是什么意思?如何确定长度?

  2. 如何生成查找表以及如何使用它?背后的算法是什么?

对于您的示例,最大代码长度为3位。因此,您从流(010)中提取前3位,并使用它来索引表。这给出了代码"a"和位=1。你从输入流中消耗1位,输出代码,然后继续。在第二次循环中,你会得到(101),它的索引为"b"和2位,等等。

要构建该表,请将其设置为1<lt;max_code_length,并填充详细信息,就像将索引解码为huffman代码一样。如果你看看你的例子,所有以"0"开头的索引都是a,以"10"开头的指数都是b,依此类推