Zaawansowane algorytmy i struktury danych/Ćwiczenia 1: Różnice pomiędzy wersjami
Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Nie podano opisu zmian |
m Zastępowanie tekstu – „<math> ” na „<math>” |
||
(Nie pokazano 2 pośrednich wersji utworzonych przez tego samego użytkownika) | |||
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">. | ||
Zastosuj algorytm BM do tekstów: | Zastosuj algorytm BM do tekstów: | ||
<math>y | <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 w przybliż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 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 jest ustalony, ma długość , a tekst , w którym szukamy , jest losowym tekstem długości , 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 w czasie oczekiwanym (średnim)
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
Rozwiązanie