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>” |
|||
(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 | 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 | 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 | 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">. | ||
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 | <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 | 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