11得票5回答
我该如何创建用于Huffman编码和解码的树?

对于我的作业,我需要对哈夫曼树进行编码和解码。我在创建树方面遇到了问题,现在卡住了。 不要在意print语句——它们只是用来测试当我的函数运行时输出的内容。 在第一个for循环中,我从我用于测试的主块中的文本文件中得到了所有值和索引。 在第二个for循环中,我将所有数据插入了优先队列。 ...

9得票8回答
C++ 结构体内包含本身?

我一直在尝试将这段代码移植到Python,但是有些东西我不太理解C++(虽然我知道一点C ++,但这超出了我的能力): typedef struct huffnode_s { struct huffnode_s *zero; struct huffnode_s *one; ...

29得票6回答
哈夫曼编码的真实世界应用有哪些?

我被告知Huffman编码被用作无损数据压缩算法,但同时我也听说现实中的数据压缩软件并不采用Huffman编码,因为如果键的分布不够分散,压缩后的文件甚至可能比原始文件还要大。 这让我想知道Huffman编码是否有任何真实世界的应用?

9得票3回答
将位的字符串表示转换为字节

我刚开始学习文件压缩,遇到了一些障碍。我的一个应用程序可以将字符串“program”编码为压缩的二进制表示形式"010100111111011000"(注意,它仍然以字符串形式存储)。 Encoding g 111 r 10 a 110 p 0...

9得票1回答
可压缩性示例

来自我的算法教材: 每年一次的县级赛马比赛将有三匹从未相互竞争的纯种马参加。你兴奋地研究了它们过去200场比赛,并将其总结为四个结果的概率分布:第一名(“第一名”),第二名,第三名和其他。 Outcome Aurora Whir...

7得票6回答
生成'n'个二进制前缀码的算法

一个前缀编码是一组编码,使得没有一个编码是另一个编码的前缀。例如,以下集合是一个前缀编码: 10 11 000 001 0100 0101 0110 0111 有 n = 8 个成员。我认为这些通常是使用某种类型的霍夫曼树创建的。 我的问题是:您能帮助我创建一个函数,以生成具有'n'成...

39得票6回答
高效存储哈夫曼树的方法

我正在编写一种Huffman编/解码工具,希望找到一种有效的方法来存储创建的Huffman树以便储存在输出文件中。 目前我正在实现两个不同版本。 这个版本会将整个文件逐个字符地读入内存,并为整个文档构建一个频率表。这只需要输出一次树结构,因此效率并不是很大的问题,除非输入文件很小。 另一...

9得票2回答
霍夫曼编码中字符单个比特编码的条件是什么?

这是我在学校环境中遇到的一个问题,但它一直困扰着我,所以我决定在这里提问。 在哈夫曼压缩中,固定长度的序列(字符)被编码为可变长度的序列。编码序列的长度取决于源字符的频率(或概率)。 我的问题是:最低的最高字符频率是多少,使得该字符可以用一个比特进行编码?

7得票2回答
DEFLATE和固定Huffman编码

我正在尝试实现一个压缩器并且需要决定是否使用静态哈夫曼编码或者创建动态哈夫曼编码。 静态编码长度与什么有关? (RFC中包含的表格如下) Lit Value Bits --------- ---- 0 - 143 8 144 - 255 9 256 - 27...

10得票1回答
JPEG重启标记

我制作了JPEG解码器,但没有实现重启标记逻辑。这就是为什么我的程序无法处理一些图片的原因(例如使用PhotoShop保存的图像:文件->另存为->jpeg)。我想要实现重启标记逻辑,但是没有详细的在线说明重启标记逻辑如何工作。请问有人能告诉我更多关于重启标记,或者建议我可以阅读更多相关在线资...