我被分配了一项作业,需要实现我选择的压缩算法。它可以使用任何语言,但我最熟悉的语言是Java,其次是C。它将根据以下标准进行评估:
1. 解压输出必须与原始输入匹配,因此我只能查看无损算法。 2. 运行时间必须与消息长度成比例。 3. 内存需求必须独立于消息长度。
我们的实现将按以下方式进行测试:
1. 标准文本文件 2. 具有0-255字节值的二进制文件 3. 未指定内容的大型文件(约10mb)。
我的初步想法是使用动态算术编码,但我想知道是否有更适合上述限制条件的算法?其次,使用C而不是Java是否更好?我之所以这样问是因为我认为C的内存占用量会更小,但我不确定实际情况是否如此。
我花了一些时间在谷歌上搜索这个问题,一些网站提到LZW编码结合动态霍夫曼编码。这是否是一个明智的方法?我们的讲师警告说,多年来尝试使用动态霍夫曼编码的90%的提交都没有正确实现。
话虽如此,我并不害怕尝试,但在开始之前我会很重视一些意见。
非常感谢任何反馈。
1. 解压输出必须与原始输入匹配,因此我只能查看无损算法。 2. 运行时间必须与消息长度成比例。 3. 内存需求必须独立于消息长度。
我们的实现将按以下方式进行测试:
1. 标准文本文件 2. 具有0-255字节值的二进制文件 3. 未指定内容的大型文件(约10mb)。
我的初步想法是使用动态算术编码,但我想知道是否有更适合上述限制条件的算法?其次,使用C而不是Java是否更好?我之所以这样问是因为我认为C的内存占用量会更小,但我不确定实际情况是否如此。
我花了一些时间在谷歌上搜索这个问题,一些网站提到LZW编码结合动态霍夫曼编码。这是否是一个明智的方法?我们的讲师警告说,多年来尝试使用动态霍夫曼编码的90%的提交都没有正确实现。
话虽如此,我并不害怕尝试,但在开始之前我会很重视一些意见。
非常感谢任何反馈。