1 Wst ep. 2 Algorytm. 2.1 Preprocessing

Podobne dokumenty
Algorytmy i struktury danych. wykład 8

Wykład 6. Wyszukiwanie wzorca w tekście

Zadanie 1 Przygotuj algorytm programu - sortowanie przez wstawianie.

Wstęp do Programowania potok funkcyjny

Analiza algorytmów zadania podstawowe

Wstęp do programowania. Dziel i rządź. Piotr Chrząstowski-Wachtel

Programowanie dynamiczne

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

1 abbbaabaaabaa -wzorzec: aaba

Algorytmy zwiazane z gramatykami bezkontekstowymi

Informatyka 1. Przetwarzanie tekstów

Algorytmy tekstowe. Andrzej Jastrz bski. Akademia ETI

PRÓBNY EGZAMIN MATURALNY Z INFORMATYKI STYCZEŃ Arkusz I. Czas pracy: 60 minut Liczba punktów do uzyskania: 15

prowadzący dr ADRIAN HORZYK /~horzyk tel.: Konsultacje paw. D-13/325

Analiza algorytmów zadania podstawowe

Pytanie 1. Pytanie 2. Pytanie 3. Przyporządkuj rozszerzenie nazwy pliku z jego poprawnym opisem: WOJEWÓDZKI KONKURS INFORMATYCZNY.

Informatyka A. Algorytmy

Temat: Algorytmy wyszukiwania wzorca w tekście

Egzamin, AISDI, I termin, 18 czerwca 2015 r.

Rozdzia l 11. Przestrzenie Euklidesowe Definicja, iloczyn skalarny i norma. iloczynem skalarnym.

Analiza leksykalna 1. Języki formalne i automaty. Dr inż. Janusz Majewski Katedra Informatyki

Krzysztof Jakubczyk. Zadanie 2

Algorytmy tekstowe na przykładzie KMP

Algorytmy i Struktury Danych, 2. ćwiczenia

Java Podstawy. Michał Bereta

INSTRUKCJA PUSTA. Nie składa się z żadnych znaków i symboli, niczego nie robi. for i := 1 to 10 do {tu nic nie ma};

20. Pascal i łączenie podprogramów Pascala z programem napisanym w C

Podstawowe algorytmy i ich implementacje w C. Wykład 9

Ekstrema funkcji wielu zmiennych.

2:8,7 3:9,4 / \ / \ / \ / \ 4:7,3 5:8 6:9,2 7:4

Algorytmy i struktury danych

Wstęp do programowania. Listy. Piotr Chrząstowski-Wachtel

EGZAMIN MATURALNY OD ROKU SZKOLNEGO

Wstęp do programowania. Drzewa. Piotr Chrząstowski-Wachtel

Podaj jaki jest wynik działania następującego algorytmu dla N = 6:

Ćwiczenie 6. Hurtownie danych

Strategia "dziel i zwyciężaj"

Matematyka dyskretna - wykład - część Podstawowe algorytmy kombinatoryczne

Zadania przykładowe do kolokwium z AA2

Drzewa binarne. Drzewo binarne to dowolny obiekt powstały zgodnie z regułami: jest drzewem binarnym Jeśli T 0. jest drzewem binarnym Np.

Zestaw 1 ZESTAWY A. a 1 a 2 + a 3 ± a n, gdzie skªadnik a n jest odejmowany, gdy n jest liczb parzyst oraz dodawany w przeciwnym.

Dzi kuj za uwag! Spotkania z Pythonem. Cz ± 1 - podstawy - rozwi zania zada« Michaª Alichniewicz. Gda«sk Studenckie Koªo Automatyków SKALP

Wprowadzenie do równań ró znicowych i ró zniczkowych.

Algorytmy przeszukiwania wzorca

Lab. 02: Algorytm Schrage

Analiza leksykalna 1. Teoria kompilacji. Dr inż. Janusz Majewski Katedra Informatyki

Laboratorium Podstawy Przetwarzania Rozproszonego SPRAWOZDANIE z zadania SERWIS KOMPUTEROWY

SQL, LIKE, IN, CASE, EXISTS. Marcin Orchel

Przeszukiwanie z nawrotami. Wykład 8. Przeszukiwanie z nawrotami. J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 238 / 279

Laboratorium Wstawianie skryptu na stroną: 2. Komentarze: 3. Deklaracja zmiennych

Laboratorium nr 7 Sortowanie

Algorytmy i Struktury Danych, 2. ćwiczenia

Wykład 5. Sortowanie w czasie liniowologarytmicznym

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

Podstawy programowania 2. Temat: Drzewa binarne. Przygotował: mgr inż. Tomasz Michno

Wyznaczniki, macierz odwrotna, równania macierzowe

Programowanie w VB Proste algorytmy sortowania

Jeśli nie potrafisz wytłumaczyć czegoś w prosty sposób, to znaczy, że tak naprawdę tego nie rozumiesz

Operatory logiczne. Podstawowe operatory logiczne, składanie wyrażeń z użyciem operatorów logicznych

Programowanie dynamiczne (optymalizacja dynamiczna).

Majchrzak Karolina Lewandowski Norbert

Zaawansowane algorytmy i struktury danych

Programowanie równoległe

Zadanie analizy leksykalnej

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

O zgodności procedur jednoczesnego testowania zastosowanych do problemu selekcji zmiennych w modelu liniowym

Wstęp do programowania. Stosy i kolejki. Piotr Chrząstowski-Wachtel

Definicja: Algorytmami sortowania zewnętrznego nazywamy takie algorytmy, które sortują dane umieszczone w pamięci zewnętrznej.

Wstęp do informatyki Ćwiczenia. Piotr Fulmański

ANALIZA PORÓWNAWCZA ALGORYTMÓW WYSZUKIWANIA WZORCA W TEKŚCIE

Wstęp do programowania

Kontrola przebiegu programu

Kiedy i czy konieczne?

Czas pracy: 60 minut

TEMAT: Podejmowanie decyzji w programie instrukcja warunkowa (IF).

Równoleg le sortowanie przez scalanie

Informatyka I. Wykład 3. Sterowanie wykonaniem programu. Instrukcje warunkowe Instrukcje pętli. Dr inż. Andrzej Czerepicki

Czym jest wykrywanie kolizji. Elementarne metody detekcji kolizji. Trochę praktyki: Jak przygotować Visual Studio 2010 do pracy z XNA pod Windows

Techniki optymalizacji

Drzewo. Drzewo uporządkowane ma ponumerowanych (oznaczonych) następników. Drzewo uporządkowane składa się z węzłów, które zawierają następujące pola:


Porządek dostępu do zasobu: procesory obszary pamięci cykle procesora pliki urządzenia we/wy

Zadania do wykonania. Rozwiązując poniższe zadania użyj pętlę for.

Modelowanie złożonych układów cyfrowych (1)

Zadanie 1. Zadanie 2. Zadanie 3. Zadanie 4. Zadanie 5. Zadanie 6. Zadania przykładowe do pierwszego kolokwium z AA

Programowanie i projektowanie obiektowe

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 7 Algorytmy

SCHEMAT OCENIANIA poziom rozszerzony arkusz II

Składnia funkcji i Rekurencja w języku Haskell

Ćwiczenie 7 z Podstaw programowania. Język C++, programy pisane w nieobiektowym stylu programowania. Zofia Kruczkiewicz

Przydatne sztuczki - sql. Na przykładzie postgres a.

Podziaª pracy. Cz ± II. 1 Tablica sortuj ca. Rozwi zanie

Wykład 2. Poprawność algorytmów

Lista 4. Kamil Matuszewski 10 maja 2016

Drzewa poszukiwań binarnych

Wstęp do programowania

4. Funkcje. Przykłady

Algorytmy i Struktury Danych. (c) Marcin Sydow. Introduction. QuickSort. Sortowanie 2. Limit. CountSort. RadixSort. Summary

Algorytmy i struktury danych

Wprowadzenie do programowania współbieżnego

Transkrypt:

1 Wst ep Rozważamyproblemznajdowaniawszystkichwyst apień wzorca x o długości mwtekścieyodługościn.zakładamy,żemjestistotniemniejszeniżn,nie jest istotny dla nas czas preprocessingu wzorca x, lecz liczba porównań liter z tekstem y. Zakładamy również, że czytelnik jest obeznany z algorytmem Morrissa-Prattanawyszukiwaniewszystkichwyst apień wzorca w tekście. Algorytm Morrissa-Pratta wykonuje pesymistycznie około n porównań literztekstuxzliteramiztekstuy.jakoprzykładweźmyx=a m 1 b,y=a n. Wówczas algorytm Morrisa-Pratta, po porównaniu pierwszych m 1 liter a istwierdzeniu,żes a one zgodne, dla każdej kolejnej litery tekstu y: 1.b edziemiałzapami etane,żeznalazłjużm 1literwzorcax;.sprawdzi,żeaktualnaliteratekstuniepasujedowzorcax,tjy[i]= a b=x[m];.dokonaprzesuni eciazgodnieztablic a P wzorca x, najdłuższym presiksosufiksemsłowaa m 1 =x[1...m 1]jesta m ; 4. sprawdzi, że aktualna litera tekstu pasuje do wzorca x na pozycji m 1, tjy[i]=a=x[m 1]; 5.uaktualniinformacj e,żeznalazłjużm 1literwzorcaxiprzesuniesi e donast epnejliterytekstu. Wsumie,algorytmwykonan m+1porównań,coprzyzałożenium n jest bliskie n. Poniżej przedstawimy algorytm, który w pesymistycznym wypadkudokonuje nporównańtekstuzwzorcemprzypreprocessinguwzorca xwczasieo(n)ipami ecio(n).algorytmtenjestnieznaczn amodyfikacj a algorytmu Morrissa-Pratta. O tekście x zakładamy, że zawiera przynajmniej dwieróżnelitery;znajdowaniewyst apieńwzorcaa m wdokładnienporównaniachmamynadziej e,żenieprzedstawiaczytelnikowyżadnychproblemów. Algorytm.1 Preprocessing Otekściexchcemywiedziećnast epuj ace dwie rzeczy: 1.Chcemymiećskonstruowan atablic epwzorcax,t asam acoużywana jestwalgorytmiemorrissa-pratta;tjp[i]jestdługości a najdłuższego prefikso-sufiksusłowax[1...i]. 1

.Załóżmy,żepierwsz aliter asłowaxjesta,zaśpierwsz aróżn aoda liter asło waxjestbipierwszyrazwyst epujeonanapozycjik.innymisłowy,x[1...k]=a K 1 b.zauważmy,że K m.wtrakcie preprocessingutekstuxzapami etujemywartośćk. Zauważmy,żedlakażdegoi Kmamyi P[i] K,gdyżwiemy,że x[1...k]=a K 1 b:prefikso-sufikssłowazaczynaj acegosi edoa K 1 bmusi zaczynaćsi ezat aliter abwwyst apieniu jako sufiks.. Treśćalgorytmu Poniżej zamieszczamy pseudokod algorytmu: varl,i,j; procedure SPRAWDZ_LITERY_A; var s:integer; { fors:=(i+l)to(i+k-1)do ify[s]!= a then return false; return true; } procedure ZNAJDZ_WSZYSTKIE_WYSZUKANIA { L:=0;I:=1;J:=0; while(i<=n-m+1)do{ if(j=m-k+1)or(x[j+k]!=y[i+j+k-1])then{ if(j=m-k+1)andsprawdz_litery_athen ZNALEZIONO_WZORZEC(I); if(j=0)then{ L:=max(L-1,0); I:=I+1; }elseif(p[j+k-1]<=k-1)then{ L:=P[J+K-1]; I:=I+(J+K-1-P[J+K-1]); J:=0; }else{ L:=K-1; I:=I+(J+K-1-P[J+K-1]);

} } J:=P[J+K-1]-(K-1); } }else J:=J+1; ijużśpieszymygowyjaśnić.zmiennekolejnooznaczaj a: Aktualniestaramysi esprawdzić,czywzorzecwyst epujewtekściepoczynaj acodpozycjiitekstu. Wiemy,żeliteryx[K...K+J 1]si ezgadzaj aztekstemnatejpozycji, tjpierwszychj literpoczynaj acodpozycjikwzorcasi ezgadzaz tekstem. Wiemy,żeliteryx[1...L]si ezgadzaj aztekstemnatejpozycji,tj pierwszychlliterawzorcasi ezgadzaztekstem. Algorytmstarasi eznaleźćwzorzecwtekściepodobniejakalgorytm Morrissa-Pratta,alewpierwsprawdzaj acliteryodpozycjikwzorca(czyli pozycjek,k+1itd.).dopiero,jeśliwszystkiespasuj a,sprawdzapocz atkowe K 1litera,czypasuj a. Funkcja SPRAWDZ LITERY A sprawdza, czy litery a na pozycjach wzorca odl+1dok 1pasuj adotekstu. Tłumacz acdokładniej,algorytmwp etliwykonuje: Jeślijużznaleźliśmywszystkieliterywzorcapozapocz atkowymi literamia(j=m K+1)lubsprawdzamykolejn aliter einiepasuje (x[j+k] y[i+j+k 1])to: Jeśli to jest przypadek, że znaleźliśmy wszystkie litery wzorca od pozycjik,tosprawdzamybrakuj aceliteryaijesłisi ezgadzaj a, wypisujemy,żeznalezionowyst apienie. Niezależnieodtego,czyjestwyst apienie, czy właśnie litera wzorca nie spasowała, musimy wykonać odpowiednik przejścia przez tablic epwalgorytmiemorrissa-pratta.czyli: Jeśli nie było wcześniej żadnego spasowania(j = 0), to przesuwamysi edonast epnejpozycji(i:=i+1).jwci aż zostaje 0,zaśjeśliwcześniejwiedzieliśmy,żepasujenamLlitera napocz atkusłowa,toterazwiemytylkool 1literach przesun eliśmysi eojedenwprawo.

Jeśli było spasowanie, dokonujemy przejścia przez tabliće P jakwalgorytmiemorrissa-pratta,tj.nast epn amożliw apozycj adoszukaniawzorcajestj+k 1 P[J+K 1]. OtyleprzesuwamyI.Zauważyliśmyjuż,żetoprzesuni ecie b edziewynosiłoconajmniejk.wobectegowszystkielitery zpocz atkowychp[j+k 1]naszalgorytmjużsprawdził żepasuj a.jeślip[j+k 1] K 1,czylinaszawiedza obejmujetylkoliterya,zapami etujemyt ewiedz ewzmiennejliustawiamyjna0.jeśliwiemyowi ekszejilościliter, zapami etujemytowl(l:=k 1)iwJ. W przeciwnym przypadku, czyli jeśli nie znaleźliśmy jeszcze całego wzorcapopozycjik,akolejnaliterapasuje,poprostuzwi ekszamy Jojeden. Poprawnośćalgorytmu,czylito,żealgorytmznajdujewszystkiewyst apienia wzorca w tekście, jest oczywista algorytm sprawdza wszystkie możliwe acztablicy wyst apieniawzorcatakjakalgorytmmorrissa-pratta,korzystaj P.Wtymtekścieskupimysi enadowodzie,żetenalgorytmwykonujepesymistycznie nporównańwzorcaztekstem.. Dowód Wdowodziepoprawnościposłużmysi enast epuj ac anomenklatur a:napocz atku mamy nkrólików,zakażdeporównaniewzorcaztekstempłac ejednegokró- lika. Udowodni e,żewkażdymstaniemamprzynajmniej (n I J+1)+1 (K+(K L)+J) K= (n I+1) J 1 L królików.tonapocz atkuwynosi n.wstaniekońcowymn I J+1 K 1,aK+(K L)+J K,czyliliczbakrólikówwynosiconajmniej (K 1)+1 K K=K >0,cobyzakończyłodowód.Wystarczywykazać terazprzezindukcj e,żejeśliprzedkrokiemalgorytmumieliśmyprzynajmniej tyle królików, to po też. Rozpatrzmywi eckolejneprzypadkinaszegoalgorytmu: 1.Wprzypadku,gdyliterawzorcaspasowałanamsi ezliter atekstu, nast apiłojedyniezwi ekszeniejo1.zapłaciliśmyjednegokrólikaza porównanie, ale liczba wymaganych królików spadła o jeden. Czyli wszystkosi ezgadza. 4

.Wprzypadku,gdyliterawzorcaniespasowałasi ezliter a tekstu, ale J=0,wówczaszmieniliśmy:Isi ezwi ekszyłoo1,zaślzmniejszyło o jeden. Zapłaciliśmy jednego królika za porównanie, ale liczba wymaganychkrólikówteżspadłaojeden( zazwi ekszeniei,+1 za zmniejszenie L)..Wprzypadku,gdyliterawzorcaniespasowałasi ezliter a tekstu, ale J>1,wówczass adwapodprzypadki: GdyP[J+K 1] K 1,wówczaszmieniliśmy:J:=0,L:= P[J+K 1],I:=I+J+K 1 P[J+K 1].Policzmyzmian e liczby wymaganych królików: wzwi azkuzezmian aj:+j wzwi azkuzezmian al:+ 1(L P[J+K 1]) wzwi azkuzezmian ai: (J+K 1 P[J+K 1]) różnica wynosi J+ 1 (L P[J+K 1]) (J+K 1 P[J+K 1])= = 1 (J+K 1 P[J+K 1]) 1 (K 1 L) 1 (K 1 P[J+K 1]) 1 (J+K 1 P[J+K 1]), alejakjużzauważyliśmyj+k 1 P[J+K 1] K,to rórńica wynośi co najmniej 1, czyli mamy królika do zapłacenia za porównanie. WprzeciwnymprzypadkumamyL:=K 1,J:=P[J+K 1] K+1iI:=I+J+K 1 P[J+K 1].Policzmyzmian e liczby wymaganych królików: wzwi azkuzezmian aj:+j+k 1 P[J+K 1] wzwi azkuzezmian al: 1((K 1) L) wzwi azkuzezmian ai: (J+K 1 P[J+K 1]) różnicawynosi 1 (K 1 L) 1(J+K 1 P[J+K 1]),wi ec tak jak poprzednio mamy przynajmniej 1 królika na opłacenie tego porównania. 4.Wprzypadku,gdyznaleźliśmywyst apienie wzorca, wykonujemy K 1 Lporównańsprawdzaj ac,czyliteryazgadzaj asi ewtekściez 5

wzorcem,poczymwykonujemyprac etak asam a, jak w poprzednim punkcie. Zauważmy, że w pierwszym przypadku: 1 (J+K 1 P[J+K 1]) 1 (K 1 L) 1 (K 1 P[J+K 1]) Zaś w drugim przypadku: 1 K 1 (K 1 L) (K 1 L) 1 (K 1 L) 1 (J+K 1 P[J+K 1]) 1 (K 1 L) 1 K (K 1 L) Czyli w obu przypadkach wymagana liczba królików spada na tyle, że jesteśmy w stanie zapłacić za porównania. Czylizawszemamywymagan aliczb ekrólików,napocz atku wynosi ona n,nakońcujestnieujemna,czyliwykonujemymaksymalnie nporównań. 6