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

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Rytter (dyskusja | edycje)
Nie podano opisu zmian
Rytter (dyskusja | edycje)
Linia 159: Linia 159:
dowodu poprawności algorytmu.
dowodu poprawności algorytmu.


<br>
Dowód przeprowadzimy nie wprost - załóżmy, że w tym kroku kolejka
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
się nie opróżni i że jest to pierwsze wystąpienie wzorca, którego algorytm nie
Linia 168: Linia 167:
oraz <math>|Kolejka|=0</math>. Pokażemy, że odtąd
oraz <math>|Kolejka|=0</math>. Pokażemy, że odtąd
aż do miejsca wystąpienia wzorca zachodzić będzie niezmiennik
aż do miejsca wystąpienia wzorca zachodzić będzie niezmiennik
<P><br>
 
<math>|Kolejka|<m-j.</math><br>
 
<P><br>
<center> <math>|Kolejka|<m-j.</math><br></center>
 
 
Faktycznie, zastanówmy się co się może wydarzyć w dowolnym, kolejnym kroku algorytmu,
Faktycznie, zastanówmy się co się może wydarzyć w dowolnym, kolejnym kroku algorytmu,
a co może zmienić wartość zmiennej <math>j</math>:
a co może zmienić wartość zmiennej <math>j</math>:
<P><br>




Linia 181: Linia 181:




<P><br>
  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
Linia 187: Linia 186:




<P><br> 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
Linia 193: Linia 192:




<P><br>
 
  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ż
Linia 200: Linia 199:




<br>
<P> <P>
Zatem niezmiennik jest zachowany od ostatniego momentu opróżnienia kolejki
Zatem niezmiennik jest zachowany od ostatniego momentu opróżnienia kolejki
do momentu niezauważonego wystąpienia wzorca. W chwili przetworzenia literki,
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
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ść.
<math>|Kolejka|<m-m=0</math>, <math>|Kolejka|<0</math>. To z kolei daje żądaną sprzeczność.
(Rozwiązanie opracował Jakub Radoszewski)
</div>
</div>
</div>
</div>

Wersja z 10:58, 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