Algorytmy tekstowe
Transkrypt
Algorytmy tekstowe
Algorytmy tekstowe Wstep ˛ Wprowadzenie Przykład Algorytm naiwny Rozwiazanie ˛ Czas Algorytmy tekstowe zajecia ˛ 7. Algorytm KMP Tablica P Bartosz Górski, Tomasz Kulczyński, Błażej Osiński Słowa Algorytmy tekstowe Wstep ˛ Wprowadzenie Przykład Algorytm naiwny Rozwiazanie ˛ Czas Algorytm KMP Tablica P słowo dla informatyka to ciag ˛ znaków nie musi mieć sensu w żadnym używanym jezyku ˛ Problemy Algorytmy tekstowe Wstep ˛ Wprowadzenie Przykład Najcz˛eściej stawiany problem tekstowy: Algorytm naiwny wyszukiwanie wzorca w tekście Rozwiazanie ˛ Czas Algorytm KMP Tablica P znak alfabet – zbiór dostepnych ˛ znaków słowa – ciagi ˛ znaków Problemy Algorytmy tekstowe Wstep ˛ Wprowadzenie Przykład Najcz˛eściej stawiany problem tekstowy: Algorytm naiwny wyszukiwanie wzorca w tekście Rozwiazanie ˛ Czas Algorytm KMP Tablica P znak alfabet – zbiór dostepnych ˛ znaków słowa – ciagi ˛ znaków Problemy Algorytmy tekstowe Wstep ˛ Wprowadzenie Przykład Najcz˛eściej stawiany problem tekstowy: Algorytm naiwny wyszukiwanie wzorca w tekście Rozwiazanie ˛ Czas Algorytm KMP Tablica P znak alfabet – zbiór dostepnych ˛ znaków słowa – ciagi ˛ znaków Problemy Algorytmy tekstowe Wstep ˛ Wprowadzenie Przykład Najcz˛eściej stawiany problem tekstowy: Algorytm naiwny wyszukiwanie wzorca w tekście Rozwiazanie ˛ Czas Algorytm KMP Tablica P znak alfabet – zbiór dostepnych ˛ znaków słowa – ciagi ˛ znaków Przykład Algorytmy tekstowe Wstep ˛ Wprowadzenie Przykład Algorytm naiwny Rozwiazanie ˛ Czas Algorytm KMP Tablica P Problem alfabet: {a, b} tekst: abbbaabaabba wzorzec: aaba Przykład Algorytmy tekstowe Wstep ˛ Wprowadzenie Przykład Algorytm naiwny Rozwiazanie ˛ Czas Algorytm KMP Problem alfabet: {a, b} tekst: abbbaabaabba wzorzec: aaba Tablica P Rozwiazanie ˛ wystapienia: ˛ 1 2 abbbaabaaabaa abbbaabaabaa Pomysł Algorytmy tekstowe Wstep ˛ Wprowadzenie Przykład Algorytm naiwny Rozwiazanie ˛ Czas Algorytm KMP Tablica P Spróbujmy w każdym miejscu dopasować wzorzec. Działanie Algorytmy tekstowe Wstep ˛ Wprowadzenie Przykład Algorytm naiwny Rozwiazanie ˛ Czas Algorytm KMP Tablica P cbadabcbaabccdba bccd bccd bccd bccd bccd bccd Złożoność Algorytmy tekstowe Wstep ˛ Wprowadzenie Przykład Algorytm naiwny Rozwiazanie ˛ Czas n – długość tekstu m – długość wzorca Algorytm KMP Tablica P O(n · m) Złożoność Algorytmy tekstowe Wstep ˛ Wprowadzenie Przykład Algorytm naiwny Rozwiazanie ˛ Czas Algorytm KMP Tablica P n – długość tekstu m – długość wzorca O(n · m) W praktyce znacznie lepiej! Czy rzeczywiście O(n · m)? Algorytmy tekstowe Wstep ˛ Wprowadzenie Przykład Algorytm naiwny Rozwiazanie ˛ tekst: aaaaaa . . . aaaa (długości n) Czas Algorytm KMP Tablica P wzorzec: aa . . . aab (długości m) ile operacji wykonuje algorytm naiwny? Czy rzeczywiście O(n · m)? Algorytmy tekstowe Wstep ˛ Wprowadzenie Przykład Algorytm naiwny Rozwiazanie ˛ tekst: aaaaaa . . . aaaa (długości n) Czas Algorytm KMP Tablica P wzorzec: aa . . . aab (długości m) liczba operacji: (n − m + 1) · m Pomysł Algorytmy tekstowe Wstep ˛ Wprowadzenie Przykład Algorytm naiwny Rozwiazanie ˛ Czas Algorytm KMP Tablica P Za każdym razem zaczynamy porównywać od poczatku ˛ – tracimy cenne informacje! Pomysł Algorytmy tekstowe Wstep ˛ Wprowadzenie Przykład Algorytm naiwny Rozwiazanie ˛ Za każdym razem zaczynamy porównywać od poczatku ˛ – tracimy cenne informacje! Czas Algorytm KMP Tablica P Przykład abaaaaaaaaaaaa aaab Pomysł Algorytmy tekstowe Wstep ˛ Wprowadzenie Przykład Algorytm naiwny Rozwiazanie ˛ Za każdym razem zaczynamy porównywać od poczatku ˛ – tracimy cenne informacje! Czas Algorytm KMP Tablica P Przykład abaaaaaaaaaaaa aaab abaaaaaaaaaaaa aaab Trudne słowa Algorytmy tekstowe Wstep ˛ Wprowadzenie Przykład Algorytm naiwny Rozwiazanie ˛ prefiks Czas Algorytm KMP Tablica P sufiks prefikso-sufiks Trudne słowa Algorytmy tekstowe Wstep ˛ Wprowadzenie Przykład Algorytm naiwny Rozwiazanie ˛ prefiks Czas Algorytm KMP Tablica P sufiks prefikso-sufiks Trudne słowa Algorytmy tekstowe Wstep ˛ Wprowadzenie Przykład Algorytm naiwny Rozwiazanie ˛ prefiks Czas Algorytm KMP Tablica P sufiks prefikso-sufiks Tablica najdłuższych prefikso-sufiksów – P[ ] Algorytmy tekstowe Wstep ˛ Wprowadzenie Przykład Algorytm naiwny Rozwiazanie ˛ Czas Algorytm KMP Tablica P P[i] – długość najdłuższego właściwego prefikso-sufiksu prefiksu długości i słowa w Tablica najdłuższych prefikso-sufiksów – P[ ] Algorytmy tekstowe Wstep ˛ Wprowadzenie Przykład Algorytm naiwny Rozwiazanie ˛ P[i] – długość najdłuższego właściwego prefikso-sufiksu prefiksu długości i słowa w Czas Algorytm KMP Tablica P słowo w i= P[i] = 0 0 b 1 0 a 2 0 a 3 0 b 4 1 a 5 2 b 6 1 a 7 2 a 8 3 Obliczanie P[ ] Algorytmy tekstowe Wstep ˛ Wprowadzenie Przykład Algorytm naiwny Rozwiazanie ˛ Czas Algorytm KMP Tablica P P[ ] słowo pasujacy ˛ prefikso-sufiks 0 a 0 b 1 a 1 a a 2 b b 3 a a b a a Obliczanie P[ ] Algorytmy tekstowe Wstep ˛ Wprowadzenie Przykład Algorytm naiwny Rozwiazanie ˛ Czas Algorytm KMP Tablica P P[ ] słowo pasujacy ˛ prefikso-sufiks kolejna pozycja 0 a 0 b 1 a 1 a a a 2 b b b 3 a a a b a a a Obliczanie P[ ] Algorytmy tekstowe Wstep ˛ Wprowadzenie Przykład Algorytm naiwny Rozwiazanie ˛ Czas Algorytm KMP Tablica P P[ ] słowo pasujacy ˛ prefikso-sufiks kolejna pozycja 0 a 0 b 1 a 1 a a a 2 b b b 3 a a a a 2 b a b a a Wyszukiwanie wzorca Algorytmy tekstowe Wstep ˛ Wprowadzenie Przykład Algorytm naiwny Wzorzec i jego tablica P[ ]: Rozwiazanie ˛ Czas Algorytm KMP Tablica P 0 a P[ ] słowo 0 b 1 a 1 a 2 b Wyszukiwanie wzorca: tekst a a b a b a a b a a a 3 a Wyszukiwanie wzorca Algorytmy tekstowe Wstep ˛ Wprowadzenie 0 a P[ ] słowo Przykład Algorytm naiwny Wzorzec i jego tablica P[ ]: 0 b 1 a 1 a 2 b Rozwiazanie ˛ Czas Algorytm KMP Tablica P Wyszukiwanie wzorca: tekst a a a b b a b a a b a a a 3 a Wyszukiwanie wzorca Algorytmy tekstowe Wstep ˛ Wprowadzenie Przykład Algorytm naiwny Wzorzec i jego tablica P[ ]: P[ ] słowo 0 a 0 b 1 a 1 a Rozwiazanie ˛ Czas Algorytm KMP Tablica P Wyszukiwanie wzorca: tekst a a a b b a b a a b a a a 2 b 3 a Wyszukiwanie wzorca Algorytmy tekstowe Wstep ˛ Wprowadzenie Przykład Algorytm naiwny Wzorzec i jego tablica P[ ]: P[ ] słowo 0 a 0 b 1 a 1 a b a a a Rozwiazanie ˛ Czas Algorytm KMP Tablica P Wyszukiwanie wzorca: tekst a a a b b a a b a a 2 b 3 a Wyszukiwanie wzorca Algorytmy tekstowe Wstep ˛ Wprowadzenie Przykład Algorytm naiwny Wzorzec i jego tablica P[ ]: P[ ] słowo 0 a 0 b 1 a 1 a a b a a a Rozwiazanie ˛ Czas Algorytm KMP Tablica P Wyszukiwanie wzorca: tekst a a a b b a a b a 2 b 3 a Wyszukiwanie wzorca Algorytmy tekstowe Wstep ˛ Wprowadzenie Przykład Algorytm naiwny Wzorzec i jego tablica P[ ]: P[ ] słowo 0 a 0 b 1 a 1 a Rozwiazanie ˛ Czas Algorytm KMP Tablica P Wyszukiwanie wzorca: tekst a a a b b a a b a a a b a a a 2 b 3 a Wyszukiwanie wzorca Algorytmy tekstowe Wstep ˛ Wprowadzenie Przykład Algorytm naiwny Wzorzec i jego tablica P[ ]: 0 a P[ ] słowo 0 b 1 a 1 a Rozwiazanie ˛ Czas Algorytm KMP Tablica P Wyszukiwanie wzorca: tekst a a b a a b b a a b a a a 2 b 3 a Wyszukiwanie wzorca Algorytmy tekstowe Wstep ˛ Wprowadzenie Przykład Algorytm naiwny Wzorzec i jego tablica P[ ]: 0 a P[ ] słowo 0 b 1 a 1 a Rozwiazanie ˛ Czas Algorytm KMP Tablica P Wyszukiwanie wzorca: tekst a a b a a b b a a a b a a a 2 b 3 a Wyszukiwanie wzorca Algorytmy tekstowe Wstep ˛ Wprowadzenie Przykład Algorytm naiwny Wzorzec i jego tablica P[ ]: 0 a P[ ] słowo 0 b 1 a 1 a Rozwiazanie ˛ Czas Algorytm KMP Tablica P Wyszukiwanie wzorca: tekst a a b a a b b a a a a b a a a 2 b 3 a Wyszukiwanie wzorca Algorytmy tekstowe Wstep ˛ Wprowadzenie Przykład Algorytm naiwny Wzorzec i jego tablica P[ ]: 0 a P[ ] słowo 0 b 1 a 1 a Rozwiazanie ˛ Czas Algorytm KMP Tablica P Wyszukiwanie wzorca: tekst a a b a a b b a a a a b b a a a 2 b 3 a Wyszukiwanie wzorca Algorytmy tekstowe Wstep ˛ Wprowadzenie Przykład Algorytm naiwny Rozwiazanie ˛ Czas Algorytm KMP Tablica P Wzorzec i jego tablica P[ ]: P[ ] słowo 0 a 0 b 1 a 1 a Wyszukiwanie wzorca: tekst a a b a a Trafienie! aababaabaaa b b a a a a b b a a a a 2 b 3 a Wyszukiwanie wzorca Algorytmy tekstowe Wstep ˛ Wprowadzenie Przykład Algorytm naiwny Rozwiazanie ˛ Czas Algorytm KMP Tablica P Wzorzec i jego tablica P[ ]: P[ ] słowo 0 a 0 b 1 a 1 a a b b a a a a Wyszukiwanie wzorca: tekst a a b a Trafienie! aababaabaaa b a a 2 b 3 a Wyszukiwanie wzorca Algorytmy tekstowe Wstep ˛ Wprowadzenie Przykład Algorytm naiwny Rozwiazanie ˛ Czas Algorytm KMP Tablica P Wzorzec i jego tablica P[ ]: P[ ] słowo 0 a 0 b 1 a 1 a b b a a a a a Wyszukiwanie wzorca: tekst a a b a Trafienie! aababaabaaa b a a a 2 b 3 a Wyszukiwanie wzorca Algorytmy tekstowe Wstep ˛ Wprowadzenie Przykład Algorytm naiwny Rozwiazanie ˛ Czas Algorytm KMP Tablica P Wzorzec i jego tablica P[ ]: P[ ] słowo 0 a 0 b 1 a 1 a Wyszukiwanie wzorca: tekst a a b a Trafienie! aababaabaaa b a a a b b a a a a a b 2 b 3 a Wyszukiwanie wzorca Algorytmy tekstowe Wstep ˛ Wprowadzenie Przykład Algorytm naiwny Rozwiazanie ˛ Czas Algorytm KMP Tablica P P[ ] słowo Wzorzec i jego tablica P[ ]: 0 a 0 b 1 a 1 a 2 b Wyszukiwanie wzorca: tekst a a b a Trafienie! aababaabaaa b a a b a a a a b 3 a Wyszukiwanie wzorca Algorytmy tekstowe Wstep ˛ Wprowadzenie Przykład Algorytm naiwny Wzorzec i jego tablica P[ ]: P[ ] słowo 0 a 0 b 1 a 1 a 2 b Rozwiazanie ˛ Czas Wyszukiwanie wzorca: Algorytm KMP Tablica P tekst a a b Trafienie! aababaabaaa a b a a b a a a a 3 a