我有一个文本文件,其中包含仅由两个字符组合而成的长文本。
有什么方法可以将它们压缩到小于 6.25% 的压缩率?
我不想使用任何库或某些函数,但是
我想要一些公式或算法来完成这项工作。
一个想法是我的问题的最佳答案。
P.S :- 实际上我正在尝试自己创建一个,但我对此一无所知。不管是什么,我都拿着笔和笔记本坐着,并试图自己完成。
最佳答案
压缩率直接取决于文件的内容。例如,一个仅包含 0
次 N
次的文件可以使用 log_2(N)
位进行压缩(您只需指定它有多少个零包含)。从技术上讲,压缩率最多等于源的香农熵,因为您可能认为您的文件包含由某个随机源生成的符号。
因此,除非您知道文件的结构并且可以使用一些额外的信息,否则无法保证压缩率低于某个阈值。如果您对结构一无所知,并且您的文件只包含随机的 0 和 1,则无法压缩它(在这种情况下,熵仅为 1)。
参见例如this link了解更多详情。您绝对应该阅读一些介绍性的信息论,否则重新发明轮子可能会非常乏味。
关于c++ - 在这种情况下我的压缩率可以低于 6.25% 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30443311/