7得票3回答
困惑于哈夫曼树

生成哈夫曼树的快速教程 对于哈夫曼树感到困惑。在上面链接的最后,它展示了只剩下2个元素的树,然后是完成的树。我困惑的是它的分支方式。哈夫曼树需要特定的分支方式吗? 例如,57:* 和它的右子节点35:* 向右分支。它可以是35向左分支,22向右分支吗?此外,为什么22:*没有与15:4配对...

7得票2回答
如何使此函数延迟地消耗其输入比特流?

我想象一个函数,形如 takeChunkUntil :: [a] -> ([a] -> Bool) -> ([a], [a]) 希望是惰性的。 它从第一个列表中取出元素,直到它们满足谓词,然后返回该子列表以及剩余的元素。 回答一些问题: 最终目标是制作一个可以懒惰地读取Huffman...

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

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

7得票5回答
霍夫曼编码

我正在尝试实现用于压缩的哈夫曼算法,这需要将可变长度的位写入文件。在C++中是否有一种方法可以以1位粒度写入可变长度数据到文件中?

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

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

7得票3回答
哈夫曼编码是最有效的无损压缩算法,是否有数学证明?

我的朋友告诉我这个存在,但我从未找到过。不确定他是否在撒谎,但我非常想知道证明的原理。 (是的,我是那些从《硅谷》电视节目中了解哈夫曼编码的人之一,抱歉)

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

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

7得票1回答
解析JPEG文件,SOS标记。

我在解析jpeg文件时遇到了问题。当我遇到SOS(扫描开始)标记时,有几个字节的含义我不理解。在下面的图片中,在SOS标记后,有2个字节用于头部长度(图片上的Ls部分)。但是图片中其余的数据(例如Ns,Cs1等)是什么意思,纯数据从哪里开始呢?

8得票2回答
Huffman压缩中的最后一个字节

我想知道处理Huffman压缩中的最后一个字节的最佳方法。我有一些很好的C++代码,可以很好地压缩文本文件,但是目前我必须在我的编码文件中写入编码字符的数量(等于输入文件大小),因为不知道如何更好地处理最后一个字节。 例如,要压缩的最后一个字符是'a',其编码为011,我刚刚开始写新字节,因...

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

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