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

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Dorota (dyskusja | edycje)
Nie podano opisu zmian
Rytter (dyskusja | edycje)
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 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