我已经给了一些课程来实现我选择的压缩算法。它可以是任何语言,但是我知道最好的是Java的语言,其次是C.将评估基础上 -选择压缩算法来实现
解压后的输出必须与原始输入相匹配,所以我只能看着损失更少的算法。
运行时间必须与消息长度成正比。
内存要求必须独立于消息的长度。
我们实现将如下测试 -
的标准文本文件
具有字节值的二进制文件从0-255
大型文件〜 10mb的未指定内容。
我最初的想法是使用动态算术编码,但我想知道是否有更适合上述约束的算法?其次,用C而不是Java来做它是一个更好的主意吗?我问这个是因为我认为C的记忆足迹会更小,但我不确定这是否真的如此。
我花了一些时间Google搜索这个问题,几个网站提到LZW编码结合动态霍夫曼编码。这是一个明智的途径吗?我们的讲师确实告诫我们,多年来尝试动态霍夫曼编码的提交中有90%没有正确实施。
这就是说,我不害怕试一试,但在开始之前我会重视一些意见。
任何反馈将不胜感激。
如果90%以前使用霍夫曼提交的意见都是错误的,也许这对您而言是一个更好的挑战。 – 2013-03-15 00:14:02
Shannon-Fano不符合您的(3)要求吗?得到正确的结果非常简单。如果你以前从未实现过压缩算法,我会建议S-F。 – 2013-03-15 00:14:45
如果您确实参加了LZW-Dynamic-Huffman路线,除了* Dr.Dobbs 1989文章(http://www.drdobbs)中提出的建议之外,我唯一的意见是使用near- *任何人的* LZW技术*。 COM /体系结构和设计/ LZW数据压缩/ 184408217)。我在算法中发现了对特里韦尔奇“错误”的“分析”,以及作者对该问题的“解决方案”给读者和韦尔奇先生造成了侮辱,韦尔奇坦率地忘记了数据压缩算法,而不是该文章的作者将永远知道。 – WhozCraig 2013-03-15 00:43:55