CN115361026A - 一种lz系列压缩算法自适应优化方法 - Google Patents
一种lz系列压缩算法自适应优化方法 Download PDFInfo
- Publication number
- CN115361026A CN115361026A CN202211021912.8A CN202211021912A CN115361026A CN 115361026 A CN115361026 A CN 115361026A CN 202211021912 A CN202211021912 A CN 202211021912A CN 115361026 A CN115361026 A CN 115361026A
- Authority
- CN
- China
- Prior art keywords
- statement
- dictionary
- sentence
- length
- data
- 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.)
- Pending
Links
- 238000007906 compression Methods 0.000 title claims abstract description 96
- 230000006835 compression Effects 0.000 title claims abstract description 88
- 238000000034 method Methods 0.000 title claims description 59
- 230000003044 adaptive effect Effects 0.000 title claims description 15
- 238000005457 optimization Methods 0.000 title claims description 15
- 238000005192 partition Methods 0.000 claims abstract description 89
- 238000006467 substitution reaction Methods 0.000 claims description 3
- 238000013144 data compression Methods 0.000 abstract description 6
- 238000012216 screening Methods 0.000 abstract description 2
- 230000006870 function Effects 0.000 description 10
- 230000000694 effects Effects 0.000 description 8
- 230000008569 process Effects 0.000 description 8
- PCTMTFRHKVHKIS-BMFZQQSSSA-N (1s,3r,4e,6e,8e,10e,12e,14e,16e,18s,19r,20r,21s,25r,27r,30r,31r,33s,35r,37s,38r)-3-[(2r,3s,4s,5s,6r)-4-amino-3,5-dihydroxy-6-methyloxan-2-yl]oxy-19,25,27,30,31,33,35,37-octahydroxy-18,20,21-trimethyl-23-oxo-22,39-dioxabicyclo[33.3.1]nonatriaconta-4,6,8,10 Chemical compound C1C=C2C[C@@H](OS(O)(=O)=O)CC[C@]2(C)[C@@H]2[C@@H]1[C@@H]1CC[C@H]([C@H](C)CCCC(C)C)[C@@]1(C)CC2.O[C@H]1[C@@H](N)[C@H](O)[C@@H](C)O[C@H]1O[C@H]1/C=C/C=C/C=C/C=C/C=C/C=C/C=C/[C@H](C)[C@@H](O)[C@@H](C)[C@H](C)OC(=O)C[C@H](O)C[C@H](O)CC[C@@H](O)[C@H](O)C[C@H](O)C[C@](O)(C[C@H](O)[C@H]2C(O)=O)O[C@H]2C1 PCTMTFRHKVHKIS-BMFZQQSSSA-N 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- 238000000638 solvent extraction Methods 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- OKTJSMMVPCPJKN-UHFFFAOYSA-N Carbon Chemical compound [C] OKTJSMMVPCPJKN-UHFFFAOYSA-N 0.000 description 1
- 229910052799 carbon Inorganic materials 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000013139 quantization Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
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/3084—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
- H03M7/3086—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method employing a sliding window, e.g. LZ77
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明涉及数据压缩技术领域,通过获取待压缩数据,利用LZ77滑动窗口的长度将待压缩数据划分为多个分区,利用LZ77滑窗字典对初始分区中的语句进行压缩,给压缩语句建立标签值并每次压缩时将该语句的标签值增加一,将压缩完成的初始分区中具有相同数据的语句中长度短的语句进行排除,长度长的语句进行保留,并更新保留语句的标签,筛选出符合标准的语句得到辅助记忆字典,利用LZ77滑窗字典对其他每个分区进行并行辅助压缩,每压缩一个语句,对辅助记忆字典进行更新,并获取辅助记忆字典中每个语句的衰减值,并将衰减值小于衰减阈值的语句进行删除,方法实现了辅助记忆字典的自适应更新,提高了压缩效率。
Description
技术领域
本申请涉及数据压缩技术领域,具体涉及一种LZ系列压缩算法自适应优化方法。
背景技术
如今,科技飞速发展,互联网越来越普及,人们获取信息的方式也多种多样,无论是从互联网、移动设备、终端设备上等途径获取的信息,都需要进行数据的传输和存储,为提高数据的传输性能,往往需要在数据传输前进行数据压缩,通过有损/无损压缩算法来减少待传输的数据总量。
LZ算法是最常用的无损压缩算法,LZ算法是以一个滑动窗口建立字典,包括待压缩数据区和缓冲数据区,将缓冲数据区中的数据在缓冲数据区中检索匹配,进行匹配压缩。
但是LZ算法的LZ滑动窗口字典,在压缩数据的过程中常常因为很多重复的数据之间的间隔距离超过了一个滑动窗口长度,因而导致重复的数据无法匹配压缩,造成压缩效率降低,常规的解决办法是为LZ滑动窗口字典的增加固定长度值,让滑动窗口建立的字典可以包含更多的数据量,但是,增加长度,会增加字典的检索时长,导致压缩效率不高。
发明内容
本发明提供一种LZ系列压缩算法自适应优化方法,解决LZ算法压缩效率不高的问题,采用如下技术方案:
获取待压缩的数据;
首先获取一个LZ77滑窗字典长度的待压缩数据,然后每次增加一个LZ77滑窗字典长度,并根据每个长度内每个数据出现的概率得到该长度内的数据重复性,若增加后的长度内的数据重复性小于增加前的长度内的数据重复性时,停止增加长度,将增加前的长度内的待压缩数据作为初始分区;
使用LZ77滑窗字典对初始分区中的数据进行压缩,将每次压缩的数据作为一个语句,当每个语句首次被压缩时,对该语句建立一个标签值并进行初始化,当压缩与该语句相同的语句时将该语句的标签值增加一,直至初始分区压缩完成;
获取初始分区中具有相同数据的语句,将具有相同数据的语句中长度最长的语句保留,其余的语句排除,并且将排除掉的语句的标签值与保留的语句的标签值之和,作为保留的语句的标签值;
根据初始分区中每个保留语句的标签值和长度判断该保留语句是否符合辅助记忆字典的录入标准,并利用符合录入标准的保留语句初始化辅助记忆字典;
获取除了初始分区之外的其他每个分区,将其他每个分区中的数据在辅助记忆字典和LZ77滑窗字典中进行检索匹配;
若只有LZ77滑窗字典中可以匹配到,则使用LZ77滑窗字典进行压缩,若只有辅助记忆字典中可以匹配到,则以辅助记忆字典进行压缩,若辅助记忆字典和LZ77滑窗字典中都可以匹配到,则以LZ77滑窗字典进行压缩;
无论LZ77滑窗字典还是辅助记忆字典进行压缩,每压缩一个语句,在辅助记忆字典中检索与该语句具有相同数据的语句,并将该语句和具有相同数据的语句中,长度最长的语句替换掉长度最短的语句,进行自适应更新。
所述进行自适应更新的方法为:
无论是利用LZ77滑动窗口压缩还是利用辅助记忆字典进行压缩一个语句时;
在辅助记忆字典中检索该语句,若能检索到,则将该语句的标签值加一;
若检索不到该语句,则检索与该语句具有相同数据的语句;
若检索不到与该语句具有相同数据的语句,则将为该语句建立标签值并初始化;
若检索到与该语句具有相同数据的语句,则对比该语句的长度和与该语句具有相同数据的语句的长度;
若该语句的长度大于具有相同数据的语句的长度,则将具有相同数据的语句替换为该语句,该语句继承具有相同数据的语句的标签值并加一;
若该语句的长度小于与该语句具有相同数据的语句的长度,则不进行替换,仅对具有相同数据的语句标签值加一。
所述进行自适应更新还包括,当辅助记忆字典内存储的语句长度大于等于LZ77滑动窗口时,则根据每个语句的长度、标签值、上次压缩时间与当前时刻之间的时间间隔,计算出辅助记忆字典内存储的每个语句的衰减值,并将衰减值小于衰减值阈值的语句进行删除。
所述根据每个语句的长度、标签值、上次压缩时间与当前时刻之间的时间间隔,计算出辅助记忆字典内存储的每个语句的衰减值的方法为:
式中,Gi为第i个语句的衰减值,e为自然常数,Ei为辅助记忆字典中第i个语句的上次压缩时间与当前时刻之间的时间间隔,mi为第i个语句的长度,Fi为第i个语句的标签值。
所述衰减阈值的获取方法为:
获取辅助记忆字典存储的语句中所有语句的最大衰减值和最小衰减值;
获取最大衰减值和最大衰减值的差值,将差值除以调节参数得到的值为衰减阈值,调节参数自行设定。
所述具有相同数据的语句是指若两个语句中,一个语句包含的数据可以将另一个语句覆盖掉,则该两个语句为具有相同数据的语句。
所述获取除了初始分区之外的其他每个分区的方法与获取初始分区的方法一致。
所述根据初始分区中每个保留语句的标签值和长度判断该保留语句是否符合辅助记忆字典的录入标准的方法为:
获取初始分区每个保留语句的长度和该语句的标签值的乘积C1;
获取初始分区每个保留语句的长度和该语句标签值均值的乘积C2;
若C1减去C2的差值大于0,则该保留语句符合辅助记忆字典的录入标准;
若C1减去C2的差值大于0小于等于0,则该保留语句不符合辅助记忆字典的录入标准。
本发明的有益效果是:
(1)利用LZ77滑窗字典的长度将待压缩数据划分为多个分区,用LZ77滑窗字典对初始分区中的语句进行压缩,并对该语句设置标签值,并对具有相同数据的语句进行排除和保留;方法既保证了构建辅助记忆字典的语句的准确性,又减少了构建辅助记忆的数据量;
(2)根据每个语句的标签值和长度判断该语句是否符合辅助记忆字典的录入标准,根据符合辅助记忆字典的录入标准的语句得到辅助记忆字典;该方法筛选出高频且长度长的语句构建辅助记忆字典,该方法并未增加LZ77字典的滑动窗口长度,而是通过建立辅助记忆字典,提取出长度长的语句,即提高了辅助记忆字典语句的压缩价值;
(3)利用LZ77滑窗字典对其他每个分区进行并行辅助压缩,每压缩一个语句,检索辅助记忆字典中是否存在该语句的相关语句,并根据检索结果对辅助记忆字典进行更新;该方法对压缩过程中辅助记忆字典中高频语句的自适应替换和更新,提高了辅助记忆字典的自适应性,提高了压缩效率;
(4)当辅助记忆字典存储的语句总长度大于等于LZ77滑窗字典长度时,根据每个语句的长度、标签值、最后一次压缩时与当前时刻之间间隔的语句长度得到每个语句的衰减值,并将衰减值小于衰减阈值的语句进行删除;该方法利用衰减函数对辅助记忆字典的语句进行删除,减少了辅助记忆字典臃肿,是对压缩方法的进一步优化,进一步提高了压缩效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明的一种LZ系列压缩算法自适应优化方法流程示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的一种LZ系列压缩算法自适应优化方法的实施例,如图1所示,包括:
步骤一:获取待压缩的数据;首先获取一个LZ77滑窗字典长度的待压缩数据,然后每次增加一个LZ77滑窗字典长度,并根据每个长度内每个数据出现的概率得到该长度内的数据重复性,若增加后的长度内的数据重复性小于增加前的长度内的数据重复性时,停止增加长度,将增加前的长度内的待压缩数据作为初始分区;
该步骤的目的是,利用待压缩数据之间的重复性,并且基于LZ77窗口字典长度的基础上对待压缩数据进行区间划分。
其中,本发明中获取的待压缩数据为字符数据。
本发明所针对的情景为:使用LZ77算法在进行数据压缩的时候,以一个滑动的窗口建立作为自动字典对数据进行压缩,但是在压缩的过程中常常因为很多重复的信息因为间隔距离超过了一个滑动窗口而导致无法压缩,导致压缩效率降低,因此本发明通过利用LZ77算法动态窗口字典压缩信息的基础上建立辅助记忆字典进行并行辅助压缩来实现一种不用增加LZ77算法中动态窗口字典长度且能高效压缩的目的。
其中,初始分区的获取方法为:
首先获取一个LZ77滑窗字典长度的待压缩数据,然后每次增加一个LZ77滑窗字典长度,并根据每个长度内每个数据出现的概率得到该长度内的数据重复性,若增加后的长度内的数据重复性小于增加前的长度内的数据重复性时,停止增加长度,将增加前的长度内的待压缩数据作为初始分区。
具体方法为:
(1)首先,从待压缩数据第一个数据开始,获取1个LZ77滑窗字典的长度范围内的待压缩数据,并计算该长度内的数据重复性:
公式中,表示将一个LZ77滑窗字典的长度范围内的待压缩数据的数据作为第一个分区区(初始分区)时,该分区内数据的重复性,下标1表示1个LZ77滑窗字典的长度范围内的待压缩数据,上标1表示初始分区,e为自然常数,a为一个LZ77滑窗字典的长度范围内的第a个数据,表示一个独立的(不重复)数据,l表示1个LZ77滑窗字典的长度,即该分区的数据总个数,Pa表示每个独立的数据在该区间中出现的概率,Pa为数据a在该分区中出现的概率,log2Pa为对数函数;
该公式的目的:通过每个独立的数据出现的概率来量化该分区下的数据的重复率,虽然LZ77压缩过程中的信息压缩并不完全针对于数据信息进行压缩,但是长语句的重复出现是基于数据重复的基础之上的,例如想要语句AB重复,首先的基础条件是有数据A的重复,若整个待压缩数据中A有且仅有出现了一次,那么以A开头的任何长度的语句也不可能出现,所以通过数据的概率进行长语句的预测,Pa重复的越大,值越大,语句无论长短重复的概率也就越大。
(2)增加一个LZ77滑窗字典长度,此时获取2个LZ77滑窗字典的长度范围内的待压缩数据,并计算该长度内的数据重复性,方法与(1)相同:
(4)不断增加长度范围,并计算出每个长度内的数据重复性,若增加后的长度内的数据重复性小于增加前的长度内的数据重复性时,停止增加长度,将增加前的长度内的待压缩数据作为初始分区,若增加到直第n+1个LZ77滑窗字典长度时,有第n+1个LZ77滑窗字典长度范围内的数据重复性小于等于第n个LZ77滑窗字典长度范围内的数据重复性则说明前n个滑窗字典长度范围内的待压缩数据的重复率最高,故选择前n个LZ77滑窗字典长度范围内的待压缩数据作为初始数据区;
(5)获取除了初始分区之外的其他每个分区的方法与获取初始分区的方法一致:即对除了初始分区之外的带压缩数据,通过(1)至(4)的方法,得到每个分区。
至此,获得所有划分后的数据分区,且所有数据分区内的任何长度的语句重复出现的概率最大。
本步骤利用待压缩信息的特征(重复性)以及LZ77算法中的滑动窗口的长度来对待压缩的信息进行分区,而后通过第一个分区的压缩效果建立初始辅助记忆字典。
需要说明的是,本发明所述的辅助记忆字典的建立和更新过程是基于LZ77算法滑窗字典对于信息压缩的基础上利用高频压缩信息完成的,并且记忆辅助字典是需要自适应更新的,所以需要本步骤对整体待压缩的数据进行量化分区,以达到压缩效率最高化和辅助记忆字典利用资源最小化的目的。
步骤二:使用LZ77滑窗字典对初始分区中的数据进行压缩,将每次压缩的数据作为一个语句,当每个语句首次被压缩时,对该语句建立一个标签值并进行初始化,当压缩与该语句相同的语句时将该语句的标签值增加一,直至初始分区压缩完成;获取初始分区中具有相同数据的语句,将具有相同数据的语句中长度最长的语句保留,其余的语句排除,并且将排除掉的语句的标签值与保留的语句的标签值之和,作为保留的语句的标签值;
该步骤的目的是,利用LZ77滑窗字典对初始分区中的语句进行压缩并且对每个语句建立标签值,统计该语句的压缩次数。
其中,具有相同数据的语句是指若两个语句中,一个语句包含的数据可以将另一个语句覆盖掉,则该两个语句为具有相同数据的语句,比如ABC和BC中,ABC可以将BC覆盖掉,因为ABC本身就包含BC。
其中,使用LZ77滑窗字典对初始分区中的数据进行压缩的方法为:
将每次压缩的数据作为一个语句,当每个语句首次被压缩时,对该语句建立一个标签值并进行初始化,当压缩与该语句相同的语句时将该语句的标签值增加一,直至初始分区压缩完成;
由于对于信息区进行了划分,每个信息区内具有自身区间内语句长度的重复率,即意味着两个不同的信息区之内的重复语句的出现次数并不多,所以利用第一个信息区进行辅助记忆字典的初始化,具体为:
首先,在LZ77滑窗字典滑动在R1压缩的过程中,R1为初始分区,每进行一个独立的语句的压缩则对其建立一个标签Fi,Fi为第i个语句的标签,标签的初始值为1,而后每对该语句进行一次压缩,则对其对应的语句标签进行加一,直至R1压缩完毕;
然后,后对标签记录的已经压缩的数据进行排除:
获取初始分区中具有相同数据的语句,将具有相同数据的语句中长度最长的语句保留,其余的语句排除,并且将排除掉的语句的标签值与保留的语句的标签值之和,作为保留的语句的标签值,具体方法为:
对标签记录的已经压缩的数据进行排除,具有相同数据的语句即具有相同数据的语句,用长语句对短语句进行排除,排除做法为对相同数据,即具有相同数据的语句,可在压缩的过程中检索出来,例如语句ABC与语句ABCD,其具有的相同特征为ABC,可在字典检索语句时,识别出语句的相同数据的语句进行排除,同时对相同数据的长语句进行保留,并将排除掉的短语句对应的标签值相加至长语句对应的标签值之上。例如,其中一个语句ABC,对应的标签值F1=15,具有相同数据的长语句为ABCD,对应的标签值F2=19,则对短语句ABC进行排除,长语句ABCD进行保留,且长语句的标签值重新设定为F2=15+19=34,原理为长语句ABCD能够完全压缩短语句ABC,但是短语句ABC不能完全压缩长语句ABCD;
最后,根据本步骤得到已经压缩的初始分区中已经建立标签值的语句。
步骤三:根据初始分区中每个保留语句的标签值和长度判断该保留语句是否符合辅助记忆字典的录入标准,并利用符合录入标准的保留语句初始化辅助记忆字典;
该步骤是根据对于已经建立标签值的已经压缩的语句进行筛选,筛选其中的高频语句进行辅助记忆字典的初始化录入,构建辅助记忆字典。
其中,根据每个保留语句的标签值和长度判断该语句是否符合辅助记忆字典的录入标准的方法为:
(1)获取初始分区每个保留语句的长度和该语句的标签值的乘积C1:
C1=mi×Fi
公式中,mi为第i个语句的长度,Fi为i个语句的标签值;
(2)获取初始分区每个语句的长度和语句标签值均值的乘积C2:
(3)若C1减去C2的差值大于0,则该语句符合辅助记忆字典的录入标准;
(4)若C1减去C2的差值大于0小于等于0,则该语句不符合辅助记忆字典的录入标准。
具体如下:
获取每个保留语句的长度和每个保留语句的标签值的乘积C1;获取每个语句的长度和语句标签值均值的乘积C2;将每个语句的长度和每个语句的标签值的乘积与每个语句的长度和语句标签值均值的乘积作差得到Ei:
Ei=C1-C2
公式中,Ei含义为第i个语句是否符合辅助记忆字典的录入标准,若差值Ei大于0,则该语句符合辅助记忆字典的录入标准,若差值小于等于0,则该语句不符合辅助记忆字典的录入标准。
公式含义:在进行数据压缩的过程中长度较长的语句相对于长度较短的语句来说,对于压缩的效率提升成为明显,具体表现在短语句不能完全压缩长语句,但是长语句能够完全压缩短语句;而标签值表示该语句被压缩的次数,标签值越大,其被压缩的次数越多。所以本发明以语句的长度作为权值,语句的标签值做为基础来量化该语句在这一个信息区进行筛选录入的标准,以此标准与整体被标记的数据的平均标准作为差异值来进行是否被录入的筛选,其标准值越大,被录入的可能性越高,当其大于整个区间所有被标记的数据的平均值时,本发明认为其为常用(频率高)且具有压缩价值(语句长度长),可作为辅助记忆字典中的字典语句。
利用上述方法对R1即第一个数据区中所有的标签值语句进行筛选,可以获得初始化后辅助记忆字典中的第一个数据区R1中I1′个压缩语句,I1′为第一个数据区保留的语句。
进一步的,根据符合辅助记忆字典的录入标准的语句得到辅助记忆字典,将符合辅助记忆字典的录入标准的语句,依次录入辅助记忆字典内部,得到辅助记忆字典。
步骤四:获取除了初始分区之外的其他每个分区,将其他每个分区中的数据在辅助记忆字典和LZ77滑窗字典中进行检索匹配若只有LZ77滑窗字典中可以匹配到,则使用LZ77滑窗字典进行压缩,若只有辅助记忆字典中可以匹配到,则以辅助记忆字典进行压缩,若辅助记忆字典和LZ77滑窗字典中都可以匹配到,则以LZ77滑窗字典进行压缩;无论LZ77滑窗字典还是辅助记忆字典进行压缩,每压缩一个语句,在辅助记忆字典中检索与该语句具有相同数据的语句,并将该语句和具有相同数据的语句中,长度最长的语句替换掉长度最短的语句,进行自适应更新。
该步骤的目的是,根据利用辅助记忆字典和LZ77字典对其他每个分区中的语句进行并行辅助压缩,并对辅助记忆字典进行自适应更新。
其中,进行自适应更新的方法为:
无论是利用LZ77滑动窗口压缩还是利用辅助记忆字典进行压缩一个语句时;
在辅助记忆字典中检索该语句,若能检索到,则将该语句的标签值加一;
若检索不到该语句,则检索与该语句具有相同数据的语句;
若检索不到与该语句具有相同数据的语句,则将为该语句建立标签值并初始化;
若检索到与该语句具有相同数据的语句,则对比该语句的长度和与该语句具有相同数据的语句的长度;
若该语句的长度大于具有相同数据的语句的长度,则将具有相同数据的语句替换为该语句,该语句继承具有相同数据的语句的标签值并加一;
若该语句的长度小于与该语句具有相同数据的语句的长度,则不进行替换,仅对具有相同数据的语句标签值加一。
具体如下,以第二个分区为例:
因为已经利用R1对辅助记忆字典进行了初始化建立,现在从R2即第二个分区开始,根据实际压缩效果对辅助记忆字典中的语句进行替换和更新,具体逻辑为,不论是LZ77字典中的滑窗字典还是辅助记忆字典对于R2开始之后的所有信息进行压缩后,都需要在辅助记忆字典中进行检索并根据检索结果进行更新,将相同数据且长度大于辅助记忆字典中的语句时,进行替换,若没有替换的专属于R2中的语句进行如步骤二中的方式建立标签值和录入,实现过程如下所示:
首先利用LZ77滑窗字典与辅助记忆字典对R2之后的所有数据以每个语句为单位进行并行检索和压缩,以R2为例,对于R2中信息利用LZ77滑窗字典与辅助记忆字典进行检索和压缩。
然后进行R2中语句的录入前处理,处理方式为在R2中每进行一次语句压缩,首先在辅助记忆字典中进行检索该语句是否有相应的特征语句的存在,若存在则判断其语句长度是否大于辅助字典中相同数据的语句长度,若大于辅助字典中相同数据的长度,则以该语句进行辅助字典中相同数据的语句进行替换并继承其标签值并且加1,如不大于,则不进行替换,仅对标签值加一,不进行语句替换。
最后,对于R2中进行一次语句压缩时,未在辅助字典中检索到相应的特征语句的存在,则利用步骤二中的方法,建立属于R2的语句标签值并进行初始化,本步骤的自适应替换和更新方法对所有分区通用。
其中,进行自适应更新还包括,当辅助记忆字典内存储的语句长度大于等于LZ77滑动窗口时,则根据每个语句的长度、标签值、上次压缩时间与当前时刻之间的时间间隔,计算出辅助记忆字典内存储的每个语句的衰减值,并将衰减值小于衰减值阈值的语句进行删除;
其中,根据每个语句的长度、标签值、上次压缩时间与当前时刻之间的时间间隔,计算出辅助记忆字典内存储的每个语句的衰减值的方法为:
式中,Gi为第i个语句的衰减值,e为自然常数,Ei为辅助记忆字典中第i个语句的上次压缩时间与当前时刻之间的时间间隔,本实施例以该语句上次压缩距离当前压缩时刻,之间间隔的数据长度来表征时间,mi为第i个语句的长度,Fi为第i个语句的标签值。
该公式的目的是,以辅助记忆字典中语句未压缩的时长(以该语句最后一次压缩时与计算衰减函数时中间间隔的信息长度进行量化)、语句长度以及标签值作为参数设置记忆衰减函数在一定的周期下对辅助记忆字典中的语句进行抛弃来达到一种减少辅助记忆字典臃肿的效果,提高压缩效率。
需要说明的是,利用衰减值对辅助记忆字典中的语句进行衰减,有益效果为:给予每个辅助记忆字典中的语句一定的“存在容错空间”,即起初的衰减幅度不大,随着参数的变化,衰减程度越来越大,实际物理意义为随着未压缩的时长的增长,第i个语句的语句长度不变化(不压缩就不更新),第i个语句长度的标签值不变(不压缩就不变化),其衰减函数衰减的过程越来越快,直至衰减结束。
其中,衰减阈值的获取方法为:获取辅助记忆字典存储的语句中所有语句的最大衰减值和最小衰减值;获取最大衰减值和最大衰减值的差值,将差值除以调节参数得到的值为衰减阈值,调节参数自行设定。
具体公式为:
设置阈值K,对于衰减函数值小于阈值K的对应的语句进行抛弃,一个阈值设置的计算方式为:
公式中,max{Gi}为最大的衰减值,min{Gi}为最小的衰减值,γ为调节参数,可根据实施者实施需求进行调节,本实施例中γ=0.5。
至此,记忆衰减函数设置完毕。
需要说明的是,在辅助记忆字典进行替换和更新的过程中,因为信息区的不断增多容易引发辅助记忆字典的臃肿(语句过多),从而在利用辅助记忆字典进行辅助压缩的时候出现检索时间过长,所以本发明以辅助记忆字典中语句未压缩的时长(以最后一次压缩与计算衰减函数时中间间隔的信息长度进行量化)、语句长度以及标签值作为参数设置记忆衰减函数在一定的周期下对辅助记忆字典中的语句进行抛弃来达到一种减少辅助记忆字典臃肿的效果,所述一定的周期为当利用辅助记忆字典辅助LZ77动态窗口字典进行第Rr个信息区压缩时,辅助记忆字典内存储的语句的总体长度l′大于等于LZ77动态窗口字典l时,则利用衰减函数进行衰减,抛弃辅助记忆字典内存储某些语句(达到阈值的语句);
本发明首先利用待压缩信息的特征(重复性)以及LZ77算法中的滑动窗口的长度L来对待压缩的信息进行分区,而后通过第一个分区的压缩效果建立初始辅助记忆字典,而后通过每个分区的压缩效果对初始记忆字典进行高频语句的录入,替换和抛弃,在此过程中同时利用辅助记忆字典辅助LZ77滑窗字典进行信息的压缩。
需要说明的是,针对常规的lz77算法对于信息压缩的过程中,因为其压缩所用的字典为动态字典,所以在压缩的过程中,某些信息相同,但是由于相同信息的之间的间隔距离较长,超过了动态压缩字典的长度,从而使得相同的信息无法进行压缩,对于信息的压缩效率有较大幅度的影响。
本发明通过步骤一至步骤四,对辅助记忆字典进行了完整的建立,现利用辅助记忆字典辅助LZ77滑窗字典对待压缩的信息进行压缩,具体方式为并行辅助压缩,即在压缩的时候对待压缩的信息同时在复制记忆字典和LZ77滑窗字典中进行检索匹配压缩长度,若同时可以检索到,则以LZ77滑窗字典进行压缩,若只有辅助记忆字典中可以检索到,则以辅助记忆字典进行压缩,对已经压缩的数据进行传输和存储。
本发明在lz77算法在对信息压缩的基础上,通过已经压缩的信息高频的压缩数据和LZ77算法的字典长度以及待压缩数据的特征建立辅助自适应的自动更新的辅助记忆字典,而后通过辅助动态字典辅助动态窗口字典在不增加字典长度的基础上进行数据的并行辅助压缩用来提高压缩的效率。
进一步的,对本实施例进行举例说明:
(1)利用LZ77滑窗字典压缩初始分区数据:其中初始分区的待压缩字符数据为:ABABCDABCDBCE,设置LZ77滑窗字典长度为8位00000000,用0表示空位,该位置上没有数据,其中包括待压缩数据区3位,和缓冲数据区5位;
压缩的基本规则:当待压缩数据区中的语句在缓冲数据区中,没有检索到匹配语句时,将未匹配的符号编码成符号标记,这个符号标记仅仅包含符号本身,没有压缩过程。
当待压缩数据区中的语句在缓冲数据区中,检索到匹配语句时,对匹配的语句进行压缩为(滑动窗口中的偏移量,匹配长度,匹配结束后下一个待压缩数据)。
初始状态:
由于待压缩数据区3位000,和缓冲数据区5位00000都为空,因此将LZ77滑窗字典,从待压缩字符数据开始向右滑动3位,此时待压缩数据区中含有数据ABA,作为初始状态;
压缩流程具体如下:
a.待压缩数据区中第一个字符A,在缓冲数据区中未检索匹配到,A不进行压缩,输出A,此时缓冲数据区为0000A,待压缩数据区中为BAB;
b.待压缩数据区中第一个字符B,在缓冲数据区中未检索匹配到,输出B,不进行压缩,此时缓冲数据区为000AB,待压缩数据区中为ABC;
c.待压缩数据区中第一个字符A,在缓冲数据区中可以检索匹配到,则继续在缓冲数据区中检索待压缩数据区中的字符AB,AB可以检索匹配到,则继续检索ABC,ABC检索匹配不到,则输出(3,2,C),只压缩AB,AB首次压缩,建立标签值并初始化为1,此时缓冲数据区为0ABAB,待压缩数据区中为CDA;
d.待压缩数据区中第一个字符C,在缓冲数据区中未检索匹配到,则输出C,此时缓冲数据区为ABABC,待压缩数据区中为DAB;
e.待压缩数据区中第一个字符D,在缓冲数据区未检索匹配到,则输出D,此时缓冲数据区为BABCD,待压缩数据区中为ABC;
f.待压缩数据区中第一个字符A,在缓冲数据区中可以检索匹配到,继续检索AB,可以检索到,继续检索ABC可以检索到,则压缩ABC,输出(1,3,D),首次压缩ABC,建立标签值并初始化为1,此时缓冲数据区为CDABC,待压缩数据区为DBC;
g.待压缩数据区中第一个字符D,在缓冲数据区中可以检索匹配到,继续检索DB,未检索到,则只压缩D,输出(1,1,B),首次压缩D,建立标签值并初始化为1,此时缓冲数据区为DABCD,待压缩数据区为BCE;
h.待压缩数据区中第一个字符B,在缓冲数据区中可以检索匹配到,继续检索BC,可以检索到,继续检索BCE,未检索到,则只压缩BC,输出(2,2,E),首次压缩BC,建立标签值并初始化为1,此时缓冲数据区为BCDBC,待压缩数据区为E;
i.待压缩数据区中E,在缓冲数据区中未检索匹配到,则输出E,此时缓冲数据区为CDBCE,待压缩数据区为空,压缩完成;
此时得到的压缩数据为:
AB(3,2,C)CD(1,3,D)(1,1,B)(2,2,E)E
(2)获取压缩流程得到的压缩语句及其标签值:
AB=1,ABC=1,D=1,BC=1,将相同数据的短语句排除,保留长语句并且更新标签值:
AB,BC,ABC为相同数据的语句,排除AB,BC保留ABC,并且将ABC的标签值修改为其自身的标签值与AB,BC标签值之和,ABC=3;D没有相同数据的语句,直接保留;
(2)初始化辅助记忆字典:
根据初始分区中的保留语句的长度和标签值选取符合录入标准的语句,假设ABC符合录入标准,则利用ABC初始化辅助记忆字典,设辅助记忆字典也为8位,包括带压缩数据区3位,数据缓冲区5位,此时初始化后的辅助记忆字典的缓冲区为00ABC,在步骤(1)中最终得到的LZ77滑窗字典的缓冲区为CDBCE;
(3)利用LZ77字典和辅助记忆字典进行并行辅助压缩:
a.若存在某分区的数据为ADBAB此时待压缩数据区为ADB,先在LZ77字典和辅助记忆字典中检索A,只有辅助记忆字典中可以检索匹配到,则以辅助记忆字典进行压缩,压缩A;
b.当A被压缩后,首先在辅助记忆字典中进行检索语句A是否有相应的具有相同数据的语句存在,检索到相同数据的语句ABC,则判断其语句长度是否大于辅助字典中相同数据的语句长度,发现小于辅助字典中相同数据的长度,则不进行替换,仅对辅助字典中ABC标签值加一,此时值为3,不进行语句替换;
c.辅助记忆字典进行压缩后,其数据缓冲区为0ABCA,待压缩数据区为DBA;
d.在LZ77字典和辅助记忆字典中检索D,只有LZ77滑窗字典中能检索到,则以LZ77字典进行压缩,检索到D,也检索到DB,此时压缩DB,此时其数据缓冲区内为BCEDB,待压缩数据区为BAB;
e.当LZ77字典进行压缩后,首先在辅助记忆字典中进行检索语句DB是否有相应的具有相同数据的语句存在,未检索到相同数据的语句,则为DB建立标签值并初始化为1;
f.在LZ77字典和辅助记忆字典中检索B,LZ77字典和辅助记忆字典中都可以检索到,则利用LZ77字典进行压缩B,其数据缓冲区内为CEDBB,待压缩数据区为A;
g.当LZ77字典进行压缩后,首先在辅助记忆字典中进行检索语句B是否有相应的具有相同数据的语句存在,检索到相同数据的语句ABC,则比较语句长度ABC较大,则不进行替换,ABC标签值加一,此时值为4;
h.在LZ77字典和辅助记忆字典中检索A,只有辅助记忆字典中可以检索到则利用辅助记忆字典进行压缩,压缩后,辅助记忆字典数据缓冲区为ABCAA,待压缩数据区为空,压缩完成;
i.辅助记忆字典压缩完成后,先在辅助记忆字典中进行检索语句A是否有相应的具有相同数据的语句存在,检索到相同数据的语句ABC,则判断其语句长度是否大于辅助字典中相同数据的语句长度,发现小于辅助字典中相同数据的长度,则不进行替换,仅对辅助字典中ABC标签值加一,此时,ABC的标签值为5。
对其他每个分区的数据按照(3)中的方法进行并行辅助压缩。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种LZ系列压缩算法自适应优化方法,其特征在于,包括:
获取待压缩的数据;
首先获取一个LZ77滑窗字典长度的待压缩数据,然后每次增加一个LZ77滑窗字典长度,并根据每个长度内每个数据出现的概率得到该长度内的数据重复性,若增加后的长度内的数据重复性小于增加前的长度内的数据重复性时,停止增加长度,将增加前的长度内的待压缩数据作为初始分区;
使用LZ77滑窗字典对初始分区中的数据进行压缩,将每次压缩的数据作为一个语句,当每个语句首次被压缩时,对该语句建立一个标签值并进行初始化,当压缩与该语句相同的语句时将该语句的标签值增加一,直至初始分区压缩完成;
获取初始分区中具有相同数据的语句,将具有相同数据的语句中长度最长的语句保留,其余的语句排除,并且将排除掉的语句的标签值与保留的语句的标签值之和,作为保留的语句的标签值;
根据初始分区中每个保留语句的标签值和长度判断该保留语句是否符合辅助记忆字典的录入标准,并利用符合录入标准的保留语句初始化辅助记忆字典;
获取除了初始分区之外的其他每个分区,将其他每个分区中的数据在辅助记忆字典和LZ77滑窗字典中进行检索匹配;
若只有LZ77滑窗字典中可以匹配到,则使用LZ77滑窗字典进行压缩,若只有辅助记忆字典中可以匹配到,则以辅助记忆字典进行压缩,若辅助记忆字典和LZ77滑窗字典中都可以匹配到,则以LZ77滑窗字典进行压缩;
无论LZ77滑窗字典还是辅助记忆字典进行压缩,每压缩一个语句,在辅助记忆字典中检索与该语句具有相同数据的语句,并将该语句和具有相同数据的语句中,长度最长的语句替换掉长度最短的语句,进行自适应更新。
2.根据权利要求1所述的一种LZ系列压缩算法自适应优化方法,其特征在于,所述进行自适应更新的方法为:
无论是利用LZ77滑动窗口压缩还是利用辅助记忆字典进行压缩一个语句时;
在辅助记忆字典中检索该语句,若能检索到,则将该语句的标签值加一;
若检索不到该语句,则检索与该语句具有相同数据的语句;
若检索不到与该语句具有相同数据的语句,则将为该语句建立标签值并初始化;
若检索到与该语句具有相同数据的语句,则对比该语句的长度和与该语句具有相同数据的语句的长度;
若该语句的长度大于具有相同数据的语句的长度,则将具有相同数据的语句替换为该语句,该语句继承具有相同数据的语句的标签值并加一;
若该语句的长度小于与该语句具有相同数据的语句的长度,则不进行替换,仅对具有相同数据的语句标签值加一。
3.根据权利要求1所述的一种LZ系列压缩算法自适应优化方法,其特征在于,所述进行自适应更新还包括,当辅助记忆字典内存储的语句长度大于等于LZ77滑动窗口时,则根据每个语句的长度、标签值、上次压缩时间与当前时刻之间的时间间隔,计算出辅助记忆字典内存储的每个语句的衰减值,并将衰减值小于衰减值阈值的语句进行删除。
5.根据权利要求1所述的一种LZ系列压缩算法自适应优化方法,其特征在于,所述衰减阈值的获取方法为:
获取辅助记忆字典存储的语句中所有语句的最大衰减值和最小衰减值;
获取最大衰减值和最大衰减值的差值,将差值除以调节参数得到的值为衰减阈值,调节参数自行设定。
6.根据权利要求1所述的一种LZ系列压缩算法自适应优化方法,其特征在于,所述具有相同数据的语句是指若两个语句中,一个语句包含的数据可以将另一个语句覆盖掉,则该两个语句为具有相同数据的语句。
7.根据权利要求1所述的一种LZ系列压缩算法自适应优化方法,其特征在于,所述获取除了初始分区之外的其他每个分区的方法与获取初始分区的方法一致。
8.根据权利要求1所述的一种LZ系列压缩算法自适应优化方法,其特征在于,所述根据初始分区中每个保留语句的标签值和长度判断该保留语句是否符合辅助记忆字典的录入标准的方法为:
获取初始分区每个保留语句的长度和该语句的标签值的乘积C1;
获取初始分区每个语句的长度和语句标签值均值的乘积C2;
若C1减去C2的差值大于0,则该语句符合辅助记忆字典的录入标准;
若C1减去C2的差值大于0小于等于0,则该语句不符合辅助记忆字典的录入标准。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211021912.8A CN115361026A (zh) | 2022-08-24 | 2022-08-24 | 一种lz系列压缩算法自适应优化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211021912.8A CN115361026A (zh) | 2022-08-24 | 2022-08-24 | 一种lz系列压缩算法自适应优化方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115361026A true CN115361026A (zh) | 2022-11-18 |
Family
ID=84004240
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211021912.8A Pending CN115361026A (zh) | 2022-08-24 | 2022-08-24 | 一种lz系列压缩算法自适应优化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115361026A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117195005A (zh) * | 2023-11-03 | 2023-12-08 | 山东四季车网络科技有限公司 | 基于智慧洗车的信息数据管理系统 |
CN117312613A (zh) * | 2023-10-07 | 2023-12-29 | 杭州易靓好车互联网科技有限公司 | 基于云计算的订单数据智能管理方法及系统 |
-
2022
- 2022-08-24 CN CN202211021912.8A patent/CN115361026A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117312613A (zh) * | 2023-10-07 | 2023-12-29 | 杭州易靓好车互联网科技有限公司 | 基于云计算的订单数据智能管理方法及系统 |
CN117312613B (zh) * | 2023-10-07 | 2024-03-08 | 杭州易靓好车互联网科技有限公司 | 基于云计算的订单数据智能管理方法及系统 |
CN117195005A (zh) * | 2023-11-03 | 2023-12-08 | 山东四季车网络科技有限公司 | 基于智慧洗车的信息数据管理系统 |
CN117195005B (zh) * | 2023-11-03 | 2024-01-26 | 山东四季车网络科技有限公司 | 基于智慧洗车的信息数据管理系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115361026A (zh) | 一种lz系列压缩算法自适应优化方法 | |
US11044495B1 (en) | Systems and methods for variable length codeword based data encoding and decoding using dynamic memory allocation | |
US8356060B2 (en) | Compression analyzer | |
USRE41152E1 (en) | Lempel-Ziv data compression technique utilizing a dictionary pre-filled with frequent letter combinations, words and/or phrases | |
CN111093081B (zh) | 一种图像无损压缩方法及系统 | |
JP3083730B2 (ja) | データ情報を圧縮するためのシステムおよび方法 | |
CN107565971B (zh) | 一种数据压缩方法及装置 | |
CN116681036B (zh) | 基于数字孪生的工业数据存储方法 | |
WO2010013290A1 (ja) | 圧縮処理装置および圧縮処理方法 | |
CN115840799B (zh) | 一种基于深度学习的知识产权综合管理系统 | |
WO2010108373A1 (zh) | 一种对词库压缩编码及解码的方法和系统 | |
JPS6356726B2 (zh) | ||
CN111539199A (zh) | 文本的纠错方法、装置、终端、及存储介质 | |
CN113467949B (zh) | 边缘计算环境下用于分布式dnn训练的梯度压缩方法 | |
WO2022020695A1 (en) | Double-pass lempel-ziv data compression with automatic selection of static encoding trees and prefix dictionaries | |
CN108880559B (zh) | 数据压缩方法、数据解压缩方法、压缩设备及解压缩设备 | |
KR100453142B1 (ko) | 이동통신 단말기에서의 사운드 압축 방법 | |
CN112506876B (zh) | 一种支持sql查询的无损压缩查询方法 | |
US20050193022A1 (en) | Method and apparatus for lossless compression and decompression of data | |
CN117200805B (zh) | 一种mcu的低内存占用的压缩和解压方法及装置 | |
CN117375631B (zh) | 一种基于哈夫曼编码的快速编码方法 | |
CN113555034B (zh) | 压缩音频识别方法、装置及存储介质 | |
US20240184763A1 (en) | Data compression method, data decompression method, and electronic device | |
JPH0964753A (ja) | データ圧縮装置、及びデータ伸長装置 | |
CN116185303A (zh) | 一种提高压缩卡压缩效率的方法、装置及设备 |
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 |