AIMCS 的与其它压缩算法的比较
作者使用 AIMCS 和其它的压缩方法分别压缩一组 ASCII 编码和 Unicode 编码的短文本。这些短文本是在没有任何过滤的情况下从英语、阿拉伯语以及波斯语的 Twitter 和短文本消息中提取的。
- 为什么使用不同语言来进行实验呢? 那是因为每种语言都有自己的熵,而熵直接影响了压缩比。
在运行时间和压缩比方面,分别比较了 AIMCS 和 LZW 与 Huffman 压缩方法的性能。结果在下面的表中。
实验一:压缩英语字符串(ASCII)得到的结果
语言 | 类型 | 算法 | 原始大小(Bytes) | 压缩比(%) | 运行时间(min) |
English | SMS | LZW | 80904070 | 85.60 | 5.43 |
English | SMS | AIMCS | 80904070 | 77.81 | 16.3 |
English | Twitter | LZW | 584630 | 86.79 | 0.04 |
English | Twitter | AIMCS | 584630 | 84.31 | 0.13 |
由上表可知:
- LZW 算法在压缩英文文本的速度要比其它讨论的算法更快
- AIMCS 在压缩英文文本的压缩比其它讨论的算法要低
可以看到,在压缩相同大小的 SMS 和 Twitter 英文文本时,LZW 算法分别以 5.43分和 0.04分的时间快于 AIMCS 的 16.3分和0.13分;
但从压缩比来看,AIMCS 在压缩 SMS 和 Twitter 的英文文本时的压缩比分别是 77.81% 与 84.31% ,要远低于 LZW 压缩这两种文本的压缩比 85.60% 与 86.79%。
实验二:压缩阿拉伯和波斯语字符串(Unicode)得到的结果
语言 | 算法 | 原始大小(Bytes) | 压缩比(%) | 运行时间(s) |
Persian | Huffman | 3243550 | 67.55 | 32.56 |
Persian | AIMCS | 3243550 | 58.82 | 35.37 |
Arabic | Huffman | 265156 | 68.34 | 1.92 |
Arabic | AIMCS | 265156 | 54.93 | 2.23 |
由上表知:
- 在几乎相同的运行时间内,AIMCS 的压缩比要明显低于 LZW 算法的压缩比。
可以看到,在压缩相同大小的文本时,AIMCS 压缩比要比 Huffman 低 8.73% 与 13.41%,极大地降低了传输文本的时间和成本。
实验三:一段时间内压缩900万条推文的压缩比
上图描述了 AIMCS 在压缩大量 tweet 的性能。
- 可以看到,随着消息数量的增加,AIMCS 在压缩 tweet 的压缩比会降低,压缩性能会更好。
结果分析
- AIMCS 一开始对之前的数据没有足够的了解,没有建立足够大的字典,AIMCS 可能会因此无法预测之后会出现的字符串。随着字典中条目数量的增加,可以检测字符的种类和重复频率。因此随着时间的推移,AIMCS 将会提供更好的性能。
- 为了核对偏移现象(drift phenomenon),将会把预测的字符的数量发送给接收者。如果预测的字符的数量是准确的,一个积极的分数将会被考虑,否则将考虑消极的分数。
- AIMCS 独立于语言和语法,可以用于压缩任何具有语法结构的语言。另外,AIMCS 是通过压缩数据流来进行压缩的,所以词法错误并不会影响 AIMCS 的性能。
实验总结
由于以上优点,AIMCS 也适用于基于雾计算(fog computing)的方法。
在物联网(IoT)的场景中,许多计算能力有限的小型智能设备需要不断产生极短字符串(tiny strings)的数据,并通过互联网将其发送到远程服务器上进行处理。在这些场景中,生成的原始数据将会由一个名为 Fog Server 的实体进行压缩,该实体位于产生数据的节点和远程服务器之间,以减少 Internet 流量。
此外,AIMCS也有一些缺点,AIMCS 不太适合字符数量多、重复字符数量少的语言文本压缩。其次,AIMCS 不适合压缩文本以外的数据,因为AIMCS 设计时的压缩单元是一个字符,压缩其它图像、音频等其它数据,这些数据包含很多与文本压缩不同的参数,这使得 AIMCS 需要在发送端进行大量计算,将会大大减少压缩效率。