Mespotine-RLE-basic v0.9 - 一种降低开销且改进的游程编码方法
数据结构与算法
2015-01-23 v1 信息论
math.IT
摘要
游程编码 (Run Length Encoding, RLE) 是最古老的数据压缩算法之一,该方法用于将大数据压缩为更小且更紧凑的数据。它通过查找数据中连续重复的相同字符,并存储重复次数(称为 run)及相应字符(称为 run_value)作为目标数据来实现压缩。不幸的是,它仅在严格和特殊的情况下有效进行压缩。在这些情况之外,它会增加数据大小,在最坏情况下甚至使数据大小相较于原始未处理数据翻倍。在本文中,我们将讨论对 RLE 的修改,通过这些修改,我们仅存储那些实际可压缩字符的 run,从而消除大量无用数据,例如那些原本就不可压缩字符的 run。这将通过先存储字符再存储 run 来实现。此外,我们创建一个包含 256 个位置(对应每个可能的 ASCII 字符)的位列表,用于存储特定 (ASCII-) 字符是否可压缩(1 表示可压缩,0 表示不可压缩)。利用该列表,我们现在可以判断:若字符可压缩,则存储 [字符]+[其 run];若不可压缩,则仅存储 [字符],且下一个字符不是 run 而是随后的字符。利用该列表,我们还可以成功解码数据(若字符可压缩,则下一个字符是 run;若不可压缩,则下一个字符是普通字符)。借此,我们仅对那些原本就可压缩的字符存储 run。事实上,在最坏情况场景下,编码后的数据产生的开销始终仅为位列表本身的大小。对于包含 256 个不同字符(即 ASCII)的字母表,无论原始数据有多大,该开销最大仅为 32 字节。[...]
引用
@article{arxiv.1501.05542,
title = {Mespotine-RLE-basic v0.9 - An overhead-reduced and improved Run-Length-Encoding Method},
author = {Meo Mespotine},
journal= {arXiv preprint arXiv:1501.05542},
year = {2015}
}
备注
16 pages and algorithm-flowcharts