Algorytmy tekstowe na przykładzie KMP

Podobne dokumenty
1 abbbaabaaabaa -wzorzec: aaba

Wskaźniki i struktury. Programowanie C, LA Anna Gogolińska

Temat: Algorytmy wyszukiwania wzorca w tekście

Programowanie dynamiczne

Wstęp do Programowania potok funkcyjny

Algorytmy w teorii liczb

Zadanie 1 Przygotuj algorytm programu - sortowanie przez wstawianie.

Wykład 6. Wyszukiwanie wzorca w tekście

Wstęp do Informatyki zadania ze złożoności obliczeniowej z rozwiązaniami

Rysunek 1 Przykładowy graf stanów procesu z dyskretnymi położeniami.

Podstawy Informatyki. Sprawność algorytmów

Analiza algorytmów zadania podstawowe

Jarosław Wróblewski Analiza Matematyczna 1A, zima 2012/13

Algorytmy i struktury danych. wykład 8

0 + 0 = 0, = 1, = 1, = 0.

Złożoność informacyjna Kołmogorowa. Paweł Parys

Podróże po Imperium Liczb

Wykład 4. Określimy teraz pewną ważną klasę pierścieni.

Obóz Naukowy Olimpiady Matematycznej Gimnazjalistów

Algorytm selekcji Hoare a. Łukasz Miemus

Indukcja. Materiały pomocnicze do wykładu. wykładowca: dr Magdalena Kacprzak

1. Definicja granicy właściwej i niewłaściwej funkcji.

Algorytmy i Struktury Danych, 2. ćwiczenia

Lista 0. Kamil Matuszewski 1 marca 2016

Matematyka Dyskretna 2/2008 rozwiązania. x 2 = 5x 6 (1) s 1 = Aα 1 + Bβ 1. A + B = c 2 A + 3 B = d

Zaawansowane algorytmy i struktury danych

ALGORYTMY OPTYMALIZACJI wyklad 3.nb 1. Wykład 3. Sformułujemy teraz warunki konieczne dla istnienia rozwiązań zagadnienia optymalizacyjnego:

Paradygmaty programowania

XI Olimpiada Matematyczna Gimnazjalistów

Zad. 1 Zad. 2 Zad. 3 Zad. 4 Zad. 5 SUMA

ZŁOŻONOŚĆ OBLICZENIOWA ALGORYTMÓW

Rozkłady i ich dystrybuanty 16 marca F X (t) = P (X < t) 0, gdy t 0, F X (t) = 1, gdy t > c, 0, gdy t x 1, 1, gdy t > x 2,

Dystrybucje, wiadomości wstępne (I)

Struktury danych i złożoność obliczeniowa Wykład 2. Prof. dr hab. inż. Jan Magott

Szeregi o wyrazach dodatnich. Kryteria zbieżności d'alemberta i Cauchy'ego

Logarytmy. Funkcje logarytmiczna i wykładnicza. Równania i nierówności wykładnicze i logarytmiczne.

Całki niewłaściwe. Całki w granicach nieskończonych

Nierówność Krafta-McMillana, Kodowanie Huffmana

Zasada indukcji matematycznej

ĆWICZENIE 4 KRZ: A B A B A B A A METODA TABLIC ANALITYCZNYCH

2 Rodziny zbiorów. 2.1 Algebry i σ - algebry zbiorów. M. Beśka, Wstęp do teorii miary, rozdz. 2 11

Lista zagadnień omawianych na wykładzie w dn r. :

Skończone rozszerzenia ciał

Funkcje dwóch zmiennych

Wstęp do programowania

Porządek symetryczny: right(x)

1 Działania na zbiorach

Sortowanie topologiczne skierowanych grafów acyklicznych

Siedem cudów informatyki czyli o algorytmach zdumiewajacych

Kodowanie i kompresja Tomasz Jurdziński Studia Wieczorowe Wykład Kody liniowe - kodowanie w oparciu o macierz parzystości

Algorytmy i struktury danych. Drzewa: BST, kopce. Letnie Warsztaty Matematyczno-Informatyczne

Kody blokowe Wykład 2, 10 III 2011

Matematyka II. Bezpieczeństwo jądrowe i ochrona radiologiczna Semestr letni 2018/2019 wykład 13 (27 maja)

Prawdopodobieństwo i statystyka

Wielomiany jednej zmiennej rzeczywistej algorytmy

Wykład 1. Na początku zajmować się będziemy zbiorem liczb całkowitych

Imię, nazwisko, nr indeksu

Analiza algorytmów zadania podstawowe

Rozwiązania około dwustu łatwych zadań z języków formalnych i złożoności obliczeniowej i być może jednego chyba trudnego (w trakcie tworzenia)

Kody Huffmana oraz entropia przestrzeni produktowej. Zuzanna Kalicińska. 1 maja 2004

Zaawansowane algorytmy i struktury danych

1 Wprowadzenie do algorytmiki

W. Guzicki Próbna matura, grudzień 2014 r. poziom rozszerzony 1

Jeśli czas działania algorytmu zależy nie tylko od rozmiaru danych wejściowych i przyjmuje różne wartości dla różnych danych o tym samym rozmiarze,

Indukcja matematyczna. Zasada minimum. Zastosowania.

XIV Olimpiada Matematyczna Juniorów Zawody stopnia pierwszego część korespondencyjna (1 września 2018 r. 15 października 2018 r.)

komputery? Andrzej Skowron, Hung Son Nguyen Instytut Matematyki, Wydział MIM, UW

Lista 6. Kamil Matuszewski 13 kwietnia D n =

Algorytmy i Struktury Danych, 2. ćwiczenia

O pewnych związkach teorii modeli z teorią reprezentacji

Jeśli wszystkie wartości, jakie może przyjmować zmienna można wypisać w postaci ciągu {x 1, x 2,...}, to mówimy, że jest to zmienna dyskretna.

Matematyka Dyskretna. Andrzej Szepietowski. 25 czerwca 2002 roku

IX. Rachunek różniczkowy funkcji wielu zmiennych. 1. Funkcja dwóch i trzech zmiennych - pojęcia podstawowe. - funkcja dwóch zmiennych,

a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] a[10]

7. CIĄGI. WYKŁAD 5. Przykłady :

UBEZPIECZENIA NA ŻYCIE

JAO - Wprowadzenie do Gramatyk bezkontekstowych

Matematyka dyskretna. Andrzej Łachwa, UJ, /15

Programowanie w VB Proste algorytmy sortowania

Kodowanie i kompresja Streszczenie Studia dzienne Wykład 6

LOGIKA I TEORIA ZBIORÓW

3.4. Przekształcenia gramatyk bezkontekstowych

KONGRUENCJE. 1. a a (mod m) a b (mod m) b a (mod m) a b (mod m) b c (mod m) a c (mod m) Zatem relacja kongruencji jest relacją równoważności.

8. Funkcje wielu zmiennych - pochodne cząstkowe

Obliczenia naukowe Wykład nr 6

Warmińsko-Mazurskie Zawody Matematyczne Eliminacje cykl styczniowy Poziom: szkoły ponadgimnazjalne, 10 punktów za każde zadanie

Zadanie 1. Czy prawdziwa jest następująca implikacja? Jeśli L A jest językiem regularnym, to regularnym językiem jest też. A = (A, Q, q I, F, δ)

Teoria informacji i kodowania Ćwiczenia Sem. zimowy 2016/2017

Spacery losowe generowanie realizacji procesu losowego

Funkcje dwóch zmiennych, pochodne cząstkowe

Liczby pierwsze. Kacper Żurek, uczeń w Gimnazjum nr 1 im. Jana Pawła II w Giżycku.

Zadanie 2. Obliczyć rangę dowolnego elementu zbioru uporządkowanego N 0 N 0, gdy porządek jest zdefiniowany następująco: (a, b) (c, d) (a c b d)

System BCD z κ. Adam Slaski na podstawie wykładów, notatek i uwag Pawła Urzyczyna. Semestr letni 2009/10

Programowanie w Baltie klasa VII

Matematyka dyskretna. Andrzej Łachwa, UJ, /15

złożony ze słów zerojedynkowych o długości co najmniej 3, w których druga i trzecia litera od końca sa

Wskazówki dotyczące zmiennych, tablic i procedur 1

JAO - lematy o pompowaniu dla jezykow bezkontekstowy

Modelowanie motywów łańcuchami Markowa wyższego rzędu

Transkrypt:

Łukasz Kowalik, SD 2003 lgorytmy tekstowe na rzykładzie KMP 1 lgorytmy tekstowe na rzykładzie KMP Postawowe ojęcia Niech będzie dowolnym skończonym nieustym zbiorem symboli. Zbiór nazywamy alfabetem. Dowolny ciąg symboli ze zbioru nazywamy słowem (nad alfabetem ). Przykład. jest słowem nad alfabetem. Przez oznaczamy słowo uste, rzez oznaczamy (nieskończony) zbiór wszystkich słów nad alfabetem. Przez będziemy oznaczać długość słowa, n.,. Konkatenacja słów i jest to słowo owstałe o doisaniu słowa za słowem. Słowo jest refiksem słowa, jeśli dla ewnego słowa. nalogicznie, słowo jest sufiksem słowa, jeśli dla ewnego słowa. Przykłady. "!$# jest refiksem słowa!$#&%(')!+* ; %(')!+* jest jego sufiksem. jest refiksem i sufiksem każdego słowa. Każde słowo jest swoim własnym refiksem i sufiksem. jest refiksem, ale -, jest właściwym refiksem. nalog- Jeśli iczne definiujemy właściwy sufiks. Problem wyszukiwania wzorca to mówimy, że Dane słowa. ( wzorzec ) i! ( tekst ) nad ewnym alfabetem,./ 01!. Problem znaleźć wszystkie wystąienia wzorca. w tekście!. Przykład wzorzec 2 * wystęuje w tekście 232 ** 2 * 2 * na ozycjach 2, 5 i. 54 Przyjmiemy oznaczenia./ i! 56. lg. 1 rzedstawia algorytm naiwny rozwiązujący roblem wyszukiwania wzorca. lgorytm doasowuje wzorzec we wszystkich możliwych miejscach. lgorithm 1 naiwny 1 98 2 while ;0 3 B8 4 while.d 5 G8 H4 6=>4@ 6 if then Write( ) 8 98I )! do F do

4 O Łukasz Kowalik, SD 2003 lgorytmy tekstowe na rzykładzie KMP 2 Uwaga! Do alfabetu dodajemy dwa nowe, secjalne symbole, owiedzmy $ i @. Przed uruchomieniem algorytmu 1 $ doisujemy na końcu!, natomiast @ na końcu.. Pełnią one rolę strażników w wewnętrznej ętli while. Złożonośc czasowa oczywiście JLKMK Porawianie alg. naiwnego 6N>41 &O 6P4 JLK dostaliśmy niezgodność. Wiemy, że.dqfrsr F asuje do! TRURV Załóżmy, że dla zy warto srawdzać od nowa, czy wzorzec wystęuje na nastęnej ozycji ( ) może możemy rzeskoczyć kilka symboli Zobaczmy co się dzieje, gdy wzorzec wystęuje na jednej z ozycji F)RWRWRT (Rys. 1). O. ). ti] 1]=ti+j k] ti+j 1]=k] t 1..j] j] Rysunek 1 Wzorzec. wystęuje na jednej z ozycji F)RWRWRT. Widzimy, że w takiej sytuacji refiks.dxyrsr F jest równocześnie jego (właściwym) sufiksem! tzn..dqfrur %.D % FRUR F. Jeśli to jest ierwsze miejsce, w którym wystęuje taka sytuacja, możemy beziecznie rzesunąć do %. Wystarczy znać %. Innymi słowy, dla Z chcemy więc znać liczbę albo inaczej \ długość największego właściwego sufiksu.dqfrsr F, który jest równocześnie refiksem. ^]`_a \ 0 %Lb À c).dxfrur % jest sufiksem.dxfrur \e Wtedy możemy beziecznie doasowywać wzorzec w miejscu F. Zauważmy, że onieważ F b f 5 więc FgZh. Dla rzyjmijmy i \. Wtedy nie ma j sensu doasowywać wzorca w miejscu F, bo miejsce doasowania nie zmieni się. W takiej sytuacji rzesuwamy się tylko o jedną ozycję (g8 ), ale niewiele tracimy, bo H skoro to dla orzedniej wartości wykonano tylko jedno orównanie. więc ostatecznie k]`_a k rzesuwamy na ozycję K+Fl FmO. Zauważmy też, że nie musimy już srawdzać ierwszych F liter wzorca!

6 Łukasz Kowalik, SD 2003 lgorytmy tekstowe na rzykładzie KMP 3 Przykład. Tablica dla wzorca. no no. 1 2 3 4 5 6 8 9 10.D a b a c a b a c a a 0 0 1 0 1 2 3 4 5 1 Załóżmy, że tablicę mamy już obliczoną. Wykorzystując owyższe rozważania możemy orawić algorytm naiwny tak, żeby sożytkować informację zawartą w tablicy. Poniższy algorytm wymyślili anowie Knuth i Pratt oraz (niezależnie) Moris w 19 roku. lgorithm 2 lgorytm KMP (Knutha-Morisa-Pratta) 1 98 2 B8 6=>4@ 3 while ;0 q 4 {.DQFRSR FS.D 5 B8 F 6 while.d )! G8 H4 8 if then 9 Write( ) "]u_a 10 98I K$Fv do q F F do FmO FRUR \! rmrsrs t F ) } Twierdzenie. Niech. i! będ który na wejściu dostaje słowa. i! oraz tablicę!,./ w4 a dowolnymi słowami,./p0 działa w czasie JLK,! O. 16. lgorytm KMP, Uzasadnienie. Przyjmujemy, że orównanie dowolnych dwóch liter wykonuje się w czasie stałym. Wtedy orównanie dwóch liter możemy traktować jako oerację dominującą. Porównania liter wzorca z literami tekstu możemy odzielić na dwie kategorie orówania ozytywne (równość zachodzi) i negatywne (litery są różne). Ponieważ na końcu każego obrotu zewnętrznej ętli while wartość zmiennej rośnie, a w każdym obrocie tej ętli tylko raz wystęuje orównanie negatywne, odczas wykonania całego algorytmu całkowita liczba orównań negatywnych nie rzekracza 6Nq41. Równie łatwo oliczyć ozytywne orównania. Przyjrzyjmy się jednemu obrotowi zewnętrznej ętli while. Załóżmy, że o wykonaniu wewnętrznej ętli while xz. Niech ly oznacza nową {]`_a wartość (o wykonaniu z8i K+Fl F}O ), natomiast y nową wartość (o wykonaniu f ~8 F na oczątku kolejnego obrotu ętli). Wtedy vy F oraz \y \ czyli y y. Jeśli natomiast o wykonaniu wewnętrznej ętli while, to y, Fy F czyli y Fy ƒz^. Widzimy, że odczas działania algorytmu wartość wyrażenia nie maleje. Tymczasem o każdym ozytywnym orównaniu wartość rośnie. więc żadna litera tekstu nie będzie więcej niż raz ozytywnie orównana. Stąd wszystkich ozytywnych orównań jest nie więcej niż liter tekstu czyli 6. To kończy uzasadnienie.

ˆ ˆ Łukasz Kowalik, SD 2003 lgorytmy tekstowe na rzykładzie KMP 4 Jak obliczyć tablicę Przyomnijmy \ długość największego właściwego sufiksu.dqfrsr F, który jest równocześnie refiksem. gdybyśmy chcieli znać długości wszystkich właściwych sufiksów.dxfrur \, które są refiksami. Niech. i. Najdłuższym takim sufiksem jest F. Jego - długość to ˆ. Zastanówmy się nad nastęnym od względem długości takim sufiksem (oznaczmy go rzez Š ). Ponieważ i )Š są sufiksami. i WŠ jest krótszy niż, a więc WŠ jest właściwym sufiksem Y. o więcej, onieważ Š był nastęny od względem długości, jest on najdłuższym właściwym sufiksem Y, który jest równocześnie refiksem.. więc ŠY S H. nalogicznie ostęujemy rzy obliczaniu długości kolejnych sufiksów (atrz Rys 2)..DXYRSR.DXYRSR.DXYRSR.DXYRSR.D RSR \ Œ F F F Hˆ ^ H H Rysunek 2 Długości wszystkich właściwych sufiksów.dxyrsr. można znaleźć w tablicy., które są równocześnie refiksami Wniosek 1. Z tablicy sa równocześnie refiksami. sa to liczby można odczytać długości wszystkich właściwych sufiksów.dqfrur F, które F \U F )RWRWR)R Jak obliczyć tablicę Skorzystamy z rogramowania dynamicznego. k j Rysunek 3.DQFRSR % jest właściwym sufiksem i równocześnie refiksem.dqfrsr F. Jeśli.dXFRUR % jest właściwym sufiksem i równocześnie refiksem.dqfrur F (atrz Rys. 3) to.dqfrur % ) jest właściwym sufiksem i refiksem.dxfrur ),.D %.D F.

R 4 Łukasz Kowalik, SD 2003 lgorytmy tekstowe na rzykładzie KMP 5 więc żeby obliczyć F trzeba znaleźć najdłuższy sufiks.dxfrur refiksem.dqfrur ), który da się rzedłużyć, czyli najmniejsze ' takie że.d o ).D \R o, będący róznocześnie Jeśli nie ma takiego ' (tzn. żadnego, nawet ustego refiksu nie da się rzedłużyć), to lgorithm 3 Obliczanie tablicy 8 1 2 X) 8 3 for B8 to 4 do 4 {obliczamy F } 5 2N8 ) 6 while K 2{Z O and KX.D 2 2N8 8 if.d 2 ).D F then 9 F 8 2 10 else 11 F 8 ),.D FmO do \ 23 {róbujemy któtszy sufiks} H Twierdzenie. Złożoność czasowa algorytmu 3 dla słowa. długości 4 lgorithm 4 Obliczanie tablicy 1 8 2 X) 8 3 2N8 4 for B8 to 4 do 5 {obliczamy F } 6 while K 2{Z O and KX.D 2 2N8 8 if.d 2 ).D F then 9 2N8I2 F 8 2 10 11 else 12 F 8 ), wersja II.D FmO do 23 {róbujemy któtszy sufiks} wynosi K O. Uzasadnienie. Sójrzmy na algorytm 4. Powstał on na odstawie algorytmu 4 o dodaniu linii 3, 9 i usunięciu linii 5. Zauważmy, że działa on dokładnie tak samo jak ierwotny algorytm,

4 Łukasz Kowalik, SD 2003 lgorytmy tekstowe na rzykładzie KMP 6 tylko wartości zmiennej 2 zmieniają się w innych momentach. Łatwiej nam będzie analizować algorytm 4. Znowu rzyjmujemy, że orównanie dowolnych dwóch liter wykonuje się w czasie stałym. Żeby oszacować złożoność algorytmu wystarczy obliczyć liczbę wykonań instrukcji 2=8 23. Zauważmy, że wartości zmiennej 2 zmieniają się tylko w liniach i 9. W linii zawsze jednostek, maleją, natomiast w linii 9 zawsze rosną. Podczas całego algorytmu 2 rośnie o 4w a więc maleć może co najwyżej 4 razy (maleje co najmniej o 1). To kończy uzasadnienie. 6 H4 Wniosek 2. Złożoność czasowa algorytmu KMP jest rzędu K algorytmu KMP jest rzędu K O. O, złożoność amięciowa