EMZETT.
Login

Suffix-Array

Kurz: Ein Suffix-Array ist eine sortierte Liste aller Endstücke (Suffixe) eines Textes. Mit ihm findet man jedes Teilwort per Binärsuche.

Genauer: Für den Text banana sind die Suffixe banana, anana, nana, ana, na, a. Man speichert nur ihre Startpositionen in alphabetischer Reihenfolge: [5, 3, 1, 0, 4, 2].

Im Detail

  • Suche: Ein Muster der Länge m wird per Binärsuche über die Suffixe gefunden, in O(m log n).
  • Aufbau: Naiv durch Sortieren in O(n² log n). Gute Algorithmen (SA-IS, Prefix-Doubling) schaffen O(n) bis O(n log n).
  • Gegen Suffix-Bäume: Etwas langsamer, aber deutlich weniger Speicher.
  • Zusatz LCP-Array: Speichert die gemeinsame Präfixlänge benachbarter Suffixe und ermöglicht weitere Abfragen, etwa den längsten wiederholten Teilstring.
  • Einsatz: Bioinformatik (Genomsuche), Burrows-Wheeler-Transformation in bzip2, Plagiatserkennung, Volltextindizes.
  • Vergleich: Für wiederholte Suchen im selben Text lohnt sich der Index. Einmalige Suche erledigt KMP oder Boyer-Moore.

Siehe auch: Invertierter Index