RAY压缩是综合统计和字典方法,针对数据库的压缩算法,该方法有较高的压缩比。该方法的基本思想是:首先,对源数据流中的连字(就是相邻的两个字节)进行统频,将频率最高的连字用一个新的字符代替,那么这个字符和连字构成一个规则,重复上面的操作,直到连字频率小到某一个阈值。下面用一个例子来说明RAY的压缩流程。
RAY压缩示例:
对字符序列rubdubrubdub进行操作
连字频率 初始化语法 候选规则 语法结果
……………………………………………………………………………………………………
ru:2,ub:4,bd:2,du:2,br:1 1->rubdubrubdub ub:4 1->r2d2r2d2
2->ub……………………………………………………………………………………………………
r2:2,2d:2,d2:2,2r:1 1->r2d2r2d2 r2:2,d2:2 1->3434
2->ub 2->ub;
3->r2
4->d2
……………………………………………………………………………………………………34:2,43:1 1->3434 34:2 1->55
2->ub 2->ub
3->r2;4->d2 5->r2d2 ……………………………………………………………………………………………………
55:1 1->55 1->55
2->ub 2->ub
5->r2d2 5->r2d2
……………………………………………………………………………………………………
根据语法规则,对源数据流进行替换后,再对语法规则进行Huffman或Shannon-Fano编码,附加在压缩数据流后面。
这里为了简单,直接将语法规则附加在压缩数据流后面,不进行编码。rubdubrubdub压缩后是什么呢?
如果是552ub5r2d2,那如何解压呢?怎么知道哪是规则那是数据?还有所谓的RAY-Period 算法是什么东西?有做过的讲两句吗?
RAY压缩示例:
对字符序列rubdubrubdub进行操作
连字频率 初始化语法 候选规则 语法结果
……………………………………………………………………………………………………
ru:2,ub:4,bd:2,du:2,br:1 1->rubdubrubdub ub:4 1->r2d2r2d2
2->ub……………………………………………………………………………………………………
r2:2,2d:2,d2:2,2r:1 1->r2d2r2d2 r2:2,d2:2 1->3434
2->ub 2->ub;
3->r2
4->d2
……………………………………………………………………………………………………34:2,43:1 1->3434 34:2 1->55
2->ub 2->ub
3->r2;4->d2 5->r2d2 ……………………………………………………………………………………………………
55:1 1->55 1->55
2->ub 2->ub
5->r2d2 5->r2d2
……………………………………………………………………………………………………
根据语法规则,对源数据流进行替换后,再对语法规则进行Huffman或Shannon-Fano编码,附加在压缩数据流后面。
这里为了简单,直接将语法规则附加在压缩数据流后面,不进行编码。rubdubrubdub压缩后是什么呢?
如果是552ub5r2d2,那如何解压呢?怎么知道哪是规则那是数据?还有所谓的RAY-Period 算法是什么东西?有做过的讲两句吗?
=======好象是矢量压缩算法