一种计算机数据压缩方法及装置
技术领域
本发明涉及计算机应用技术,尤其涉及计算机数据压缩的优化方法及装置。
背景技术
数据压缩是将数据重新组织为一种可还原的格式,依这种格式处理的数据所占用的空间大小要远远小于原始数据的空间大小。在计算机应用领域中,数据压缩可以减小存储空间,可以降低传输代宽,减少输入输出(IO)读写次数等,具有诸多积极意义。衡量一个数据压缩算法的好坏无外乎是看其压缩比和压缩效率。
由于不同的压缩算法的设计着眼点不同,每个压缩算法在不同的场景下,压缩比都是不同的。有的压缩算法(如zlib)对文本的压缩能力很强,但对二进制文件的压缩效果却不尽如人意;有的压缩算法(如lzw)对二进制文件的压缩能力很强,但对其它文件的压缩能力却不是很理想。因此,需要提供一种机制,能够根据待压缩数据本身的特点选择最合适的压缩算法,以便让每种压缩算法都充分发挥其最大的功效,这将具有十分重要的意义。
隐马尔可夫模型(HMM,Hidden Markov Model)是统计模型,它用来描述一个含有隐含未知参数的马尔可夫过程,然后利用这些参数作进一步分析,例如模式识别。其难点是从可观察的参数中确定该过程的隐含参数。在正常的马尔可夫模型中,状态对于观察者来说是直接可见的。这样状态的转换概率便是全部的参数。而在隐马尔可夫模型中,状态并不是直接可见的,但受状态影响的某些变量则是可见的。每一个状态在可能输出的符号上都有一概率分布。因此输出符号的序列能够透露出状态序列的一些信息。目前,隐马尔可夫模型在语音识别上有着非常积极的应用。
在生物信息学的遗传算法中,有一个概念叫做基因突变,是指在进行染色体杂交的时候,某个染色体的某个成员会以一定的概率变为染色体成员中的其它成员。这种突变保证了生物遗传最优结果集的产生。
如果能够采用隐马尔可夫模型来选取数据压缩算法,同时附加将突变概念运用到数据压缩算法最优结果的产生上,将会使压缩算法的选取更平均,取得更好的压缩效果。
发明内容
本发明所要解决的技术问题是提供一种计算机数据压缩方法及装置,能够优化整体的压缩效率。
为了解决上述技术问题,本发明提供了一种计算机数据压缩方法,包括:
根据待压缩数据的类型从备选的压缩算法集内自适应地选择相应的压缩算法压缩数据。
进一步地,在执行根据待压缩数据的类型选择相应的压缩算法压缩数据之前,还包括:
判断待压缩数据是否需要采用突变的压缩算法来压缩,是则选择突变算法压缩数据;否则,
执行根据待压缩数据的类型从备选的压缩算法集内自适应地选择相应的压缩算法压缩数据。
进一步地,判断待压缩数据是否需要采用突变的压缩算法来压缩,是则选择突变算法压缩数据,具体包括:
将生成的一个随机数与指定的概率阀值进行比较,如果生成的随机数大于所述概率阀值,则从压缩算法集中任意选择一个压缩算法压缩数据。
进一步地,根据待压缩数据的类型从备选的压缩算法集内自适应地选择相应的压缩算法压缩数据,具体包括:
第一步:采用采用隐马尔可夫模型的如下公式计算每一压缩算法的选取概率:
式中:
i代表压缩算法集中的一个压缩算法,P(xi)为压缩算法i的出现概率,设且
P(xi|y)代表本次压缩成功时,选择压缩算法i的概率;
P(y)表示本次进行数据压缩的成功概率;初始时,P(y)为预设的初始值;
P(y|xi)表示选择压缩算法i时压缩成功的概率;
第二步:选择选取概率最大的那个压缩算法进行数据压缩;
第三步:根据压缩比判断本次压缩是否成功,当进行本次数据压缩后计算出来的压缩率比上一次数据压缩后的压缩率高时,判断压缩成功,否则判断压缩失败;
第四步:更新每个压缩算法总的成功概率及条件选取概率。
进一步地,
第四步中更新每个压缩算法总的成功概率及条件选取概率,具体包括:
针对每一压缩算法,用两个记数器分别记录该压缩算法的选取次数nr_total和当前压缩的成功次数nr_success;
每次使用该压缩算法进行所述数据压缩时,nr_total加单位计数,每成功压缩一次,nr_success加单位计数,则每个压缩算法总的成功概率由公式:P(y)=nr_success/nr_total求得;同时,针对每一压缩算法使用一计数单元nr_suc_seli来记录本次压缩成功条件下选择压缩算法i出现的次数;
在压缩成功的条件下选取所述压缩算法i的条件选取概率由下列公式算得:
进一步地,
第一步初始时,根据每个压缩算法权重的不同,为压缩算法i首选一个初始的选取概率,且保证
为了解决上述技术问题,本发明提供了一种计算机数据压缩装置,包括:
自适应算法选择模块,用于根据待压缩数据的类型从备选的压缩算法集内选择合适的压缩算法压缩数据。
进一步地,该装置还包括相互连接的突变决策模块和突变算法选择模块,其中:
突变决策模块,还与自适应算法选择模块连接,用于在判断待压缩数据需要采用突变的压缩算法来压缩时,向突变算法选择模块输出突变选择算法指令;否则,向自适应算法选择模块输出自适应选择算法指令;
突变算法选择模块,用于根据输入的突变选择算法指令从压缩算法集中任意选择一个压缩算法压缩数据;
自适应算法选择模块根据输入的自适应选择算法指令采用隐马尔可夫模型根据待压缩数据的类型选择合适的压缩算法压缩数据。
进一步地,
突变决策模块将生成一个随机数与指定的概率阀值进行比较,如果该随机数大于指定的概率阀值,则输出突变选择算法指令,否则输出自适应选择算法指令。
进一步地,
自适应算法选择模块首先计算压缩算法集中每一压缩算法的选取概率,选择选取概率最大的压缩算法进行数据压缩;然后,根据本次压缩和上次压缩的压缩比判断本次压缩是否成功,并更新每个压缩算法总的成功概率及条件选取概率,为下次计算压缩算法集中每一压缩算法的选取概率进行准备。
本发明针对被压缩数据的类型采用自适应策略,即根据数据类型的不同选择相应的压缩算法进行数据压缩;同时引入突变机制,即从压缩算法集里选择算法时,根据一定的突变概率绕过自适应的压缩算法选择,直接指定压缩集里的一个算法进行压缩。本发明进一步通过使用隐马尔可夫模型自适应地选取压缩算法集中的算法,并在进行压缩后进行块的数据压缩效果分析,以决定此次压缩操作是成功还是失败,分析结果反馈给隐马尔可夫模型,进而指导下一次压缩算法的选取,由此使得整体的压缩效率和压缩比最优化。
附图说明
图1为本发明的计算机数据压缩方法实施例的流程图;
图2为图1中使用隐马尔可夫模型自适应选择压缩算法实施例的流程图;
图3为本发明的计算机数据压缩装置实施例的结构框图。
具体实施方式
下面结合优选实施例并参照附图详细描述本发明的技术方案。应该理解,以下列举的实施例仅用于说明和解释本发明,而不构成对本发明技术方案的限制。
本发明的计算机数据压缩方法实施例的流程如图1所示,包括:
根据待压缩数据的类型自适应地选择相应的压缩算法压缩数据。
譬如,将目前常用的压缩算法组成备选的压缩算法集,包括针对文本的数据类型的zlib压缩算法,针对二进制数据的数据类型的lzw压缩算法,等等;根据待压缩数据的类型从该压缩算法集选择合适的压缩算法压缩相应的数据。
上述方法实施例,在根据待压缩数据的类型选择相应的压缩算法压缩数据之前,还包括:
判断待压缩数据是否需要采用突变的压缩算法来压缩,是则选择突变算法压缩数据,否则执行该自适应地选择相应的压缩算法压缩数据之步骤。
本发明在通过隐马尔可夫模型选择压缩算法之前,首先要进行一次突变判断,判断待压缩数据使用的压缩算法是否需要突变,如果需要突变,则进入突变流程随机选择一个压缩算法来压缩数据;如果不需要突变,则进入自适应选择流程选择压缩算法。
在上述方法实施例中,
判断待压缩数据是否需要采用突变的压缩算法来压缩,是则选择突变算法压缩数据,具体包括:
生成一个随机数,与指定的概率阀值进行比较,如果生成的随机数大于指定的概率阀值,则从压缩算法集中任意选择一个压缩算法压缩数据。
在上述方法实施例中,本发明采用隐马尔可夫模型根据待压缩数据的类型选择相应的压缩算法压缩数据,其流程如图2所示,具体包括:
1)计算每一压缩算法的选取概率;
初始时,根据每个压缩算法权重的不同,为其首选一个初始的选取概率P(x),该P(x)的值可能有大有小,但要保证
在对待压缩数据进行压缩时,针对压缩算法集内的每一个压缩算法通过如下公式计算获取压缩算法出现的概率P(xi):
式中:
i代表压缩算法集中的一个压缩算法,P(xi)为压缩算法i的出现概率,设且
P(xi|y)代表本次压缩成功时,选择算法i的概率;
P(y)代表本次进行数据压缩的成功概率;初始时,P(y)为预设的初始值(譬如预设P(y)=50%),随着每次压缩的运行,P(y)的值会累计而出现变化;
P(y|xi)代表选择压缩算法i时,压缩成功的概率。
2)选择选取概率最大的压缩算法进行数据压缩;
3)根据压缩比判断本次压缩是否成功,当进行本次数据压缩后计算出来的压缩率(根据压缩后数据量与原数据量之比)比上一次数据压缩后的压缩率高时,则判断压缩成功,否则判断压缩失败;
4)更新每个压缩算法总的成功概率及条件选取概率。
使用两个记数器,分别记录压缩算法的选取次数nr_total和当前压缩的成功次数nr_success;每次使用压缩算法进行压缩,nr_total都要加单位计数(譬如为1),每成功压缩一次,nr_success要加单位计数(如1);这样,每个压缩算法总的成功概率由如下公式求得:
P(y)=nr_success/nr_total (2)
同时,针对每个压缩算法使用nr_suc_seli单元来记录本次压缩成功的条件下选择此算法出现的次数;
这样,在压缩成功的条件下选取压缩算法i的概率(即条件选取概率)由下列公式算得:
在下一次对待压缩数据进行压缩时,通过公式(1)即可得到每个压缩算法的选取概率。
本发明针对上述方法实施例,相应地还提供了计算机数据压缩装置实施例,其结构如图3所示,包括:
自适应算法选择模块,用于根据待压缩数据的类型从备选的压缩算法集内选择合适的压缩算法压缩数据。
上述装置实施例还包括相互连接的突变决策模块和突变算法选择模块,其中:
突变决策模块,还与自适应算法选择模块连接,用于在判断待压缩数据需要采用突变的压缩算法来压缩时,向突变算法选择模块输出突变选择算法指令;否则,向自适应算法选择模块输出自适应选择算法指令;
突变算法选择模块,用于根据输入的突变选择算法指令从备选的压缩算法集中任意选择一个压缩算法压缩数据;
自适应算法选择模块,用于根据输入的自适应选择算法指令采用隐马尔可夫模型根据待压缩数据的类型选择相应的压缩算法压缩数据。
在上述装置实施例中,
突变决策模块将生成一个随机数与指定的概率阀值进行比较,如果该随机数大于指定的概率阀值,则输出突变选择算法指令,否则输出自适应选择算法指令。
在上述装置实施例中,
自适应算法选择模块首先计算压缩算法集中每一压缩算法的选取概率,选择选取概率最大的压缩算法进行数据压缩;然后,根据压缩比判断本次压缩是否成功,并更新每个压缩算法总的成功概率及条件选取概率,为下次计算压缩算法集中每一压缩算法的选取概率进行准备。
本发明针对不同类型的数据采用自适应压缩算法选择策略,引入隐马尔科夫模型根据数据类型的不同选择合适的压缩算法;同时引入突变机制,即针对在进行压缩算法选择时若突变概率超出阈限值,则绕过自适应策略的选择,直接任意指定压缩算法集中的一个算法进行数据压缩;由此使整体的压缩效率和压缩比达到最优化。
对于本领域的专业人员来说,在了解了本发明内容和原理后,能够在不背离本发明的原理和范围的情况下,根据本发明的方法进行形式和细节上的各种修正和改变,但是这些基于本发明的修正和改变仍在本发明的权利要求保护范围之内。