La transformada de Burrows-Wheeler (BWT) reordena los caracteres de una cadena agrupándolos por contexto y, aunque suele presentarse como un único algoritmo, en realidad existen dos variantes con diferencias prácticas relevantes: la BWT por rotaciones cíclicas y la BWT por sufijos.
La BWT por rotaciones cíclicas genera todas las rotaciones de la cadena de entrada, las ordena lexicográficamente y toma el carácter anterior a cada rotación. Su decodificación es sencilla: basta con ordenar la salida para reconstruir la primera columna de la tabla de rotaciones y saltar entre caracteres con ayuda de un conteo por símbolo. El resultado se recupera salvo por una rotación, que puede corregirse transmitiendo el desplazamiento original. La principal limitación es la codificación, ya que no existen algoritmos lineales eficientes para ordenar rotaciones cíclicas en la literatura.
La BWT por sufijos, en cambio, ordena los sufijos de la cadena en vez de sus rotaciones. Esto permite apoyarse en algoritmos maduros de ordenación de sufijos como SA-IS, que sí es lineal y está implementado en bibliotecas como libsais. A cambio, la decodificación es algo más delicada: hay que compensar el sufijo vacío desplazando cada índice una posición, y descender los índices cuando aparece el lugar que ocuparía el sufijo completo, lo que obliga a transmitir esa frontera al decodificador.
Cuando los alfabetos están llenos o se requiere específicamente BWT cíclica, puede simularse su semántica duplicando la cadena (al coste de duplicar memoria) o bien tomando la rotación canónica más pequeña con el algoritmo de Duval y trabajando sobre sufijos, ajustando después el índice primario. En términos prácticos, la BWT por sufijos resulta más rápida de codificar y más sencilla de implementar, mientras que la decodificación es solo ligeramente más costosa, razones por las que se usa de forma mayoritaria a pesar de sus matices.
