[发明专利]基于LZSS算法和Sunday算法的数据压缩方法及系统有效
申请号: | 202011559946.3 | 申请日: | 2020-12-25 |
公开(公告)号: | CN112671413B | 公开(公告)日: | 2022-09-06 |
发明(设计)人: | 吴楠;曹博;高翔宇 | 申请(专利权)人: | 浪潮云信息技术股份公司 |
主分类号: | H03M7/40 | 分类号: | H03M7/40 |
代理公司: | 济南信达专利事务所有限公司 37100 | 代理人: | 孙园园 |
地址: | 250100 山东省济南市高*** | 国省代码: | 山东;37 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 lzss 算法 sunday 数据压缩 方法 系统 | ||
本发明公开了一种基于LZSS算法和Sunday算法的数据压缩方法及系统,属于数据压缩技术领域,本发明要解决的技术问题为如何避免匹配时因匹配长度过小而产生的数据量压缩率降低,采用的技术方案为:该方法是利用熵编码对待压缩数据进行预处理并选取压缩标准,同时将窗口变为动态设置大小,设定一个最小的匹配长度,并找到匹配的最大字符串提高压缩效率,再通过Sunday字符串匹配算法降低字符串匹配时的时间消耗。该系统包括预处理模块、选取模块、设定模块一、设定模块二、压缩模块及匹配模块。
技术领域
本发明涉及数据压缩技术领域,具体地说是一种基于LZSS算法和Sunday算法的数据压缩方法及系统。
背景技术
LZ77算法是由Lempel-Ziv在1977发明的。LZ77算法有许多变种算法,LZSS算法是LZ77其中一种变形,虽然LZ77有多种变形算法,但是这些基于LZ77变形的算法背后的原理都是一样的。
LZSS编码过程简单来说就是包含一个动态窗口和一个预读窗口。动态窗口用来存放已压缩的数据信息。标准的LZSS算法使用了一个4K的动态窗口。预读窗口存放未压缩的数据信息,预读缓冲器的大小通常在0~258之间。在动态窗口中寻找与预读缓冲器中的最大匹配的数据,如果匹配的数据长度大于最小匹配长度,那么就输出一对二元组(长度,距离),如果在动态窗口中找不到匹配的数据就直接输出原数据。每处理完一次数据,动态窗口和预读窗口都向后滑动,按照这个方法重复处理剩下的数据就完成了LZSS压缩了。
Sunday算法是Daniel M.Sunday于1990年提出的一种字符串模式匹配算法。其核心思想是:在匹配过程中,模式串并不被要求一定要按从左向右进行比较还是从右向左进行比较,它在发现不匹配时,Sunday算法能跳过尽可能多的字符以进行下一步的匹配,从而提高了匹配效率。
在大多数情况下,LZSS算法在匹配字符串长度编码时,匹配的字符串长度不会发生出现大字符串的情况,而且无论匹配长度大小,代码对(偏移量,匹配位置,匹配长度)的长度都是固定的,对于一些较小匹配长度的字符串来说,可能会出现一些冗余问题。
发明内容
本发明的技术任务是提供一种基于LZSS算法和Sunday算法的数据压缩方法及系统,来解决如何避免匹配时因匹配长度过小而产生的数据量压缩率降低的问题。
本发明的技术任务是按以下方式实现的,一种基于LZSS算法和Sunday算法的数据压缩方法,该方法是利用熵编码对待压缩数据进行预处理并选取压缩标准,同时将窗口变为动态设置大小,设定一个最小的匹配长度,并找到匹配的最大字符串提高压缩效率,再通过Sunday字符串匹配算法降低字符串匹配时的时间消耗。
作为优选,该方法具体如下:
S1、对应不同的压缩数据,采用不同熵编码进行预处理,可以在增强降低压缩效率的情况下,更能满足不同数据源的匹配度;
S2、确定选取的压缩标志并置于数据首位;
S3、将窗口大小设为动态可变;
S4、在将字符串匹配时,设定一个最小匹配长度,将小于此长度的字符串正常打印到动态窗口,防止出现一些压缩过程中可能出现的冗余问题;
S5、开始进行压缩处理;
S6、匹配第一次的字符串;
S7、采用Sunday算法找寻是否有字符串的匹配项:
①、若是,则执行步骤S8;
②、若否,则跳转至步骤S10;
S8、在最新位置查看是否顺延:
①、若是,则执行步骤S9;
②、若否,则跳转至步骤S7;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于浪潮云信息技术股份公司,未经浪潮云信息技术股份公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202011559946.3/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种叠片式自动排片机
- 下一篇:一种检测授权的方法、装置、终端及存储介质