background image

Algorytmy

tekstowe

Wst ˛ep

Wprowadzenie

Przykład

Algorytm
naiwny

Rozwi ˛

azanie

Czas

Algorytm KMP

Tablica P

Algorytmy tekstowe

zaj ˛ecia 7.

Bartosz Górski, Tomasz Kulczy ´nski, Bła˙zej Osi ´nski

background image

Algorytmy

tekstowe

Wst ˛ep

Wprowadzenie

Przykład

Algorytm
naiwny

Rozwi ˛

azanie

Czas

Algorytm KMP

Tablica P

Słowa

słowo

dla informatyka to ci ˛

ag znaków

nie musi mie´c sensu w ˙zadnym u˙zywanym j ˛ezyku

background image

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

background image

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

background image

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

background image

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

background image

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: aaba

background image

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: aaba

Rozwi ˛

azanie

wyst ˛

apienia:

1

abbb

aaba

aabaa

2

abbbaab

aaba

a

background image

Algorytmy

tekstowe

Wst ˛ep

Wprowadzenie

Przykład

Algorytm
naiwny

Rozwi ˛

azanie

Czas

Algorytm KMP

Tablica P

Pomysł

Spróbujmy w ka˙zdym miejscu dopasowa´c wzorzec.

background image

Algorytmy

tekstowe

Wst ˛ep

Wprowadzenie

Przykład

Algorytm
naiwny

Rozwi ˛

azanie

Czas

Algorytm KMP

Tablica P

Działanie

c

b

ada

bc

baabccdba

bccd

b

ccd

bccd

bccd

bccd

bc

cd

background image

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)

background image

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)

W praktyce

znacznie

lepiej!

background image

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?

background image

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

background image

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!

background image

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

ab

aaa

aaaaaaaaa

aaa

b

background image

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

ab

aaa

aaaaaaaaa

aba

aa

aaaaaaaaa

aaa

b

aa

ab

background image

Algorytmy

tekstowe

Wst ˛ep

Wprowadzenie

Przykład

Algorytm
naiwny

Rozwi ˛

azanie

Czas

Algorytm KMP

Tablica P

Trudne słowa

prefiks

sufiks

prefikso-sufiks

background image

Algorytmy

tekstowe

Wst ˛ep

Wprowadzenie

Przykład

Algorytm
naiwny

Rozwi ˛

azanie

Czas

Algorytm KMP

Tablica P

Trudne słowa

prefiks

sufiks

prefikso-sufiks

background image

Algorytmy

tekstowe

Wst ˛ep

Wprowadzenie

Przykład

Algorytm
naiwny

Rozwi ˛

azanie

Czas

Algorytm KMP

Tablica P

Trudne słowa

prefiks

sufiks

prefikso-sufiks

background image

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

background image

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

P[i] =

0

0

0

0

1

2

1

2

3

background image

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

a

pasuj ˛

acy prefikso-sufiks

a

b

a

background image

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

a

pasuj ˛

acy prefikso-sufiks

a

b

a

kolejna pozycja

a

b

a

a

background image

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

a

pasuj ˛

acy prefikso-sufiks

a

b

a

kolejna pozycja

a

b

a

a

a

b

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

Trafienie! aab

abaaba

aa

background image

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

Trafienie! aab

abaaba

aa

background image

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

Trafienie! aab

abaaba

aa

background image

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

Trafienie! aab

abaaba

aa

background image

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

Trafienie! aab

abaaba

aa

background image

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

Trafienie! aab

abaaba

aa


Document Outline