Zaawansowane algorytmy i struktury danych/Ćwiczenia 1: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Rytter (dyskusja | edycje)
m Zastępowanie tekstu – „<math> ” na „<math>”
 
(Nie pokazano 3 wersji utworzonych przez 2 użytkowników)
Linia 1: Linia 1:
== Zadanie 1 ==
== Zadanie 1 ==


Sprawdz w czasie liniowym czy słowo x jest pierwotne.
Sprawdz w czasie liniowym, czy słowo <math>x</math> jest pierwotne.
<div class="mw-collapsible mw-made=collapsible mw-collapsed">'''Rozwiązanie'''  <div class="mw-collapsible-content" style="display:none">.
<div class="mw-collapsible mw-made=collapsible mw-collapsed">'''Rozwiązanie'''  <div class="mw-collapsible-content" style="display:none">.


Za pomocą tablicy prefikso-sufiksów liczymy najkrótszy okres słowa x,  
Za pomocą tablicy prefikso-sufiksów liczymy najkrótszy okres słowa <math>x</math>,  
następnie sprawdzamy czy jest on dzielnikiem długości x.
następnie sprawdzamy czy jest on dzielnikiem długości <math>x</math>.
Można to nawet zrobic bez tablicy prefikso-sufiksów w czasei liniowym  
Można to nawet zrobic bez tablicy prefikso-sufiksów w czasie liniowym  
i pamięci stałej.
i pamięci stałej.
</div>
</div>
Linia 16: Linia 15:
Pokaż redukcję w czasie liniowym problemu liczenia tablicy PREF do liczenia tablicy P
Pokaż redukcję w czasie liniowym problemu liczenia tablicy PREF do liczenia tablicy P
<div class="mw-collapsible mw-made=collapsible mw-collapsed">'''Rozwiązanie'''  <div class="mw-collapsible-content" style="display:none">.
<div class="mw-collapsible mw-made=collapsible mw-collapsed">'''Rozwiązanie'''  <div class="mw-collapsible-content" style="display:none">.
Zauważmy, że w sytuacji gdy P[i]=k mamy, że <math> PREF[i-k]\ge k</math>
Zauważmy, że w sytuacji gdy P[i]=k mamy, że <math>PREF[i-k]\ge k</math>.
Poza bardzo specjalnymi sytuacjami dla pewnego i, k zajdzie
Poza bardzo specjalnymi sytuacjami dla pewnego <math>i, k</math> zajdzie
tutaj równość dla PREF[i-k].
tutaj równość dla PREF[i-k].
</div>
</div>
Linia 24: Linia 23:
== Zadanie 3 ==
== Zadanie 3 ==


Załóżmy, że wzorzec x jest ustalony, ma długość m, a tekst y w którym szukamy x jest
Załóżmy, że wzorzec <math>x</math> jest ustalony, ma długość <math>m</math>, a tekst <math>y</math>, w którym szukamy <math>x</math>, jest
losowym tekstem długości n, alfabet jest binarny. Każdy symbol jest zerem lub jedynką niezależnie
losowym tekstem długości <math>n</math>, alfabet zaś jest binarny. Każdy symbol jest zerem lub jedynką niezależnie,
z takim samym prawdopodobieństwem 1/2.
z takim samym prawdopodobieństwem 1/2.


Skonstruuj algorytm, który będzie szukał wzorca x w czasei oczekiwanym (średnim) <math> O(\frac{n\cdot m}{\log m}) </math>
Skonstruuj algorytm, który będzie szukał wzorca <math>x</math> w czasie oczekiwanym (średnim) <math>O(\frac{n\cdot m}{\log m})</math>


<div class="mw-collapsible mw-made=collapsible mw-collapsed">'''Rozwiązanie'''  <div class="mw-collapsible-content" style="display:none">.
<div class="mw-collapsible mw-made=collapsible mw-collapsed">'''Rozwiązanie'''  <div class="mw-collapsible-content" style="display:none">.
Skorzystaj z drzewa sufiksowego i sprawdzaj czy końcowy fragment długości <math> c \cdot \log m</math> kolejnego
Skorzystaj z drzewa sufiksowego i sprawdzaj, czy końcowy fragment długości <math>c \cdot \log m</math> kolejnego
przyłozenia wzorca jest podsłowem x.
przyłozenia wzorca jest podsłowem <math>x</math>.
Jeśli nie to bardzo duże przesunięcie, jeśli tak to algorytm naiwny. Dobierz odpowiednie c.
Jeśli nie, to jest to bardzo duże przesunięcie, jeśli tak, to jest to algorytm naiwny. Dobierz odpowiednie <math>c</math>.
</div>
</div>
</div>
</div>
Linia 39: Linia 38:
== Zadanie 4 ==
== Zadanie 4 ==


Udowdnij, że w modelu takim jak w poprzednim zadaniu algorytm BM nie ma
Udowdnij, że w modelu takim, jak w poprzednim zadaniu, algorytm BM nie ma
złożoności oczekiwanej rzędu mniejszego niż liniowy.
złożoności oczekiwanej rzędu mniejszego niż liniowy.


<div class="mw-collapsible mw-made=collapsible mw-collapsed">'''Rozwiązanie'''  <div class="mw-collapsible-content" style="display:none">.
<div class="mw-collapsible mw-made=collapsible mw-collapsed">'''Rozwiązanie'''  <div class="mw-collapsible-content" style="display:none">.


Wezmy x składający się z samych liter a, poza kilkom symbolami b na końcu.
Weźmy <math>x</math> składający się z samych liter <math>a</math>, poza kilkom symbolami <math>b</math> na końcu.
</div>
</div>
</div>
</div>
Linia 51: Linia 50:


Pokaż, że jeśli cn jest górnym oszacowaniem liczby porównań w algorytmie BM (dla dostatecznie dużych n)
Pokaż, że jeśli cn jest górnym oszacowaniem liczby porównań w algorytmie BM (dla dostatecznie dużych n)
to <math> c \ge 3</math>
to <math>c \ge 3</math>


<div class="mw-collapsible mw-made=collapsible mw-collapsed">'''Rozwiązanie'''  <div class="mw-collapsible-content" style="display:none">.
<div class="mw-collapsible mw-made=collapsible mw-collapsed">'''Rozwiązanie'''  <div class="mw-collapsible-content" style="display:none">.


Zastosuj algorytm BM do tekstów:
Zastosuj algorytm BM do tekstów:
<math>y\ =\ (ba^kba^k)^k</math>, gdzie usuwamy ostatni symbol,oraz <math>x\ =\ ba^{k-1}ba^{k-1}</math>.
<math>y=  (ba^kba^k)^k</math>, gdzie usuwamy ostatni symbol oraz <math>x= ba^{k-1}ba^{k-1}</math>.


Dla tych danych liczba porównań symboli wynosi wprzybliżeniu <math>3n</math>, gdzie <math>n=(2k+2)*k-1</math> jest długością <math>y</math>.</div>
Dla tych danych liczba porównań symboli wynosi w przybliżeniu <math>3n</math>, gdzie <math>n=(2k+2)*k-1</math> jest długością <math>y</math>.</div>
</div>
</div>

Aktualna wersja na dzień 22:13, 11 wrz 2023

Zadanie 1

Sprawdz w czasie liniowym, czy słowo x jest pierwotne.

Rozwiązanie

Zadanie 2

Pokaż redukcję w czasie liniowym problemu liczenia tablicy PREF do liczenia tablicy P

Rozwiązanie

Zadanie 3

Załóżmy, że wzorzec x jest ustalony, ma długość m, a tekst y, w którym szukamy x, jest losowym tekstem długości n, alfabet zaś jest binarny. Każdy symbol jest zerem lub jedynką niezależnie, z takim samym prawdopodobieństwem 1/2.

Skonstruuj algorytm, który będzie szukał wzorca x w czasie oczekiwanym (średnim) O(nmlogm)

Rozwiązanie

Zadanie 4

Udowdnij, że w modelu takim, jak w poprzednim zadaniu, algorytm BM nie ma złożoności oczekiwanej rzędu mniejszego niż liniowy.

Rozwiązanie

Zadanie 5

Pokaż, że jeśli cn jest górnym oszacowaniem liczby porównań w algorytmie BM (dla dostatecznie dużych n) to c3

Rozwiązanie