wsc810 发表于 2013-11-30 10:30:03

一种新的数据压缩算法,多项式数据压缩

本帖最后由 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]
查看完整版本: 一种新的数据压缩算法,多项式数据压缩