Algorithm 哪种算法最适合Burrows-Wheeler变换?
似乎许多实现BWT的压缩器将其与算术编码或哈夫曼编码结合使用。(请随意提名更多,特别是如果他们更好的话。) 我的第一个问题是:为什么像LZW或LZSS这样的字典编码器在BWT中使用会更糟糕 我的第二个问题是:哪一个是最好的全方位算法Algorithm 哪种算法最适合Burrows-Wheeler变换?,algorithm,compression,burrows-wheeler-transform,Algorithm,Compression,Burrows Wheeler Transform,似乎许多实现BWT的压缩器将其与算术编码或哈夫曼编码结合使用。(请随意提名更多,特别是如果他们更好的话。) 我的第一个问题是:为什么像LZW或LZSS这样的字典编码器在BWT中使用会更糟糕 我的第二个问题是:哪一个是最好的全方位算法 BWT使用所有大小的上下文,而实际的LZ实现很难使用小于3的上下文 BWT从块内的每个匹配中获益,而普通LZ实现仅在前瞻窗口中查找匹配 但在许多情况下,LZ并不是一个更糟糕的选择。LZ是一种在线算法,可以处理流,而BWT必须处理大数据块,并且需要大量内存。LZ的减压
PS/如果您正在编写一个基于BWT的压缩器,请更多地注意编码BWT的输出,而不是BWT本身,因为BWT转换有许多实用的LIB,并且大多数LIB共享相同的接口。只需在项目中使用其中一种算法。对于每种类型的数据和每台计算机,都没有最好的算法。这在很大程度上取决于被压缩的数据,取决于计算机有多少RAM,取决于CPU缓存的大小以及其他一些因素。回答得好!无额外内存的线性时间SA构造的最新算法是SACA-K: