Algorytmy tekstowe Wst ˛ep Wprowadzenie Przykład Algorytm naiwny Rozwi ˛azanie Czas Algorytm KMP Tablica P
Algorytmy tekstowe
zaj ˛ecia 7.Algorytmy tekstowe Wst ˛ep Wprowadzenie Przykład Algorytm naiwny Rozwi ˛azanie Czas Algorytm KMP Tablica P
Słowa
słowodla informatyka to ci ˛ag znaków
Algorytmy tekstowe Wst ˛ep Wprowadzenie Przykład Algorytm naiwny Rozwi ˛azanie Czas Algorytm KMP Tablica P
Problemy
Najcz ˛e´sciej stawiany problem tekstowy: wyszukiwanie wzorca w tek´scie
znak
alfabet– zbiór dost ˛epnych znaków słowa– ci ˛agi znaków
Algorytmy tekstowe Wst ˛ep Wprowadzenie Przykład Algorytm naiwny Rozwi ˛azanie Czas Algorytm KMP Tablica P
Problemy
Najcz ˛e´sciej stawiany problem tekstowy: wyszukiwanie wzorca w tek´scie znak
alfabet– zbiór dost ˛epnych znaków słowa– ci ˛agi znaków
Algorytmy tekstowe Wst ˛ep Wprowadzenie Przykład Algorytm naiwny Rozwi ˛azanie Czas Algorytm KMP Tablica P
Problemy
Najcz ˛e´sciej stawiany problem tekstowy: wyszukiwanie wzorca w tek´scie znak
alfabet– zbiór dost ˛epnych znaków
Algorytmy tekstowe Wst ˛ep Wprowadzenie Przykład Algorytm naiwny Rozwi ˛azanie Czas Algorytm KMP Tablica P
Problemy
Najcz ˛e´sciej stawiany problem tekstowy:
wyszukiwaniewzorcawtek´scie
znak
alfabet– zbiór dost ˛epnych znaków
Algorytmy tekstowe Wst ˛ep Wprowadzenie Przykład Algorytm naiwny Rozwi ˛azanie Czas Algorytm KMP Tablica P
Przykład
Problem alfabet: {a, b} tekst: abbbaabaabba wzorzec: aabaAlgorytmy tekstowe Wst ˛ep Wprowadzenie Przykład Algorytm naiwny Rozwi ˛azanie Czas Algorytm KMP Tablica P
Przykład
Problem alfabet: {a, b} tekst: abbbaabaabba wzorzec: aaba Rozwi ˛azanie wyst ˛apienia: 1 abbbaabaaabaa 2 abbbaabaabaaAlgorytmy tekstowe Wst ˛ep Wprowadzenie Przykład Algorytm naiwny Rozwi ˛azanie Czas Algorytm KMP Tablica P
Pomysł
Algorytmy tekstowe Wst ˛ep Wprowadzenie Przykład Algorytm naiwny Rozwi ˛azanie Czas Algorytm KMP Tablica P
Działanie
cbadabcbaabccdba bccd bccd bccd bccd bccd bccdAlgorytmy tekstowe Wst ˛ep Wprowadzenie Przykład Algorytm naiwny Rozwi ˛azanie Czas Algorytm KMP Tablica P
Zło˙zono´s´c
n – długo´s´c tekstu m – długo´s´c wzorca O(n · m)Algorytmy tekstowe Wst ˛ep Wprowadzenie Przykład Algorytm naiwny Rozwi ˛azanie Czas Algorytm KMP Tablica P
Zło˙zono´s´c
n – długo´s´c tekstu m – długo´s´c wzorca O(n · m)Algorytmy tekstowe Wst ˛ep Wprowadzenie Przykład Algorytm naiwny Rozwi ˛azanie Czas Algorytm KMP Tablica P
Czy rzeczywi´scie O(n · m)?
tekst: aaaaaa . . . aaaa (długo´sci n) wzorzec: aa . . . aab (długo´sci m) ile operacji wykonuje algorytm naiwny?
Algorytmy tekstowe Wst ˛ep Wprowadzenie Przykład Algorytm naiwny Rozwi ˛azanie Czas Algorytm KMP Tablica P
Czy rzeczywi´scie O(n · m)?
tekst: aaaaaa . . . aaaa (długo´sci n) wzorzec: aa . . . aab (długo´sci m) liczba operacji: (n − m + 1) · m
Algorytmy tekstowe Wst ˛ep Wprowadzenie Przykład Algorytm naiwny Rozwi ˛azanie Czas Algorytm KMP Tablica P
Pomysł
Za ka˙zdym razem zaczynamy porównywa´c od pocz ˛atku –
Algorytmy tekstowe Wst ˛ep Wprowadzenie Przykład Algorytm naiwny Rozwi ˛azanie Czas Algorytm KMP Tablica P
Pomysł
Za ka˙zdym razem zaczynamy porównywa´c od pocz ˛atku –
tracimy cenne informacje!
Przykład
abaaaaaaaaaaaa
Algorytmy tekstowe Wst ˛ep Wprowadzenie Przykład Algorytm naiwny Rozwi ˛azanie Czas Algorytm KMP Tablica P
Pomysł
Za ka˙zdym razem zaczynamy porównywa´c od pocz ˛atku –
tracimy cenne informacje!
Przykład
abaaaaaaaaaaaa abaaaaaaaaaaaa
Algorytmy tekstowe Wst ˛ep Wprowadzenie Przykład Algorytm naiwny Rozwi ˛azanie Czas Algorytm KMP Tablica P
Trudne słowa
prefiks sufiks prefikso-sufiksAlgorytmy tekstowe Wst ˛ep Wprowadzenie Przykład Algorytm naiwny Rozwi ˛azanie Czas Algorytm KMP Tablica P
Trudne słowa
prefiks sufiks prefikso-sufiksAlgorytmy tekstowe Wst ˛ep Wprowadzenie Przykład Algorytm naiwny Rozwi ˛azanie Czas Algorytm KMP Tablica P
Trudne słowa
prefiks sufiks prefikso-sufiksAlgorytmy tekstowe Wst ˛ep Wprowadzenie Przykład Algorytm naiwny Rozwi ˛azanie Czas Algorytm KMP Tablica P
Tablica najdłu˙zszych prefikso-sufiksów – P[ ]
P[i] – długo´s´c najdłu˙zszego wła´sciwego prefikso-sufiksu prefiksu długo´sci i słowa w
Algorytmy tekstowe Wst ˛ep Wprowadzenie Przykład Algorytm naiwny Rozwi ˛azanie Czas Algorytm KMP Tablica P
Tablica najdłu˙zszych prefikso-sufiksów – P[ ]
P[i] – długo´s´c najdłu˙zszego wła´sciwego prefikso-sufiksu prefiksu długo´sci i słowa w
słowo w b a a b a b a a
i = 0 1 2 3 4 5 6 7 8
Algorytmy tekstowe Wst ˛ep Wprowadzenie Przykład Algorytm naiwny Rozwi ˛azanie Czas Algorytm KMP Tablica P
Obliczanie P[ ]
P[ ] 0 0 1 1 2 3 słowo a b a a b a b a aAlgorytmy tekstowe Wst ˛ep Wprowadzenie Przykład Algorytm naiwny Rozwi ˛azanie Czas Algorytm KMP Tablica P
Obliczanie P[ ]
P[ ] 0 0 1 1 2 3 słowo a b a a b a b a apasuj ˛acy prefikso-sufiks a b a
Algorytmy tekstowe Wst ˛ep Wprowadzenie Przykład Algorytm naiwny Rozwi ˛azanie Czas Algorytm KMP Tablica P
Obliczanie P[ ]
P[ ] 0 0 1 1 2 3 2 słowo a b a a b a b a apasuj ˛acy prefikso-sufiks a b a
kolejna pozycja a b a a
Algorytmy tekstowe Wst ˛ep Wprowadzenie Przykład Algorytm naiwny Rozwi ˛azanie Czas Algorytm KMP Tablica P
Wyszukiwanie wzorca
Wzorzec i jego tablica P[ ]: P[ ] 0 0 1 1 2 3
słowo a b a a b a
Wyszukiwanie wzorca:
Algorytmy tekstowe Wst ˛ep Wprowadzenie Przykład Algorytm naiwny Rozwi ˛azanie Czas Algorytm KMP Tablica P
Wyszukiwanie wzorca
Wzorzec i jego tablica P[ ]: P[ ] 0 0 1 1 2 3
słowo a b a a b a
Wyszukiwanie wzorca:
tekst a a b a b a a b a a a
Algorytmy tekstowe Wst ˛ep Wprowadzenie Przykład Algorytm naiwny Rozwi ˛azanie Czas Algorytm KMP Tablica P
Wyszukiwanie wzorca
Wzorzec i jego tablica P[ ]: P[ ] 0 0 1 1 2 3
słowo a b a a b a
Wyszukiwanie wzorca:
tekst a a b a b a a b a a a
Algorytmy tekstowe Wst ˛ep Wprowadzenie Przykład Algorytm naiwny Rozwi ˛azanie Czas Algorytm KMP Tablica P
Wyszukiwanie wzorca
Wzorzec i jego tablica P[ ]: P[ ] 0 0 1 1 2 3
słowo a b a a b a
Wyszukiwanie wzorca:
tekst a a b a b a a b a a a
Algorytmy tekstowe Wst ˛ep Wprowadzenie Przykład Algorytm naiwny Rozwi ˛azanie Czas Algorytm KMP Tablica P
Wyszukiwanie wzorca
Wzorzec i jego tablica P[ ]: P[ ] 0 0 1 1 2 3
słowo a b a a b a
Wyszukiwanie wzorca:
tekst a a b a b a a b a a a
Algorytmy tekstowe Wst ˛ep Wprowadzenie Przykład Algorytm naiwny Rozwi ˛azanie Czas Algorytm KMP Tablica P
Wyszukiwanie wzorca
Wzorzec i jego tablica P[ ]: P[ ] 0 0 1 1 2 3
słowo a b a a b a
Wyszukiwanie wzorca:
tekst a a b a b a a b a a a
Algorytmy tekstowe Wst ˛ep Wprowadzenie Przykład Algorytm naiwny Rozwi ˛azanie Czas Algorytm KMP Tablica P
Wyszukiwanie wzorca
Wzorzec i jego tablica P[ ]: P[ ] 0 0 1 1 2 3
słowo a b a a b a
Wyszukiwanie wzorca:
tekst a a b a b a a b a a a
Algorytmy tekstowe Wst ˛ep Wprowadzenie Przykład Algorytm naiwny Rozwi ˛azanie Czas Algorytm KMP Tablica P
Wyszukiwanie wzorca
Wzorzec i jego tablica P[ ]: P[ ] 0 0 1 1 2 3
słowo a b a a b a
Wyszukiwanie wzorca:
tekst a a b a b a a b a a a
Algorytmy tekstowe Wst ˛ep Wprowadzenie Przykład Algorytm naiwny Rozwi ˛azanie Czas Algorytm KMP Tablica P
Wyszukiwanie wzorca
Wzorzec i jego tablica P[ ]: P[ ] 0 0 1 1 2 3
słowo a b a a b a
Wyszukiwanie wzorca:
tekst a a b a b a a b a a a
Algorytmy tekstowe Wst ˛ep Wprowadzenie Przykład Algorytm naiwny Rozwi ˛azanie Czas Algorytm KMP Tablica P
Wyszukiwanie wzorca
Wzorzec i jego tablica P[ ]: P[ ] 0 0 1 1 2 3
słowo a b a a b a
Wyszukiwanie wzorca:
tekst a a b a b a a b a a a
Algorytmy tekstowe Wst ˛ep Wprowadzenie Przykład Algorytm naiwny Rozwi ˛azanie Czas Algorytm KMP Tablica P
Wyszukiwanie wzorca
Wzorzec i jego tablica P[ ]: P[ ] 0 0 1 1 2 3
słowo a b a a b a
Wyszukiwanie wzorca:
tekst a a b a b a a b a a a
a b a a b a
Algorytmy tekstowe Wst ˛ep Wprowadzenie Przykład Algorytm naiwny Rozwi ˛azanie Czas Algorytm KMP Tablica P
Wyszukiwanie wzorca
Wzorzec i jego tablica P[ ]: P[ ] 0 0 1 1 2 3
słowo a b a a b a
Wyszukiwanie wzorca:
tekst a a b a b a a b a a a
a b a
Algorytmy tekstowe Wst ˛ep Wprowadzenie Przykład Algorytm naiwny Rozwi ˛azanie Czas Algorytm KMP Tablica P
Wyszukiwanie wzorca
Wzorzec i jego tablica P[ ]: P[ ] 0 0 1 1 2 3
słowo a b a a b a
Wyszukiwanie wzorca:
tekst a a b a b a a b a a a
a b a a
Algorytmy tekstowe Wst ˛ep Wprowadzenie Przykład Algorytm naiwny Rozwi ˛azanie Czas Algorytm KMP Tablica P
Wyszukiwanie wzorca
Wzorzec i jego tablica P[ ]: P[ ] 0 0 1 1 2 3
słowo a b a a b a
Wyszukiwanie wzorca:
tekst a a b a b a a b a a a
a b a a b
Algorytmy tekstowe Wst ˛ep Wprowadzenie Przykład Algorytm naiwny Rozwi ˛azanie Czas Algorytm KMP Tablica P
Wyszukiwanie wzorca
Wzorzec i jego tablica P[ ]: P[ ] 0 0 1 1 2 3
słowo a b a a b a
Wyszukiwanie wzorca:
tekst a a b a b a a b a a a
a b
Algorytmy tekstowe Wst ˛ep Wprowadzenie Przykład Algorytm naiwny Rozwi ˛azanie Czas Algorytm KMP Tablica P
Wyszukiwanie wzorca
Wzorzec i jego tablica P[ ]: P[ ] 0 0 1 1 2 3
słowo a b a a b a
Wyszukiwanie wzorca:
tekst a a b a b a a b a a a
a