CN107026652B - 基于分区的正整数序列压缩方法 - Google Patents
基于分区的正整数序列压缩方法 Download PDFInfo
- Publication number
- CN107026652B CN107026652B CN201710110815.9A CN201710110815A CN107026652B CN 107026652 B CN107026652 B CN 107026652B CN 201710110815 A CN201710110815 A CN 201710110815A CN 107026652 B CN107026652 B CN 107026652B
- Authority
- CN
- China
- Prior art keywords
- sequence
- positive integer
- elias
- gamma
- calculating
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Image Processing (AREA)
- Compression Of Band Width Or Redundancy In Fax (AREA)
Abstract
本发明提供了一种基于分区的正整数序列压缩方法。该方法主要包括:通过正整数序列X构造单调递增正整数序列S;构造所述单调递增正整数序列S的有向无环图G;使用迪杰斯特拉算法计算所述有向无环图G中从源点到汇点的最短路径;根据上述最短路径,得到单调递增正整数序列S的最优划分;计算最优划分中每一个区块的元素个数和每一个区块采用Golomb‑Rice编码时需要的参数b;采用Elias Gamma编码对元素个数进行编码和参数b进行编码,采用Golomb‑Rice编码对每一个区块内所有元素进行编码,根据编码结果得到单调递增正整数序列S的压缩结果。本发明综合了序列分区编码利用正整数序列的局部“聚集”性质与Golomb‑Rice编码的高效性等优点,提高了正整数序列的压缩性能。
Description
技术领域
本发明涉及数据处理技术领域,尤其涉及一种基于分区的正整数序列压缩方法。
背景技术
正整数序列压缩的主要目的是减少正整数序列占用的存储空间、减少使用时磁盘读取次数和加快数据的传输效率。比如:在信息检索中,正整数序列的压缩常用于压缩倒排索引中文档标识符(docID)序列、频率(frequency)序列和位置(position)序列,一方面可以节省倒排索引文件占用的存储空间;另一方面可以减少查询时的磁盘和内存读取次数。
互联网上数据呈现爆炸式增长,由这些数据构造的倒排索引需要的存储空间也越来越大,因此,开发一种对正整数序列进行有效的压缩编码方法是一个亟待解决的问题。
发明内容
本发明的实施例提供了一种基于分区的正整数序列压缩方法,以实现对正整数序列进行有效的压缩编码。
为了实现上述目的,本发明采取了如下技术方案。
一种基于分区的正整数序列压缩方法,包括:
通过正整数序列构造单调递增正整数序列S;
构造所述单调递增正整数序列S的有向无环图G,该有向无环图G的顶点为v0,v1,...,vn-1,vn;
使用迪杰斯特拉算法计算所述有向无环图G的从v0到vn的最短路径π=(v0,vi)(vi,vj)...(vm,vn);
根据所述最短路径π=(v0,vi)(vi,vj)...(vm,vn),得到所述单调递增正整数序列S的最优划分为δ={s1,s2,...,si}{si+1,si+2,...,sj}...{sm+1,sm+2,...,sn},区块{si+1,si+2,...,sj}记作Parti+1,j;
计算区块Parti+1,j的元素个数Counti+1,j和区块Parti+1,j采用Golomb-Rice编码时需要的参数bi+1,j;采用Elias Gamma编码对元素个数Counti+1,j进行编码,计作Elias_Gamma(Counti+1,j);采用Elias Gamma编码对参数bi+1,j进行编码,计作Elias_Gamma(bi+1,j);将所述Elias_Gamma(Counti+1,j)和Elias_Gamma(bi+1,j)拼接在一起,计作info(Parti+1,j);
采用以bi+1,j为参数的Golomb-Rice编码对Parti+1,j的所有元素进行编码,然后拼接在一起计作GRCodei+1,j;
按照最优划分区块Parti+1,j的顺序拼接所述info(Parti+1,j),拼接为info;按照最优划分区块Parti+1,j的顺序拼接GRCodei+1,j,拼接为Golomb-Rice-code;把所述info和所述Golomb-Rice-code拼接在一起,作为所述单调递增正整数序列S的压缩结果。
进一步地,所述的通过正整数序列构造单调递增整数序列,包括:
进一步地,所述的构造所述单调递增正整数序列S的有向无环图G,该有向无环图G的顶点为v0,v1,...,vn-1,vn,包括:
所述有向无环图G的顶点记做v0,v1,...,vn-1,vn,对于任意i和j满足i<j≤n,有向无环图G中存在一条vi到vj的边,记做(vi,vj),序列S的一个划分对应有向无环图G中的一条路径,序列S的最优划分对应有向无环图G的最短路径,有向无环图G中一个边(vi,vj)对应序列S划分的一个区块{si+1,si+2,...,sj},计作Parti+1,j,边(vi,vj)的权重计做w(vi,vj),w(vi,vj)指对Parti+1,j压缩存储后所需要的比特数。
进一步地,边(vi,vj)的权重w(vi,vj)的计算步骤包括:
1:计算序列Ci+1,j={ci+1,ci+2,...,cj}={si+1-si,si+2-si,...,sj-si},假设s0=0;
2:计算区块Parti+1,j的元素个数Counti+1,j=j-i的Elias Gamma编码所需要的比特数w1;
3:对序列Ci+1,j进行差分处理得到序列Di+1,j={ci+1-0,ci+2-ci+1,...,cj-cj-1};
5:利用参数bi+1,j计算序列Di+1,j中的每一个元素的Golomb-Rice编码,并将这些编码按照元素在序列中的顺序连接在一起,得到GRCodei+1,j,GRCodei+1,j的长度为w3;
6:w(vi,vj)=w1+w2+w3。
进一步地,所述的使用迪杰斯特拉算法计算所述有向无环图G的从v0到vn的最短路径π=(v0,vi)(vi,vj)...(vm,vn),包括:
使用迪杰斯特拉算法利用所述有向无环图G中的各个边的权重值计算所述有向无环图G的从v0到vn的最短路径π=(v0,vi)(vi,vj)...(vm,vn)。
进一步地,计算区块Parti+1,j的Elias_Gamma(Counti+1,j),Elias_Gamma(bi+1,j)和GRCodei+1,j的具体步骤如下:
1:Parti+1,j={si+1,si+2,...,sj},计算序列Ci+1,j={ci+1,ci+2,...,cj}={si+1-si,si+2-si,...,sj-si},假设s0=0;
2:计算j-i为该区块的元素个数Counti+1,j,按照Elias Gamma编码规则,得到Elias_Gamma(Counti+1,j);
3:对序列Ci+1,j进行差分处理得到序列Di+1,j={ci+1-0,ci+2-ci+1,...,cj-cj-1};
5:利用参数bi+1,j计算序列Di+1,j中的每一个元素的Golomb-Rice编码,并将这些编码按照元素在序列中的顺序连接在一起,得到GRCodei+1,j。
由上述本发明的实施例提供的技术方案可以看出,本发明实施例综合了序列分区编码利用正整数序列的局部“聚集”性质与Golomb-Rice编码的高效性等优点,提高的正整数序列的压缩性能,对节省数据空间占用、减少使用时磁盘读取次数和加快数据传输效率有很重要的意义。
本发明附加的方面和优点将在下面的描述中部分给出,这些将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下。
图1为本发明实施例提供的一种基于分区的正整数序列压缩方法的流程图;
图2是本发明实施例提供的一种单调递增正整数序列S的有向无环图G的示意图。
具体实施方式
下面详细描述本发明的实施方式,所述实施方式的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施方式是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。除非另外定义,这里使用的所有术语(包括技术术语和科学术语)具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样定义,不会用理想化或过于正式的含义来解释。
为便于对本发明实施例的理解,下面将结合附图以几个具体实施例为例做进一步的解释说明,且各个实施例并不构成对本发明实施例的限定。
本发明实施例提供了一种基于分区的正整数序列压缩方法的流程图如图1所示,该方法包括以下步骤:
输入:正整数序列X={x1,x2,...,xn}其中xi为正整数。
步骤1、根据正整数序列X构造单调递增正整数序列S;
(1)如果此正整数序列X是单调递增正整数序列,S=X;
例如:正整数序列S={1,2,5,3,1,6},则由Z得到S为:
S={x1,x1+x2,x1+x2+x3,x1+x2+x3+x4,x1+x2+x3+x4+x5,x1+x2+x3+x4+x5+x6}={1,3,8,11,12,18}。
步骤2、根据单调递增正整数序列S构造序列S的有向无环图G。假设S={s1,s2,...,sn}。
G的顶点记做v0,v1,...,vn-1,vn,对于任意i和j满足i<j≤n,图G中存在一条vi到vj的边,记做(vi,vj),边(vi,vj)的权重计做w(vi,vj)。序列S的一个划分对应图G中的一条路径,序列S的最优划分对应图G的最短路径。图G中一个边(vi,vj)对应序列S划分的一个区块{si+1,si+2,...,sj},w(vi,vj)指对区块{si+1,si+2,...,sj}(计作Parti+1,j)压缩存储后所需要的比特数。w(vi,vj)具体计算步骤如下:
1、计算序列Ci+1,j={ci+1,ci+2,...,cj}={si+1-si,si+2-si,...,sj-si},假设s0=0;
2、计算j-i(Parti+1,j区块元素个数Counti+1,j)的Elias Gamma编码所需要的比特数w1;
3、对序列Ci+1,j进行差分处理得到序列Di+1,j={ci+1-0,ci+2-ci+1,...,cj-cj-1};
4、计算序列Di+1,j的采用Golomb-Rice编码时需要的参数bi+1,j, 计算参数bi+1,j采用Elias-Gamma编码所需要的比特数w2;
5、利用4中得到的参数bi+1,j计算序列Di+1,j中的每一个元素的Golomb-Rice编码,并将这些编码按照元素在序列中的顺序连接在一起,得到GRCodei+1,j,GRCodei+1,j的长度为w3。
6、w(vi,vj)=w1+w2+w3。
如:单调递增正整数序列S={s1,s2,s3,s4,s5,s6}={1,3,9,1012,1015,1030}对应的有向无环图G的点集合{v0,v1,v2,v3,v4,v5,v6},如图2所示,以边(v0,v3)和边(v3,v6)为例说明图2中各边权重的计算过程。
图2中边(v0,v3)的权重w(v0,v3)计算过程:
边(v0,v3)对应序列S划分的区块{s1,s2,s3}
1、序列C1,3={c1,c2,c3}={s1-s0,s2-s0,s3-s0}={1,3,9};
2、区块元素个数为Count1,3=3,使用Elias-Gamma编码对3进行编码的结果为011,空间占用bits数为w1=3;
3、对序列C1,3={1,3,9}进行差分处理得到序列D1,3={c1-0,c2-c1,c3-c2}={1,2,6};
4、对序列D1,3={1,2,6}计算参数使用Elias-Gamma编码对b1,3=1进行编码的结果为1,空间占用bits数为w2=1;
5、使用Golomb-Rice编码对D1,3={1,2,6}进行编码的结果为1101000010,
利用4中得到的参数b1,3=1计算序列D1,3中的每一个元素的Golomb-Rice编码,D1,3[0]=1,其Golomb-Rice编码为Golomb-Rice(D1,3[0])=11
D1,3[1]=2,其Golomb-Rice编码为Golomb-Rice(D1,3[1])=010
D1,3[2]=6,其Golomb-Rice编码为Golomb-Rice(D1,3[2])=00010
Golomb-Rice(D1,3[0]),Golomb-Rice(D1,3[1]),Golomb-Rice(D1,3[2])依次连接在一起,得到GRCodei+1,j=1101000010,其长度为10,即空间占用bits数为w3=10;
6、w(v0,v3)=w1+w2+w3=3+1+10=14。
图G中边(v3,v6)的权重w(v3,v6)的计算过程:
边(v3,v6)对应序列S划分的区块{s4,s5,s6}。
1、计算序列C4,6={c4,c5,c6}={s4-s3,s5-s3,s6-s3}={1003,1006,1021};
2、区块元素个数为Count4,6=3,使用Elias-Gamma编码对3进行编码的结果为011,空间占用bits数为w1=3;
3、对序列C4,6={1003,1006,1021}进行差分处理得到序列D4,6={c4-0,c5-c4,c6-c5}={1003,3,15};
5、使用Golomb-Rice编码对D4,6={1003,3,15}进行编码为000111101011100000011100001111,空间占用bits数为w3=30;
利用4中得到的参数b4,6=8计算序列D4,6中的每一个元素的Golomb-Rice编码,D4,6[0]=1003,其Golomb-Rice编码为Golomb-Rice(D4,6[0])=000111101011
D4,6[1]=3,其Golomb-Rice编码为Golomb-Rice(D4,6[1])=100000011
D4,6[2]=15,其Golomb-Rice编码为Golomb-Rice(D4,6[2])=100001111
Golomb-Rice(D4,6[0]),Golomb-Rice(D4,6[1]),Golomb-Rice(D4,6[2])依次连接在一起,得到GRCodei+1,j=000111101011100000011100001111,其长度为30,空间占用bits数为w3=30
6、w(v3,v6)=w1+w2+w3=3+7+30=40。
图G中所有的边的权重如表1所示,第i行第j列的数值为w(vi,vj)
表1图G中所有的边的权重
步骤3、使用迪杰斯特拉(Dijkstra)算法利用上述表1中的图G中的各个边的权重值计算图G的从v0到vn的最短路径π=(v0,vi)(vi,vj)...(vm,vn)。
本例中,图G的从v0到v6最短路径为π=(v0,v3)(v3,v6)。
步骤4、根据最短路径π=(v0,vi)(vi,vj)...(vm,vn),得到序列S的最优划分为δ={s1,s2,...,si}{si+1,si+2,...,sj}...{sm+1,sm+2,...,sn},区块{si+1,si+2,...,sj}记作Parti+1,j。
本例中,S的最优划分为δ={s1,s2,s3}{s4,s5,s6},即Part1,3={1,3,9},Part4,6={1012,1015,1030}。
步骤5、计算每一个区块Parti+1,j的元素个数Counti+1,j和区块Parti+1,j采用Golomb-Rice编码时需要的参数bi+1,j;采用Elias Gamma编码对元素个数Counti+1,j进行编码,计作Elias_Gamma(Counti+1,j);采用Elias Gamma编码对参数bi+1,j进行编码,计作Elias_Gamma(bi+1,j);采用以bi+1,j为参数的Golomb-Rice编码对Parti+1,j的所有元素进行编码,然后拼接在一起计作GRCodei+1,j。
计算区块Parti+1,j的Elias_Gamma(Counti+1,j),Elias_Gamma(bi+1,j)和GRCodei+1,j的具体步骤如下:
1、Parti+1,j={si+1,si+2,...,sj},计算序列Ci+1,j={ci+1,ci+2,...,cj}={si+1-si,si+2-si,...,sj-si},假设s0=0;
2、计算j-i为该区块的元素个数Counti+1,j,按照Elias Gamma编码规则,得到Elias_Gamma(Counti+1,j);
3、对序列Ci,j进行差分处理得到序列Di+1,j={ci+1-0,ci+2-ci+1,...,cj-cj-1};
5、利用4中得到的参数bi+1,j计算序列Di+1,j中的每一个元素的Golomb-Rice编码,并将这些编码按照元素在序列中的顺序连接在一起,得到GRCodei+1,j。
本例中:划分δ有2个区块,Part1,3={1,3,9}和Part4,6={1012,1015,1030}
计算区块Part1,3的Elias_Gamma(Count1,3),Elias_Gamma(b1,3)和GRCode1,3的具体步骤如下:
1、根据Part1,3={1,3,9}计算序列C1,3={s1-s0,s2-s0,s3-s0}={1,3,9},假设s0=0;
2、计算j-i=3为该区块的元素个数Count1,3,按照Elias Gamma编码规则,得到Elias_Gamma(Count1,3)=Elias_Gamma(3)=011;
3、对序列C1,3进行差分处理得到序列D1,3={c1-0,c2-c1,c3-c2}={1,2,6};
4、计算序列D1,3的采用Golomb-Rice编码时需要的参数b1,3, 按照Elias Gamma编码规则对b1,3=1进行编码,得到Elias_Gamma(b1,3)=Elias_Gamma(1)=1;
5、利用4中得到的参数b1,3=1计算序列D1,3中的每一个元素的Golomb-Rice编码,D1,3[0]=1,其Golomb-Rice编码为Golomb-Rice(D1,3[0])=11
D1,3[1]=2,其Golomb-Rice编码为Golomb-Rice(D1,3[1])=010
D1,3[2]=6,其Golomb-Rice编码为Golomb-Rice(D1,3[2])=00010
Golomb-Rice(D1,3[0]),Golomb-Rice(D1,3[1]),Golomb-Rice(D1,3[2])依次连接在一起,得到GRCode1,3=1101000010;
计算区块Part4,6的Elias_Gamma(Count4,6)),Elias_Gamma(b4,6)和GRCode4,6的具体步骤如下:
1、根据Part4,6={1012,1015,1030}计算序列C4,6={s4-s3,s5-s3,s6-s3}={c4,c5,c6}={1003,1006,1021},;
2、计算j-i=3为该区块的元素个数Count4,6,按照Elias Gamma编码规则,得到Elias_Gamma(Count4,6)=Elias_Gamma(3)=011;
3、对序列C4,6进行差分处理得到序列D4,6={c4-0,c5-c4,c6-c5}={1003,3,15};
4、计算序列D4,6的采用Golomb-Rice编码时需要的参数b4,6, 按照Elias Gamma编码规则对b4,6=8进行编码,得到Elias_Gamma(b4,6)=Elias_Gamma(8)=0001000;
5、利用4中得到的参数b4,6=8计算序列D4,6中的每一个元素的Golomb-Rice编码,D4,6[0]=1003,其Golomb-Rice编码为Golomb-Rice(D4,6[0])=000111101011
D4,6[1]=3,其Golomb-Rice编码为Golomb-Rice(D4,6[1])=100000011
D4,6[2]=15,其Golomb-Rice编码为Golomb-Rice(D4,6[2])=100001111
Golomb-Rice(D4,6[0]),Golomb-Rice(D4,6[1]),Golomb-Rice(D4,6[2])依次连接在一起,得到
GRCode4,6=Golomb-Rice(D4,6[0])Golomb-Rice(D4,6[1])Golomb-Rice(D4,6[2])=000111101011100000011100001111;
步骤6:把最优划分中的每个区块Parti+1,j的Elias_Gamma(Counti+1,j)和Elias_Gamma(bi+1,j)拼接在一起计为info(Parti+1,j)。
本例中info(Part1,3)=0111,info(Part4,6)=0110001000。
步骤7:按照最优划分区块Parti+1,j的顺序拼接info(Parti+1,j),记为info。
本例中info(Part1,3)=0111,info(Part4,6)=0110001000,
info=info(Part1,3)info(Part4,6)=01110110001000。
步骤8:按照最优划分区块Parti+1,j的顺序拼接GRCodei+1,j,记为Golomb-Rice-code。
本例中GRCode1,3=1101000010,
GRCode4,6=000111101011100000011100001111。
Golomb-Rice-code=GRCode1,3GRCode4,6=1101000010000111101011100000011100001111。
步骤9:将info和Golomb-Rice-code拼接在一起计作result。
result=011101100010001101000010000111101011100000011100001111.
result为最后的单调递增正整数序列S的压缩结果。
上述Unary编码的编码规则如下:对于一个给定的非负整数n,Unary编码将n表示为n个0后面跟着一个1。Unary编码的编码格式如图5。比如n=6,使用Unary编码对n进行编码的结果为:0000001。
Elias-Gamma编码的编码规则如下:对于一个给定的正整数n,将其分解为n=2N+M(其中),n的Elias-Gamma编码由两个部分组成,第一部分是N的Unary编码,第二部分是M的N位二进制编码。比如n=10,10=23+2,使用Elias-Gamma编码对n进行编码的第一部分为:0001,第二部分为:010,n的Elias-Gamma编码结果为:0001010。
Golomb-Rice编码的编码规则如下:对于一个给定的正整数n,用一个参数M=2b()将n分解为n=q*M+r,q用Unary编码表示;r=n-q*M,r用b位二进制编码表示,将q用Unary编码的编码结果和r用b位二进制编码的编码结果连接在一起即为n的Golomb-Rice编码结果。Golomb-Rice编码的编码格式如图4。比如n=130,取参数 M=2b=27=128,则r=n-q*M=130-1*128=2;得到n=130的Golomb-Rice编码为:010000010。
综上所述,本发明实施例综合了序列分区编码利用正整数序列的局部“聚集”性质与Golomb-Rice编码的高效性等优点,提高的正整数序列的压缩性能,对节省数据空间占用、减少使用时磁盘读取次数和加快数据传输效率有很重要的意义。
本发明实施例的方法可以很方便地嵌入到其它需要对正整数序列压缩的系统中,有很广泛的应用前景。
本领域普通技术人员可以理解:附图只是一个实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置及系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
Claims (6)
1.一种基于分区的正整数序列压缩方法,其特征在于,包括:
通过正整数序列X构造单调递增正整数序列S;
构造所述单调递增正整数序列S的有向无环图G,该有向无环图G的顶点为v0,v1,...,vn-1,vn;
使用迪杰斯特拉算法计算所述有向无环图G的从v0到vn的最短路径π=(v0,vi)(vi,vj)...(vm,vn);
根据所述最短路径π=(v0,vi)(vi,vj)...(vm,vn),得到所述单调递增正整数序列S的最优划分为δ={s1,s2,...,si}{si+1,si+2,...,sj}…{sm+1,sm+2,...,sn},区块{si+1,si+2,...,sj}记作Parti+1,j;根据区块Parti+1,j计算序列Ci+1,j,
Ci+1,j={ci+1,ci+2,...,cj}={si+1-si,si+2-si,...,sj-si},假设s0=0;
对序列Ci+1,j进行差分处理得到序列Di+1,j={ci+1-0,ci+2-ci+1,...,cj-cj-1};
计算区块Parti+1,j的元素个数Counti+1,j和序列Di+1,j采用Golomb-Rice编码时需要的参数bi+1,j;采用Elias Gamma编码对元素个数Counti+1,j进行编码,计作Elias_Gamma(Counti+1,j);采用Elias Gamma编码对参数bi+1,j进行编码,计作Elias_Gamma(bi+1,j);将所述Elias_Gamma(Counti+1,j)和Elias_Gamma(bi+1,j)拼接在一起,计作info(Parti+1,j);
采用以bi+1,j为参数的Golomb-Rice编码对Di+1,j的所有元素进行编码,然后拼接在一起计作GRCodei+1,j;
按照最优划分区块Parti+1,j的顺序拼接所述info(Parti+1,j),拼接为info;按照最优划分区块Parti+1,j的顺序拼接所述GRCodei+1,j,拼接为Golomb-Rice-code;把info和Golomb-Rice-code拼接在一起,作为所述单调递增正整数序列S的压缩结果。
3.根据权利要求1所述的方法,其特征在于,所述的构造所述单调递增正整数序列S的有向无环图G,该有向无环图G的顶点为v0,v1,...,vn-1,vn,包括:
所述有向无环图G的顶点记做v0,v1,...,vn-1,vn,对于任意i和j满足i<j≤n,有向无环图G中存在一条vi到vj的边,记做(vi,vj),序列S的一个划分对应有向无环图G中的一条路径,序列S的最优划分对应有向无环图G的最短路径,有向无环图G中一个边(vi,vj)对应序列S划分的一个区块{si+1,si+2,...,sj},计作Parti+1,j,边(vi,vj)的权重计做w(vi,vj),w(vi,vj)指对Parti+1,j压缩存储后所需要的比特数。
4.根据权利要求3所述的方法,其特征在于,边(vi,vj)的权重w(vi,vj)的计算步骤包括:
(1)计算序列Ci+1,j={ci+1,ci+2,...,cj}={si+1-si,si+2-si,...,sj-si},假设s0=0;
(2)计算区块Parti+1,j的元素个数Counti+1,j=j-i的Elias Gamma编码所需要的比特数w1;
(3)对序列Ci+1,j进行差分处理得到序列Di+1,j={ci+1-0,ci+2-ci+1,...,cj-cj-1};
(5)利用参数bi+1,j计算序列Di+1,j中的每一个元素的Golomb-Rice编码,并将这些编码按照元素在序列中的顺序连接在一起,得到GRCodei+1,j,GRCodei+1,j的长度为w3;
(6)w(vi,vj)=w1+w2+w3。
5.根据权利要求4所述的方法,其特征在于,所述的使用迪杰斯特拉算法计算所述有向无环图G中从v0到vn的最短路径π=(v0,vi)(vi,vj)...(vm,vn),包括:
使用迪杰斯特拉算法利用所述有向无环图G中的各个边的权重值计算所述有向无环图G的从v0到vn的最短路径π=(v0,vi)(vi,vj)...(vm,vn)。
6.根据权利要求3或4或5所述的方法,其特征在于,计算区块Parti+1,j的Elias_Gamma(Counti+1,j),Elias_Gamma(bi+1,j)和GRCodei+1,j的具体步骤如下:
(1)Parti+1,j={si+1,si+2,...,sj},计算序列Ci+1,j={ci+1,ci+2,...,cj}={si+1-si,si+2-si,...,sj-si},假设s0=0;
(2)计算j-i为该区块的元素个数Counti+1,j,按照Elias Gamma编码规则,得到Elias_Gamma(Counti+1,j);
(3)对序列Ci+1,j进行差分处理得到序列Di+1,j={ci+1-0,ci+2-Ci+1,...,cj-cj-1};
(5)利用参数bi+1,j计算序列Di+1,j中的每一个元素的Golomb-Rice编码,并将这些编码按照元素在序列中的顺序连接在一起,得到GRCodei+1,j。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710110815.9A CN107026652B (zh) | 2017-02-28 | 2017-02-28 | 基于分区的正整数序列压缩方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710110815.9A CN107026652B (zh) | 2017-02-28 | 2017-02-28 | 基于分区的正整数序列压缩方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107026652A CN107026652A (zh) | 2017-08-08 |
CN107026652B true CN107026652B (zh) | 2020-02-14 |
Family
ID=59525328
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710110815.9A Expired - Fee Related CN107026652B (zh) | 2017-02-28 | 2017-02-28 | 基于分区的正整数序列压缩方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107026652B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117354534B (zh) * | 2023-12-04 | 2024-02-02 | 上海方诚光电科技有限公司 | 一种自适应图像无损压缩方法、设备及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105306063A (zh) * | 2015-10-12 | 2016-02-03 | 浙江大学 | 一种记录型数据存储空间的优化与恢复方法 |
CN106202167A (zh) * | 2016-06-21 | 2016-12-07 | 南开大学 | 一种基于结构概要模型的有向标签图自适应索引构建方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10186236B2 (en) * | 2013-05-23 | 2019-01-22 | Intel Corporation | Universal codec |
-
2017
- 2017-02-28 CN CN201710110815.9A patent/CN107026652B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105306063A (zh) * | 2015-10-12 | 2016-02-03 | 浙江大学 | 一种记录型数据存储空间的优化与恢复方法 |
CN106202167A (zh) * | 2016-06-21 | 2016-12-07 | 南开大学 | 一种基于结构概要模型的有向标签图自适应索引构建方法 |
Non-Patent Citations (2)
Title |
---|
Partition Elias-Fano Indexes;Ottaviano;《37th Annual International ACM Special Interest Group on Information Retrieval Conference on Research and Development in Information Retrieval》;20140611;全文 * |
一种变长编码压缩倒排索引算法;毛福林;《山东大学学报(理学班)》;20141027;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN107026652A (zh) | 2017-08-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102687404B (zh) | 用于数据压缩的数据值出现信息 | |
CN106560010B (zh) | Vlsi高效霍夫曼编码设备和方法 | |
KR101049699B1 (ko) | 데이터의 압축방법 | |
US7864083B2 (en) | Efficient data compression and decompression of numeric sequences | |
JP3276860B2 (ja) | データ圧縮/復元方法 | |
US9998144B2 (en) | Generating a code alphabet of symbols to generate codewords for words used with a program | |
US11722148B2 (en) | Systems and methods of data compression | |
JP2014527735A (ja) | ツリー構造の適応的エントロピー符号化方法 | |
US20130018856A1 (en) | Compression of bitmaps and values | |
CN107026652B (zh) | 基于分区的正整数序列压缩方法 | |
US11736119B2 (en) | Semi-sorting compression with encoding and decoding tables | |
KR102497634B1 (ko) | 문자 빈도 기반 서열 재정렬을 통한 fastq 데이터 압축 방법 및 장치 | |
CN112506876B (zh) | 一种支持sql查询的无损压缩查询方法 | |
KR20110033154A (ko) | 규칙적인 지점의 네트워크에서 벡터를 카운팅하는 방법 | |
US20150143197A1 (en) | Codes for Enhancing the Repeated Use of Flash Memory | |
CN111143641A (zh) | 深度学习模型的训练方法、装置及电子设备 | |
Klein et al. | Boosting the compression of rewriting on flash memory | |
CN115510010A (zh) | 压缩雪花id集合的数据结构、数据压缩方法和查找方法 | |
CN116155299A (zh) | 呼吸流量数据的处理方法及系统、计算机设备 | |
Chen et al. | Lossless Geometry Compression for Steady-State and Time-Varying Irregular Grids. | |
Islam et al. | An Enhanced Short Text Compression Scheme for Smart Devices. | |
CN117421481A (zh) | 人群查找方法、系统、电子设备和计算机可读存储介质 | |
Adjeroh et al. | Analysis of the Burrows-Wheeler Transform | |
WO2016160643A1 (en) | Continuous rounding of differing bit lengths | |
WO2011014182A1 (en) | Non-greedy differential compensation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20200214 Termination date: 20210228 |
|
CF01 | Termination of patent right due to non-payment of annual fee |