ASD Ćwiczenia 13: Różnice pomiędzy wersjami
Nie podano opisu zmian |
Nie podano opisu zmian |
||
Linia 143: | Linia 143: | ||
Indukcja ze względu na p+q. | Indukcja ze względu na p+q. | ||
</div> | </div> | ||
</div> | |||
=='''Zadanie 9''' == | |||
Udowdnij poprawność algorytmu KMP realtime | |||
<div class="mw-collapsible mw-made=collapsible mw-collapsed"> | |||
Rozwiązanie | |||
<div class="mw-collapsible-content" style="display:none"> | |||
Problem jaki musimy rozwiązać to właściwość algorytmu, którą nazwiemy | |||
''opóżnieniem'' polega ona na tym, że w danym kroku algorytm może wciąż | |||
jeszcze rozważać właściwy prefiks aktualnego slowa i nie dotrzeć w ogóle | |||
do rozważenia bieżącej litery. Pokażemy jednak, że w momencie, kiedy nastąpi | |||
wystąpienie wzorca, kolejka zostanie opróżniona, co wystarczy do | |||
dowodu poprawności algorytmu. | |||
<br> | |||
Dowód przeprowadzimy nie wprost - załóżmy, że w tym kroku kolejka | |||
się nie opróżni i że jest to pierwsze wystąpienie wzorca, którego algorytm nie | |||
zdąża wyśledzić. Zacznijmy rozważanie działania algorytmu od ostatniego | |||
miejsca wcześniejszego od bieżącego, w którym kolejka się opróżnia. | |||
W tym momencie zachodzi <math>j<m</math> (nawet jeżeli w owym kroku było wystąpienie | |||
wzorca w tekście, to ten warunek i tak będzie po tym kroku spełniony) | |||
oraz <math>|Kolejka|=0</math>. Pokażemy, że odtąd | |||
aż do miejsca wystąpienia wzorca zachodzić będzie niezmiennik | |||
<P><br> | |||
<math>|Kolejka|<m-j.</math><br> | |||
<P><br> | |||
Faktycznie, zastanówmy się co się może wydarzyć w dowolnym, kolejnym kroku algorytmu, | |||
a co może zmienić wartość zmiennej <math>j</math>: | |||
<P><br> | |||
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>, | |||
czyli niezmiennik dalej zachodzi. | |||
<P><br> | |||
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 | |||
lub wzrasta, co nie zaburza niezmiennika. | |||
<P><br> 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 | |||
nik | |||
pozostaje zachowany. | |||
<P><br> | |||
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ż | |||
nie może wystąpić, ponieważ oznaczałoby to wcześniejsze od rozważanego | |||
niezauważone przez algorytm wystąpienie wzorca w tekście. | |||
<br> | |||
<P> <P> | |||
Zatem niezmiennik jest zachowany od ostatniego momentu opróżnienia kolejki | |||
do momentu niezauważonego wystąpienia wzorca. W chwili przetworzenia literki, | |||
która powoduje wystąpienie zachodzi <math>j=m</math>, czyli na mocy pokazanego niezmiennika | |||
<math>|Kolejka|<m-m=0</math>, <math>|Kolejka|<0</math>. To z kolei daje żądaną sprzeczność. | |||
</div> | |||
</div> | </div> |
Wersja z 10:54, 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
Rozwiązanie
Zadanie 3
Udowodnić, że w wersji on-line algorytmu KMP mamy
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 oznacza najmniejszy wspólny dzielnik p,q.
Lemat [Lemat o okresowości]
Jeśli x ma okresy p, q oraz , to 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 , to jest również okresem x.
Rozwiązanie
Zadanie 9
Udowdnij poprawność algorytmu KMP realtime
Rozwiązanie