Zadanie 1
Dane sa teksty x, y, oblicz najdłuższy tekst z (który oznaczamy LCS(x,y) od ang. Longest Common Subword)
który jest jednocześnie podsłowem x, y.
Rozwiązanie
Konstruujemy drzewo sufiksowe dla tekstu x#y$. nwpodsłowo(x,y) odpowiada węzłowi w drzewie, który
reprezentuje najdłuższe podsłowo, oraz z którego prowadzą ścieżki do liści reprezentujących numer sufiksu zaczynającego
się w x, i numer sufiksu zaczynającego się w y. Drzewo trzeba odpowiednio przeprocessować bottom-up, żeby
można było potem łatwo wyliczyć odpowiedni węzeł. Podobnie rozwiazujemy dla wiely słów x,y ,.. .
Zadanie 2
Niech
będzie tablicą najdłuższych wspólnych prefiksów dla słowa x oraz niech
będzie sumą elementów tablicy
. Uzasadnij dlaczego liczba
wszystkich niepustych podsłów x wynosi
Rozwiązanie
Liczba ta jest równa sumie wag krawędzi drzewa sufiksowego. Wzór z zadania wynika to z konstrukcji drzewa
sufiksowego opiuerającej się na tablicy sufiksowej i tablicy
.
Zadanie 3
Policz wzór na
Zadanie 4
Niech
.
Udowodnij, że
Rozwiązanie
Wynika ze struktury tablicy lcp, oraz stąd że kolejno rozważane słow powstają z poprzednich
przez obcięcie pierwszej litery.
Zadanie 5
Opisz liniowy algorytm liczący tablicę ROT, zakładając, że mamy liniowy algorytm liczenia tablicy sufiksowej.
Rozwiązanie
Zastosuj algorytm na liczenie tablicy sufiksowej do słowa xx
Zadanie 6
Pokaż, że jeśli mamy tablicę sufiksową dla słowa compress(x) to można łatwo policzyć SUF[M] w czasie liniowym
Rozwiązanie
Tablica sufiksowa dla słowa compress(x) składa się z dwóch połówek, kodują one słowa zaczynające się na pozycjach
odpowiedni i mod 3 =1, oraz i mod 3 =2.