|
|
Linia 116: |
Linia 116: |
| <br> | | <br> |
|
| |
|
| Opiszemy operacje redukcji tekstu. Jeśli w zbiorze $X$ są teksty ua, vb, gdzie a,b są różnymi cyframi binarnymi | | Opiszemy operacje redukcji tekstu. Jeśli w zbiorze X są teksty ua, vb, gdzie a,b są różnymi cyframi binarnymi |
| oraz u jest sufiksem v, to zastępujemy w X słowo vb przez słowo v. | | oraz u jest sufiksem v, to zastępujemy w X słowo vb przez słowo v. Inaczej mówiąc wykonujemy operację: |
| | <br> |
| | |
| | ''redukcja'': vb -> v |
| | <br> |
|
| |
|
| Algorytm wykonuje wszelkie redukcje póki się da (w dowolnym porządku). Jeśli otrzymamy słowo puste | | Algorytm wykonuje wszelkie redukcje póki się da (w dowolnym porządku). Jeśli otrzymamy słowo puste |
Wersja z 22:42, 20 gru 2006
Zadanie 1
Dane są teksty x, y. Oblicz najdłuższy tekst (oznaczany LCS(x,y) od ang. Longest Common Subword),
który jest jednocześnie podsłowem x i y.
Rozwiązanie
Konstruujemy drzewo sufiksowe dla tekstu x#y$. LCS(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 wstępnie przetworzyć bottom-up, żeby
można było potem łatwo wyliczyć odpowiedni węzeł. Podobnie rozwiązujemy problem dla wielu 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 z konstrukcji drzewa
sufiksowego opierającej się na tablicy sufiksowej i tablicy .
Zadanie 3
Wyprowadź wzór na
Rozwiązanie
Oznaczmy i 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 to ze struktury tablicy lcp oraz z tego, że kolejno rozważane słowa powstają z poprzednich
przez obcięcie pierwszej litery.
Zadanie 5
Opisz liniowy algorytm obliczania tablicę ROT, przy założeniu, że mamy liniowy algorytm obliczania tablicy sufiksowej.
Rozwiązanie
Zastosuj algorytm obliczania tablicy sufiksowej do słowa xx.
Zadanie 6
Pokaż, że jeśli mamy tablicę sufiksową dla słowa compress(x), to można łatwo obliczyć 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.
Zadanie 7
(Teksty-> Grafy) Dany jet zbiór tekstów długości dwa. Wyznaczyć długość minimalnego tekstu, zawierającego teksty wejściowe.
Rozwiązanie
Zadanie sprowadza się do policzenia minimalnego ( w sensie liczności) zbioru rozłącznych ścieżek w grafie
skierowanym, które zawierają wszystkie krawędzie. Krawędzie odpowiadają słowom wejściowym,
wierzchołki grafu odpowiadają literom.
Zadanie było na olimpiadzie informatycznej pod nazwą Pierwotek abstrakcyjny, miało rozwiązanie w czasie liniowym.
Zadanie 8
Dany jest zbiór X tekstów binarnych. Sprawdzić czy istnieje nieskończenie wiele słów binarnych nie
zawierających żadnego elementu z X jako podsłowo.
Rozwiązanie
Opiszemy operacje redukcji tekstu. Jeśli w zbiorze X są teksty ua, vb, gdzie a,b są różnymi cyframi binarnymi
oraz u jest sufiksem v, to zastępujemy w X słowo vb przez słowo v. Inaczej mówiąc wykonujemy operację:
redukcja: vb -> v
Algorytm wykonuje wszelkie redukcje póki się da (w dowolnym porządku). Jeśli otrzymamy słowo puste
to odpowiedź jest NIE, w przeciwym wypadku TAK.
Zadanie było na olimpiadzie informatycznej pod nazwą Wirusy, miało rozwiązanie w czasie liniowym.