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

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

33得票2回答
将文件读取为字节数组

我需要编写一个Huffman算法。关于问题的整体思路我已经清晰,但是文件处理方面还有些困惑。 问题在于:该算法需要压缩任何类型的文件。 我的解决方案是:将文件读取为字节数组,然后使用int array[256]={0}为每个字节获取其相应的int n值并递增array[n]。如果我表达不清...

31得票5回答
什么是最好的压缩算法,可以在文件中进行随机读写?

什么是最好的压缩算法,允许在文件中进行随机读/写操作? 我知道任何自适应压缩算法都不合适。 我也知道霍夫曼编码不合适。 有没有更好的压缩算法可以允许随机读/写操作呢? 如果你将任何压缩算法分成块写入,我认为你可以使用它,但理想情况下,我不想一次解压整个块。但是,如果您对如何轻松实现此操...

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

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

15得票1回答
解码JPEG哈夫曼块(表)

以下区块是由哈夫曼区块标记嵌套而成的-HUFF---------------------------------------------------------------------0084- 10 0 1 2 4 3 4 6 5 6...

14得票1回答
malloc: ***错误:释放的指针未被分配***请在malloc_error_break处设置断点以进行调试

有人能帮我找出我在哪里犯了错误吗?我知道这可能是双重删除或类似的问题。背景是,这是对哈夫曼树的实现,你可以在维基百科上轻松地了解到相关信息。 CharCountNode类的实现int main() { ifstream input; input.open("input.txt"); ...

13得票1回答
在C语言中将文件以比特形式写入文件

我正在C语言中实现哈夫曼算法。已经实现了基本功能,直到获取二进制编码字为止,例如abcd将变成100011000或类似的东西。现在问题是如何以二进制形式在压缩文件中写入此代码。我的意思是,如果我正常写入,每个1和0都将成为一个字符,因此不会进行压缩。 我需要以其位形式将这些1和0写入。在C中...

13得票2回答
无损压缩方法,用于在进行Base64编码之前缩短字符串长度?

我刚刚构建了一个小型网页应用程序,用于预览HTML文档,生成包含base64编码数据的HTML(以及所有内联CSS和JavaScript)的URL。问题是,这些URL很快就变得有点长。有没有"事实上"标准的方式(最好使用Javascript)可以在不丢失数据的情况下先压缩字符串? 附:我之前...

13得票6回答
如何快速解码Huffman编码?

我使用纯霍夫曼编码在Windows下实现了简单的压缩程序。但是我不知道如何快速解码压缩文件,我的算法效果很差: 枚举代码表中的所有霍夫曼编码,然后将其与压缩文件中的比特进行比较。结果非常可怕:解压3MB的文件需要6小时。 你能提供更有效的算法吗?我应该使用哈希或其他什么东西吗? 更新:基...

12得票3回答
能否在GPU上实现Huffman解码?

我们有一个用Huffman编码的数据库。目标是将其与相关的解码器一起复制到GPU上,然后在GPU上对数据库进行解码,并对此解码的数据库执行操作而无需将其复制回CPU。 我并不是一个Huffman专家,但我所知道的很少,似乎这是一个基于控制结构的算法。使用基本算法时,恐怕会有很多串行操作。 ...