Construções de árvore de sufixo em tempo linear conceitualmente simples

13

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?

Randomblue
fonte
4
Farach et el 1998. Acho que este é um bom lugar para começar a ler: scholar.google.co.uk/…
Radu GRIGore

Respostas:

9

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.

O(1)

O(nlgn)

zotachidil
fonte
1
Você poderia indicar um caminho para a maneira mais fácil de criar matrizes de sufixos no tempo O (N lg N)?
Randomblue
1
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
zotachidil
7

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.

Juho
fonte