我正在寻找一种压缩算法(用于编程竞赛),我需要完整描述如何实现它(所有技术细节),任何失去和无专利的算法都可以,但实现的简易性是奖金:)
(虽然可能不相关)我打算用C ++实现算法......
提前致谢。
编辑: 我将仅压缩文本文件,没有其他文件类型......
答案 0 :(得分:4)
好吧,我不能为你完成比赛,但请查看wiki上的这篇文章:Run Length Encoding。它是迄今为止压缩数据的最简单方法之一,尽管并不总是有效的。压缩也是特定于域的,即使在无损算法中,您会发现您正在压缩的决定如何最好对其进行编码。
答案 1 :(得分:3)
我会在维基百科上开始here。
有很多可供选择,但如果不了解您想要的更多内容,则很难提供更多帮助。您是在压缩文本,图像,视频还是随机文件?每个人都有自己的技术和挑战,以获得最佳结果。
如果易于实施是我使用“filecopy”压缩的唯一标准。保证压缩比恰好为1:1,并且实现简单......
答案 2 :(得分:3)
Huffman会很好。以下所有评论者向我保证,实施;D
答案 3 :(得分:3)
RFC 1951描述了膨胀/收缩,包括压缩机算法的简要描述。 Antaeus Feldspar的An Explanation of the Deflate Algorithm提供了更多背景。
此外,zlib源代码分发在contrib / puff / puff.c中包含一个简化的引用inflater,它可以帮助您准确理解这些位的排列方式(但它不包含deflate,只有膨胀)。 / p>
答案 4 :(得分:1)
易于实施:霍夫曼,如前所述。我相信LZW不再申请专利,但我不确定。这是一个相对简单的算法。不过,LZ77应该可用。最后,Burrows-Wheeler变换允许压缩,但实现起来要困难得多。
答案 5 :(得分:1)
我喜欢Burrows-Wheeler Transform的介绍。
答案 6 :(得分:0)
如果您在互联网浏览器中查看“查看”,则应选择“缩小”或缩小文字。
选择其中一个并......
<强> BAM 强>!
您在同一屏幕上获得了更多文字! Yay压缩!
答案 7 :(得分:0)
Security Now! podcast最近推出了一集突出数据压缩算法。 Steve Gibson对Huffman和Lempel-Ziv压缩技术的基础知识进行了很好的解释。您可以收听音频播客或阅读Episode 205的成绩单。