主要内容
课程: 计算机和互联网 > 单元 1
课程 7: 数据压缩文本压缩
计算机如何压缩文本? 这里有一个提示:当人们发短信又不想打很多字的时候,很多人每天都在压缩文本。
比方说: 如果我想要说 "Great, see you later!", 我可以写 "Gr8, see u l8r!"
我通过寻找重复序列缩短了文本,并以较短序列("8"和"u") 取代这些序列。
压缩算法
计算机可以通过找到重复序列,并以较短的代表取代它们,从而以相似的方法压缩文本。它们不必和人一样纠结最终发音相同的结果,所以它们甚至可以进一步压缩。
让我们用这句莎士比亚的台词来作为练习:
to be or not to be, that is the question
最明显的重复序列是“to”和“be”,因此,计算机可以用别的符号代表原文,例如:
⊜ ⬗ or not ⊜ ⬗, that is the question
任何重复序列都可以被取代,即使它不是一个完整的单词,因此计算机还能替换“th”:
⊜ ⬗ or not ⊜ ⬗, ⟡at is ⟡e question
计算机也需要储存它所制作的符号替换表,以便能够重建原件。
替换版 | 原版 |
---|---|
⊜ | to |
⬗ | be |
⟡ | th |
压缩量
如你所见,一些文本可以被压缩得很厉害——更多重复意味着更多的压缩。
一些文本根本不能压缩,如字母:
ABCDEFGHIJKLMNOPQRSTUVWXYZ
事实上,字母的“压缩”版本可能需要比原版本多字节,视算法在文件中提供额外元数据而定。
🤔 你能想到其他不会因压缩而变小的文本的例子吗?会被压缩的 非常 好的例子呢?
我们对于压缩不能完全确保得到更小的文件这件事是可以接受的,因为总的来说,大多数文件的确包含重复的序列而且的确从压缩中受益。
\128269; 如果您想了解更多关于这种压缩类型, 您可以研究 Lempel-Ziv-Welch Best。