Costruzioni di alberi di suffisso a tempo lineare concettualmente semplici


13

Nel 1973 Weiner diede la prima costruzione lineare di suffissi. L'algoritmo è stato semplificato nel 1976 da McCreight e nel 1995 da Ukkonen. Tuttavia, trovo che l'algoritmo di Ukkonen sia relativamente coinvolto concettualmente.

Ci sono state semplificazioni dell'algoritmo di Ukkonen dal 1995?


4
Farach et el 1998. Penso che questo sia un buon posto per iniziare a leggere: scholar.google.co.uk/…
Radu GRIGore,

Risposte:


9

Non sono sicuro che ci siano stati nuovi risultati che hanno semplificato direttamente la costruzione di alberi di suffisso. Tuttavia, c'è stato almeno un risultato che ha dato un algoritmo molto semplice per costruire array di suffissi in tempo lineare.

Si noti che esiste più di un'equivalenza concettuale tra queste due strutture di dati, poiché è possibile utilizzare un array di suffissi (con per l'interrogazione del prefisso comune più lungo) per creare un albero di suffissi equivalente. Questo dovrebbe essere un esercizio relativamente semplice, ma posso fornire ulteriori dettagli se necessario.O(1)

O(nlgn)


1
Potresti dare un puntatore al modo più semplice per costruire array di suffissi in O (N lg N) tempo?
Randomblue,

1
Etichettare tutti i suffissi di lunghezza 2 ^ k con un numero intero tale che le etichette corrispondano alla relazione dell'ordine tra i suffissi. Il primo passo (k = 0) è ovvio. Per calcolare le etichette al passaggio k, utilizzare le etichette dal passaggio k-1 ed eseguire un ordinamento radix. Questo documento dovrebbe essere facile da capire: webglimpse.net/pubs/suffix.pdf
zotachidil

7

Oltre a quanto menzionato ( Kärkkäinen & Sanders, 2003 ), penso che apprezzereste la versione "più recente" di Kärkkäinen, Sanders e Burkhard, 2006 . L'algoritmo segue sostanzialmente la struttura dell'algoritmo di Farach. È discutibilmente più semplice concettualmente, ma il vero vantaggio è che forniscono al lettore un'implementazione dell'algoritmo. Sono solo circa 50 righe di C ++, quindi non ci sono dettagli nascosti.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.