一种新的数据压缩算法,多项式数据压缩
本帖最后由 wsc810 于 2013-11-30 11:46 编辑设$N$是要压缩的数据,计算$N$以系数$0,1$的$X$进制表示,即$N=a_nX^n+a_{n-1}X^{n-1}+...+a_1X^1+a_0$ ,$a_n,a_{n-1},...,a_1,a_0$ 等于$0$或$1$
压缩算法设计思路
给定$N$,解由$0,1$系数构成的多项式方程,其系数$0,1$向量由$2^n-1,2^n-2,...,2,1$依次递减,若找到$N$的一个正整数根,则找到$N$的一种以$X$为基的二进制表示
解压缩很简单
直接求多项式的值即可
数据的存储与表示
在一个存储块中,可以设定前$n$个字节存储$X$,后$n$个字节存储$0,1$二进制数$b$.
整体分析
由于在一串二进制数据中,连续的$N$个数据组中,不可能遍历出现$0$到$2^n-1$所有的数据状态,多出现较大的数,小的数一般不出现(除非二进制数的前面有一长串0),所以存在数据冗余,即可以被压缩。
下面做一个假定,设用一个字节来表示$X$,两个字节来表示$b$ ,则最大能表示的N值
$N=255^15+255^14+...+255+1=1258372359508183022113289901252806656$,$log=14.9901$普通二进制需要15字节来存储,而压缩后仅需3个字节
存在的问题
由于所有的存在状态为255*255=65025(不知道是不是这样算)所以可能导致某些数无法表示,进而不能被存储,不知道允许$X$取负值,能不能解决问题。
页:
[1]