Drzewo sufiksów można postrzegać jako strukturę danych zbudowaną na podstawie próby, w której zamiast po prostu dodawać sam ciąg do trie, można również dodać każdy możliwy sufiks tego ciągu. Na przykład, jeśli chcesz zindeksować ciąg bananowy w drzewie sufiksów, zbudowałbyś trie z następującymi ciągami:
banana
anana
nana
ana
na
a
Gdy to zrobisz, możesz wyszukać dowolny n-gram i sprawdzić, czy jest obecny w indeksowanym ciągu. Innymi słowy, wyszukiwanie n-gramowe to wyszukiwanie przedrostków wszystkich możliwych sufiksów twojego ciągu.
To najprostszy i najwolniejszy sposób na zbudowanie drzewa przyrostków. Okazuje się, że istnieje wiele bardziej wyszukanych wariantów tej struktury danych, które poprawiają zarówno przestrzeń, jak i czas budowy. Nie jestem wystarczająco biegły w tej dziedzinie, aby dać ogólny zarys, ale możesz zacząć od przyjrzenia się tablicom przyrostków lub zaawansowanym strukturom danych tej klasy (wykład 16 i 18).
Ta odpowiedź również świetnie się spisuje, wyjaśniając wariant tej struktury danych.