龙空技术网

我们日常使用的压缩算法,数学如何帮助我们实现优化?

趣思考数学思维 169

前言:

眼前姐妹们对“精简的压缩算法是什么”可能比较关怀,兄弟们都需要剖析一些“精简的压缩算法是什么”的相关知识。那么小编同时在网络上搜集了一些关于“精简的压缩算法是什么””的相关内容,希望各位老铁们能喜欢,同学们一起来了解一下吧!

对于压缩,我想应该是一个妇孺皆知的名词,日常工作生活中可能经常会使用到压缩软件,比如,压缩文件,压缩音视频等等。当你在手上存储音乐和图片时,可能会见过MP3,JPEG等格式的文件,它们分别是一种音频压缩和图片压缩技术,这类压缩算法并没有保留所有音符和像素,而是通过提取更有效信息的方式来解决空间。

那么,数学是如何帮助我们实现压缩优化的呢?我们举一个简单的例子来看一下。比如,有这么一组数据需要存储。

最简单的方法,把所有数据成对成对的保存下来即可,当数据量比较小的时候,这样存储的确没什么问题,但是,当有1000万组呢?一千万组这样的数据存储其实所占空间也还能接受,但是,当数据量进一步扩大呢?显然,这样的存储方式是对资源的巨大浪费。那么,通过数学的方式,如何实现优化呢?

从图像的结果看,这些数据落在一条直线y=2x上。那么,由此,我们可以选择这样存储,存储这些数据的关系,即y=2x,再加上x轴数据1,2,3......这样就节省了一半的空间。如果,另外一个规律也存在,即x轴上的数据始终都是相差1,那么,可以存储更少的信息,比如,定义一个间隔d=1,第一个数据f=1,那么,经过压缩之后可以大大缩减存储的空间。

这就是压缩算法背后的数学本质,我们用一个极简的数学模型来说明压缩算法的本质。

我们再看一个例子,白昼的时长,我们知道随着四季更迭,白昼的时长是不一样的。如下图所示,横轴表示时间,从最左边的1月1日一直到最右边的12月31日,纵轴表示一年中不同日期白昼的时间。这是简化示意图,只标注了27天的数据。诚然,我们可以选择最简单的方法——把所有数据存储下来。

但是,我们知道这种方式存储会浪费存储空间。所以,我们还是想办法通过数学的方式实现优化。在高中时期,我们学过三角函数,其波形如下图所示,这个波形在工程学中,我们长叫正弦波,而所有的正弦波都可以用4个重要的参数来定义:周期T、振幅a、相位c和基线值b。

用过示波器的朋友可能会非常熟悉,我们经常会使用示波器采集正弦信号。再次,我们不妨a,b,c,T四个参数想象成4个旋钮,于是乎,我们可以通过调节这四个旋钮来拟合我们上面白昼时长与时间的曲线,T等于一年365天,通过调节b让正弦波上下移动,调节c让正弦波左右移动,a调节其幅度。如此,我们就实现了极大压缩数据的功能。

这只是我们抽象出来的一个极其简单模型,事实上这个压缩算法中还要考虑拟合程度,因为,不太可能存在所有的点刚好全部落在我们拟合的正弦波曲线上,以及如何拟合,这里就要涉及到微积分等知识,我们以后有机会可以再写一篇文章介绍。

这里或许有看官会提出疑问,我上面举得两个例子都非常特殊,这些数据有着非常明显的特点——模式化,模式是让数据压缩成为可能的首要条件。只有模式化的数据才能被压缩,而随机数据则不行。幸运的是,人们感兴趣的许多事物,比如歌曲、曲孔和指纹,都是高度结构化和模式化的。

正弦波是表示周期性模式的理想选择,但它们不太适合表现鲜明的局部特征,比如鼻孔边缘。为此,几个不同领域的研究人员提出了一种广义化的正弦波——子波。子波比正弦波更加局部化,如图所示,看起来就像心电监护仪上的信号。

这就是数学的魅力。

#来点儿干货##数学##科普#

标签: #精简的压缩算法是什么