数据压缩的极限

单位的电子邮件最大只能发5MB的附件,因此在发送文件的时候,经常会使用压缩软件把附件进行压缩分卷,一个大的附件经常会分成十几甚至几十个小文件。在压缩的时候想起了很久以前思考的一个问题:

数据能不能被无限压缩?

在小学六年级电脑课教使用压缩软件的时候,老师说对已经压缩过的文件再压缩是没有效果的。实际生活中直觉告诉我们也是这样的:像程序代码之类的文本文件,压缩率很高,几十MB的文件经过压缩,有时候都不足5MB一封邮件就能发出去;而像JPG、MP3、RMVB这种文件,压缩后和压缩前基本看不出区别。我想,大概是因为JPG、MP3、RMVB都是已经被压缩过的文件格式,而代码文件是没有经过压缩的,所以才导致了两者压缩率的差异。

随着后来上了大学,慢慢的对这个问题有了答案:数据是不能被无限压缩的。

计算机中1个bit有两种状态,0或者1。1个大小为n个bit的文件,包含了2^n种不同的0和1的组合顺序。假如说有一种压缩算法,压缩率可以达到50%。那么压缩后的文件,大小为n/2个bit,只能包含2 ^(n/2)种0和1的组合顺序,是无法将压缩前的2^n种排列表示完整的。

本质上,压缩的原理其实就是用更精简的字符串去描述复杂的字符串。字符串的规律性越强,压缩的效果越好。

“CCCCCCCC”可以用”8C”来表示,一下子就缩短了6个字符。

相应的,内容越是随机没有规律,越是难被压缩,例如随机的字符串”LFSDHFA156″、π、还有上面例子里”CCCCCCCC”压缩后的”8C”。

在英文里,常用的单词都是比较短小的,例如I、you、a、one、two等,而不怎么常用的单词,都是比较长的,例如biotransformation。我们背这些长的单词的时候,往往会把它分解成简单的一些单词的组合”bio”+”transform”+”tion”这样子来背。其实和数据压缩是大同小异的。顺便说下,这种把常用的单词用尽量少的字母来表达的方法,就是信息学中大名鼎鼎的「哈夫曼编码」的基本原理。

说了这么多,其实就是想解释下,数据压缩只不过是把海绵中的水挤压出来,再怎么用力,都无法把海绵都挤的消失。

搬运自我的技术博客:http://www.cc-lab.cn/compression/

时间: 2024-10-12 12:08:41

数据压缩的极限的相关文章

Web---HTTP请求、重定向、转发和数据压缩

HTTP常用的请求方式包括: GET-最为常见,但发送的数据量很小,发送的数据直接包含到url的后面. POST-可以包含大量数据,数据在请求正文中通过表单进行提交. HEAD,PUT,DELETE. 后面三种Tomcat服务器默认都不支持.常用的只有前两种. GET: 发送到服务器的数据出现在URL的后面.最多不能超过1K.如: http://localhost:8080/index.jsp?name=itcast&sex=man&.. POST: 发送到服务器的数据会出现有请求的正文部

数据压缩简要

1. 决定压缩哪些对象 通过sp_estimate_data_compression_savings 评估在ROW和PAGE压缩时分别节省的空间量. 表包含如下数据模式时,会有较好的压缩效果: 数字类型的列和固定长度的字符类型数据,但两者的大多数值都不会用到此类型的所有字节.如INT列的值大多数少于1000. 允许为NULL的列有很多NULL值 列值中有很多一样的值或者相同的前缀. 表包含如下数据模式时,压缩效果较差: 数字类型的列和固定长度的字符类型数据,但是两者的大多数值都会用尽此类型的所有

挑战WORD极限排版之模板与加载项

........................待续 挑战WORD极限排版之模板与加载项,布布扣,bubuko.com

简单易学的机器学习算法——极限学习机(ELM)

极限学习机的概念 ELM是一种新型的快速学习算法,对于单隐层神经网络,ELM可以随机初始化输入权重和偏置并得到相应的输出权重. 对于一个单隐层神经网络,假设有N个任意的样本,其中, .对于一个有个隐层节点的单隐层神经网络可以表示为 其中,为激活函数,为输入权重, 为输出权重,是第个隐层单元的偏置. 单隐层神经网络的学习目标是使得输出的误差最小,可以表示为 即存在,和 ,使得 可以矩阵表述为. 其中,是隐层节点的输出,为输出权重,为期望输出. ,

一道极限题

证明: $$\lim_{n\to+\infty}\cos^{n}\left(\frac{1}{x}\right)dx=0$$ 证明:作变量替换 $u=\frac{1}{x}$, 则有\begin{align*}\int_{1}^{\infty}\left|\frac{\cos^{n}u}{u^{2}}\right| du&=\int_{1}^{\frac{\pi}{2}}\left|\frac{\cos^{n}u}{u^{2}}\right| du+\sum_{k=0}^{\infty}\int

《University Calculus》-chape8-无穷序列和无穷级数-基本极限恒等式

基于基本的极限分析方法(诸多的无穷小以及洛必达法则),我们能够得到推导出一些表面上看不是那么显然的式子,这些极限恒等式往往会在其他的推导过程中用到,其中一个例子就是概率论中的极限定理那部分知识.

【数据压缩】LZW算法原理与源码解析

转载请注明出处:http://blog.csdn.net/luoshixian099/article/details/50331883 <勿在浮沙筑高台> LZW压缩算法原理非常简单,因而被广泛地采用,已经被引入主流图像文件格式中.该算法由Lempel-Ziv-Welch三人发明,这种技术将定长码字分配给变长信源符号序列,它不需要知道被压缩文件的符号出现概率的先验知识,只需要动态地建立和维护一个字典,和其他压缩算法相比既是缺点也是优点. 1. LZW原理 1.1 概念的理解 LZW通过建立一个

iOS图片加载速度极限优化—FastImageCache解析

本文转载至 http://blog.cnbang.net/tech/2578/ FastImageCache是Path团队开发的一个开源库,用于提升图片的加载和渲染速度,让基于图片的列表滑动起来更顺畅,来看看它是怎么做的. 优化点 iOS从磁盘加载一张图片,使用UIImageVIew显示在屏幕上,需要经过以下步骤: 从磁盘拷贝数据到内核缓冲区 从内核缓冲区复制数据到用户空间 生成UIImageView,把图像数据赋值给UIImageView 如果图像数据为未解码的PNG/JPG,解码为位图数据

数据压缩

习题与思考题 1-1 首先,一个基本问题“我们要压缩什么”我们想到的就是要压缩“文件”对于数据压缩我认为就是对原始数据进行数据编码或压缩编码.1-2进行压缩文件有几大用处:1.方便数据流通.2.节省磁盘空间.3.形成压缩包的时候添加解压密码,这样生成的压缩包别人没有密码是无法打开的,可以起到一定的文件保密作用.4.压缩文件本身没有防病毒机制.用压缩包恢复被损坏文件只是一种备份机制.同时靠压缩包防病毒并不可靠,因为压缩包同样能感染病毒.1-6数据压缩技术分为压缩技术和不可逆压缩数据压缩的分类方法很