在这种情况下,我可以将压缩比小于6.25%吗?

时间:2015-05-25 17:31:23

标签: c++ compression

我有一个文本文件,其长文本仅由两个字符组合而成。

有什么方法可以压缩它们,压缩比小于6.25%。

我不想使用任何库或某些功能但是 我希望有一些公式或算法来完成这项工作 一个想法是我的问题的最佳答案。

P.S: - 实际上我正试图自己创造一个,但我对此事一无所知。不管它是什么,我坐着一支笔+笔记本,试图独自完成。

2 个答案:

答案 0 :(得分:4)

压缩率直接取决于文件的内容。例如,可以使用0位压缩仅包含N s log_2(N)次的文件(您只需指定它包含多少个零)。从技术上讲,压缩比最多等于源的Shannon熵,因为您可能认为您的文件包含由某个随机源生成的符号。

因此,除非您知道文件的结构并且可以使用其他一些信息,否则无法保证压缩率低于某个阈值。如果您不知道结构,并且您的文件只包含随机0和1,那么就无法压缩它(在这种情况下,熵只是1)。

参见例如this link了解更多细节。你一定要阅读一些介绍性的信息理论,否则重新发明轮子可能会非常繁琐。

答案 1 :(得分:1)

除非您的数据中存在其他冗余,否则不会。您可以做的最好是12.5%,即1/8,因为您可以将每个字符编码为一位。