ASD Ćwiczenia 13: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Rytter (dyskusja | edycje)
Rytter (dyskusja | edycje)
Linia 176: Linia 176:




Może być dwukrotnie wywołana instrukcja <math>j:=P[j]</math>.
Może być dwukrotnie wywołana instrukcja <math>j:=P[j]</math>.
Wówczas <math>|Kolejka|</math> wzrasta o <math>1</math>, <math>m-j</math> wzrasta co najmniej o <math>2</math>,
Wówczas <math>|Kolejka|</math> wzrasta o <math>1</math>, <math>m-j</math> wzrasta co najmniej o <math>2</math>,
czyli niezmiennik dalej zachodzi.
czyli niezmiennik dalej zachodzi.




Moze być raz wywołana instrukcja <math>j:=P[j]</math>, a raz <math>j:=j+1</math> (w jakiejkolwiek
Moze być raz wywołana instrukcja <math>j:=P[j]</math>, a raz <math>j:=j+1</math> (w jakiejkolwiek
kolejności). Wówczas <math>|Kolejka|</math> się nie zmienia, <math>m-j</math> pozostaje bez zmian
kolejności). Wówczas <math>|Kolejka|</math> się nie zmienia, <math>m-j</math> pozostaje bez zmian
lub wzrasta, co nie zaburza niezmiennika.
lub wzrasta, co nie zaburza niezmiennika.
Linia 188: Linia 188:
Mogą nastąpić dwie instrukcje powiększające <math>j</math> o <math>1</math>.
Mogą nastąpić dwie instrukcje powiększające <math>j</math> o <math>1</math>.
Wówczas <math>|Kolejka|</math> maleje o <math>2</math>, <math>m-j</math> także maleje o <math>2</math>, zatem niezmien
Wówczas <math>|Kolejka|</math> maleje o <math>2</math>, <math>m-j</math> także maleje o <math>2</math>, zatem niezmien
nik
nik pozostaje zachowany.
pozostaje zachowany.






Kolejka \textit{nie} może się opróżnić, gdyż zakładamy, że to nie nastąpi
Kolejka \textit{nie} może się opróżnić, gdyż zakładamy, że to nie nastąpi
przed aktualnie rozważanym wystąpieniem wzorca. Instrukcja <math>j:=P[m]</math> również
przed aktualnie rozważanym wystąpieniem wzorca. Instrukcja <math>j:=P[m]</math> również
nie może wystąpić, ponieważ oznaczałoby to wcześniejsze od rozważanego
nie może wystąpić, ponieważ oznaczałoby to wcześniejsze od rozważanego
Linia 205: Linia 204:




(Rozwiązanie opracował Jakub Radoszewski)
''(Rozwiązanie opracował Jakub Radoszewski)''
</div>
</div>
</div>
</div>

Wersja z 10:59, 21 lis 2006

Zadanie 1

Uzasadnić poprawność algorytmu obliczającego długość najkrótszego słowa pokrywającego dany tekst.

Rozwiązanie


Zadanie 2

Udowodnić, że w wersji on-line algorytmu KMP mamy delay=O(logm)

Rozwiązanie



Zadanie 3

Udowodnić, że w wersji on-line algorytmu KMP mamy delay=Ω(logm)

Rozwiązanie



Zadanie 4

Udowodnij poprawność algorytmu na cykliczną równoważność słów.

Rozwiązanie


Zadanie 5

Dla jakich tekstów algorytm na cykliczną równoważność słów wykonuje maksymalną liczbę porównan symboli?

Rozwiązanie

Zadanie 6

Mamy zbiór słów, każde długości dwa, obliczyć długość minimalnego tekstu który zawiera wszystkie słowa.

Rozwiązanie



Zadanie 7

Udowodnij następującą ciekawą własność kombinatoryczną okresowości w tekstach. Niech nwd(p,q) oznacza najmniejszy wspólny dzielnik p,q.


Lemat [Lemat o okresowości]

Jeśli x ma okresy p, q oraz p+q|x|, to nwd(p,q) jest również okresem x.


Rozwiązanie


Zadanie 8

Lemat o okresowości można wzmocnić, osłabiając założenia. Udowodnij następujący lemat.

Lemat [Silny lemat o okresowości]

Jeśli x ma okresy p, q oraz p+q|x|+nwd(p,q), to nwd(p,q) jest również okresem x.

Rozwiązanie

Zadanie 9

Udowdnij poprawność algorytmu KMP realtime

Rozwiązanie