Paweł Gawrychowski Wyszukiwanie wzorca października / 31
|
|
- Agnieszka Zakrzewska
- 7 lat temu
- Przeglądów:
Transkrypt
1 Paweł Gawrychowski Wyszukiwanie wzorca października / 31
2 Wyszukiwanie wzorca w skompresowanym tekście Paweł Gawrychowski 25 października 2011 Paweł Gawrychowski Wyszukiwanie wzorca października / 31
3 Jaki jest najbardziej naturalny problem zwiazany z przetwarzaniem tekstu? Wyszukiwanie wzorca w tekście Czy dany wzorzec p występuje w danym tekście t? Jeśli tak, gdzie jest jego pierwsze wystapienie? Paweł Gawrychowski Wyszukiwanie wzorca października / 31
4 Znajdź kjfdkasl w rokjfdkjncbvdkojsdlkjsldskjxlkalkjfslakjlkxxcv epofikflskdjflskjvnlmnapodierpereporipojdpdaja kjrtrgdkjfdkaslkdjoretieodflkgjsnlgkjdslgkjldf riudkxdjwoisdoiwlkmssoiwoiosdkjwoixkcjksjdkjws wjnswoislkcxlkqpodskjzlapoqlksdxcmdfepowepofde zirpotdpoitgiouyoewpoiewlkjdklnkjfdkaslldkjgrp oieorisdlkweoidssdlkweoidscxmnosdwoioweiwoiwoi eopripowedkljskljwekljsdldkjsxmcnweioiewdlskjd rotirlekdlsdfdwmcslkcsdpowkdwpodkwpoekwpoporer eporjmkjfdkaslpwiowjsklncxmncsldkwpoeiwpoikwed ojreoijdkmndkjnfekreopreojkslkdjsapowi2poqwiqp Paweł Gawrychowski Wyszukiwanie wzorca października / 31
5 Znajdź kjfdkasl w rokjfdkjncbvdkojsdlkjsldskjxlkalkjfslakjlkxxcv epofikflskdjflskjvnlmnapodierpereporipojdpdaja kjrtrgdkjfdkaslkdjoretieodflkgjsnlgkjdslgkjldf riudkxdjwoisdoiwlkmssoiwoiosdkjwoixkcjksjdkjws wjnswoislkcxlkqpodskjzlapoqlksdxcmdfepowepofde zirpotdpoitgiouyoewpoiewlkjdklnkjfdkaslldkjgrp oieorisdlkweoidssdlkweoidscxmnosdwoioweiwoiwoi eopripowedkljskljwekljsdldkjsxmcnweioiewdlskjd rotirlekdlsdfdwmcslkcsdpowkdwpodkwpoekwpoporer eporjmkjfdkaslpwiowjsklncxmncsldkwpoeiwpoikwed ojreoijdkmndkjnfekreopreojkslkdjsapowi2poqwiqp Paweł Gawrychowski Wyszukiwanie wzorca października / 31
6 Znajdź kjfdkasl w rokjfdkjncbvdkojsdlkjsldskjxlkalkjfslakjlkxxcv epofikflskdjflskjvnlmnapodierpereporipojdpdaja kjrtrgdkjfdkaslkdjoretieodflkgjsnlgkjdslgkjldf riudkxdjwoisdoiwlkmssoiwoiosdkjwoixkcjksjdkjws wjnswoislkcxlkqpodskjzlapoqlksdxcmdfepowepofde zirpotdpoitgiouyoewpoiewlkjdklnkjfdkaslldkjgrp oieorisdlkweoidssdlkweoidscxmnosdwoioweiwoiwoi eopripowedkljskljwekljsdldkjsxmcnweioiewdlskjd rotirlekdlsdfdwmcslkcsdpowkdwpodkwpoekwpoporer eporjmkjfdkaslpwiowjsklncxmncsldkwpoeiwpoikwed ojreoijdkmndkjnfekreopreojkslkdjsapowi2poqwiqp Paweł Gawrychowski Wyszukiwanie wzorca października / 31
7 Wiadomo, że pierwsze wystapienie wzorca w tekście można znaleźć w czasie proporcjonalnym do p + t. Jest wiele różnych algorytmów osiagaj acych taka złożoność, najbardziej znany został podany przez Knutha, Morrisa i Pratta (często nazywa się go algorytmem KMP). D. E. Knuth, J. H. Morris, Jr., and V. R. Pratt. Fast pattern matching in strings. SIAM J. Comput., 6(2): , 1977 Paweł Gawrychowski Wyszukiwanie wzorca października / 31
8 W sytuacji, gdy tekst jest bardzo długi, konieczne jest przechowywanie go w skompresowanej postaci. Pytanie Co jeśli potrzebujemy wyszukać wystapienie wzorca w tekście, który jest składowany w skompresowanej postaci? Oczywiście zawsze można go po prostu zdekompresować i użyć dowolnego algorytmu wyszukiwania wzorca, ale czy nie wydaje się to marnotrawstwem? Paweł Gawrychowski Wyszukiwanie wzorca października / 31
9 Jaki jest najbardziej naturalny problem zwiazany z przetwarzaniem tekstu? Wyszukiwanie wzorca w tekście Czy dany wzorzec p występuje w danym tekście t? Jeśli tak, gdzie jest jego pierwsze wystapienie? Paweł Gawrychowski Wyszukiwanie wzorca października / 31
10 Jaki jest najbardziej naturalny problem zwiazany z przetwarzaniem tekstu? Wyszukiwanie wzorca w skompresowanym tekście Czy dany wzorzec p występuje w danym skompresowanym tekście t? Jeśli tak, gdzie jest jego pierwsze wystapienie? Paweł Gawrychowski Wyszukiwanie wzorca października / 31
11 A skoro zadaliśmy już takie pytanie, nie sposób nie zauważyć jego naturalnego uogólnienia: Wyszukiwanie skompresowanego wzorca w skompresowanym tekście Czy dany skompresowany wzorzec p występuje w danym skompresowanym tekście t? Jeśli tak, gdzie jest jego pierwsze wystapienie? Paweł Gawrychowski Wyszukiwanie wzorca października / 31
12 Oczywiście wszystko zależy od użytej metody kompresji. 1 kodowanie Huffmana, 2 metody oparte na algorytmie Lempela-Ziva, 3 transformata Burrowsa-Wheelera. Paweł Gawrychowski Wyszukiwanie wzorca października / 31
13 Oczywiście wszystko zależy od użytej metody kompresji. 1 kodowanie Huffmana, 2 metody oparte na algorytmie Lempela-Ziva, 3 transformata Burrowsa-Wheelera. Paweł Gawrychowski Wyszukiwanie wzorca października / 31
14 Metody kompresji oparte na algorytmie Lempela-Ziva Tekst t[1..n] jest dzielony na rozłaczne bloki b 1 b 2... b n. Każdy kolejny blok jest definiowany na podstawie bloków występujacych na lewo od niego. To co dokładnie rozumiemy przez definiowany zależy od konkretnego wariantu. Najczęściej używane sa następujace dwa: LZ77, LZ nowy blok b i jest podsłowem już przetworzonego prefiksu z doklejonym dokładnie jednym znakiem, zip,gzip,png LZ78, LZW nowy blok b i powstaje przez doklejenie jednego znaku do wcześniejszego bloku. compress,gif,tiff,pdf Paweł Gawrychowski Wyszukiwanie wzorca października / 31
15 Przykład kompresji LZW: ababbababababababababaabbbaa Co prawda n Ω( N), ale możliwa jest bardzo szybka kompresja/dekompresja. Paweł Gawrychowski Wyszukiwanie wzorca października / 31
16 Przykład kompresji LZW: ababbababababababababaabbbaa Co prawda n Ω( N), ale możliwa jest bardzo szybka kompresja/dekompresja. Paweł Gawrychowski Wyszukiwanie wzorca października / 31
17 Przykład kompresji LZW: ababbababababababababaabbbaa Co prawda n Ω( N), ale możliwa jest bardzo szybka kompresja/dekompresja. Paweł Gawrychowski Wyszukiwanie wzorca października / 31
18 Przykład kompresji LZ: ababbababaaabbababaabaabbbaa Łatwo wyobrazić sobie przykład, w którym n = O(log N). Co prawda taka sytuacja raczej nie wystapi w praktyce, ale mamy z nia do czynienia w przypadku słów Fibonacciego, które często sa wykorzystywane jako trudny przykład dla różnego rodzaju algorytmów tekstowych. Możliwy jest też wariant, w którym nowo definiowany blok odwołuje się do samego siebie (self-referential LZ). Paweł Gawrychowski Wyszukiwanie wzorca października / 31
19 Przykład kompresji LZ: ababbababaaabbababaabaabbbaa Łatwo wyobrazić sobie przykład, w którym n = O(log N). Co prawda taka sytuacja raczej nie wystapi w praktyce, ale mamy z nia do czynienia w przypadku słów Fibonacciego, które często sa wykorzystywane jako trudny przykład dla różnego rodzaju algorytmów tekstowych. Możliwy jest też wariant, w którym nowo definiowany blok odwołuje się do samego siebie (self-referential LZ). Paweł Gawrychowski Wyszukiwanie wzorca października / 31
20 Przykład kompresji LZ: ababbababaaabbababaabaabbbaa Łatwo wyobrazić sobie przykład, w którym n = O(log N). Co prawda taka sytuacja raczej nie wystapi w praktyce, ale mamy z nia do czynienia w przypadku słów Fibonacciego, które często sa wykorzystywane jako trudny przykład dla różnego rodzaju algorytmów tekstowych. Możliwy jest też wariant, w którym nowo definiowany blok odwołuje się do samego siebie (self-referential LZ). Paweł Gawrychowski Wyszukiwanie wzorca października / 31
21 Przykład kompresji LZ: ababbababaaabbababaabaabbbaa Łatwo wyobrazić sobie przykład, w którym n = O(log N). Co prawda taka sytuacja raczej nie wystapi w praktyce, ale mamy z nia do czynienia w przypadku słów Fibonacciego, które często sa wykorzystywane jako trudny przykład dla różnego rodzaju algorytmów tekstowych. Możliwy jest też wariant, w którym nowo definiowany blok odwołuje się do samego siebie (self-referential LZ). Paweł Gawrychowski Wyszukiwanie wzorca października / 31
22 Kolejne bloki sa opisane przez pary (w LZW) lub trójki (w LZ):...ababbababaaabbababaabaabbbaaa......,a,b,(1,2,b),(1,4,a),(1,1,a),(4,8,b),(11,4,b),(10,2,a),... p=aaab Paweł Gawrychowski Wyszukiwanie wzorca października / 31
23 Kolejne bloki sa opisane przez pary (w LZW) lub trójki (w LZ):...ababbababaaabbababaabaabbbaaa......,a,b,(1,2,b),(1,4,a),(1,1,a),(4,8,b),(11,4,b),(10,2,a),... p=aaab Paweł Gawrychowski Wyszukiwanie wzorca października / 31
24 Kolejne bloki sa opisane przez pary (w LZW) lub trójki (w LZ):...ababbababaaabbababaabaabbbaaa......,a,b,(1,2,b),(1,4,a),(1,1,a),(4,8,b),(11,4,b),(10,2,a),... p=aaab Paweł Gawrychowski Wyszukiwanie wzorca października / 31
25 Oznaczenia t[1..n] tekst, który po skompresowaniu składa się z n bloków p[1..m] wzorzec, który po skompresowaniu składa się z m bloków Wyszukiwanie wzorca w skompresowanym tekście Wejście: p[1..m] i ciag n bloków definiujacych tekst t[1..n] Wyjście: czy p występuje w t? Model obliczeń? Pracujemy w modelu RAM ze słowami rozmiaru log N. Można myśleć, że piszemy program w imperatywnym języku typu C, Java,... Paweł Gawrychowski Wyszukiwanie wzorca października / 31
26 Oznaczenia t[1..n] tekst, który po skompresowaniu składa się z n bloków p[1..m] wzorzec, który po skompresowaniu składa się z m bloków Wyszukiwanie wzorca w skompresowanym tekście Wejście: p[1..m] i ciag n bloków definiujacych tekst t[1..n] Wyjście: czy p występuje w t? Model obliczeń? Pracujemy w modelu RAM ze słowami rozmiaru log N. Można myśleć, że piszemy program w imperatywnym języku typu C, Java,... Paweł Gawrychowski Wyszukiwanie wzorca października / 31
27 Pierwszy nietrywialny algorytm wyszukiwania wzorca w LZW-skompresowanym tekście został podany w roku 1994 przez Amira, Bensona i Faracha. A tak naprawdę podali oni dwa algorytmy działajace w czasie O(n log M + M) i O(n + M 2 ). A. Amir, G. Benson, and M. Farach. Let sleeping files lie: pattern matching in Z-compressed files. In SODA 94: Proceedings of the fifth annual ACM-SIAM symposium on Discrete algorithms, pages , Philadelphia, PA, USA, Society for Industrial and Applied Mathematics Paweł Gawrychowski Wyszukiwanie wzorca października / 31
28 Rok później ten drugi algorytm został poprawiony przez Kosaraju, który podał rozwiazanie działajace w czasie O(n + M 1+ɛ ). S. R. Kosaraju. Pattern matching in compressed texts. In Proceedings of the 15th Conference on Foundations of Software Technology and Theoretical Computer Science, pages , London, UK, Springer-Verlag Paweł Gawrychowski Wyszukiwanie wzorca października / 31
29 Nasuwa się dość oczywiste pytanie: czy istnieje dla tego problemu algorytm działajacy w czasie O(n + M)? Tak! Problem wyszukiwania wzorca w LZW-skompresowanym tekście może być rozwiazany w optymalnym czasie O(n + M). P. Gawrychowski. Optimal pattern matching in LZW compressed strings. In D. Randall, editor, SODA, pages SIAM, 2011 Paweł Gawrychowski Wyszukiwanie wzorca października / 31
30 Nasuwa się dość oczywiste pytanie: czy istnieje dla tego problemu algorytm działajacy w czasie O(n + M)? Tak! Problem wyszukiwania wzorca w LZW-skompresowanym tekście może być rozwiazany w optymalnym czasie O(n + M). P. Gawrychowski. Optimal pattern matching in LZW compressed strings. In D. Randall, editor, SODA, pages SIAM, 2011 Paweł Gawrychowski Wyszukiwanie wzorca października / 31
31 W przypadku (bardziej ogólnej) kompresji LZ nie jest oczywiste, że jesteśmy w stanie skonstruować algorytm o czasie działania zależnym od n, a nie N. Okazuje się, że jest to jednak możliwe, co pokazali w roku 1995 Farach i Thorup. Ich algorytm wyszukiwania wzorca w LZ-skompresowanym tekście działa w (oczekiwanym) czasie O(n log 2 N n + M). M. Farach and M. Thorup. String matching in Lempel-Ziv compressed strings. In Proceedings of the twenty-seventh annual ACM symposium on Theory of computing, STOC 95, pages , New York, NY, USA, ACM Paweł Gawrychowski Wyszukiwanie wzorca października / 31
32 W roku 2010 Iacono i Özkan udowodnili, że jedna z części tego algorytmu może zostać przyśpieszony do O(n log N n ), jednak nie umieli osiagn ać lepszej złożoności dla całego problemu. Czy możliwe jest osiagnięcie lepszego czasu działania? Tak! Problem wyszukiwania wzorca w LZ-skompresowanym tekście może być rozwiazany w czasie O(n log N n + M). P. Gawrychowski. Pattern matching in Lempel-Ziv compressed strings: fast, simple, and deterministic. In C. Demetrescu and M. M. Halldórsson, editors, ESA, volume 6942 of Lecture Notes in Computer Science, pages Springer, 2011 Co prawda powyższa złożoność nie jest liniowa, ale udowodniłem też, że w odrobinę bardziej restrykcyjnym modelu obliczeń niemożliwe jest zejście poniżej Θ(n log N + M). Paweł Gawrychowski Wyszukiwanie wzorca października / 31
33 W roku 2010 Iacono i Özkan udowodnili, że jedna z części tego algorytmu może zostać przyśpieszony do O(n log N n ), jednak nie umieli osiagn ać lepszej złożoności dla całego problemu. Czy możliwe jest osiagnięcie lepszego czasu działania? Tak! Problem wyszukiwania wzorca w LZ-skompresowanym tekście może być rozwiazany w czasie O(n log N n + M). P. Gawrychowski. Pattern matching in Lempel-Ziv compressed strings: fast, simple, and deterministic. In C. Demetrescu and M. M. Halldórsson, editors, ESA, volume 6942 of Lecture Notes in Computer Science, pages Springer, 2011 Co prawda powyższa złożoność nie jest liniowa, ale udowodniłem też, że w odrobinę bardziej restrykcyjnym modelu obliczeń niemożliwe jest zejście poniżej Θ(n log N + M). Paweł Gawrychowski Wyszukiwanie wzorca października / 31
34 W obydwu algorytmach (wyszukiwania wzorca w LZW- i LZ-skompresowanym tekście) kluczowe jest szybkie operowanie na długich blokach tekstu. W szczególności, konieczne jest skonstruowanie procedury, która majac dane dwa podsłowa wzorca znajdzie wystapienie w ich konkatenacji. Lemat 4.1 Majac dane dwa podsłowa wzorca można sprawdzić czy wzorzec występuje w ich konkatenacji w stałym czasie. Paweł Gawrychowski Wyszukiwanie wzorca października / 31
35 W obydwu algorytmach (wyszukiwania wzorca w LZW- i LZ-skompresowanym tekście) kluczowe jest szybkie operowanie na długich blokach tekstu. W szczególności, konieczne jest skonstruowanie procedury, która majac dane dwa podsłowa wzorca znajdzie wystapienie w ich konkatenacji. Lemat 4.1 Majac dane dwa podsłowa wzorca można sprawdzić czy wzorzec występuje w ich konkatenacji w stałym czasie. Paweł Gawrychowski Wyszukiwanie wzorca października / 31
36 p[i 1..j 1 ] p[i 2..j 2 ] x + y = M Paweł Gawrychowski Wyszukiwanie wzorca października / 31
37 p[1..i] p[j..m] x + y = M Paweł Gawrychowski Wyszukiwanie wzorca października / 31
38 p[1..i] p[j..m] p[1..x] p[x + 1..M] x + y = M Paweł Gawrychowski Wyszukiwanie wzorca października / 31
39 p[1..i] p[j..m] p[1..x] p[m y + 1..M] x + y = M Paweł Gawrychowski Wyszukiwanie wzorca października / 31
40 p[1..i] p[j..m] p[1..x] p[m y + 1..M] x + y = M Paweł Gawrychowski Wyszukiwanie wzorca października / 31
41 p[1..i] p[j..m] p[1..x] p[m y + 1..M] x + y = M Paweł Gawrychowski Wyszukiwanie wzorca października / 31
42 p[1..i] p[j..m] p[1..x] p[m y + 1..M] x + y = M b jest borderem słowa w iff w[1..b] = w[ w b w ] Szukamy takich x border(p[1..i]) i y border(p[j..m]), że x + y = M. Paweł Gawrychowski Wyszukiwanie wzorca października / 31
43 border(w) może mieć bardzo dużo (liniowo) różnych elementów, które na pierwszy rzut oka wydaja się nie mieć wiele wspólnego. Jeśli jednak popatrzymy się na: w border(w) {,..., w 1, w } 2 można zauważyć, że ta część tworzy ciag arytmetyczny. A dokładniej, jeżeli d jest okresem w, sa one postaci w αd. Nazywamy je długimi borderami. Teraz można zauważyć, że x lub y musi być długim borderem. Ze względu na symetrię wystarczy poradzić sobie z tym pierwszym przypadkiem. Paweł Gawrychowski Wyszukiwanie wzorca października / 31
44 border(w) może mieć bardzo dużo (liniowo) różnych elementów, które na pierwszy rzut oka wydaja się nie mieć wiele wspólnego. Jeśli jednak popatrzymy się na: w border(w) {,..., w 1, w } 2 można zauważyć, że ta część tworzy ciag arytmetyczny. A dokładniej, jeżeli d jest okresem w, sa one postaci w αd. Nazywamy je długimi borderami. Teraz można zauważyć, że x lub y musi być długim borderem. Ze względu na symetrię wystarczy poradzić sobie z tym pierwszym przypadkiem. Paweł Gawrychowski Wyszukiwanie wzorca października / 31
45 Wybieramy przesunięcie postaci αd, które zaczyna się w p[1..i], ale jest tak daleko na prawo jak to tylko możliwe. Wyznaczamy pierwsza niezgodność tego przesunięcia. p[1..i] przeszkoda p[j..m] d p[1..m] koniec okresu Okazuje się, że na podstawie pozycji przeszkody można wyznaczyć prosty arytmetyczny warunek, który pozwala nam na wyeliminowanie wszystkich przesunięć poza jednym. Sprawdzamy to jedyne potencjalne przesunięcie za pomoca kilku pytań o równość fragmentów wzorca. Paweł Gawrychowski Wyszukiwanie wzorca października / 31
46 Wybieramy przesunięcie postaci αd, które zaczyna się w p[1..i], ale jest tak daleko na prawo jak to tylko możliwe. Wyznaczamy pierwsza niezgodność tego przesunięcia. przeszkoda abcdefg abcdefg abcdefg abcd efg abcdefg abx d abcdefg abcdefg abcdefg abcdefgabx koniec okresu Okazuje się, że na podstawie pozycji przeszkody można wyznaczyć prosty arytmetyczny warunek, który pozwala nam na wyeliminowanie wszystkich przesunięć poza jednym. Sprawdzamy to jedyne potencjalne przesunięcie za pomoca kilku pytań o równość fragmentów wzorca. Paweł Gawrychowski Wyszukiwanie wzorca października / 31
47 Wybieramy przesunięcie postaci αd, które zaczyna się w p[1..i], ale jest tak daleko na prawo jak to tylko możliwe. Wyznaczamy pierwsza niezgodność tego przesunięcia. przeszkoda abcdefg abcdefg abcdefg abcd efg abcdefg abx d abcdefg abcdefg abcdefg abcdefg abx koniec okresu Okazuje się, że na podstawie pozycji przeszkody można wyznaczyć prosty arytmetyczny warunek, który pozwala nam na wyeliminowanie wszystkich przesunięć poza jednym. Sprawdzamy to jedyne potencjalne przesunięcie za pomoca kilku pytań o równość fragmentów wzorca. Paweł Gawrychowski Wyszukiwanie wzorca października / 31
48 Wybieramy przesunięcie postaci αd, które zaczyna się w p[1..i], ale jest tak daleko na prawo jak to tylko możliwe. Wyznaczamy pierwsza niezgodność tego przesunięcia. przeszkoda abcdefg abcdefg abcdefg abcd efg abcdefg abx d abcdefg abcdefg abcdefg abcdefg abx koniec okresu Okazuje się, że na podstawie pozycji przeszkody można wyznaczyć prosty arytmetyczny warunek, który pozwala nam na wyeliminowanie wszystkich przesunięć poza jednym. Sprawdzamy to jedyne potencjalne przesunięcie za pomoca kilku pytań o równość fragmentów wzorca. Paweł Gawrychowski Wyszukiwanie wzorca października / 31
49 Podobny pomysł daje: (rozszerzony) Lemat 4.2 Majac dane dwa podsłowa wzorca można wyznaczyć najdłuższy sufiks ich konkatenacji, który jest prefiksem całego wzorca w czasie O(log M). Bazujac na tych dwóch lematach (i dodajac kilka innych pomysłów) uzyskujemy żadane złożoności dla obydwu problemów. Paweł Gawrychowski Wyszukiwanie wzorca października / 31
50 Podobny pomysł daje: (rozszerzony) Lemat 4.2 Majac dane dwa podsłowa wzorca można wyznaczyć najdłuższy sufiks ich konkatenacji, który jest prefiksem całego wzorca w czasie O(log M). Bazujac na tych dwóch lematach (i dodajac kilka innych pomysłów) uzyskujemy żadane złożoności dla obydwu problemów. Paweł Gawrychowski Wyszukiwanie wzorca października / 31
51 Wyszukiwanie skompresowanego wzorca w skompresowanym tekście Wejście: ciag m bloków definiujacych wzorzec p[1..m] i ciag n bloków definiujacych tekst t[1..n] Wyjście: czy p występuje w t? W tym przypadku problem wydaje się istotnie trudniejszy: wszystkie liniowe algorytmy wyszukiwania wzorca bazuja na mniej lub bardziej skomplikowanym przetworzeniu wszystkich prefiksów/sufiksów/... wzorca. Jeśli wzorzec jest skompresowany, nie wiadomo czy mamy na to czas. Paweł Gawrychowski Wyszukiwanie wzorca października / 31
52 Okazuje się jednak, że tak zdefiniowany problem wyszukiwania LZW-skompresowanego wzorca w LZW-skompresowanym tekście może być rozwiazany w czasie O((n + m) log(n + m)), co udowodnili w roku 1999 Gasieniec i Rytter. L. Gasieniec and W. Rytter. Almost optimal fully LZW-compressed pattern matching. In Data Compression Conference, pages , 1999 Paweł Gawrychowski Wyszukiwanie wzorca października / 31
53 Nasuwa się oczywiste pytanie: czy można osiagn ać złożoność O(n + m)? Tak! Problem wyszukiwania LZW-skompresowanego wzorca w LZW-skompresowanym tekście może być rozwiazany w optymalnym czasie O(n + m). Paweł Gawrychowski Wyszukiwanie wzorca października / 31
54 Nasuwa się oczywiste pytanie: czy można osiagn ać złożoność O(n + m)? Tak! Problem wyszukiwania LZW-skompresowanego wzorca w LZW-skompresowanym tekście może być rozwiazany w optymalnym czasie O(n + m). Paweł Gawrychowski Wyszukiwanie wzorca października / 31
55 Idea Jeżeli wzorzec jest ma krótki okres, na przykład p = (abbab) 1000, wystarczyłoby znaleźć wystapienia abbab i na ich podstawie znaleźć całe p. Ale.. wszystkich wystapień może być BARDZO dużo. No dobrze, ale przecież wzorzec wcale nie musi mieć krótkiego okresu. Kernel Kernelem wzorca nazywamy nieokresowe podsłowo długości n + m. Lemat Jeśli okres wzorca jest większy niż n + m, można znaleźć w nim kernel. Łatwo pokazać, że kernel nie może występować więcej niż n + m razy w tekście. A więc możemy pozwolić sobie na wygenerowanie tych wszystkich wystapień! Następnie trzeba tylko sprawdzić, które z tych wystapień daja się rozszerzyć do wystapień całego p. Wymaga to użycia kilku dodatkowych pomysłów. Paweł Gawrychowski Wyszukiwanie wzorca października / 31
56 Idea Jeżeli wzorzec jest ma krótki okres, na przykład p = (abbab) 1000, wystarczyłoby znaleźć wystapienia abbab i na ich podstawie znaleźć całe p. Ale.. wszystkich wystapień może być BARDZO dużo. No dobrze, ale przecież wzorzec wcale nie musi mieć krótkiego okresu. Kernel Kernelem wzorca nazywamy nieokresowe podsłowo długości n + m. Lemat Jeśli okres wzorca jest większy niż n + m, można znaleźć w nim kernel. Łatwo pokazać, że kernel nie może występować więcej niż n + m razy w tekście. A więc możemy pozwolić sobie na wygenerowanie tych wszystkich wystapień! Następnie trzeba tylko sprawdzić, które z tych wystapień daja się rozszerzyć do wystapień całego p. Wymaga to użycia kilku dodatkowych pomysłów. Paweł Gawrychowski Wyszukiwanie wzorca października / 31
57 Idea Jeżeli wzorzec jest ma krótki okres, na przykład p = (abbab) 1000, wystarczyłoby znaleźć wystapienia abbab i na ich podstawie znaleźć całe p. Ale.. wszystkich wystapień może być BARDZO dużo. No dobrze, ale przecież wzorzec wcale nie musi mieć krótkiego okresu. Kernel Kernelem wzorca nazywamy nieokresowe podsłowo długości n + m. Lemat Jeśli okres wzorca jest większy niż n + m, można znaleźć w nim kernel. Łatwo pokazać, że kernel nie może występować więcej niż n + m razy w tekście. A więc możemy pozwolić sobie na wygenerowanie tych wszystkich wystapień! Następnie trzeba tylko sprawdzić, które z tych wystapień daja się rozszerzyć do wystapień całego p. Wymaga to użycia kilku dodatkowych pomysłów. Paweł Gawrychowski Wyszukiwanie wzorca października / 31
58 Idea Jeżeli wzorzec jest ma krótki okres, na przykład p = (abbab) 1000, wystarczyłoby znaleźć wystapienia abbab i na ich podstawie znaleźć całe p. Ale.. wszystkich wystapień może być BARDZO dużo. No dobrze, ale przecież wzorzec wcale nie musi mieć krótkiego okresu. Kernel Kernelem wzorca nazywamy nieokresowe podsłowo długości n + m. Lemat Jeśli okres wzorca jest większy niż n + m, można znaleźć w nim kernel. Łatwo pokazać, że kernel nie może występować więcej niż n + m razy w tekście. A więc możemy pozwolić sobie na wygenerowanie tych wszystkich wystapień! Następnie trzeba tylko sprawdzić, które z tych wystapień daja się rozszerzyć do wystapień całego p. Wymaga to użycia kilku dodatkowych pomysłów. Paweł Gawrychowski Wyszukiwanie wzorca października / 31
59 Idea Jeżeli wzorzec jest ma krótki okres, na przykład p = (abbab) 1000, wystarczyłoby znaleźć wystapienia abbab i na ich podstawie znaleźć całe p. Ale.. wszystkich wystapień może być BARDZO dużo. No dobrze, ale przecież wzorzec wcale nie musi mieć krótkiego okresu. Kernel Kernelem wzorca nazywamy nieokresowe podsłowo długości n + m. Lemat Jeśli okres wzorca jest większy niż n + m, można znaleźć w nim kernel. Łatwo pokazać, że kernel nie może występować więcej niż n + m razy w tekście. A więc możemy pozwolić sobie na wygenerowanie tych wszystkich wystapień! Następnie trzeba tylko sprawdzić, które z tych wystapień daja się rozszerzyć do wystapień całego p. Wymaga to użycia kilku dodatkowych pomysłów. Paweł Gawrychowski Wyszukiwanie wzorca października / 31
60 Kolejnym naturalnym uogólnieniem wyszukiwania wzorca w skompresowanym tekście jest dopuszczenie podawania więcej niż jednego wzorca. Wyszukiwanie wielu wzorców w skompresowanym tekście Wejście: wzorce p 1, p 2,..., p k o sumarycznej długości M i ciag n bloków definiujacych tekst t[1..n] Wyjście: czy któryś z p i występuje w t? Paweł Gawrychowski Wyszukiwanie wzorca października / 31
61 Oczywiście można szukać każdego p i osobno, ale jeśli będzie ich kilkaset tysięcy, wydaje się to nierozsadne. Okazuje się, że dla wyszukiwania wielu wzorców w LZW-skompresowanym tekście można osiagn ać złożoność O(n + M 2 ), co pokazali w roku 1998 Kida, Takeda, Shinohara, Miyazaki i Arikawa. T. Kida, M. Takeda, A. Shinohara, M. Miyazaki, and S. Arikawa. Multiple pattern matching in LZW compressed text. In Data Compression Conference, pages , 1998 Paweł Gawrychowski Wyszukiwanie wzorca października / 31
62 Czy możliwa jest lepsza złożoność? Tak! Problem wyszukiwania wielu wzorców w LZW-skompresowanym tekście może być rozwiazany w czasie O(n + M 1+ɛ ) lub O(n log M + M). Kluczowe dla rozwiazania jest zredukowanie oryginalnego problemu do zbudowania struktury danych umożliwiajacej szybkie odpowiadanie na pytania dotyczace punktów/odcinków/prostokatów na płaszczyźnie Paweł Gawrychowski Wyszukiwanie wzorca października / 31
63 Czy możliwa jest lepsza złożoność? Tak! Problem wyszukiwania wielu wzorców w LZW-skompresowanym tekście może być rozwiazany w czasie O(n + M 1+ɛ ) lub O(n log M + M). Kluczowe dla rozwiazania jest zredukowanie oryginalnego problemu do zbudowania struktury danych umożliwiajacej szybkie odpowiadanie na pytania dotyczace punktów/odcinków/prostokatów na płaszczyźnie Paweł Gawrychowski Wyszukiwanie wzorca października / 31
64 Na przykład, dla zbioru prostokatów o bokach równoległych do osi OX/OY chcemy zbudować strukturę danych, która po podaniu punktu szybko znajdzie prostokat, do którego ten punkt należy. Paweł Gawrychowski Wyszukiwanie wzorca października / 31
65 Na przykład, dla zbioru prostokatów o bokach równoległych do osi OX/OY chcemy zbudować strukturę danych, która po podaniu punktu szybko znajdzie prostokat, do którego ten punkt należy. Paweł Gawrychowski Wyszukiwanie wzorca października / 31
66 Pytania? O(n + M) SODA 2011 O(n + m) w pełni skompresowane LZW O(n + M 1+ɛ ) wiele wzorców O(n log M + M) LZ O(n log N n + M) ESA 2011 Paweł Gawrychowski Wyszukiwanie wzorca października / 31
Wykład 6. Wyszukiwanie wzorca w tekście
Wykład 6 Wyszukiwanie wzorca w tekście 1 Wyszukiwanie wzorca (przegląd) Porównywanie łańcuchów Algorytm podstawowy siłowy (naive algorithm) Jak go zrealizować? Algorytm Rabina-Karpa Inteligentne wykorzystanie
AKD Metody słownikowe
AKD Metody słownikowe Algorytmy kompresji danych Sebastian Deorowicz 2009 03 19 Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 1 / 38 Plan wykładu 1 Istota metod słownikowych 2 Algorytm Ziva Lempela
1 abbbaabaaabaa -wzorzec: aaba
Algorytmy i złożoność obliczeniowa Laboratorium 14. Algorytmy tekstowe. 1. Algorytmy tekstowe Algorytmy tekstowe mają decydujące znaczenie przy wyszukiwaniu informacji typu tekstowego, ten typ informacji
Kodowanie informacji
Tomasz Wykład 4: kodowanie słownikowe Motywacja Motywacje 1 kodowane dane nie tworza ciagu wartości niezależnych, rozkład prawdopodobieństwa zależy od symboli poprzedzajacych symbol kodowany; 2 pewne sekwencje
LZ77 LZ78. Kompresja danych. Tomasz Jurdziński. Wykład 5: kodowanie słownikowe
Tomasz Wykład 5: kodowanie słownikowe Motywacja Motywacje 1 zazwyczaj dane nie tworza ciagu wartości niezależnych, kolejny symbol jest zależny od poprzedzajacych go; 2 pewne sekwencje (słowa) często się
Komiwojażer na płaszczyźnie
Komiwojażer na płaszczyźnie Paweł Gawrychowski Uniwersytet Wrocławski & Max-Planck-Institut für Informatik 18 marca 2014 Paweł Gawrychowski Komiwojażer na płaszczyźnie 18 marca 2014 1 / 31 Paweł Gawrychowski
Listy z przeskokami jako drzewa wyszukiwań
Dariusz 16.10.2008 Wyszukiwanie Szczególne przypadki Lista z przeskokami. B 5 E B 1 3 4 5 6 9 E B 1 2 3 4 5 6 7 8 9 E Wyszukiwanie Szczególne przypadki Wyszukujemy 8. B 5 E B 1 3 4 5 6 9 E B 1 2 3 4 5
Temat: Algorytmy wyszukiwania wzorca w tekście
Temat: Algorytmy wyszukiwania wzorca w tekście 1. Sformułowanie problemu Dany jest tekst T oraz wzorzec P, będące ciągami znaków o długości równej odpowiednio n i m (n m 1), nad pewnym ustalonym i skończonym
Zadanie 3 Oblicz jeżeli wiadomo, że liczby 8 2,, 1, , tworzą ciąg arytmetyczny. Wyznacz różnicę ciągu. Rozwiązanie:
Zadanie 3 Oblicz jeżeli wiadomo, że liczby 8 2,, 1, 6 11 6 11, tworzą ciąg arytmetyczny. Wyznacz różnicę ciągu. Uprośćmy najpierw liczby dane w treści zadania: 8 2, 2 2 2 2 2 2 6 11 6 11 6 11 26 11 6 11
Algorytmy i struktury danych. wykład 8
Plan wykładu: Kodowanie. : wyszukiwanie wzorca w tekście, odległość edycyjna. Kodowanie Kodowanie Kodowanie jest to proces przekształcania informacji wybranego typu w informację innego typu. Kod: jest
Złożoność informacyjna Kołmogorowa. Paweł Parys
Złożoność informacyjna Kołmogorowa Paweł Parys Serock 2012 niektóre liczby łatwiej zapamiętać niż inne... (to zależy nie tylko od wielkości liczby) 100...0 100 100... 100 100 100 25839496603316858921 31415926535897932384
Kompresja bezstratna. Entropia. Kod Huffmana
Kompresja bezstratna. Entropia. Kod Huffmana Kodowanie i bezpieczeństwo informacji - Wykład 10 29 kwietnia 2013 Teoria informacji Jeśli P(A) jest prawdopodobieństwem wystapienia informacji A to niech i(a)
Nierówność Krafta-McMillana, Kodowanie Huffmana
Nierówność Krafta-McMillana, Kodowanie Huffmana Kodowanie i kompresja informacji - Wykład 2 1 marca 2010 Test na jednoznaczna dekodowalność Kod a jest prefiksem kodu b jeśli b jest postaci ax. x nazywamy
Kodowanie i kompresja Streszczenie Studia dzienne Wykład 9,
1 Kody Tunstalla Kodowanie i kompresja Streszczenie Studia dzienne Wykład 9, 14.04.2005 Inne podejście: słowa kodowe mają ustaloną długość, lecz mogą kodować ciągi liter z alfabetu wejściowego o różnej
Modelowanie motywów łańcuchami Markowa wyższego rzędu
Modelowanie motywów łańcuchami Markowa wyższego rzędu Uniwersytet Warszawski Wydział Matematyki, Informatyki i Mechaniki 23 października 2008 roku Plan prezentacji 1 Źródła 2 Motywy i ich znaczenie Łańcuchy
Algorytmika i kombinatoryka tekstów
lgorytmika i kombinatoryka tekstów 1/21 Algorytmika i kombinatoryka tekstów Jakub Radoszewski Wręczenie Nagrody im. W. Lipskiego, 9 października 2014 r. Instytut Informatyki, Uniwersytet Warszawski Algorytmika
Porównanie czasów działania algorytmów sortowania przez wstawianie i scalanie
Więcej o sprawności algorytmów Porównanie czasów działania algorytmów sortowania przez wstawianie i scalanie Załóżmy, że możemy wykonać dane zadanie przy użyciu dwóch algorytmów: jednego o złożoności czasowej
Algorytmy i Struktury Danych, 2. ćwiczenia
Algorytmy i Struktury Danych, 2. ćwiczenia 2015-10-09 Spis treści 1 Szybkie potęgowanie 1 2 Liczby Fibonacciego 2 3 Dowód, że n 1 porównań jest potrzebne do znajdowania minimum 2 4 Optymalny algorytm do
Algorytmy Równoległe i Rozproszone Część X - Algorytmy samostabilizujące.
Algorytmy Równoległe i Rozproszone Część X - Algorytmy samostabilizujące. Łukasz Kuszner pokój 209, WETI http://www.sphere.pl/ kuszner/ kuszner@sphere.pl Oficjalna strona wykładu http://www.sphere.pl/
STRATEGIA PRZETWARZANIA DOKUMENTÓW TEKSTOWYCH OPARTA NA HEURYSTYCZNEJ ANALIZIE DANYCH
ZESZYTY NAUKOWE POLITECHNIKI ŚLĄSKIEJ 2015 Seria: ORGANIZACJA I ZARZĄDZANIE z. 86 Nr kol. 1946 Marcin LEJA, Ireneusz J. JÓŹWIAK Politechnika Wrocławska Wydział Informatyki i Zarządzania marcin.leja93@gmail.com;
TEORETYCZNE PODSTAWY INFORMATYKI
1 TEORETYCZNE PODSTAWY INFORMATYKI WFAiS UJ, Informatyka Stosowana I rok studiów, I stopień Wykład 2 2 Problemy algorytmiczne Klasy problemów algorytmicznych Liczby Fibonacciego Przeszukiwanie tablic Największy
Kody Tunstalla. Kodowanie arytmetyczne
Kody Tunstalla. Kodowanie arytmetyczne Kodowanie i kompresja informacji - Wykład 3 8 marca 2010 Kody Tunstalla Wszystkie słowa kodowe maja ta sama długość ale jeden kod może kodować różna liczbę liter
FFT i dyskretny splot. Aplikacje w DSP
i dyskretny splot. Aplikacje w DSP Marcin Jenczmyk m.jenczmyk@knm.katowice.pl Wydział Matematyki, Fizyki i Chemii 10 maja 2014 M. Jenczmyk Sesja wiosenna KNM 2014 i dyskretny splot 1 / 17 Transformata
========================= Zapisujemy naszą funkcję kwadratową w postaci kanonicznej: 2
Leszek Sochański Arkusz przykładowy, poziom podstawowy (A1) Zadanie 1. Wykresem funkcji kwadratowej f jest parabola o wierzchołku 5,7 Wówczas prawdziwa jest równość W. A. f 1 f 9 B. f 1 f 11 C. f 1 f 1
Kodowanie informacji
Kodowanie informacji Tomasz Wykład 4: kodowanie arytmetyczne Motywacja Podstawy i własności Liczby rzeczywiste Motywacje 1 średnia długość kodu Huffmana może odbiegać o p max + 0.086 od entropii, gdzie
Jak matematyka pomaga w wyszukiwanie wzorca
Jak matematyka pomaga w wyszukiwanie wzorca Artur Jeż 28 września 2011 Artur Jeż Matematyka i wyszukiwanie wzorca 28 IX 2011 1 / 18 Wiek nauki Artur Jeż Matematyka i wyszukiwanie wzorca 28 IX 2011 2 /
Wykład 4. Określimy teraz pewną ważną klasę pierścieni.
Wykład 4 Określimy teraz pewną ważną klasę pierścieni. Twierdzenie 1 Niech m, n Z. Jeśli n > 0 to istnieje dokładnie jedna para licz q, r, że: m = qn + r, 0 r < n. Liczbę r nazywamy resztą z dzielenia
Wyszukiwanie wzorca w skompresowanym tekście
Pawe l Gawrychowski Wyszukiwanie wzorca w skompresowanym tekście Rozprawa doktorska napisana pod kierunkiem prof. Krzysztofa Lorysia, Uniwersytet Wroc lawski Instytut Informatyki Uniwersytet Wroc lawski
W. Guzicki Zadanie IV z Informatora Maturalnego poziom rozszerzony 1
W. Guzicki Zadanie IV z Informatora Maturalnego poziom rozszerzony 1 Zadanie IV. Dany jest prostokątny arkusz kartony o długości 80 cm i szerokości 50 cm. W czterech rogach tego arkusza wycięto kwadratowe
Złożoność obliczeniowa algorytmu ilość zasobów komputera jakiej potrzebuje dany algorytm. Pojęcie to
Złożoność obliczeniowa algorytmu ilość zasobów komputera jakiej potrzebuje dany algorytm. Pojęcie to wprowadzili J. Hartmanis i R. Stearns. Najczęściej przez zasób rozumie się czas oraz pamięć dlatego
Algorytm Grovera. Kwantowe przeszukiwanie zbiorów. Robert Nowotniak
Wydział Fizyki Technicznej, Informatyki i Matematyki Stosowanej Politechnika Łódzka 13 listopada 2007 Plan wystapienia 1 Informatyka Kwantowa podstawy 2 Opis problemu (przeszukiwanie zbioru) 3 Intuicyjna
Wykład 5. Kompresja danych
Wykład 5 Kompresja danych 1 Metody kompresji - przegląd Co to jest kompresja danych Definicje Kompresja bezstratna i stratna Kody o stałej i zmiennej długości Entropia i warunek Shannon a Metody kodowania
FUNKCJA LINIOWA - WYKRES
FUNKCJA LINIOWA - WYKRES Wzór funkcji liniowej (Postać kierunkowa) Funkcja liniowa jest podstawowym typem funkcji. Jest to funkcja o wzorze: y = ax + b a i b to współczynniki funkcji, które mają wartości
Temat: Algorytm kompresji plików metodą Huffmana
Temat: Algorytm kompresji plików metodą Huffmana. Wymagania dotyczące kompresji danych Przez M oznaczmy zbiór wszystkich możliwych symboli występujących w pliku (alfabet pliku). Przykład M = 2, gdy plik
Peter W. Shor - Polynomial-Time Algorithms for Prime Factorization and Discrete Logarithms on a Quantum Computer. 19 listopada 2004 roku
Peter W. Shor - Polynomial-Time Algorithms for Prime Factorization and Discrete Logarithms on a Quantum Computer. 19 listopada 2004 roku Wstęp czyli (próba) odpowiedzi na pewne pytania (Silna) Teza Church
Struktury danych i złożoność obliczeniowa Wykład 7. Prof. dr hab. inż. Jan Magott
Struktury danych i złożoność obliczeniowa Wykład 7 Prof. dr hab. inż. Jan Magott Problemy NP-zupełne Transformacją wielomianową problemu π 2 do problemu π 1 (π 2 π 1 ) jest funkcja f: D π2 D π1 spełniająca
komputery? Andrzej Skowron, Hung Son Nguyen Instytut Matematyki, Wydział MIM, UW
Czego moga się nauczyć komputery? Andrzej Skowron, Hung Son Nguyen son@mimuw.edu.pl; skowron@mimuw.edu.pl Instytut Matematyki, Wydział MIM, UW colt.tex Czego mogą się nauczyć komputery? Andrzej Skowron,
Kompresja Kodowanie arytmetyczne. Dariusz Sobczuk
Kompresja Kodowanie arytmetyczne Dariusz Sobczuk Kodowanie arytmetyczne (lata 1960-te) Pierwsze prace w tym kierunku sięgają początków lat 60-tych XX wieku Pierwszy algorytm Eliasa nie został opublikowany
Algorytmy dynamiczne. Piotr Sankowski. - p. 1/14
Algorytmy dynamiczne Piotr Sankowski - p. 1/14 Dynamiczne: drzewa wyszukiwanie wzorca w tekście spójność grafu problemy algebraiczne (FFT i inne) domknięcie przechodnie oraz dynamiczne macierze najkrótsze
FIGURY I PRZEKSZTAŁCENIA GEOMETRYCZNE
Umiejętności opracowanie: Maria Lampert LISTA MOICH OSIĄGNIĘĆ FIGURY I PRZEKSZTAŁCENIA GEOMETRYCZNE Co powinienem umieć Umiejętności znam podstawowe przekształcenia geometryczne: symetria osiowa i środkowa,
Niech x 1,..., x n będzie ciągiem zdarzeń. ---
Matematyczne podstawy kryptografii, Ćw2 TEMAT 7: Teoria Shannona. Kody Huffmana, entropia. BIBLIOGRAFIA: [] Cz. Bagiński, cez.wipb.pl, [2] T. H. Cormen, C. E. Leiserson, R. L Rivest, Wprowadzenie do algorytmów,
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
Zadanie 1. Rozważmy jezyk 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 równe. Narysować diagram minimalnego automatu deterministycznego akceptujacego
RÓWNANIA NIELINIOWE Maciej Patan
RÓWNANIA NIELINIOWE Maciej Patan Uniwersytet Zielonogórski Przykład 1 Prędkość v spadającego spadochroniarza wyraża się zależnością v = mg ( 1 e c t) m c gdzie g = 9.81 m/s 2. Dla współczynnika oporu c
Identyfikacja znamion ukrytego plagiatu. Z wykorzystaniem IDEA Caseware
Identyfikacja znamion ukrytego plagiatu Z wykorzystaniem IDEA Caseware Dzięki zastosowaniu w IDEI zaawansowanego modułu importu danych istnieje możliwość wykorzystania oprogramowania do identyfikacji tzw.
Wstęp do Programowania potok funkcyjny
Wstęp do Programowania potok funkcyjny Marcin Kubica 2010/2011 Outline Wyszukiwanie wzorców w tekście 1 Wyszukiwanie wzorców w tekście Problem wyszukiwania wzorca w tekście Na tym wykładzie zajmiemy się
ANALIZA PORÓWNAWCZA ALGORYTMÓW WYSZUKIWANIA WZORCA W TEKŚCIE
STUDIA INFORMATICA 2013 Volume 34 Number 1 (110) Jacek WIDUCH Politechnika Śląska, Instytut Informatyki ANALIZA PORÓWNAWCZA ALGORYTMÓW WYSZUKIWANIA WZORCA W TEKŚCIE Streszczenie. Jednym z problemów związanych
JAO - Wprowadzenie do Gramatyk bezkontekstowych
JAO - Wprowadzenie do Gramatyk bezkontekstowych Definicja gramatyki bezkontekstowej Podstawowymi narzędziami abstrakcyjnymi do opisu języków formalnych są gramatyki i automaty. Gramatyka bezkontekstowa
PROBLEMY NIEROZSTRZYGALNE
PROBLEMY NIEROZSTRZYGALNE Zestaw 1: T Przykład - problem domina T Czy podanym zestawem kafelków można pokryć dowolny płaski obszar zachowując odpowiedniość kolorów na styku kafelków? (dysponujemy nieograniczoną
Techniki konstruowania algorytmów. Metoda dziel i zwyciężaj
Techniki konstruowania algorytmów Metoda dziel i zwyciężaj Technika dziel i zwyciężaj Aby rozwiązać problem techniką dziel i zwyciężaj musi on wykazywać własność podstruktury rozwiązanie problemu można
WYMAGANIA EDUKACYJNE Z MATEMATYKI KLASA I GIMNAZJUM Małgorzata Janik
WYMAGANIA EDUKACYJNE Z MATEMATYKI KLASA I GIMNAZJUM Małgorzata Janik DOPUSZCZAJĄCY DOSTATECZNY DOBRY BARDZO DOBRY LICZBY I DZIAŁANIA zna pojęcie liczby naturalnej, całkowitej, wymiernej. rozumie rozszerzenie
Kryptografia. z elementami kryptografii kwantowej. Ryszard Tanaś Wykład 7
Kryptografia z elementami kryptografii kwantowej Ryszard Tanaś http://zon8.physd.amu.edu.pl/~tanas Wykład 7 Spis treści 11 Algorytm ElGamala 3 11.1 Wybór klucza.................... 3 11.2 Szyfrowanie.....................
Programowanie liniowe
Programowanie liniowe Maciej Drwal maciej.drwal@pwr.wroc.pl 1 Problem programowania liniowego min x c T x (1) Ax b, (2) x 0. (3) gdzie A R m n, c R n, b R m. Oznaczmy przez x rozwiązanie optymalne, tzn.
Zaawansowane algorytmy i struktury danych
Zaawansowane algorytmy i struktury danych u dr Barbary Marszał-Paszek Opracowanie pytań teoretycznych z egzaminów. Strona 1 z 12 Pytania teoretyczne z egzaminu pisemnego z 25 czerwca 2014 (studia dzienne)
Struktury danych i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott
Struktury danych i złożoność obliczeniowa Wykład 5 Prof. dr hab. inż. Jan Magott DMT rozwiązuje problem decyzyjny π przy kodowaniu e w co najwyżej wielomianowym czasie, jeśli dla wszystkich łańcuchów wejściowych
Drzewa rozpinajace, zbiory rozłaczne, czas zamortyzowany
, 1 2 3, czas zamortyzowany zajęcia 3. Wojciech Śmietanka, Tomasz Kulczyński, Błażej Osiński rozpinajace, 1 2 3 rozpinajace Mamy graf nieskierowany, ważony, wagi większe od 0. Chcemy wybrać taki podzbiór
Algorytmy w teorii liczb
Łukasz Kowalik, ASD 2004: Algorytmy w teorii liczb 1 Algorytmy w teorii liczb Teoria liczb jest działem matemtyki dotyczącym własności liczb naturalnych. Rozważa się zagadnienia związane z liczbami pierwszymi,
OSTASZEWSKI Paweł (55566) PAWLICKI Piotr (55567) Algorytmy i Struktury Danych PIŁA
OSTASZEWSKI Paweł (55566) PAWLICKI Piotr (55567) 20.11.2002 Algorytmy i Struktury Danych PIŁA ZŁOŻONE STRUKTURY DANYCH C za s tw or ze nia s tr uk tur y (m s ) TWORZENIE ZŁOŻONYCH STRUKTUR DANYCH: 00 0
Technologie cyfrowe. Artur Kalinowski. Zakład Cząstek i Oddziaływań Fundamentalnych Pasteura 5, pokój 4.15
Technologie cyfrowe Artur Kalinowski Zakład Cząstek i Oddziaływań Fundamentalnych Pasteura 5, pokój 4.15 Artur.Kalinowski@fuw.edu.pl Semestr letni 2014/2015 Zadanie algorytmiczne: wyszukiwanie dane wejściowe:
Transformaty. Kodowanie transformujace
Transformaty. Kodowanie transformujace Kodowanie i kompresja informacji - Wykład 10 10 maja 2009 Szeregi Fouriera Każda funkcję okresowa f (t) o okresie T można zapisać jako f (t) = a 0 + a n cos nω 0
Programowanie celowe #1
Programowanie celowe #1 Problem programowania celowego (PC) jest przykładem problemu programowania matematycznego nieliniowego, który można skutecznie zlinearyzować, tzn. zapisać (i rozwiązać) jako problem
Programowanie dynamiczne
Programowanie dynamiczne Patryk Żywica 5 maja 2008 1 Spis treści 1 Problem wydawania reszty 3 1.1 Sformułowanie problemu...................... 3 1.2 Algorytm.............................. 3 1.2.1 Prosty
Równoległy algorytm wyznaczania bloków dla cyklicznego problemu przepływowego z przezbrojeniami
Równoległy algorytm wyznaczania bloków dla cyklicznego problemu przepływowego z przezbrojeniami dr inż. Mariusz Uchroński Wrocławskie Centrum Sieciowo-Superkomputerowe Agenda Cykliczny problem przepływowy
Uliniawianie całych genomów
Uliniawianie całych genomów 7 czerwca 2006 1 Wprowadzenie Dzięki postępowi technologicznemu jesteśmy w stanie sekwencjonować całe genomy organizmów. Pojawia się zatem zapotrzebowanie na narzędzia umożliwiające
Kodowanie i kompresja Tomasz Jurdziński Studia Wieczorowe Wykład Kody liniowe - kodowanie w oparciu o macierz parzystości
Kodowanie i kompresja Tomasz Jurdziński Studia Wieczorowe Wykład 13 1 Kody liniowe - kodowanie w oparciu o macierz parzystości Przykład Różne macierze parzystości dla kodu powtórzeniowego. Co wiemy z algebry
1 Układy równań liniowych
II Metoda Gaussa-Jordana Na wykładzie zajmujemy się układami równań liniowych, pojawi się też po raz pierwszy macierz Formalną (i porządną) teorią macierzy zajmiemy się na kolejnych wykładach Na razie
Kodowanie Shannona-Fano
Kodowanie Shannona-Fano Kodowanie Shannona-Fano znane było jeszcze przed kodowaniem Huffmana i w praktyce można dzięki niemu osiągnąć podobne wyniki, pomimo, że kod generowany tą metodą nie jest optymalny.
Zasady analizy algorytmów
Zasady analizy algorytmów A więc dziś w programie: - Kilka ważnych definicji i opisów formalnych - Złożoność: czasowa i pamięciowa - Kategorie problemów - Jakieś przykłady Problem: Zadanie możliwe do rozwiązania
domykanie relacji, relacja równoważności, rozkłady zbiorów
1 of 8 2012-03-28 17:45 Logika i teoria mnogości/wykład 5: Para uporządkowana iloczyn kartezjański relacje domykanie relacji relacja równoważności rozkłady zbiorów From Studia Informatyczne < Logika i
Uniwersyteckie Koło Matematyczne - Tajemnicza liczba e.
Uniwersyteckie Koło Matematyczne - Tajemnicza liczba e. Filip Piękniewski Wydział Matematyki i Informatyki Uniwersytetu Mikołaja Kopernika http://www.mat.umk.pl/ philip 17 grudnia 2009 Filip Piękniewski,
pobieramy pierwszą literę komunikatu i wypełniamy nią (wszystkie pozycje tą samą literą) bufor słownikowy.
komunikat do zakodowania: a a b a b b a b a c c a b a a a a a c a c b c b b c c a a c b a 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 przyjmujemy długość bufora słownikowego
Paradygmaty dowodzenia
Paradygmaty dowodzenia Sprawdzenie, czy dana formuła rachunku zdań jest tautologią polega zwykle na obliczeniu jej wartości dla 2 n różnych wartościowań, gdzie n jest liczbą zmiennych zdaniowych tej formuły.
Algorytmy tekstowe na przykładzie KMP
Ł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
W. Guzicki Próbna matura, grudzień 2014 r. poziom rozszerzony 1
W. Guzicki Próbna matura, grudzień 01 r. poziom rozszerzony 1 Próbna matura rozszerzona (jesień 01 r.) Zadanie 18 kilka innych rozwiązań Wojciech Guzicki Zadanie 18. Okno na poddaszu ma mieć kształt trapezu
Czy kwadrat da się podzielić na nieparzystą liczbę trójkątów o równych polach? Michał Kieza
Czy kwadrat da się podzielić na nieparzystą liczbę trójkątów o równych polach? Michał Kieza Łatwo zauważyć, że kwadrat można podzielić na 2, 4, 6,..., a także na dowolną parzystą liczbę trójkątów o równych
Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227 WYKŁAD 1 WSTĘP DO INFORMATYKI
Dr inż. Grażyna KRUPIŃSKA Grazyna.Krupinska@fis.agh.edu.pl http://orion.fis.agh.edu.pl/~grazyna/ D-10 pokój 227 WYKŁAD 1 WSTĘP DO INFORMATYKI Plan wykładu 2 Wprowadzenie, trochę historii, systemy liczbowe
Modulacja i kodowanie. Labolatorium. Kodowanie źródłowe Kod Huffman a
Modulacja i kodowanie Labolatorium Kodowanie źródłowe Kod Huffman a W tym ćwiczeniu zajmiemy się kodowaniem źródłowym (source coding). 1. Kodowanie źródłowe Głównym celem kodowanie źródłowego jest zmniejszenie
Wyszukiwanie binarne
Wyszukiwanie binarne Wyszukiwanie binarne to technika pozwalająca na przeszukanie jakiegoś posortowanego zbioru danych w czasie logarytmicznie zależnym od jego wielkości (co to dokładnie znaczy dowiecie
Algorytmy i struktury danych. Co dziś? Tytułem przypomnienia metoda dziel i zwyciężaj. Wykład VIII Elementarne techniki algorytmiczne
Algorytmy i struktury danych Wykład VIII Elementarne techniki algorytmiczne Co dziś? Algorytmy zachłanne (greedyalgorithms) 2 Tytułem przypomnienia metoda dziel i zwyciężaj. Problem można podzielić na
Uzupełnienia dotyczące zbiorów uporządkowanych (3 lutego 2011).
Uzupełnienia dotyczące zbiorów uporządkowanych (3 lutego 2011). Poprzedniczka tej notatki zawierała błędy! Ta pewnie zresztą też ; ). Ćwiczenie 3 zostało zmienione, bo żądałem, byście dowodzili czegoś,
Problem skoczka szachowego i inne cykle Hamiltona na szachownicy n x n
i inne cykle Hamiltona na szachownicy n x n Uniwersytet Warszawski 15 marca 2007 Agenda 1 2 naiwne Prosty algorytm liniowy 3 Problem znany był już od bardzo dawna, jako łamigłówka logiczna. Był też stosowany
Strukturalne własności transformaty Burrowsa-Wheelera dla pewnych klas słów
Uniwersytet Warszawski Wydział Matematyki, Informatyki i Mechaniki Bartłomiej Romański Nr albumu: 219543 Strukturalne własności transformaty Burrowsa-Wheelera dla pewnych klas słów Praca magisterska na
Przetwarzanie tekstu 2. Operacje na plikach tekstowych w systemie Linux
Przetwarzanie tekstu 2 Operacje na plikach tekstowych w systemie Linux filtry programy przetwarzajace pliki (w szczególności tekstowe) w taki sposób, że odczytuja dane (plik wejściowy) ze standardowego
CIĄGI wiadomości podstawowe
1 CIĄGI wiadomości podstawowe Jak głosi definicja ciąg liczbowy to funkcja, której dziedziną są liczby naturalne dodatnie (w zadaniach oznacza się to najczęściej n 1) a wartościami tej funkcji są wszystkie
Zmienne losowe i ich rozkłady
Zmienne losowe i ich rozkłady 29 kwietnia 2019 Definicja: Zmienną losową nazywamy mierzalną funkcję X : (Ω, F, P) (R n, B(R n )). Definicja: Niech A będzie zbiorem borelowskim. Rozkładem zmiennej losowej
Kodowanie predykcyjne
Kodowanie i kompresja informacji - Wykład 5 22 marca 2010 Motywacje W tekstach naturalnych symbole bardzo często zależa od siebie. Motywacje W tekstach naturalnych symbole bardzo często zależa od siebie.
Algorytmy i struktury danych
Letnie Warsztaty Matematyczno-Informatyczne Algorytmy i struktury danych Mariusz Różycki University of Cambridge Zajęcia będą mieć formę wykładową. Slajdy można znaleźć na stronie kursu: http://lw.mi.edu.pl/informatyka/algorytmy.
Ćwiczenia z metodyki nauczania rachunku prawdopodobieństwa
Ćwiczenia z metodyki nauczania rachunku prawdopodobieństwa 25 marca 209 Zadanie. W urnie jest b kul białych i c kul czarnych. Losujemy n kul bez zwracania. Jakie jest prawdopodobieństwo, że pierwsza kula
3. FUNKCJA LINIOWA. gdzie ; ół,.
1 WYKŁAD 3 3. FUNKCJA LINIOWA FUNKCJĄ LINIOWĄ nazywamy funkcję typu : dla, gdzie ; ół,. Załóżmy na początek, że wyraz wolny. Wtedy mamy do czynienia z funkcją typu :.. Wykresem tej funkcji jest prosta
Algorytmy i struktury danych. Drzewa: BST, kopce. Letnie Warsztaty Matematyczno-Informatyczne
Algorytmy i struktury danych Drzewa: BST, kopce Letnie Warsztaty Matematyczno-Informatyczne Drzewa: BST, kopce Definicja drzewa Drzewo (ang. tree) to nieskierowany, acykliczny, spójny graf. Drzewo może
Algorytmy i Struktury Danych.
Algorytmy i Struktury Danych. Metoda Dziel i zwyciężaj. Problem Sortowania, cd. Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 2 Bożena Woźna-Szcześniak (AJD) Algorytmy
Granica kompresji Kodowanie Shannona Kodowanie Huffmana Kodowanie ciągów Kodowanie arytmetyczne. Kody. Marek Śmieja. Teoria informacji 1 / 35
Kody Marek Śmieja Teoria informacji 1 / 35 Entropia Entropia określa minimalną statystyczną długość kodowania (przyjmijmy dla prostoty że alfabet kodowy A = {0, 1}). Definicja Niech X = {x 1,..., x n }
PRZYKŁADY ZADAŃ MATURALNYCH Z MATEMATYKI NA POSZCZEGÓLNE STANDARDY DLA WYBRANYCH TREŚCI PROGRAMOWYCH Z POZIOMU PODSTAWOWEGO I ROZSZERZONEGO
PRZYKŁADY ZADAŃ MATURALNYCH Z MATEMATYKI NA POSZCZEGÓLNE STANDARDY DLA WYBRANYCH TREŚCI PROGRAMOWYCH Z POZIOMU PODSTAWOWEGO I ROZSZERZONEGO ZADANIA OPRACOWANE PRZEZ Agnieszkę Sumicką Katarzynę Hejmanowską
Kodowanie i kompresja Streszczenie Studia dzienne Wykład 6
Kodowanie i kompresja Streszczenie Studia dzienne Wykład 6 1 Kody cykliczne: dekodowanie Definicja 1 (Syndrom) Niech K będzie kodem cyklicznym z wielomianem generuja- cym g(x). Resztę z dzielenia słowa
0 + 0 = 0, = 1, = 1, = 0.
5 Kody liniowe Jak już wiemy, w celu przesłania zakodowanego tekstu dzielimy go na bloki i do każdego z bloków dodajemy tak zwane bity sprawdzające. Bity te są w ścisłej zależności z bitami informacyjnymi,
Kodowanie i kompresja Streszczenie Studia Licencjackie Wykład 11,
1 Kwantyzacja skalarna Kodowanie i kompresja Streszczenie Studia Licencjackie Wykład 11, 10.05.005 Kwantyzacja polega na reprezentowaniu dużego zbioru wartości (być może nieskończonego) za pomocą wartości
OBLICZALNOŚĆ I NIEOBLICZALNOŚĆ
OBLICZALNOŚĆ I NIEOBLICZALNOŚĆ Dwa konteksty obliczalności OBLICZALNE i NIEOBLICZALNE problemy (kontekst informatyczny) liczby (kontekst matematyczny) Problem nieobliczalny jest to problem nierozwiązywalny
Algorytmy przeszukiwania wzorca
Algorytmy i struktury danych Instytut Sterowania i Systemów Informatycznych Wydział Elektrotechniki, Informatyki i Telekomunikacji Uniwersytet Zielonogórski Algorytmy przeszukiwania wzorca 1 Wstęp Algorytmy
Analiza algorytmów zadania podstawowe
Analiza algorytmów zadania podstawowe 15 stycznia 2019 Zadanie 1 Zliczanie Zliczaj(n) 1 r 0 2 for i 1 to n 1 3 do for j i + 1 to n 4 do for k 1 to j 5 do r r + 1 6 return r P Jaka wartość zostanie zwrócona
teoria informacji Kanały komunikacyjne, kody korygujące Mariusz Różycki 25 sierpnia 2015
teoria informacji Kanały komunikacyjne, kody korygujące Mariusz Różycki 25 sierpnia 2015 1 wczoraj Wprowadzenie matematyczne. Entropia i informacja. Kodowanie. Kod ASCII. Stopa kodu. Kody bezprefiksowe.
Luty 2001 Algorytmy (4) 2000/2001
Mając dany zbiór elementów, chcemy znaleźć w nim element największy (maksimum), bądź najmniejszy (minimum). We wszystkich naturalnych metodach znajdywania najmniejszego i największego elementu obecne jest