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

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
m Zastępowanie tekstu – „ </math>” na „</math>”
m Zastępowanie tekstu – „<math> ” na „<math>”
 
Linia 15: 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 <math>i, k</math> 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].
Linia 27: Linia 27:
z takim samym prawdopodobieństwem 1/2.
z takim samym prawdopodobieństwem 1/2.


Skonstruuj algorytm, który będzie szukał wzorca <math>x</math> w czasie 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 <math>x</math>.
przyłozenia wzorca jest podsłowem <math>x</math>.
Jeśli nie, to jest to bardzo duże przesunięcie, jeśli tak, to jest to algorytm naiwny. Dobierz odpowiednie <math>c</math>.
Jeśli nie, to jest to bardzo duże przesunięcie, jeśli tak, to jest to algorytm naiwny. Dobierz odpowiednie <math>c</math>.
Linia 50: 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">.

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