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)
Nie podano opisu zmian
Linia 9: Linia 9:
</div>
</div>
</div>
</div>
<font color=darkred>
'''Zadanie 1''' </font>
Słowem pokrywającym tekst x taki tekst y, którego wystąpienia w x
pokrywają cały tekst x. Na przykład aba pokrywa ababaaba, natomiast nie pokrywa tekstu abaaababa.
Obliczyć długość najkrótszego słowa pkrywającego dany tekst x.
<div class="mw-collapsible mw-made=collapsible mw-collapsed">
Rozwiązanie
<div class="mw-collapsible-content" style="display:none">
Niech <math>S[i]</math>
będzie rozmiarem minimalnego pokrywajćego słowa dla prefiksu <math>x[1..i]</math>. Algorytm wykorzystuje następujący
fakt: \ <math>S[i]=i \ \textrm{lub}\ S[i]=S[P[i]].</math> \ Następujący algorytm liczy długość minimalnego słowa
pokrywającego tekstu x. Liczymy  wartości <math>S[i]</math> najmniejszej długości minimalnego słowa pokrywającego <math>x[1
\ldots i]</math> dla każdego <math>1 \le i \le n</math>.
W <math>i</math>-tej
iteracji algorytm pamięta jaki jest ``znany zakres'' każdego minimalnego słowa pokrywającego.
<center> [[Grafika:Minpokslowo.jpg]]<br>
Rysunek 3: <math>i</math>-ta iteracja algorytmu, dla <math>i=15</math>, oraz słowa  <math>x\ =\ abaabababaababa\ldots</math>. Tuż przed
rozpoczęciem tej iteracji mamy <math>P[i]=8</math>, <math>q=S[8]=3</math>, <math>Zakres[3]=13</math>. Po zakończeniu <math>i</math>-tej iteracji
mamy  <math>S[15]=3,Zakres[3]=15</math>, ponieważ <math>i-Zakres[3] \le q</math>. </center>
{{algorytm | Rozmiar-Minimalnego-Pokrycia|algorym_rozm_min_pokr|
'''for ''' <math>i:=2</math> '''to''' <math>n</math> '''do'''<br>
&nbsp;&nbsp;&nbsp;<math>Zakres[i]=i, S[i]=i</math><br>
'''for ''' <math>i:=2</math> '''to''' <math>n</math> '''do'''<br>
&nbsp;&nbsp;&nbsp;'''if''' <math>P[i]>0</math> oraz <math>i-Zakres[S[P[i]] \le S[P[i]]</math> '''then'''<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<math>S[i] := S[P[i]]</math>;  <math>Zakres[S[P[i]] := i</math>;<br>
'''return''' <math>S[n]</math>;
}}
</div>
</div>


<font color=darkred> ----------------------------------------------------------------------
<font color=darkred> ----------------------------------------------------------------------

Wersja z 10:34, 24 sie 2006

Uzasadnić opoprawność 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

Udowdnij 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 ? ???????

Rozwiązanie

----------------------------------------------------------------------

Zadanie ?

???????

Rozwiązanie