Ein Suffixbaum kann als Datenstruktur angesehen werden, die auf einem Trie aufgebaut ist. Statt nur die Zeichenfolge selbst in die Trie einzufügen, würden Sie auch jedes mögliche Suffix dieser Zeichenfolge hinzufügen. Wenn Sie beispielsweise die String- Banane in einem Suffix-Baum indizieren möchten, erstellen Sie einen Trie mit den folgenden Strings:
banana
anana
nana
ana
na
a
Sobald dies erledigt ist, können Sie nach einem beliebigen n-Gramm suchen und prüfen, ob es in Ihrer indizierten Zeichenfolge vorhanden ist. Mit anderen Worten, die n-Gramm-Suche ist eine Präfixsuche aller möglichen Suffixe Ihrer Zeichenfolge.
Dies ist der einfachste und langsamste Weg, einen Suffixbaum zu erstellen. Es stellt sich heraus, dass es viele schickere Varianten dieser Datenstruktur gibt, die entweder den Raum oder die Bauzeit verbessern. Ich bin in diesem Bereich nicht gut genug versiert, um einen Überblick zu geben, aber Sie können zunächst Suffix-Arrays oder erweiterte Datenstrukturen dieser Klasse untersuchen (Vorlesung 16 und 18).
Diese Antwort macht auch einen wunderbaren Job und erklärt eine Variante dieser Datenstruktur.