数据量急剧增长时,对于存储/传输数据的需求有两方面的解决方案:提高数据的存储/传输能力,或是对数据进行处理,使得数据本身更容易在现在的条件下完成存储/传输的任务.虽然前者的水平也在不断提高,但是跟不上数据的产生速度,这就需要我们对数据进行一些处理,使其能够更方便地传递.
两个个早期的例子:Morsecode. Morse注意到某些字符的出现频率比其它字符更高,为了减少发送信息需要的平均时间,他为出现频率较高的字符分配了较短的序列。达到了数据“压缩”的目的.而Braille则利用了单词出现的频率进行压缩,用3行2列的点阵来表示文本.只对应字母时多出了
26−26
2
6
−
26
种组合,于是在二级Braille代码中, 用剩余的
38
38
种组合来表示一些高频词汇,比如
and
a
n
d
和
for
f
o
r
.将其中的一个组合记做特殊符号,表示这个符号后面的是一个单词(而非字符).这些改进使得文本占用的空间平均缩小了大约20%.
上面的例子只是利用了统计结构对数据进行压缩,但是我们可以试一试其它的思路:我们在说话时,喉咙的物理构造决定了声音包含的信息,那在信息储存/传输过程中可以不直接处理语音本身,而是处理喉咙的物理结构,再利用很少的数据便可以完成目标,这样也实现了压缩.这种方法的一个早期版本便是
vocoder
v
o
c
o
d
e
r
,由贝尔实验室的Homer Dudley于1936年设计出来.
另外,我们可以利用其它方面的因素,例如在传输语音和图像时,数据接收方(人)的感知能力是有限的,这时可以利用人类的知觉局限,通过丢弃一些“无用的”信息实现数据压缩.