|
|
Linia 88: |
Linia 88: |
| odpowiedni i mod 3 =1, oraz i mod 3 =2. | | odpowiedni i mod 3 =1, oraz i mod 3 =2. |
| </div> | | </div> |
| </div>
| |
|
| |
| <div class="mw-collapsible mw-made=collapsible mw-collapsed">
| |
| Rozwiązanie
| |
|
| |
| <div class="mw-collapsible-content" style="display:none">
| |
| 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 ,.. .
| |
| </div>
| |
| </div> | | </div> |
Wersja z 09:29, 12 wrz 2006
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
Rozwiązanie
Oznaczmy , niech będzie n-tą liczba Fibonacciego.
Wtedy
Parser nie mógł rozpoznać (błąd składni): {\displaystyle {Sub(n)\ =\ \Phi_{n-1}\Phi_{n-2}+2\cdot \Phi_{n-1}-1}
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 ślowa zaczynające się na pozycjach
odpowiedni i mod 3 =1, oraz i mod 3 =2.