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

Podobne dokumenty