CN104901703A - 一种整数序列快速压缩存储算法 - Google Patents
一种整数序列快速压缩存储算法 Download PDFInfo
- Publication number
- CN104901703A CN104901703A CN201510162747.1A CN201510162747A CN104901703A CN 104901703 A CN104901703 A CN 104901703A CN 201510162747 A CN201510162747 A CN 201510162747A CN 104901703 A CN104901703 A CN 104901703A
- Authority
- CN
- China
- Prior art keywords
- integer
- sequence
- arithmetic progression
- compressed
- integer sequence
- 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.)
- Granted
Links
Landscapes
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种整数序列快速压缩存储算法,包括:将整数序列Tk中的整数元素按从小到大的顺序进行排列;从未被压缩的第一个整数元素开始,查找所有与其组成等差数列的整数元素,分别组成公差不等的等差数列;将包含整数元素最多的等差数列使用非数字字符格式进行压缩存储,具体为:MminMmax*Dq;其中:Mmin表示等差数列中最小的整数元素;Mmax表示等差数列中最大的整数元素;Dq表示等差数列的公差;“”、“*”为任意非数字字符,“”为连接关键字;“*”为差值关键字。本发明方法对整数序列进行压缩,速度快,且压缩后存储量较小,比较适合应用于有限元交互软件设计中向用户实时呈现数据。
Description
技术领域
本发明涉及一种整数序列快速压缩存储算法,属于数据处理技术领域。
背景技术
工程结构有限元计算分析时,使用整数编号来标识结点与单元。在有限元计算分析交互软件设计时,如果需要对结点与单元进行某类操作,往往会将操作的结点或者单元的编号选择出来,而由于大型结构的网格数量较多(一般土木工程结构采用实体单元进行分析时网格结点数量一般会在几万或几十万),选择出来的这些编号如果使用数组单一存储的话数量较多,占用内存较大,而且将这些数据呈现给用户的时候,同质数据多行显示可读性较差,给用户检查数据带来困难。由于上述整数序列存在等差数列的特点,可以通过将连续数字保存成等差数列的方式进行压缩存储可以解决上述问题。但是由于整数编号序列数量较大时,常规算法耗时较大,软件实现时存在明显停滞,用户体验较差。
发明内容
本发明的目的在于克服现有技术中的不足,提供一种整数序列快速压缩存储算法,解决现有技术中数据压缩存储耗时长的技术问题。
为达到解决上述技术问题,本发明所采用的技术方案是:一种整数序列快速压缩存储算法,包括如下步骤:
步骤一:将整数序列Tk中的整数元素Mi按从小到大的顺序进行排列,排序后的整数序列为Sk;
其中:k表示整数序列包含整数的数量,i={1,2,3……k};
步骤二:从排序后的整数序列Sk中的未被压缩的第一个整数元素Mx开始,查找所有与Mx组成等差数列的整数元素,分别组成公差不等的等差数列,其中:x∈i;
步骤三:将包含整数元素最多的等差数列使用非数字字符格式进行存储,具体为:
Mmin&Mmax*Dq;
其中:
Mmin表示等差数列中最小的整数元素;
Mmax表示等差数列中最大的整数元素;
Dq表示等差数列的公差;
符号“&”、“*”为任意非数字字符,“&”为连接关键字;“*”为差值关键字;
步骤四:循环步骤二~步骤三,直至整数序列中所有的整数元素全部被压缩存储。
如果整数序列中某个整数无法与其它整数组成等差数列或只有2个整数可以组成等差数列,则该整数压缩后保持不变。
步骤四种判定所有整数元素全部被压缩的方法是:
将整数序列为Sk中的整数元素Mi定义压缩标识F[i],当F[i]=0代表M i未被压缩,F[i]=1代表M i已被压缩;当集合F={F[1],F[2],F[3],……,F[k]}中已经没有非0元素时,表示Sk中所有整数元素已被压缩。
与现有技术相比,本发明所达到的有益效果是:采用本发明专利的方法对整数序列进行压缩,速度非常快,像几万甚至几十万的有限元编号数据可以控 制在毫秒级完成压缩,而且压缩后存储量较小,比较适合应用于有限元交互软件设计中向用户实时呈现数据,由于压缩存储过程能够在用户几乎感受不到的时间内完成,使得软件与用户的交互更加友好。
附图说明
图1是本发明的流程图。
具体实施方式
下面结合附图对本发明作进一步描述。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本发明的保护范围。
对于整数序列Tk={M1,M2,M3,...Mi,...Mk}应当具有如下特点:
1、整数序列全部由整数组成;
2、整数序列包含的任意两个整数不相等,即当i≠j,Mi≠Mj。
其中,k表示整数序列包含整数的数量。
如图1所示,是本发明的流程图,一种整数序列快速压缩存储算法的具体步骤如下:
步骤一:将整数序列Tk中的整数元素Mi按从小到大的顺序进行排列,排序后的整数序列为Sk;
其中:k表示整数序列包含整数的数量,i={1,2,3……k};
步骤二:从排序后的整数序列Sk中的未被压缩的第一个整数元素Mx开始,查找所有与Mx组成等差数列的整数元素,分别组成公差不等的等差数列,其中:x∈i;
步骤三:将包含整数元素最多的等差数列使用非数字字符格式进行存储,具体为:
Mmin&Mmax*Dq;
其中:
Mmin表示等差数列中最小的整数元素;
Mmax表示等差数列中最大的整数元素;
Dq表示等差数列的公差;
符号“&”、“*”为任意非数字字符;
当等差数列的公差为1时,Mmin&Mmax*Dq可改写为Mmin&Mmax。
例如:以“to”表示为连接关键字,“by”表示差值关键字;整数序列S3={1、3、5}可以表示成“1to5by2”;整数序列S4={1、2、3、4}可以表示成“1to4”。
如果整数序列中某个整数无法与其它整数组成等差数列或只有2个整数可以组成等差数列,则该整数压缩后保持不变。
步骤四:循环步骤二~步骤三,直至整数序列中所有的整数元素全部被压缩存储。判定所有整数元素全部被压缩的方法是:
将整数序列为Sk中的整数元素Mi定义压缩标识F[i],在压缩前,将所有压缩标识置零,F[i]=0代表M i未被压缩,F[i]=1代表M i已被压缩。当集合F={F[1],F[2],F[3],……,F[k]}中已经没有非0元素时,表示Sk中所有整数元素已被压缩。
下面以具体实例说明本发明方法的实施过程:
(1)假定整数序列为Tk=[10 9 5 1 3 13 45 30 21 17 15];
(2)对Tk进行排序,Sk=[1 3 5 9 10 13 15 17 21 30 45];
(3)初始化压缩标识F,F=[0 0 0 0 0 0 0 0 0 0 0];
(4)以第1个元素1为基点,求后序元素Mh与1之间的差值序列,Mh需满 足Mh≤(Mk-Mi)/2与F[h]=0,即小于等于(45‐1)/2=22;那么根据Sk的元素值可以判断,只需要求从第2个元素3至第9个元素21之间的数据:
Dq=[2 4 8 9 12 14 16 20]
(5)判断Sk中以1基点,以Dq为等差值,可能组成“ToBy”的压缩形式的数量,例如,以1为基点,2为等差值,Sk中只有3、5可与1组成“1to5by2”,只有2个元素可与1组成以2为等差值的压缩存储,即E1=2;再以1为基点,Dq中的第2个元素4为等差值,Sk中有5、9、13、17、21可与1组成“1to21by4”,那E2=5;以此类推,可以得到E=[2 5 2 1 1 2 1 1];
(6)显然,E2值最在,即以1为基点,以Dq的第2个元素4为等差值进行压缩后压缩量最大。那么,1压缩后为“1to21by4”,1、5、9、13、17、21各元素已经被压缩,设置对应的标识为1,新的F值:
F=[1 0 1 1 0 1 0 1 1 0 0];
(7)Sk第一个未压缩数字变成3,以3为基点,可以得到:
Dq=[7 12 27 42]
E=[1 1 1 1]
E的最大值为为1,3压缩后仍然为3,新的F值:
F=[1 1 1 1 0 1 0 1 1 0 0]
(8)Sk第一个未压缩数字变成10,以10为基点,可以得到:
Dq=[5 20 35]
E=[1 1 1]
E的最大值为为1,10压缩后仍然为10,新的F值:
F=[1 1 1 1 1 1 0 1 1 0 0]
(9)Sk第一个未压缩数字变成15,以15为基点,可以得到:
Dq=[15 30]
E=[2 1]
E的最大值为为2,15压缩后仍然为15to45by15,新的F值:
F=[1 1 1 1 1 1 1 1 1 1 1]
F中已经没有非0元素,Sk所有元素已经被压缩。
(10)整数序列Sk被压缩后变成[1to21by4 3 10 15to45by15]。
如表1所示,是采用非压缩存储方式和采用本发明提供的压缩存储方式的对比表格,从表1中可以看出:非压缩存储方式在存储10个结点的集中荷载时,必须记录每个结点的编号,共需要记录10个整数,压缩存储后只需要记录“1192”三个整数即可,而且对于大数据量的有限元编号操作,采用压缩后的方式进行管理,存储量的优势会更加明显。本发明方法提出的整数序列快速压缩存储算法,大幅度提高了压缩速度,减少了存储空间的占用。
表1:数据压缩存储的优势对比
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。
Claims (3)
1.一种整数序列快速压缩存储算法,其特征在于,包括如下步骤:
步骤一:将整数序列Tk中的整数元素Mi按从小到大的顺序进行排列,排序后的整数序列为Sk;
其中:k表示整数序列包含整数的数量,i={1,2,3……k};
步骤二:从排序后的整数序列Sk中的未被压缩的第一个整数元素Mx开始,查找所有与Mx组成等差数列的整数元素,分别组成公差不等的等差数列,其中:x∈i;
步骤三:将包含整数元素最多的等差数列使用非数字字符格式进行存储,具体为:
Mmin&Mmax*Dq;
其中:
Mmin表示等差数列中最小的整数元素;
Mmax表示等差数列中最大的整数元素;
Dq表示等差数列的公差;
符号“&”、“*”为任意非数字字符,“&”为连接关键字;“*”为差值关键字;
步骤四:循环步骤二~步骤三,直至整数序列中所有的整数元素全部被压缩存储。
2.根据权利要求1所述的整数序列快速压缩存储算法,其特征在于,如果整数序列中某个整数无法与其它整数组成等差数列或只有2个整数可以组成等差数列,则该整数压缩后保持不变。
3.根据权利要求1所述的整数序列快速压缩存储算法,其特征在于,步骤四种判定所有整数元素全部被压缩的方法是:
将整数序列为Sk中的整数元素Mi定义压缩标识F[i],当F[i]=0代表Mi未被压缩,F[i]=1代表Mi已被压缩;当集合F={F[1],F[2],F[3],……,F[k]}中已经没有非0元素时,表示Sk中所有整数元素已被压缩。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510162747.1A CN104901703B (zh) | 2015-04-08 | 2015-04-08 | 一种整数序列快速压缩存储算法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510162747.1A CN104901703B (zh) | 2015-04-08 | 2015-04-08 | 一种整数序列快速压缩存储算法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104901703A true CN104901703A (zh) | 2015-09-09 |
CN104901703B CN104901703B (zh) | 2018-04-03 |
Family
ID=54034119
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510162747.1A Expired - Fee Related CN104901703B (zh) | 2015-04-08 | 2015-04-08 | 一种整数序列快速压缩存储算法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104901703B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111510153A (zh) * | 2019-01-31 | 2020-08-07 | 阿里巴巴集团控股有限公司 | 数列的压缩、解压缩方法和装置以及电子设备 |
CN112956131A (zh) * | 2018-11-07 | 2021-06-11 | 日本电信电话株式会社 | 编码装置、解码装置、代码串的数据结构、编码方法、解码方法、编码程序、解码程序 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1359546A1 (en) * | 2002-05-02 | 2003-11-05 | Microsoft Corporation | 2-D transforms for image and video coding |
CN101241508A (zh) * | 2007-08-01 | 2008-08-13 | 金立 | 结构化数据序列的压缩方法 |
CN101807925A (zh) * | 2010-02-08 | 2010-08-18 | 南京朗坤软件有限公司 | 一种基于数值排序线性拟合的历史数据压缩方法 |
CN102081659A (zh) * | 2011-01-14 | 2011-06-01 | 南开大学 | 倒排索引压缩的预处理方法 |
-
2015
- 2015-04-08 CN CN201510162747.1A patent/CN104901703B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1359546A1 (en) * | 2002-05-02 | 2003-11-05 | Microsoft Corporation | 2-D transforms for image and video coding |
CN101241508A (zh) * | 2007-08-01 | 2008-08-13 | 金立 | 结构化数据序列的压缩方法 |
CN101807925A (zh) * | 2010-02-08 | 2010-08-18 | 南京朗坤软件有限公司 | 一种基于数值排序线性拟合的历史数据压缩方法 |
CN102081659A (zh) * | 2011-01-14 | 2011-06-01 | 南开大学 | 倒排索引压缩的预处理方法 |
Non-Patent Citations (1)
Title |
---|
互动百科: ""逐差压缩法"", 《互动百科》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112956131A (zh) * | 2018-11-07 | 2021-06-11 | 日本电信电话株式会社 | 编码装置、解码装置、代码串的数据结构、编码方法、解码方法、编码程序、解码程序 |
CN112956131B (zh) * | 2018-11-07 | 2024-03-08 | 日本电信电话株式会社 | 编码装置、解码装置、编码方法、解码方法、计算机可读取的记录介质 |
CN111510153A (zh) * | 2019-01-31 | 2020-08-07 | 阿里巴巴集团控股有限公司 | 数列的压缩、解压缩方法和装置以及电子设备 |
CN111510153B (zh) * | 2019-01-31 | 2023-05-09 | 阿里巴巴集团控股有限公司 | 数列的压缩、解压缩方法和装置以及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN104901703B (zh) | 2018-04-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11429852B2 (en) | Convolution acceleration and computing processing method and apparatus, electronic device, and storage medium | |
CN109299733A (zh) | 利用紧凑型深度卷积神经网络进行图像识别的方法 | |
CN105260464B (zh) | 数据存储结构的转换方法及装置 | |
CN104583972A (zh) | 基于符号空间的模式压缩的多层系统 | |
CN103631873B (zh) | 一种数据压缩方法及存储系统 | |
CN112667860A (zh) | 一种子图匹配方法、装置、设备及存储介质 | |
CN112637598B (zh) | 视频的压缩与解压缩方法、装置、设备及可读存储介质 | |
CN103401562B (zh) | 一种无损json数据压缩方法 | |
CN105589908A (zh) | 用于事务集合的关联规则计算方法 | |
CN108334412A (zh) | 一种显示图像的方法和装置 | |
CN106227881A (zh) | 一种信息处理方法及服务器 | |
CN107665187A (zh) | 一种判断移动设备应用界面是否发生变化的方法和装置 | |
CN104901703A (zh) | 一种整数序列快速压缩存储算法 | |
CN107067434A (zh) | 基于Hadoop的集成电路短路关键面积提取方法 | |
CN104778252A (zh) | 索引的存储方法和装置 | |
CN104636432B (zh) | 一种日志文件压缩和解压的方法及装置 | |
CN104408178A (zh) | Web控件加载装置和方法 | |
CN103761298A (zh) | 一种基于分布式架构的实体匹配方法 | |
CN109388615A (zh) | 基于Spark的任务处理方法及系统 | |
CN109684517A (zh) | 一种历史数据存储方法、读写方法、存储装置和设备 | |
CN103210590B (zh) | 压缩方法及设备 | |
CN109947702A (zh) | 索引构建方法及装置、电子设备 | |
CN104778309A (zh) | 飞机结构强度校核方法和装置 | |
CN107391044A (zh) | 一种云硬盘的创建方法及创建装置 | |
WO2019153546A1 (zh) | 万级维度数据生成方法、装置、设备以及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into 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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20180403 Termination date: 20210408 |