CN1251449A - 两类字典压缩算法在数据压缩中的组合带参运用 - Google Patents
两类字典压缩算法在数据压缩中的组合带参运用 Download PDFInfo
- Publication number
- CN1251449A CN1251449A CN 98119494 CN98119494A CN1251449A CN 1251449 A CN1251449 A CN 1251449A CN 98119494 CN98119494 CN 98119494 CN 98119494 A CN98119494 A CN 98119494A CN 1251449 A CN1251449 A CN 1251449A
- Authority
- CN
- China
- Prior art keywords
- compression
- algorithm
- lzss
- lzw
- file
- 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
Images
Landscapes
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明属于计算机科学技术中的数据压缩技术领域。主要解决采用现有LZ技术对数据文件进行无损压缩时,LZ77和LZ78对不同类型和长度的数据文件压缩性能上存在的不足。所设计的LZSWH算法具有组合使用LZ77类的LZSS和LZ78类的LZW原理并以参数H决定何时从LZSS转向LZW压缩的技术特征,以对不同数据文件取得合理或最佳的压缩比和压缩速度。象现有的ZIP一样,算法可再加上后编码形成新一代的商用压缩软件。
Description
本发明属于计算机科学技术中的数据压缩技术领域。
数据文件无损压缩现有技术的主流是LZ类压缩算法,即字典压缩算法。LZ压缩算法又分为LZ77算法和LZ78算法两大类,二者都是由Ziv J.和Lempel A.合作,先后于1977年和1978年提出的。近20年来,许多学者一直在对LZ及其实用算法加以不断的改进,文献所见的主要算法有:
1.LZ77算法,Ziv J.和Lempel A.合作于1977年提出。
LZ77算法的字典只依赖于最近有限上下文,算法的压缩比高,实现技术简单,但速度相对LZ78说来比较慢。详见Ziv J.,Lempel A.A Universal Algorithm for SequentialData Compression.IEEE Trans.on Information Theory,1977,23(3)
2.LZSS算法,LZ77类实用数据压缩算法,James Storer和Thomas Szymanski于1982年建立。
LZSS算法采用二分搜索树大大加快了压缩速度,解码时因无须生成和维护树而更为迅速。LZSS又以对不同长度的数据文件均有较高压缩比的LZSS12为代表。LZSS的主要不足是压缩的时间开销仍然比较大。而且随着文件长度的增加,这一点显得越来越严重。LZSS12由于索引和匹配长度都采用固定位长还有另外二个缺点:在待压缩文件较短或压缩刚开始时会浪费编码位长,而在文件较长时又会限制匹配长度,因而不利于压缩比的进一步提高。参见:骆新,陈睿。数据压缩实用技术。北京:学苑出版社,1993.pp48-70;侯阳。数据压缩技术及C语言实例。北京:学苑出版社,1994.pp181-210;钱国祥等。数据压缩技术经典。北京:学苑出版社,1994.pp425-430。
3.LHZ算法或LZHUF算法,LZ77类实用数据压缩算法,采用LZSS为基础再加上Huffman后编码的复合算法。相应商品软件为LHARC。参见:骆新,陈睿。数据压缩实用技术。北京:学苑出版社,1993.pp71-94。
4.LZARI算法,LZ77类实用数据压缩算法,以LZSS为基础再加上算术后编码的复合算法。参见:钱国祥等。数据压缩技术经典。北京:学苑出版社,1994.pp415-425。
5.ZIP算法,非常著名的LZ77类实用数据压缩算法,以LZSS为基础再加上Shannon后编码的复合算法。参见:骆新,陈睿。数据压缩实用技术。北京:学苑出版社,1993.pp95-143和钱国祥等。数据压缩技术经典。北京:学苑出版社,1994.pp425-431。
6.LZFG算法,LZ77类实用数据压缩算法,Fiala和Greene于1989年提出。
LZFG算法试图以LZSS为基础,将LZ77算法和LZ78算法从数据结构上统一起来。即既采用滑动窗口,又采用多叉树状的Trie结构,以期将整个句子直接***字典中,而无须再逐个字符进行匹配。LZFG算法的压缩比高于固定位长的LZSS12,可惜这种方法所需要的数据结构和处理技术过于复杂。算法希望从4096个位置中的任何一个找到最长匹配串,又想解决因此产生的***困难,为此而增设了后继指针,内部节点的孩子计数器域,更新域,叶子循环缓冲器等数据结构,和后继链接、滤过式更新等处理技术。这使得其基本算法A1、A2的压缩速度比LZSS还要慢大约四至七倍。Fiala和Greene为此一方面提出了其折衷算法B1和B2,以降低文件长度在约70KB以前的压缩比6-8%为代价来换取压扩速度的提高;另一方面又提出了进一步提高压缩比的算法C2,只是C2的压缩速度,特别是扩展速度比基本算法还要慢,因而同样影响了它的实用化。详见Fiala,Greene.Data Compression with FiniteWindows.Communications of the ACM.1989,32(4)
7.LZSSCH算法,LZ77类实用数据压缩算法,申请人1998年提出。
算法针对中文文本不同于西文文本的特性,从编码方案、自适应索引扩位和最大索引位长等方面修正LZSS得到,对中西文文本文件的压缩比较LZSS12平均提高了8%。但LZSS类算法时间开销大,压缩长文件时压缩比可能较低的问题依然存在。详见:华强。中文文本压缩的LZSSCH算法。中文信息学报。1998,12(1)
8.LZ78算法,Ziv J.和Lempel A.于1978年提出。
LZ78对LZ77的某些方面作出了改进,其字典可以很大,是依赖于整个被编码的上下文的,字典和匹配长度都无须传递,由解码器自动同步建立和维护。LZ78在理论上的重要性是当输入数据由一静态无噪信源产生时,随着数据大小的增加,压缩趋近于最优化,即能以信源的熵值来编码无限长的串。从理论上来说这是很弱的假设条件,所以LZ78似乎已经解决了数据压缩问题;然而,由于LZ78事实上收敛得相当慢,这种优化实际上要等到数据文件趋近于无限长时才能真正实现。所以,LZ78受欢迎的更为重要的原因是在于它的一些变型能高效率地实现。详见Ziv J.,Lempel A.Compression of Individual Sequences ViaVariable-Rate Coding.IEEE Trans.on Information Theory,1978,24(5)
9.LZW算法,LZ78算法的实用变型,T.Welch于1984年给出。
LZW的压缩速度比LZSS快得多,理论上也再次证明,当输入数据文件是由一稳定的各态经历的码源产生时,LZW算法的压缩效果随着输入文件的增长而渐进地趋近于最佳压缩。LZW的代表是采用从9位开始的可变码位长,最大码位长度为15位的LZW915。LZW的主要问题是自适应速度慢。例如,若符号串“ABCDEFGHI”经常出现,LZW要到它第8次重现时才能使其整个进入字典,第9次才能整体拷贝,而LZSS则只需到符号串第二次重新出现时就可整体拷贝。这使得LZW压缩长度较短文件时的压缩比不如LZSS。详见Terry A.Welsh.A Technique for High-Performance Data Compression.IEEE Computer.June 1984
10.LZY算法,LZ78类数据压缩算法,H.Yokoo于1992年提出。
Yokoo的实验结果表明,对于长度为10KB左右或更短的文本文件,LZW的压缩比大约要比LZSS差20%。因此,Yokoo以LZW为基础来建立LZ77和LZ78的中间算法,我们称之为LZY。Yokoo认为LZW自适应速度较慢的原因在于其串表的生成速度较慢。因此,他设计的算法A2以加速串表的生成来提高压缩比。即若以A表示若干个符号的有限字符集,A*表示所有有限长的串A的集合,大写字母X,Y表示A.中的串,小写字母x,y表示字符,LZY将串表的生成规则从LZW的R1)增加为R1)+R2)。其中R1)为:若串Xy,X∈A*,y∈A,在串表中,则串X也在串表中。R2)为:若串xY,x∈A,Y∈A*,在串表中,则串Y也在串表中。LZY对于固定码位的LZW取得了提高压缩比10-16%的效果。但是串表的过快生成会使字典码表迅速用满而必须提前更新,这又会使得对较长文件的压缩比下降。为此,Yokoo从效率考虑得出了折衷的算法A5,其压缩比的提高下降为7-11%。然而对于变码位长的LZW915来说,串表生成加速的同时也加快了码位的增加。实验表明,算法LZY的压缩比因此反而低于变码位长的LZW915。详见Hidetoshi Yokoo.Improved Variations Relating the Ziv-Lempel andWelch-Type Algorithms for Sequential Data Compression.IEEE Trans.IT.1992,38(1)
11.LZWCH算法,LZ78类实用数据压缩算法,申请人1998年提出。
算法从基本码集、更新策略和哈希函数等方面修正LZW915得到LZWCH算法,LZWCH对中西文文本文件的压缩比较LZW915提高了6-19%。但LZW自适应速度慢,压缩较短文件时压缩比不够高的问题依然存在。详见:华强。中西文文本压缩的LZWCH算法。计算机工程与应用。1999年3月前发表。
主要解决采用现有LZ技术对数据文件进行无损压缩时,LZ77和LZ78对不同类型和长度的数据文件压缩性能上存在的不足。
LZSS的主要不足是压缩的时间开销仍然比较大。而且随着文件长度的增加,这一点显得越来越严重。LZW的压缩速度比LZSS快得多,且其压缩效果随着输入文件的增长而渐进地趋近于最佳压缩。但LZW的主要问题是自适应速度慢。这使得LZW压缩长度较短文件时的压缩比不如LZSS。而以LZ77原理为基础的中间算法LZFG和以LZ78原理为基础的中间算法LZY在实用化上都遇到了困难。其原因在于压缩比和压扩速度之间的内在矛盾,在于对长短不同的数据文件的压缩性能之间的内在矛盾未解决好。LZFG在吸取LZW的变长码等技术上的优点和加大窗口以提高对较长文件压缩比的同时,也使压扩速度变得更为缓慢;而LZY则为加快自适应速度以提高对较短文件的压缩比付出了对较长文件的压缩比下降的代价。
因此,更合理的改进算法可能不是这类以削弱自身优点或加重自身某个缺点来克服或减轻另一个缺点的中间算法,而是在不同阶段充分发挥不同算法长处的组合算法。本申请的目的就是将所设计的这种组合算法转化为商品软件。
所设计的LZSWH算法组合使用LZ77类的LZSS和LZ78类的LZW原理并以参数H决定何时从LZSS转向LZW压缩。以对不同数据文件取得合理或最佳的压缩比和压缩速度。
压缩比有两种不同的表示方法:一种比较直观,以文件在压缩前后字节长度的比值CR(Compression Ratio)表示,本文仍称之为压缩比;另一种以bpB(bits per Byte)为单位,代表每字节源文件压缩后平均要占用的bit数,为区别计,我们称之为压余率P,它的好处是便于与信源的熵值作比较。两者之间的换算关系为:P=8/CR。
LZ类压缩算法在原理上均采用一定的分析规则来寻找数据的再现,然后用特定的码字对再现数据进行编码以实现压缩。
所谓分析(Parsing)是指压缩时对输入信源作串行扫视,每次以最长(LZ77限定最大长度,LZ78不限定)的匹配串作为一个编码单位的行为。
LZ77算法由一个将总长为Ln的有限字符集合A上的符号串分析成Nm个匹配长度为Li(不超出预定整数Ls)的子串的分析规则,和一个将这些子串顺序地映射为可唯一解码的定长Lc码字的编码规则所组成。
LZ78由一个将有限字符集合A(α=|A|)上的符号串Y1 n分析成长度不限的子串的分析规则,和一个将这些子串映射为可唯一解码的码字的编码规则所组成。
由于编码的时间开销很小,压缩的时间开销主要用于进行分析,即在字典中搜索匹配串。因此,压缩速度主要取决于分析速度,而这又取决于字典特别是搜索树的数据结构。搜索和更新树的计算工作量可以用O(Nd)估算,N为源文件的长度,d为树深。由于d可以近似地用LOGαN估算,当N小时,d也不大;但N较大时,LZ77采用的二叉树(α=2)和LZ78采用的多叉树(α=256)的树深将有很大的区别,这正是LZ78的压缩速度大大高于LZ77的原因[9]。因此,如果希望算法具有高的压缩速度,它应更接近LZ78。
当编码长度Lc固定不变时,压余率P决定于平均匹配长度Lm。Lm在压缩开始时为1,之后随着文件长度Ln的增加而上升,从而使压余率P也随之改善。压余率的这种随文件长度增加而改善的性质称为算法的自适应性,改善的速度称为自适应速度。LZ77自适应速度很快,它的偏移加长度的编码方案似乎对压缩文本类数据文件特别有效。由附图1可见,采用LZ78原理的LZW自适应速度要比采用LZ77原理的LZSS缓慢得多。正因为如此,LZW对较短的数据文件的压缩比不如LZSS。
对于变长码的LZ压缩,每次匹配的压余率pi=Lci/Lmi,匹配时间为ti;则总的压余率P1=∑(pi*li)/∑li,压缩时间为Tm=∑ti。设若如图1所示,一开始LZSS的压余率Ps1小于LZW的压余率Pw1,当文件长度达到某个l1后,LZW的压余率Pw2收敛到小于LZSS的压余率Ps2,对于LZSS和LZW我们分别有
Ps=(Ps1*l1+Ps2*l2)/(l1+l2),Tms=Ts1+Ts2
Pw=(Pw1*l1+Pw2*l2)/(l1+l2),Tmw=Tw1+Tw2
如果能将LZSS和LZW组合起来使用,即1)在l1之前使用LZSS,2)在LZSS中也使用变长码,3)在l1之后才使用LZW。这样一来,使之成为LZSW压缩,而有
Psw=(Ps1*l1+Pw2*l2)/(l1+l2),Tmsw=Ts1+Tw2
那么,LZSW的压缩性能将优于LZSS和LZW。
LZSW算法虽然已实现了快速自适应的LZSS和趋向于最优化的LZW之间的组合,但还有三个问题值得进一步考虑。首先,实践表明有些数据文件用LZSS压缩可以取得比用LZW压缩时更大得多的压缩比,也有另外一些数据文件则与此刚好相反,算法应具有足够的灵活性来满足压缩不同类型数据文件的需要;其次,当数据文件需要经常压缩和扩展时,用户将既希望有尽可能高的压缩比,也希望有高的压扩速度,鉴于二者往往是对立的,用户可能希望在更高的压缩速度和更高的压缩比之间可以有一个比较灵活的选择;最后,当压缩的目的更主要是为了节省网络环境中需要支付费用的传输时间时,用户将希望能取得最高的压缩比,而不计较压缩和扩展的时间。为此,我们将算法增加一个可在压缩时按上述不同情况选定的参数H,使之成为LZSWH算法。当然,扩展算法应自动与压缩算法保持一致。
表1是用LZSS12、LZW915、LZSS814以及LZSWH压缩本文的文档和三个插图文件所取得的压余率bpB(bits per Byte)值的比较,LZSWH的压缩效果最好。
表1 几种LZ算法对和几个文档、图形文件的压余率(bpB值)比较
文 件 | 文件长度 | LZSS12 | LZSS814 | LZW915 | LZSWH(H) |
本文文档 | 151,552B | 3.876 | 3.607 | 4.365 | 3.605(h) |
插图文件1 | 16,384B | 2.419 | 2.367 | 2.196 | 2.196(a) |
插图文件2 | 19,456B | 2.396 | 2.366 | 2.379 | 2.269(b) |
插图文件3 | 21,504B | 2.407 | 2.278 | 2.355 | 2.128(b) |
图1表明LZ77类压缩算法LZSS12和LZ78类压缩算法LZW915对不同长度数据文件进行压缩所取得的bpB值,随着文件长度Ln的加大,二种算法的bpB值都会降低。但LZSS12对较短文件的压缩效果往往更好于LZW915,而后者对较长文件有可能取得更佳的压缩效果。
图2是用LZSWH算法压缩一个S类数据文件时,参数H的不同取值与压余率和压缩时间的实测关系曲线。由图可见:H越大,压余率越小,压缩时间越长。为此,要取得最高压缩比,可选H=z作全LZSS压缩。而如果愿意适当减少压缩比来换取速度的提高,可根据具体情况减小H。如图2所示,减小H时压缩速度总是上升的,但当H小于一定值后,压余率开始有较大的增加。因此,对S类数据文件H值不宜取得太小,否则压余率P太大。字符界面的纯文本文件、源程序文件、可执行文件大多属于S类数据文件。
相反,对W类数据文件H值则不宜取得太大。图3是用LZSWH算法压缩一个W类数据文件时,参数H的不同取值与压余率和压缩时间的实测关系曲线。由图可见:H有一个最佳取值,这时候的压余率P最小。根据实验,图1中的交叉点若存在则大约位于被压缩文件长度的一半处。例如,长度为200KB左右的数据文件,H若有最佳值则大约为g或h。而如果愿意适当减少压缩比来换取速度的提高,可从该处开始根据具体情况减小H值。如图中的情况所表明的,当H大于最佳值时,压余率反而会增加。当然,要真正取得最高压缩比,必须进行必要的测试以选择适当的H值。图形界面的文档文件、图象图形文件、超文本文件大多属于W类数据文件。
1。LZSW算法
先将LZW的变长码技术引入LZSS12,使之改造成为LZSS814,即开始压缩时索引位为8位,并随着输入文件的长度逐步增加,最大可增加到14位索引。匹配长度位仍固定取4位不变。我们以LZSS814和LZW915为基础来构建这一组合算法LZSW。算法先使用LZSS814压缩,以充分利用其自适应速度快,对短文件和文件开始时压缩性能高的优点;待被压缩文件超过一定长度后再改用LZW915压缩,直到文件结束。由于改用LZW算法压缩时已经可以利用从前面LZSS窗口字典转换过来的LZW多叉树字典,这就跳过了LZW的低压缩比阶段,使LZW后期高压缩比的优点得以充分发挥出来,甚至于得到进一步的提高:另一方面,前期用LZSS方式压缩的窗口大小仅为十几KB,这既使得进行LZSS压缩所需的时间不长,也使得字典转换只需很短的时间,保持了算法的高速性和实时性。
算法的关键在于字典转换技术。首先,让两种算法采用相同的字典结构:
struct dictionary{ /*S-W两用字典结构*/
int larger_codevalue; /*大儿_码值*/
int parent_stringcode; /*双亲_串码*/
int small_character; /*小儿_新加字符*/
}*dict[TABLE_BANKS];
#define DICT(i)dict[i>>8][i & Oxff]。
然后,在作LZSS压缩的同时,用一个数组记录从每一个窗口位置起的最大匹配长度。这样一来,要转换为LZW压缩码树就非常方便:只要在窗口已满而文件尚未结束时,先重新初始化共用字典,然后从窗口的每一个最大匹配长度大于2的位置起,根据其最大匹配长度作LZW字典生成,即按照
DICT(index).larger_codevalue=next_code++;
DICT(index).parent_stringcode=string_code;
DICT(index).small_character=character;改写字典内容,即可将LZSS窗口内容转化为LZW树。前以述及,由于窗口不大,特别是无须再做一次贪婪匹配,转换的时间开销很小。扩展时码树的转换是类似的。
由于LZW收敛很慢,LZSS窗口大小在几KB甚至100KB之前时,窗口越大,分析率越高,bpB值越小。如果纯粹从提高压缩比考虑,窗口大小应以尽可能大为佳。但一来窗口越大会使分析速度越慢;二来因为要准备转换到LZW,窗口大了转换时间也会延长。总之,太大的窗口会使压缩速度大大下降,所以LZSW的窗口大小取为16KB,LZSS压缩的单位编码长度为13-19位(依当前索引位长)或9位,根据匹配长度是否大于临界值而定。
2.带参数H的压缩算法LZSWH
H是LZSS窗口滑动回到原位置的次数。H的取值可以从’a’到’z’,并在压缩时自动加到位文件前面作为第一个码字,以供扩展时识别和同步。H取’a’时,完全作LZW压缩,这种情形下的压缩速度最快。H取’b’时,文件长度在16KB以内采用LZSS压缩,之后改用LZW压缩,压缩比将高于LZW。随着H取值的加大,LZSS压缩的比重就越来越大,压缩比一般来说也会进一步提高,而速度则会有所减慢。这是因为,尽管由于采用了滑动窗口,LZSS的搜索时间开销和从LZSS到LZW的转换时间开销不会随着H的增加而增大,但LZSS的压缩速度毕竟低于LZW。当H的取值使得LZSS压缩的长度超出图1中的交叉点时,压缩比将不再增加,在这一点附近取得最佳的压余率。参数H取到’z’时,算法将完全采用LZSS压缩。
不同数据文件采用LZSS或LZW压缩时的效果有时候区别很大,这是因为LZW的收敛速度还与数据文件本身有关。例如,具有较多长匹配串等特点的一类数据文件可能更适合于采用LZW压缩(至于是否文本文件只要均以字节为处理单位即可不加区分),我们称这类LZW收敛速度快的数据文件为W类数据文件,并将其他数据文件归类为S类数据文件。LZSWH算法的压缩性能与参数H的选择之间的关系对这两类数据文件是不同的。LZSWH算法具有极好的适应性来满足不同类型数据文件和压缩时的不同需要:既可让H取‘a’作全LZW压缩,或取‘z’作全LZSS压缩;又可在‘a’和‘z’之间进行灵活的选择,以取得更高的压缩比和/或更高的压缩速度;还可以根据需要和可能采用优化选择来取得最高的压缩比。扩展算法将自动与之同步。
3.象现有的ZIP一样,算法可再加上后编码形成新一代的商用压缩软件。
Claims (2)
1.在同一压缩算法中组合使用LZ77和LZ78两种原理,并根据参数的选择来确定何时从LZ77类的LZSS算法转为LZ78类的LZW算法。
LZ算法用于无损压缩多种数据文件。它分为LZ77算法和LZ78算法两大类。
LZ77算法的字典只依赖于最近有限上下文,算法的压缩比高,但速度相对LZ78说来比较慢。1982年,James Storer和Thomas Szymanski建立了LZ77的实用算法LZSS,采用二分搜索树大大加快了压缩速度,解码时因无须生成和维护树而更为迅速。采用LZSS为基础再加上Huffman后编码的复合算法LHZ及相应产品LHARC,和以LZSS为基础再加上Shannon后编码的复合算法ZIP都是非常著名的实用数据压缩算法。LZSS的主要不足是压缩的时间开销仍然比较大。而且随着文件长度的增加,这一点显得越来越严重。
Fiala和Greene于1989年提出了LZFG算法,试图以LZSS为基础,将LZ77算法和LZ78算法从数据结构上统一起来。即既采用滑动窗口,又采用多叉树状的Trie结构,以期将整个句子直接***字典中,而无须再逐个字符进行匹配。LZFG算法所需要的数据结构和处理技术过于复杂,其压缩速度比LZSS还要慢大约四至七倍,因而影响了它的实用化。
LZ78对LZ77的某些方面作出了改进,其字典可以很大,是依赖于整个被编码的上下文的,字典和匹配长度都无须传递,由解码器自动同步建立和维护。LZ78在理论上的重要性是当输入数据由一静态无噪信源产生时,随着数据大小的增加,压缩趋近于最优化,即能以信源的熵值来编码无限长的串。从理论上来说这是很弱的假设条件,所以LZ78似乎已经解决了数据压缩问题;然而,由于LZ78事实上收敛得相当慢,这种优化实际上要等到数据文件趋近于无限长时才能真正实现。所以,LZ78受欢迎的更为重要的原因是在于它的一些变型能高效率地实现。1984年,T.Welch给出了LZ78算法的实用变型LZW。它的压缩速度比LZSS快得多。LZW的主要问题是自适应速度慢,这使得LZW压缩长度较短文件时的压缩比不如LZSS。
1992年,Yokoo以LZW为基础采用加快串表生成的方法建立了LZ77和LZ78的中间算法LZY。但是串表的过快生成会使字典码表迅速用满而必须提前更新,这又会使得对较长文件的压缩比下降。
以LZ77原理为基础的中间算法LZFG和以LZ78原理为基础的中间算法LZY在实用化上都遇到了困难。其原因在于压缩比和压扩速度之间的内在矛盾,在于对长短不同的数据文件的压缩性能之间的内在矛盾未解决好。因此,更合理的改进算法可能不是这类以削弱自身优点或加重自身某个缺点来克服或减轻另一个缺点的中间算法,而是在不同阶段充分发挥不同算法长处的组合算法。
将LZW的变长码技术引入LZSS12,使之改造成为LZSS814,即开始压缩时索引位为8位,并随着输入文件的长度逐步增加,最大可增加到14位索引。匹配长度位仍固定取4位不变。以LZSS814和LZW915为基础来构建这一组合算法LZSW。
算法先使用LZSS814压缩,以充分利用其自适应速度快,对短文件和文件开始时压缩性能高的优点;待被压缩文件超过一定长度后再改用LZW915压缩,直到文件结束。由于改用LZW算法压缩时已经可以利用从前面LZSS窗口字典转换过来的LZW多叉树字典,这就跳过了LZW的低压缩比阶段,使LZW后期高压缩比的优点得以充分发挥出来,甚至于得到进一步的提高;另一方面,前期用LZSS方式压缩的窗口大小仅为十几KB,这既使得进行LZSS压缩所需的时间不长,也使得字典转换只需很短的时间,保持了算法的高速性和实时性。
再将算法增加一个可在压缩时按不同情况选定的参数H,使之成为LZSWH算法。H是LZSS窗口滑动回到原位置的次数。H的取值可以从’a’到’z’,并在压缩时自动加到位文件前面作为第一个码字,以供扩展时识别和同步。H取’a’时,完全作LZW压缩,这种情形下的压缩速度最快。H取值向后推N个字符,文件长度在N*16KB以内采用LZSS压缩,之后改用LZW压缩。随着H取值的加大,LZSS压缩的比重就越来越大,压缩比一般来说也会进一步提高,而速度则会有所减慢。这是因为,尽管由于采用了滑动窗口,LZSS的搜索时间开销和从LZSS到LZW的转换时间开销不会随着H的增加而增大,但LZSS的压缩速度毕竟低于LZW。当H的取值使得LZSS压缩的长度超出某一点时,压缩比将不再增加,在这一点附近取得最佳的压余率。参数H取到’z’或N*16KB超出文件长度时,算法将完全采用LZSS压缩。
2.在同一压缩算法中组合使用LZ77和LZ78两种原理,并根据参数的选择来确定何时
从LZ77类的LZSS算法转为LZ78类的LZW算法。
采用本申请的独立权利要求为基础再加上Huffman、Shannon或其他后编码方法组成复合算法及其相应数据压缩软件产品。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 98119494 CN1251449A (zh) | 1998-10-18 | 1998-10-18 | 两类字典压缩算法在数据压缩中的组合带参运用 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 98119494 CN1251449A (zh) | 1998-10-18 | 1998-10-18 | 两类字典压缩算法在数据压缩中的组合带参运用 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1251449A true CN1251449A (zh) | 2000-04-26 |
Family
ID=5226397
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 98119494 Pending CN1251449A (zh) | 1998-10-18 | 1998-10-18 | 两类字典压缩算法在数据压缩中的组合带参运用 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1251449A (zh) |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1316748C (zh) * | 2000-11-16 | 2007-05-16 | 艾利森电话股份有限公司 | 使用请求-应答通信模式用于数据压缩的通信***和方法 |
CN100343851C (zh) * | 2004-11-03 | 2007-10-17 | 北京神舟航天软件技术有限公司 | 数据库压缩及解压缩方法 |
CN100385437C (zh) * | 2005-11-10 | 2008-04-30 | 浙江中控技术股份有限公司 | 实时数据压缩方法 |
CN100430943C (zh) * | 2006-01-09 | 2008-11-05 | 中国科学院自动化研究所 | 一种过程工业历史数据智能两级压缩方法 |
CN102323977A (zh) * | 2011-06-29 | 2012-01-18 | 无锡市吉天通信科技有限公司 | 基于心电特征点的心电数据存储方法 |
CN103197924A (zh) * | 2012-01-06 | 2013-07-10 | 国际商业机器公司 | 用于实时选择压缩操作的方法和*** |
CN101610088B (zh) * | 2008-06-17 | 2013-07-24 | 香港科技大学 | 基于具有安全特性的压缩技术来编码数据的***和方法 |
CN104156990A (zh) * | 2014-07-03 | 2014-11-19 | 华南理工大学 | 一种支持特大型数据窗口的无损压缩编码方法及*** |
CN104348490A (zh) * | 2014-11-14 | 2015-02-11 | 北京东方国信科技股份有限公司 | 一种基于效果优选的组合数据压缩算法 |
CN104620555A (zh) * | 2012-09-14 | 2015-05-13 | 高通股份有限公司 | 用于保护消息数据的设备和方法 |
CN107065687A (zh) * | 2017-05-26 | 2017-08-18 | 西安工程大学 | 基于lzhuf的嵌入式针织***控制数据压缩方法 |
WO2020077625A1 (zh) * | 2018-10-19 | 2020-04-23 | 深圳市汇顶科技股份有限公司 | 数据处理方法及装置 |
CN112514270A (zh) * | 2018-06-06 | 2021-03-16 | 吴英全 | 数据压缩 |
CN116600132A (zh) * | 2023-07-19 | 2023-08-15 | 华洋通信科技股份有限公司 | 一种煤矿视频数据自适应压缩方法 |
CN117195005A (zh) * | 2023-11-03 | 2023-12-08 | 山东四季车网络科技有限公司 | 基于智慧洗车的信息数据管理*** |
-
1998
- 1998-10-18 CN CN 98119494 patent/CN1251449A/zh active Pending
Cited By (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1316748C (zh) * | 2000-11-16 | 2007-05-16 | 艾利森电话股份有限公司 | 使用请求-应答通信模式用于数据压缩的通信***和方法 |
CN100343851C (zh) * | 2004-11-03 | 2007-10-17 | 北京神舟航天软件技术有限公司 | 数据库压缩及解压缩方法 |
CN100385437C (zh) * | 2005-11-10 | 2008-04-30 | 浙江中控技术股份有限公司 | 实时数据压缩方法 |
CN100430943C (zh) * | 2006-01-09 | 2008-11-05 | 中国科学院自动化研究所 | 一种过程工业历史数据智能两级压缩方法 |
CN101610088B (zh) * | 2008-06-17 | 2013-07-24 | 香港科技大学 | 基于具有安全特性的压缩技术来编码数据的***和方法 |
CN102323977A (zh) * | 2011-06-29 | 2012-01-18 | 无锡市吉天通信科技有限公司 | 基于心电特征点的心电数据存储方法 |
CN102323977B (zh) * | 2011-06-29 | 2014-04-30 | 无锡市吉天通信科技有限公司 | 基于心电特征点的心电数据存储方法 |
CN103197924A (zh) * | 2012-01-06 | 2013-07-10 | 国际商业机器公司 | 用于实时选择压缩操作的方法和*** |
CN103197924B (zh) * | 2012-01-06 | 2017-08-15 | 国际商业机器公司 | 用于实时选择压缩操作的方法和*** |
CN104620555A (zh) * | 2012-09-14 | 2015-05-13 | 高通股份有限公司 | 用于保护消息数据的设备和方法 |
CN104156990A (zh) * | 2014-07-03 | 2014-11-19 | 华南理工大学 | 一种支持特大型数据窗口的无损压缩编码方法及*** |
CN104156990B (zh) * | 2014-07-03 | 2018-02-27 | 华南理工大学 | 一种支持特大型数据窗口的无损压缩编码方法及*** |
CN104348490A (zh) * | 2014-11-14 | 2015-02-11 | 北京东方国信科技股份有限公司 | 一种基于效果优选的组合数据压缩算法 |
CN104348490B (zh) * | 2014-11-14 | 2017-09-19 | 北京东方国信科技股份有限公司 | 一种基于效果优选的组合数据压缩方法 |
CN107065687A (zh) * | 2017-05-26 | 2017-08-18 | 西安工程大学 | 基于lzhuf的嵌入式针织***控制数据压缩方法 |
CN112514270A (zh) * | 2018-06-06 | 2021-03-16 | 吴英全 | 数据压缩 |
CN112514270B (zh) * | 2018-06-06 | 2022-09-13 | 吴英全 | 数据压缩 |
WO2020077625A1 (zh) * | 2018-10-19 | 2020-04-23 | 深圳市汇顶科技股份有限公司 | 数据处理方法及装置 |
CN116600132A (zh) * | 2023-07-19 | 2023-08-15 | 华洋通信科技股份有限公司 | 一种煤矿视频数据自适应压缩方法 |
CN116600132B (zh) * | 2023-07-19 | 2023-10-31 | 华洋通信科技股份有限公司 | 一种煤矿视频数据自适应压缩方法 |
CN117195005A (zh) * | 2023-11-03 | 2023-12-08 | 山东四季车网络科技有限公司 | 基于智慧洗车的信息数据管理*** |
CN117195005B (zh) * | 2023-11-03 | 2024-01-26 | 山东四季车网络科技有限公司 | 基于智慧洗车的信息数据管理*** |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CA2324608C (en) | Adaptive packet compression apparatus and method | |
CN1251449A (zh) | 两类字典压缩算法在数据压缩中的组合带参运用 | |
EP1803225A1 (en) | Adaptive compression scheme | |
Bhattacharjee et al. | Comparison study of lossless data compression algorithms for text data | |
CN106407285A (zh) | 一种基于rle和lzw的优化比特文件压缩与解压缩方法 | |
JP3083730B2 (ja) | データ情報を圧縮するためのシステムおよび方法 | |
CN110021369B (zh) | 基因测序数据压缩解压方法、***及计算机可读介质 | |
Al-Bahadili et al. | An adaptive character wordlength algorithm for data compression | |
Ni et al. | Incremental updates based on graph theory for consumer electronic devices | |
CN104682966B (zh) | 列表数据的无损压缩方法 | |
CN110021349B (zh) | 基因数据的编码方法 | |
Mbewe et al. | Analysis and comparison of adaptive huffman coding and arithmetic coding algorithms | |
Jrai et al. | Improving LZW Compression of Unicode Arabic Text Using Multi-Level Encoding and a Variable-Length Phrase Code | |
Rajput et al. | Comparative Study of Data Compression Techniques | |
Shuai et al. | Comparison of compression algorithms on vehicle communications system | |
Ong et al. | A data compression scheme for Chinese text files using Huffman coding and a two-level dictionary | |
Islam et al. | A Dynamic 5 Bit Data Compression Scheme by Using Set Change Table (5BDC) | |
Lin et al. | Cocv: A compression algorithm for time-series data with continuous constant values in IoT-based monitoring systems | |
Mahmood et al. | An Efficient Text Database Compression Technique using 6 Bit Character Encoding by Table Look Up | |
Huang et al. | Lossless compression algorithm for multi-source sensor data research | |
Begum et al. | An efficient text compression for massive volume of data | |
CN115955250B (zh) | 一种高校科研数据采集管理*** | |
Skibiński et al. | A highly efficient XML compression scheme for the web | |
Mahmoudi et al. | Comparison of Compression Algorithms in text data for Data Mining | |
Klein et al. | Parallel Lempel Ziv Coding |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |