BWT довольно прост в реализации, но его слабость в том, что он становится медленнее по мере того, как сжимаемые данные становятся больше.
Я провел небольшой анализ этого алгоритма, и в результате получается (поправьте меня, если я ошибаюсь) в худшем случае требуется O (n ^ 2), но в лучшем случае может достичь постоянного времени.
Оказывается, что время, затрачиваемое на BWT, - это когдасортировка вращаемых строк.Улучшение сортировки в наши дни кажется горячей проблемой для тех, кто любит играть с алгоритмами.: -)
Хорошо, когда вы кодируете данные, используя BWT, первое, что вы должны сделать, это поместить уникальный символ в данные.Он используется, чтобы сообщить кодировщику, что он завершил процесс сортировки, когда находит этот символ.Например: скажем, что вы хотите сжать строку «BANANA» и шаги:
BANANA $ ANANA $ B NANA $ BA ANA $ BAN NA $ BANA A $ BANAN $ BANANA
Поворотstrings: $ BANANA
Сортировка строки с уникальным символом (EOF), например "$ BANANA", будет быстрее, чем без использования какого-либо уникального символа.
Я опубликовал плохую статью оэтот алгоритм ...
http://philipstel.wordpress.com/2010/02/10/discussion-of-burrows-wheeler-transform-algorithm/