- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试解决一些霍夫曼编码问题,但我总是得到不同的码字值(值而不是长度)。
例如,如果字符 'c' 的码字是 100,在我的解决方案中它是 101。
下面是一个例子:
字符频率码字我的解决方案
一个 22 00 10
乙 12 100 010
24 01 11
D 6 1010 0110
E 27 11 00
传真 9 1011 0111
两种解决方案的码字长度相同,并且不存在作为另一个码字前缀的码字。
这是否使我的解决方案有效?或者它必须只有 2 个解决方案,最佳的一个并翻转最佳的位?
最佳答案
有 96 种可能的方法可以将 0 和 1 分配给该组长度,并且所有方法都是完全有效的、最佳的前缀代码。你已经展示了其中的两个。
存在定义解决歧义的“规范”霍夫曼代码的约定。定义规范代码的值(value)在于将代码从压缩器传输到解压缩器。只要双方都知道并同意如何明确分配 0 和 1,那么只需要传输每个符号的代码长度——而不是代码本身。
deflate format最短代码从零开始,然后递增。在每个代码长度内,代码按符号值排序,即按符号排序。因此,对于您的代码,规范的霍夫曼代码将是:
A - 00
C - 01
E - 10
B - 110
D - 1110
F - 1111
关于huffman-code - 霍夫曼编码码字的变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16873886/
已关闭。此问题需要 debugging details 。目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and the
我这样定义了一个二叉树: struct btree { int x; btree* left_child = nullptr; btree* right_child = nul
我有这个霍夫曼代码,旨在返回数组中每个字母的霍夫曼代码并按字母顺序打印它们。问题是它不生成任何输出,而是继续处理,直到我手动退出它。谁能帮我找出错误吗?我认为我的代码是正确的,但我不知道无限循环从何而
动机 想象一下一个哈夫曼压缩文件被部分下载,就像在p2p软件中一样,所以我们首先为整个文件分配磁盘空间,然后开始随机下载文件块。其中一个哈夫曼密码(但我们不知道是哪一个)是一个结束密码,所以如果这个密
以下 block 由霍夫曼 block 标记嵌套 -HUFF---------------------------------------------------------------------0
我是一名优秀的程序员,十分优秀!