I_P_W14_M16 Algorytm Knutha‑Morrisa‑Pratta
Jak wygląda proces wyszukiwania wzorców w tekście, w szczególności zagadnienie wykorzystania metody Knutha‑Morrisa‑Pratta.
POtrafisz krok po kroku proces, który doprowadzi cię do odszukania wzorca w tekście.
Jak zaimplementować algorytm tworzenia tablicy częściowych dopasowań w języku Java.
Jak zaimplementować algorytm wyszukiwania wzorców metodą Knutha‑Morrisa‑Pratta w języku Java.
Teraz czas, aby sprawdzić wiedzę i umiejętności w praktyce.
W programie zdefiniowano zmienną slowo. Twoim zadaniem jest zbudowanie dla niej tablicy częściowych dopasowań metodą MP. W jednej linii wypisz tablicę dopasowań dla zmiennej, oddzielając jej elementy przecinkiem oraz spacją.
Przetestuj program dla zmiennej slowo = "tata".
Przypomnienie z poprzednich e‑materiałów:
W przeciwieństwie do metody KMP, metoda MP zakłada, że w momencie, gdy element występujący po znalezionym prefikso‑sufiksie będzie taki sam jak występujący po sufiksie, zamiast wpisywać wartość z tablicy na pozycji równej szerokości prefikso‑sufiksu, będziemy wpisywać do tablicy szerokość prefikso‑sufiksu.
Specyfikacja problemu:
Dane:
slowo– zmienna typu String
Wynik:
Program tworzy tablicę częściowych dopasowań metodą MP.
Przykładowe wyjście (slowo = "mama"):
W programie zdefiniowano tablicę zawierającą n słów. Twoim zadaniem jest zbudowanie dla nich tablic częściowych dopasowań metodą KMP. Dla każdego słowa wypisz w osobnej linii jego tablicę dopasowań, oddzielając jej elementy przecinkiem oraz spacją. Przetestuj działanie programu dla następującej tablicy:
Specyfikacja problemu:
Dane:
slowa– tablica składająca się znelementów (łańcuchów znaków)n– liczba naturalna dodatnia
Wynik:
Program tworzy tablicę częściowych dopasowań metodą KMP.
Przykładowe wyjście (slowa = {"cogito", "ergo", "sum", "carpe", "diem"):
Do programu z ćwiczenia 2 dodano ciąg znaków: tekst. Korzystając z uprzednio utworzonych tablic częściowych dopasowań, sprawdź, które elementy tablicy slowa występują w łańcuchu znaków tekst. Dla każdego słowa w osobnej linii wypisz TAK, jeśli pojawia się w tekście lub NIE – w przeciwnym wypadku.
Specyfikacja problemu:
Dane:
slowa– tablica składająca się znelementów (łańcuchów znaków)n– liczba naturalna dodatniatekst– ciąg znaków o długości mm– liczba naturalna dodatnia
Wynik:
Program dla każdego słowa w osobnej linii wypisuje komunikat TAK lub NIE (w zależności od tego, czy pojawia się w tekście).