Dynamiczne algorytmy tekstowe

Podobne dokumenty
Podprzestrzeń wektorowa, baza, suma prosta i wymiar Javier de Lucas

I. LOGICZNE STRUKTURY DRZEWIASTE

WYŻSZA SZKOŁA INFORMATYKI STOSOWANEJ I ZARZĄDZANIA

PRAWA ZACHOWANIA. Podstawowe terminy. Cia a tworz ce uk ad mechaniczny oddzia ywuj mi dzy sob i z cia ami nie nale cymi do uk adu za pomoc

Elementy cyfrowe i układy logiczne

Rozdział 6. Pakowanie plecaka. 6.1 Postawienie problemu

Ćwiczenie nr 2 Zbiory rozmyte logika rozmyta Rozmywanie, wnioskowanie, baza reguł, wyostrzanie

ALGORYTMY I STRUKTURY DANYCH

Jak wytresować swojego psa? Częs ć 1. Niezbędny sprzęt przy szkoleniu psa oraz procesy uczenia

WYKŁAD 8. Postacie obrazów na różnych etapach procesu przetwarzania

MATEMATYKA 9. INSTYTUT MEDICUS Kurs przygotowawczy do matury i rekrutacji na studia medyczne Rok 2017/2018 FUNKCJE WYKŁADNICZE, LOGARYTMY

TEORIA GIER W EKONOMII WYKŁAD 1: GRY W POSTACI EKSTENSYWNEJ I NORMALNEJ

Zastosowanie metod statystycznych do problemu ujednoznaczniania struktury zdania w języku polskim

Zmiany pozycji techniki

Zagadnienia transportowe

1. Rozwiązać układ równań { x 2 = 2y 1

Harmonogramowanie projektów Zarządzanie czasem

Projektowanie bazy danych

PODSTAWY METROLOGII ĆWICZENIE 4 PRZETWORNIKI AC/CA Międzywydziałowa Szkoła Inżynierii Biomedycznej 2009/2010 SEMESTR 3

Algorytmy graficzne. Podstawy kompresji danych fragment wykładu. Marcin Wilczewski

Logika I. Wykład 2. Działania na zbiorach

EGZAMIN MATURALNY Z INFORMATYKI 19 MAJA 2015

Przerwa między końcem Testu 1, a początkiem Testu 2 powinna wynosić 6-8 minut.

Matematyka dyskretna. Andrzej Łachwa, UJ, /14

Metoda LBL (ang. Layer by Layer, pol. Warstwa Po Warstwie). Jest ona metodą najprostszą.

2.Prawo zachowania masy

ASD - ćwiczenia III. Dowodzenie poprawności programów iteracyjnych. Nieformalnie o poprawności programów:

Programowanie Ewolucyjne

Bioinformatyka Laboratorium, 30h. Michał Bereta

XIII KONKURS MATEMATYCZNY

3b. Rozwiązywanie zadań ze skali mapy

Zadania. SiOD Cwiczenie 1 ;

Elementy typografii. Technologia Informacyjna Lekcja 22

POMOC PSYCHOLOGICZNO-PEDAGOGICZNA Z OPERONEM. Vademecum doradztwa edukacyjno-zawodowego. Akademia

Jak korzystać z Group Tracks w programie Cubase na przykładzie EWQLSO Platinum (Pro)

Relacyjne Bazy Danych PODSTAWOWE POJĘCIA BAZODANOWE

1 Granice funkcji. Definicja 1 (Granica w sensie Cauchy ego). Mówimy, że liczba g jest granicą funkcji f(x) w punkcie x = a, co zapisujemy.

14.Rozwiązywanie zadań tekstowych wykorzystujących równania i nierówności kwadratowe.

Podstawowe działania w rachunku macierzowym

- uzupełnianie poszczególnych partii materiału dodatkowymi ćwiczeniami, - powtarzanie i utrwalanie wiadomości,

PODSTAWY DZIAŁANIA UKŁADÓW CYFROWYCH

RUCH KONTROLI WYBORÓW. Tabele pomocnicze w celu szybkiego i dokładnego ustalenia wyników głosowania w referendum w dniu 6 września 2015 r.

Moduł 2/3 Projekt procesu technologicznego obróbki przedmiotu typu bryła obrotowa

Ćwiczenie 6.5. Otwory i śruby. Skrzynia V

KONKURSY MATEMATYCZNE. Treść zadań

Topologia I, Egzamin. II termin, Nr albumu: Nazwisko prowadzącego ćwiczenia: Nr grupy:

Instalacja. Zawartość. Wyszukiwarka. Instalacja Konfiguracja Uruchomienie i praca z raportem Metody wyszukiwania...

Wojewódzki Konkurs Matematyczny dla uczniów gimnazjów rok szkolny 2015/2016 Etap II rejonowy

EGZAMIN MATURALNY Z INFORMATYKI

Opis programu do wizualizacji algorytmów z zakresu arytmetyki komputerowej

Odpowiedzi i schematy oceniania Arkusz 23 Zadania zamknięte. Wskazówki do rozwiązania. Iloczyn dwóch liczb ujemnych jest liczbą dodatnią, zatem

Waldemar Pietrzak s5207. Projekt Wypożyczalnia Samochodów

Architektura komputerów

Ogólna charakterystyka kontraktów terminowych

p o s t a n a w i a m

0.1 Hierarchia klas Diagram Krótkie wyjaśnienie

29. TRZY W LINII CZYLI O POSZUKIWANIU ZWIĄZKÓW

Wiedza niepewna i wnioskowanie (c.d.)

PREZENTUJ FLAGĘ!!! BARWY RZECZYPOSPOLITEJ POLSKIEJ. Stowarzyszenie Przyjaciół Zespołu Szkół Zawodowych im. Kard. Stefana Wyszyńskiego w Dynowie

Warunki formalne dotyczące udziału w projekcie

WYŚCIG ORTOGRAFICZNY INSTRUKCJA. gra edukacyjna dla 2-3 osób rekomendowany wiek: od lat 7

Procedura weryfikacji badania czasu przebiegu 1 paczek pocztowych

SPRAWDZIAN W KLASIE SZÓSTEJ SZKOŁY PODSTAWOWEJ OD ROKU SZKOLNEGO 2014/2015

Zadanie 1. Liczba szkód w każdym z trzech kolejnych lat dla pewnego ubezpieczonego ma rozkład równomierny:

KARTY PRACY UCZNIA. Twierdzenie Pitagorasa i jego zastosowanie. samodzielnej pracy ucznia. Zawarte w nich treści są ułożone w taki sposób,

TWIERDZENIE PITAGORASA

Kilka zasad o których warto trzeba pamiętać

Scenariusz nr 7 zajęć edukacji wczesnoszkolnej. Metryczka zajęć edukacyjnych. Cele operacyjne. Środki dydaktyczne

DE-WZP JJ.3 Warszawa,

INSTRUKCJA DO INTERNETOWEGO ROZKŁADU JAZDY

Skitch for Android Instrukcja obsługi 2012 Evernote Corporation Wszelkie prawa zastrzeżone Opublikowano: Jun 19, 2012

Człowiek najlepsza inwestycja

Organizacja produkcji

Podstawowe pojęcia: Populacja. Populacja skończona zawiera skończoną liczbę jednostek statystycznych

3S TeleCloud - Aplikacje Instrukcja użytkowania usługi 3S KONTAKTY

SPRAWDZIAN NR 1 A. XX B. XXX C. III D. XXI. Rozmiar opon Gumix Opon-net. 175/ zł / szt. 210 zł / szt. 175/ zł / szt. 190 zł / szt.

Jan Olek. Uniwersytet Stefana Kardynała Wyszyńskiego. Procesy z Opóźnieniem. J. Olek. Równanie logistyczne. Założenia

Zapisy na kursy B i C

8. Konfiguracji translacji adresów (NAT)

WYRAŻENIA REGULARNE I JĘZYK AWK

CT-AHS / CT-ARS CT-MBS / CT-MFS. (PL) Instrukcja instalacji i obsługi Elektroniczne przekaźniki czasowe, serii CT-S

Regulamin w konkurencjach solowych

ZGADNIJ i SKOJARZ. Gra edukacyjna. Gra dla 2 4 osób od 8 lat

Projekty uchwał na Zwyczajne Walne Zgromadzenie Akcjonariuszy zwołane na dzień 10 maja 2016 r.

Ćwiczenie nr 6 BADANIE WYDAJNOŚCI KOMPRESOROWEJ POMPY CIEPŁA

Lepsze samopoczucie to lepsze oceny. Jaka jest korzyść dla dziecka?

Bazy danych. Andrzej Łachwa, UJ, /15

SZCZEGÓŁOWE SPECYFIKACJE TECHNICZNE SST RECYKLING

Współczesne nowoczesne budownictwo pozwala na wyrażenie indywidualnego stylu domu..

EGZAMIN MAGISTERSKI, 24 czerwca 2013 Matematyka w ekonomii i ubezpieczeniach

Moduł Pulpit opcji oraz Narzędzia. Opis v 1.0

BZ WBK AIB Towarzystwo Funduszy Inwestycyjnych S.A. pl. Wolności 16, Poznań telefon: (+48) fax: (+48)

REGULAMIN RADY RODZICÓW Liceum Ogólnokształcącego Nr XVII im. A. Osieckiej we Wrocławiu

Warszawa, r.

INSTRUKCJE WEJŚCIA I WYJŚCIA

Łączność na polu walki (problem przydziału częstotliwości UKF)

Warunki Oferty PrOmOcyjnej usługi z ulgą

INSTRUKCJA DLA UCZESTNIKÓW ZAWODÓW ZADANIA

Instalacja programu. Omówienie programu. Jesteś tu: Bossa.pl

Strategia rozwoju kariery zawodowej - Twój scenariusz (program nagrania).

Transkrypt:

Dynamiczne algorytmy tekstowe Piotr Sankowski - p. 1/29

Dynamiczne algorytmy tekstowe równość dynamicznych sekwencji, wyszukiwanie wzorców za tydzień. - p. 2/29

Dynamiczna równość Utrzymujemy rodzinę F słów nad alfabetem U. Obsługiwane operacje to: makesequence(s, a 1 ): tworzy słowo s = a 1, equal(s 1, s 2 ): zwraca prawdę jeżeli s 1 = s 2, concatenate(s 1, s 2, s 3 ): tworzy słowo s 3 = s 1 s 2, split(s 1, s 2, s 3, i): Dla s 1 = a 1... a n, tworzy dwa słowa s 2 = a 1... a i, oraz s 3 = a i+1... a n. Argumenty ulegaja zniszczeniu. Można skontrować strukturę stała. Mehlhorn, Sundar i Uhrig (SODA 1994) - p. 3/29

Plan Dynamiczna równość słów: pomysł podział na bloki, randomizowany podział na bloki, deterministyczny podział na bloki, utrzymywanie podziału dynamiczne. - p. 4/29

Podział na bloki Dane słowo a 1 a 2... a n 1 a n dzielimy na krótkie bloki a 1... a i1 a i1 +1... a i2... a ij 1 +1... a ij każdemu blokowi przypisujemy jednoznacznie identyfikujac a go sygnaturę s 1 s 2... s j dostajemy nowe krótsze słowo, na którym powtarzamy ta operację. Aż uzyskamy jedna sygnaturę jednoznacznie identyfikujac a ciag wejściowy. - p. 5/29

Podział na bloki Jeżeli podział na bloki będzie lokalny, to łatwo będzie utrzymywać go dynamicznie. randomizowany podział rzucamy niezależnie moneta, aby wyznaczyć punkty podziału, deterministyczne równoległe 3 kolorowanie list. Na razie zakładamy, że dla każdego słowa a i = a i+1. - p. 6/29

Randomizowany podział Każdemu a U przypisujemy losowy priorytet prio(a) [0, 1]. Priorytety te reprezentujemy ze skończona dokładnościa gwarantujac a to, że wszystkie priorytety będa różne. Element a i jest lokalnym minimum jeżeli ma następnika w s oraz jest lokalnym minimum w ciagu prio(a 1 )... prio(a n ) priorytetów odpowiadajacych s. Punkty podziału to lokalne maxima. - p. 7/29

Randomizowany podział Musimy pokazać, że: oczekiwana długość bloku jest mała, reprezentacja priorytetów jest krótka. Wszystko dalej działa mniej więcej jak dla podziału deterministycznego. - p. 8/29

Deterministyczny podział N C = N; forall i {1,..., n} do C i = a i ; while N C > 6 do C 1 = C 1 (0); forall i {2,..., n} do j i = min{j C i (j) = C i 1 (j)}; C i = 2j i + C i (j i ); N c = max{c i i {1,..., n}} + 1; Generuje kolorowanie sześcioma kolorami w czasie O(n log N) dla a i {0,..., N 1} i a i = a i+1. - p. 9/29

Deterministyczny podział To kolorowanie możemy zamienić na 3 kolorowanie. C 0 = ; C n+1 = ; for c = 3 to 5 do forall i {1,..., n} do if C i = c then C i = min{{0, 1, 2} {C i 1, C i+1 }}; Lemat 1 Kolor C i zależy tylko od wartości a i log N 5... a i+3. - p. 10/29

Deterministyczny podział - p. 11/29

Deterministyczny podział Punkty podziału to lokalne maxima (kolorów). Lemat 2 Bloki mają długość 2-4. 2 bo nie ma dwóch sasiednich maximów, 4 bo ciag czterech kolorów zawsze zawiera 2, badź ciag 010. - p. 12/29

Sygnatury ciagów Porównania ciagów realizowane sa przez przypisanie do słowa jednoznacznej sygnatury. Po wykonaniu m operacji sygnatury słów nie sa większe niż m 3. Potrzebnych jest więcej niż m sygnatur bo przypisujemy sygnatury także do podsłów. Słowo ma postać s = a l 1 i... a l n n, gdzie a i = a i+1. Do par (a i, l i ) możemy zastosować metodę deterministycznego podziału. - p. 13/29

Sygnatury Niech S będzie zbiorem przydzielonych sygnatur S = [0... maxsig]. Każdy element S opisuje: literę z U, parę S S, badź potęgę S N 2. tzn. S jest rozłaczn a suma S U S P S R oraz mamy injekcje: u : S U U, p : S P {(a, b) : a, b S i a = b}, r : S R {(a, i) : a S i i N, i 2}. odwrotności u, p, r trzymamy w słowniku. - p. 14/29

Kodowanie Funkcję sig(s) dla s = a l 1 1... a l n n definiujemy: sig(a 1 ) jezeli n = 1 i l 1 = 1 sig(s) = r 1 ((a 1, l 1 )) jezeli n = 1, l 1 > 1 i (a 1, l 1 ) range(r) + + maxsig jezeli n = 1, l 1 > 1 i (a 1, l 1 ) / range(r) sig(shrink(s)) jezeli n > 1 - p. 15/29

Kodowanie Zdefiniujmy elpow(s) = sig(a l 1 1 )... sig(a l n n ). Oznaczmy elpow(s) = g 1... g n, wtedy g i = g i+1. Niech b 1... b k to podział na bloki o długości 2 do 4. Funkcje shrink definiujemy jako shrink(s) = sig(b 1 )... sig(b k ) - p. 16/29

Kodowanie a 1 u 1 (a 1 ) jezeli n = 1 i a 1 S jezeli n = 1 i a 1 U sig(s) = + + maxsig jezeli n = 1 i a 1 / U p 1 ((a 1, a 2 )) jezeli n = 2 i (a 1, a 2 ) range(p) + + maxsig jezeli n = 2 i (a 1, a 2 ) / range(p) sig(a 1, sig(a 2,..., sig(a n 1, a n )...)) jezeli n > 2 - p. 17/29

Kodowanie Lemat 3 Niech s 1, s 2 F, wtedy s 1 = s 2 sig(s 1 ) = sig(s 2 ). Można pokazać, że s S koduje unikalna sekwencję śledzac proces kodowania do tyłu. - p. 18/29

Struktura danych Słowo przechowujemy jako listę słów s = (τ 0..., τ 2t ) gdzie τ 0 = s, oraz dla i, takich, że 1 i t, i τ 2i 1 = elpow(τ 2i 2 ) τ 2i = shrink(τ 2i 2 ) zauważmy, że t = O(log n), bo bloki maj a długość co najmniej 2. - p. 19/29

Struktura danych Każde τ j przechowujemy jako zrównoważone drzewo binarne T j. Każdy węzeł v T j zawiera: element a słowa τ j, rozmiar poddrzewa o korzeniu v, długość bloku w τ j 1 reprezentowanego przez a, sumaryczna długość bloków odpowiadajacym elementom w poddrzewie v, jeżeli j jest nieparzyste to zaznaczamy czy a jest miejscem podziału. - p. 20/29

Struktura danych Każde s przechowywane jest jako lista korzeni drzew T j. Zbiór F przechowywany jest jako lista poczatków list słów. Funkcje u 1, p 1 oraz r 1 przechowywane s a jako zrównoważone drzewa wyszukiwania. - p. 21/29

Operacje Niech s 1, s 2 będa słowami. Operację equal(s 1, s 2 ) zwraca prawdę jeżeli sig(s 1 ) = sig(s 2 ) i fałsz w przeciwnym wypadku czas O(1). Dla a U, makesequence(s, a) tworzy węzeł drzewa binarnego reprezentujacy s = sig(a). Potrzebujemy obliczyć u 1 (a) jeżeli a range(u), w innym przypadku przydzielamy sygnaturę i u jest rozszerzane czas O(log m). - p. 22/29

Operacje Lemat 4 Niech s 1 = a 1... a l, s 2 = a l+1... a n, s 3 = s 1 s 2 oraz niech j 0. Niech shrink j (s 3 ) = c 1... c r i niech i będzie takie, że c i koduje podsłowo s 3 zawierające a l. Wtedy c 1... c i 8 jest prefiksem shrink j (s 1 ) i shrink j (s 1 ) i + 7. c i+log m 3 +10... c r jest sufiksem shrink j (s 2 ) i shrink j (s 2 ) r i + log m 3 + 11. Dowód przez indukcję... - p. 23/29

Operacje Obliczenie shrink j (s 3 ) można wykonać w następujacy sposób. Oznaczmy elpow(shrink j 1 (s 3 )) przez g 1... g k, niech g z będzie elementem kodujacym podsłowo s 3 zawierajace a l, podziały elementów g 1... g z 13 i g z+2 log m 3 +17... g k sa takie same jak podziały w elpow(shrink j 1 (s 1 )) i elpow(shrink j 1 (s 2 )). - p. 24/29

Operacje aby policzyć podziały dla elementów g z 12... g z+2 log 8 m 3 +16 musimy uruchomić trzykolorowania na słowie g z log m 3 18... g z+2 log 8 m 3 +20. teraz możemy policzyć shrink j (s 3 ) poprzez obliczenie środkowej części c i 7... c i log m 3 +10 oraz poprzez przekopiowanie pozostałych części z shrink j (s 1 ) i shrink j (s 2 ). Oznaczmy s 1 = a 1... a l, s 2 = s l+1... a n oraz niech dla sekwencji s, elpow(s) = g 1... g k i T s będzie drzewem binarnym dla s. - p. 25/29

Operacja Konkatenacji concatenate(s 1, s 2, s 3 ) 1. Policz T s3 poprzez połaczenie T s1 i T s2, 2. Policz T elpow(s3 ) poprzez połaczenie T elpow(s1 ) and T elpow(s2 ), w przypadku gdy a l = a l+1 należy przeliczyć jeden element elpow(s 3 ), 3. Niech s = s 3, niech z będzie takie, że g z koduje podsłowo zawierajace a l oraz niech s 3 będzie pusta lista. - p. 26/29

Operacje konkatenacji 4. while s > 1 do dołacz s i elpow(s) na koniec listy s 3, uruchom algorytm trzykolorowania na słowie g z log m 3 18... g z+2 log 8 m 3 +20 i zmień punkty podziału w g z 12... g z+2 log 8 m 3 +16 odpowiednio, przypis shrink(s) na s, oblicz T s, jeżeli s > 1 oblicz T elpow(s) i uaktualnij z. 5. dołacz s na końcu s 3. - p. 27/29

Operacje konkatenacji Lemat 5 Operacja konkatenacji wymaga O(log n(log m log m + log n)) czasu. Dla każdego poziomu w reprezentacji tworzymy O(log m) nowych sygnatur. Ponieważ operacji jest m to wszystkich sygnatur jest m log m log n m 2 log m m 3 bo n 2 m. Dla każdego poziomu hierarchii potrzebujemy czasu O(log m log m + log n). - p. 28/29

Operacje konkatenacji Operację split możemy zrobić podobnie wymaganych jest mało zmian na każdym poziomie hierarchii. dzielimy shrink j 1 (s) na dwa kawałki, dla każdego kawałka przeliczamy brzegowe punkty podziału, shrink j (s 1 ) sklejamy z dwóch kawałków przeliczonego kawałka shrink j 1 (s) oraz kawałka shrink j (s). Lemat 6 Operacja konkatenacji wymaga O(log n(log m log m + log n)) czasu. - p. 29/29