【发布时间】:2023-03-23 00:37:01
【问题描述】:
我有一个关于 JPEG 霍夫曼表和使用霍夫曼表从树构造符号/二进制字符串的问题。假设,在3-Bit 代码长度的霍夫曼表中,代码的数量大于 6,那么我们如何将所有这些代码添加到树中?如果我是正确的,只能在树的 3 位级别/深度添加 6 个代码。那么,如果它们不适合该级别,我们如何添加剩余的代码?我们就忽略它们吗?
例子
code length | Total Codes | Codes
3-Bit | 10 | 25 43 34 53 92 A2 B2 63 73 C2
在上面的例子中,如果我们按照为代码构建符号/二进制字符串的顺序进行,然后直到 A2,我们可以在树中添加 3 位级别的代码,但是 B2、63、73、C2 等呢? ?不能在树的 3 位级别添加它们吗?那么我们如何处理它们呢?
【问题讨论】:
-
在每个级别,您都会有一些终端代码和一些延续代码。一个终端代码对应一个实际值。延续代码意味着您需要阅读更多位才能获得完整代码。因此,如果您有一个 3 位代码,则最多可以有 7 个终端代码,只留下一个延续代码。
-
This wikipedia article 可能有用。为了为您的示例设计霍夫曼代码,您需要为每个值指定一个频率。然后,只有少数值会使用 3 位代码。有些值必须使用更长的代码。
-
This question/answer 可能会有所帮助。
-
这是一个理论问题,还是您找到了包含此数据的 JPEG 文件?如果您要问如何在 JPEG 中实际解码,那么我怀疑 Mats 的回答是不够的。
-
@LuckyAli 我不能在不关闭问题的情况下投票给副本。 @500 提供的链接是您正在寻找的答案吗?