Construções de árvore de sufixo em tempo linear conceitualmente simples
Em 1973, Weiner deu a primeira construção em tempo linear de árvores com sufixo. O algoritmo foi simplificado em 1976 por McCreight e em 1995 por Ukkonen. No entanto, acho o algoritmo de Ukkonen relativamente envolvido conceitualmente.
Houve simplificações no algoritmo de Ukkonen desde 1995?
Farach et el 1998. Acho que este é um bom lugar para começar a ler: scholar.google.co.uk/…
Não tenho certeza se houve novos resultados simplificando diretamente a construção de árvores com sufixo. No entanto, houve pelo menos um resultado fornecendo um algoritmo muito simples para a construção de matrizes de sufixos em tempo linear.
Você poderia indicar um caminho para a maneira mais fácil de criar matrizes de sufixos no tempo O (N lg N)?
Rotule todos os sufixos de comprimento 2 ^ k com um número inteiro, de modo que os rótulos correspondam à relação de ordem entre os sufixos. O primeiro passo (k = 0) é óbvio. Para calcular os rótulos na etapa k, use os rótulos da etapa k-1 e faça uma classificação de raiz. Este documento deve ser fácil de entender: webglimpse.net/pubs/suffix.pdf
Além do que foi mencionado ( Kärkkäinen & Sanders, 2003 ), acho que você apreciaria a versão "mais recente" de Kärkkäinen, Sanders e Burkhard, 2006 . O algoritmo basicamente segue a estrutura do algoritmo de Farach. É sem dúvida conceitualmente mais simples, mas o verdadeiro bônus é que eles fornecem ao leitor uma implementação do algoritmo. São apenas cerca de 50 linhas de C ++, portanto não há detalhes ocultos.