无损压缩算法是否在位级别起作用?

时间:2019-03-20 03:27:45

标签: c algorithm compression lossless-compression

例如,假设我有一个文件,并且我想在C中创建一个压缩算法,那么如果我的算法获得了该文件的位表示形式,请对其进行处理并编写一个新文件,只有我的算法才能知道解压缩?

1 个答案:

答案 0 :(得分:0)

简单文件压缩背后的直觉

考虑映射 M:K-> V

这种映射的要求是,任何输入字符串 k 都可以专门映射到一些较短的字符串 M(k)= v

示例

您的输入文件是

aaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbcccccaaaaaaaaaa

压缩算法应该找到一些映射 M ,它们可以提供很好的压缩效果,并且不需要花费太多时间。 在这种情况下,直观上,您可以使用:

M(aaaaaaaaaa) = a
M(bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb) = b
M(ccccc) = c

压缩后的文件变成

abca

您可以相反地解压缩文件。

(请注意,映射需要以某种方式存储在压缩文件的旁边/内部,以便以后知道如何解压缩)

现在您可能已经猜到,这是在字符串是单个位的位级别上最好的方法,但是它也可以在更高级别上工作,例如用于文本。