Konzeptionell einfache Baumkonstruktionen mit linearem Zeitsuffix

13

1973 gab Weiner die erste lineare Konstruktion von Suffixbäumen. Der Algorithmus wurde 1976 von McCreight und 1995 von Ukkonen vereinfacht. Trotzdem finde ich Ukkonens Algorithmus konzeptionell relativ aufwendig.

Gab es seit 1995 Vereinfachungen bei Ukkonens Algorithmus?

Zufälliges Blau
quelle
4
Farach et el 1998. Ich denke, dies ist ein guter Ort, um mit dem Lesen zu beginnen: scholar.google.co.uk/…
Radu GRIGore

Antworten:

9

Ich bin nicht sicher, ob es neue Ergebnisse gab, die die Konstruktion von Suffix-Bäumen direkt vereinfachen. Es hat jedoch zumindest gegeben ein Ergebnis gegeben , das einen sehr einfachen Algorithmus zum Konstruieren von Suffix-Arrays in linearer Zeit ergab .

Ö(1) -Zeit zum Abfragen des längsten gemeinsamen Präfix) verwenden können, um einen äquivalenten Suffix-Baum zu erstellen. Dies sollte eine relativ einfache Übung sein, aber ich kann bei Bedarf weitere Details angeben.

Ö(nlgn)

zotachidil
quelle
1
Könnten Sie einen Zeiger auf den einfacheren Weg zum Erstellen von Suffix-Arrays in O (N lg N) -Zeit geben?
Randomblue
1
Beschriften Sie alle Suffixe der Länge 2 ^ k mit einer ganzen Zahl, sodass die Beschriftungen der Ordnungsbeziehung zwischen den Suffixen entsprechen. Der erste Schritt (k = 0) ist offensichtlich. Um die Bezeichnungen in Schritt k zu berechnen, verwenden Sie die Bezeichnungen aus Schritt k-1 und führen Sie eine Grundsortierung durch. Dieses Papier sollte leicht zu verstehen sein: webglimpse.net/pubs/suffix.pdf
zotachidil
7

Zusätzlich zu dem, was erwähnt wurde ( Kärkkäinen & Sanders, 2003 ), würden Sie die "neuere" Version von Kärkkäinen, Sanders und Burkhard, 2006 zu schätzen wissen . Der Algorithmus folgt im Wesentlichen der Struktur von Farachs Algorithmus. Es ist wohl konzeptionell einfacher, aber der wahre Vorteil ist, dass sie dem Leser eine Implementierung des Algorithmus bieten. Es sind nur ungefähr 50 Zeilen von C ++, also gibt es in der Tat keine versteckten Details.

Juho
quelle