Temat: Algorytmy wyszukiwania wzorca w tekście
|
|
- Janina Białek
- 8 lat temu
- Przeglądów:
Transkrypt
1 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 alfabetem. Należy znaleźć wszystkie wystąpienia wzorca P w tekście T. Będziemy zakładać, że zarówno tekst jak i wzorzec są ciągami znaków zapamiętanymi w strukturze danych o dostępie indeksowym (np. w tablicach: char T[n], P[m]) Przykład T = aabbcadbbbacadbdcbbacadba P = cad Wystąpienia wzorca P w tekście T podamy wskazując pozycje s w teście, dla których: T[s] = P[0] i T[s+1] = P[1] i... i T[s+m-1]=P[m-1]. W przykładzie s = 4, s = 11, s = 20. Gdy T = alalalala P = ala to wystąpienia wzorca P w tekście T są następujące: s = 0, s = 2, s = 4, s = 6. 1
2 2. Notacja i terminologia * - zbiór wszystkich tekstów (słów) utworzonych z symboli alfabetu ε - słowo o długości zero nazywane słowem pustym x - długość słowa x xy - konkatenacja (złożenie) słów x i y w x w jest prefiksem (przedrostkiem ) słowa x, gdy x = wy dla pewnego słowa y * w x w jest sufiksem (przyrostkiem ) słowa x, gdy x = yw dla pewnego słowa y * X[s... k] fragment tekstu X od znaku o indeksie s do znaku o indeksie k X k k - znakowy prefiks tekstu X. Jeżeli X = X[0... t], to X k =X[0.. k-1] Gdy T[s... s+m-1] = P[0... m-1] dla 0 s n m, to mówimy, że wzorzec P występuje z przesunięciem s w tekście T albo równoważnie, że wzorzec P występuje w tekście T od pozycji s. Jeżeli P występuje w tekście T z przesunięciem s, to s nazywamy poprawnym przesunięciem, w przeciwnym razie s nazywamy niepoprawnym przesunięciem. 2
3 Przykład ab abcca cca abcca słowo ab jest prefiksem słowa abcca słowa cca jest sufiksem słowa abcca Jeżeli X = abcabcd, to X[2... 5] = cabc oraz X 3 = abc T = ababcdabc P = bcd Przesunięcie s=0 jest niepoprawnym przesunięciem wzorca P względem tekstu T, natomiast przesunięcie s = 3 jest poprawnym przesunięciem wzorca P względem tekstu T. 3. Algorytm naiwny Idea tego algorytmu polega na przeglądaniu tekstu T sekwencyjnie, kolejno przesuwając się po jednym znaku tekstu od lewej do prawej i sprawdzaniu za każdym razem, czy kolejne znaki wzorca P pokrywają się z kolejnymi znakami tekstu. Algorytm naiwny s = 0; while (s <= n-m) j =0; while (j < m) if (P[j]= =T[s+j]) j = j+1; else break; if (j == m) P występuje w T od pozycji s ; s++; 3
4 Przykład n=18, m=4 T: aaabaababbababaaba P: baba P: baba P: baba P: baba... P: baba P występuje w T od pozycji 9... P: baba P występuje w T od pozycji P: baba Koszt czasowy algorytmu naiwnego Operacją elementarną są porównania między znakami wzorca i tekstu. Jeśli wzorzec nie występuje w tekście i przekonujemy się o tym po pierwszym porównaniu (przy każdym położeniu wzorca względem tekstu), to wykonujemy minimalną liczbę porównań równą n-m+1. Jeżeli wzorzec występuje na każdej pozycji tekstu, na przykład, gdy: T: a n, P: a m, to wykonujemy maksymalną liczbę porównań równą : (n - m+1) m. Zatem: ( n, m) = Θ( ( n m ) m) T 1 max + 4
5 4. Algorytm Knutha - Morrisa - Pratta (KMP) Algorytm KMP opiera się na wykorzystaniu pomocniczej funkcji Π (zwanej funkcją prefiksową), którą wyznacza się dla wzorca, niezależnie od tekstu. Algorytm wyznaczający funkcję prefiksową ma złożoność liniową względem długości wzorca. Funkcja ta pozwala na zwiększenie (ale tylko w określonych sytuacjach) przesunięcia wzorca względem tekstu. W algorytmie naiwnym przesunięcie zwiększa się zawsze tylko o jeden. Π : 1,..., m 0,1,..., m Π[q] = "maksymalna długość prefiksu wzorca P, który jest równocześnie sufiksem P q " Π[q]= max k : k < q, P k P q Wiedząc, że q znaków wzorca pasuje przy przesunięciu o s, następne potencjalnie poprawne przesunięcie s' można wyliczyć jako: s' = s+ q - Π[q] W najlepszym przypadku s' = s+q (gdy Π[q]=0) i eliminujemy wówczas przesunięcia: s+1, s+2,..., s+q-1. 5
6 Przykład P: Π[1] = 0 P: Π[2] = 0 P: Π[3] = 1 P: Π[4] = 2 P: Π[5] = 3 6
7 P: Π[6] = 0 P: Π[7] = 1 T : abacbababaabcbab... P : q Π[q] a b a c b a b a b a a b c b a b... przesu- a b a b a c a nięcie a b a b a c a s s' s' = s+ q - Π[q] s' = = 7 7
8 Po przesunięciu wzorca o 5 pozycji w prawo, 5 kolejnych znaków wzorca pokrywa się ze znakami tekstu. Znając te 5 znaków wzorca wiemy, że przesunięcie o tylko jedno miejsce w prawo nie jest poprawne, gdyż a wypadnie pod literą b. Natomiast przesunięcie o dwa miejsca w prawo ma szansę powodzenia. Informacje tego typu mogą być wydedukowane na podstawie samego wzorca. Algorytm obliczania funkcji prefiksowej Π Π[1] =0; k=0; for (q = 2; q<=m; q++) while (k>0 && P[k]!=P[q-1]) k = Π [k]; if (P[k] = =P[q-1]) k = k+1; Π [q] = k; Algorytm KMP q= 0; for ( i =0; i < n; i++) while (q>0 && P[q]!=T[i]) q = Π [q]; if (P[q] = = T[i]) q= q+1; if (q = = m) "wzorzec znaleziono na pozycji ; q = Π [q]; 8
9 Koszt czasowy algorytmu KMP Koszt obliczenia wszystkich wartości funkcji Π wynosi O(m), gdyż : (1) warunek P[k] =P[q-1] (po pętli) może być sprawdzany co najwyżej m razy, a z drugiej strony, (2) warunek P[k]!=P[q] (w pętli) też może być sprawdzany co najwyżej m razy. Stąd, razem mamy co najwyżej 2m porównań. Analogicznie można uzasadnić, że koszt zasadniczego algorytmu KMP jest równy O(n). Można pokazać, że całkowity koszt algorytmu KMP wynosi O(n+m). Jest to właściwie koszt średni, ale przypadek pesymistyczny dla algorytmu KMP zdarza się bardzo rzadko. Tym przypadkiem jest sytuacja, w której wzorzec P=a m oraz tekst T=a n. Wówczas przesunięcie w każdym kroku pętli (*) zwiększa się tylko o jeden. 9
10 5. Algorytm Rabina-Karpa (RK) Metodę zastosowaną w tym algorytmie można nazwać metodą ''odcisku''. Zamiast porównywać znak po znaku wzorzec z tekstem, używa się specjalnej funkcji (właśnie "odcisku ), która wiąże z każdym ciągiem znaków o długości m jedną liczbę. Liczba ta ma identyfikować blok o m znakach. Zamiast porównywać ciągi znaków, porównuje się reprezentujące je liczby (odciski). Ogólnie można przyjąć, że każdy znak jest cyfrą w systemie pozycyjnym o podstawie d, gdzie d=card(σ). Zatem każdy ciąg m kolejnych znaków można rozumieć jako liczbę m cyfrową w systemie pozycyjnym o podstawie d. Niech p oznacza liczbę odpowiadającą wzorcowi P, a t s oznacza liczbę odpowiadającą ciągowi znaków T[s... s+m-1]. Prawdziwa jest następująca własność: p = t s wtedy i tylko wtedy, gdy T[s... s+m-1] =P[0... m-1], czyli wzorzec P występuje w tekście T od pozycji s. Liczba p jest wartością wielomianu: W x = P m 1 + P m 2 x + P m 3 p dla x=d. 2 m 1 ( ) [ ] [ ] [ ] x P[ 0] x Liczba t s jest wartością wielomianu: x = T s + m 1 + T s + m 2 x + T Wt s 2 m 1 ( ) [ ] [ ] [ s + m 3] x T[ s] x dla x=d. 10
11 Wartości p i t 0 możemy policzyć kosztem liniowym stosując schemat Hornera : W ( x) = a0 + x( a1 + x( a x( a n 1 + xan ))...) Łatwo zauważyć, że wartości t s dla s=1, 2,..., n-m można obliczyć kosztem stałym, ze wzoru: t s =d (t s-1 -d m-1 T[s])+T[s+m] Algorytm Rabina-Karpa s = 0; p = W p (d); // d = card(σ) t 0 = W t0 (d); if ( p = = t 0 ) wzorzec P występuje w tekście T z przesunięciem s=0 ; while (s<=n-m) t s =d (t s-1 -d m-1 T[s])+T[s+m]; s++; if ( p = = t s ) wzorzec P występuje w tekście T z przesunięciem s ; Przykład Σ=0, 1, 2, 3, 4, 5, 6, 7, 8, 9, d=10 T: P:56983 Wówczas: t 0 = 34587, t 1 =10 ( )+6=45876 t 2 =58765, t 3 = itd. 11
12 Koszt czasowy algorytmu RK Operacją elementarną nie są tym razem porównania między znakami wzorca i tekstu, a operacje arytmetyczne realizowane przy obliczaniu odcisku wzorca i tekstu. Odcisk wzorca można policzyć kosztem O(m). Odcisk t 0 również można obliczyć takim samym kosztem. Odciski t 1,...,t n-m można policzyć stałym kosztem, gdy mamy wcześniej policzoną jednorazowo wartość d m-1 (można tę wartość policzyć kosztem O(logm), stosując algorytm oparty na metodzie "dziel i zwyciężaj". Zatem koszt całego algorytmu wyniesie O(n+m). W związku z tym, że alfabet wzorca i tekstu może być duży (np. d = card(σ)=256) pojawiają się dwa problemy związane z implementacją algorytmu RK. Problem 1 Wartości p i t 0, t 1,..., t n-m mogą być bardzo duże, a wtedy nie można zakładać, że każda operacja arytmetyczna ma ten sam koszt co operacja arytmetyczna dla liczb mieszczących się w słowie maszynowym. Rozwiązanie Problemu 1 Problem ten można rozwiązać stosując zamiast zwykłej arytmetyki, arytmetykę modulo, tzn. obliczone wartość odcisku dzieli się modulo pewna wybrana liczba pierwsza q. Zwykle wybiera się q takie, że d q powinno być nie większe niż jedno słowo maszynowe. Przy tym założeniu w trakcie obliczania wartości odcisków będą używane standardowe operatory arytmetyczne (tj. dla małych liczb ). 12
13 Algorytm Rabina-Karpa w arytmetyce modularnej s = 0; p = W p (d) % q; t 0 = W t0 (d) % q if ( p = = t 0 ) wzorzec P występuje w tekście T z przesunięciem s=0 ; while (s<=n-m) t s =(d (t s-1 -d m-1 T[s])+T[s+m]) % q; s++; if ( p = = t s ) wzorzec P występuje w tekście T z przesunięciem s ; Problem 2 Pojawia się jednak problem niejednoznaczności, ponieważ prawdziwość warunku p = = t s nie oznacza, że na pewno P[0...m-1]=T[s... s+m-1]. Równość reszt z dzielenia dwóch liczb nie oznacza bowiem, że same liczby są na pewno sobie równe. Aby algorytm nie zwracał niepoprawnych wyników należy zatem, w każdym przypadku, gdy p = = t s dodatkowo sprawdzić równość odpowiednich ciągów badając je znak po znaku. Powoduje to jednak, że koszt algorytmu RK, w najgorszym przypadku wynosi Θ((n-m+1) m). Przykładem przypadku pesymistycznego dla algorytmu RK jest przypadek: T = a n i P = a m. Wówczas każdy blok tekstu o długości m daje ten sam odcisk równy odciskowi wzorca i konieczne jest sprawdzenie znak po znaku. 13
14 W bardzo wielu zastosowaniach, zajście zdarzenia p== t s przy jednoczesnej niezgodności wzorca z tekstem, jest bardzo rzadkie. Liczbę q można tak wybrać, aby prawdopodobieństwo takiego zdarzenia było równe 1/n. Przy dużym n prawdopodobieństwo pomyłki jest zatem bardzo małe i można nie sprawdzać zgodności znak po znaku, co poowduje, że czas oczekiwany (złożoność średnia) wykonania algorytmu RK wynosi O(n+m). Wersja bez sprawdzania symbol po symbolu i z arytmetyką modulo q gwarantuje liniowy czas wykonania, ale z małym prawdopodobieństwem wynik może się okazać niepoprawny. Takie algorytmy, które z dopuszczalnym prawdopodobieństwem zwracają wynik niepoprawny nazywamy algorytmami Monte Carlo (zawsze szybko i prawdopodobnie poprawnie). Wersja algorytmu ze sprawdzaniem w przypadku, gdy odcisk wzorca jest zgodny modulo q z odciskiem bloku tekstu gwarantuje poprawny wynik, ale z małym prawdopodobieństwem algorytm ten będzie działał dłużej niż liniowo. Algorytmy tego typu nazywane są algorytmami Las Vegas (zawsze poprawnie i prawdopodobnie szybko). Problem 3 Wartości W p (d) oraz W t0 (d) to nadal duże liczby, dla dużego d, pomimo tego, że wartości t 0 oraz p są mniejsze równe q. Jak zatem obliczyć t 0 oraz p, aby nie używać arytmetyki dużych liczb? 14
15 Rozwiązanie problemu 3 Wartości t 0 oraz p obliczamy stosując algorytm potęgowania modularnego: h=1; for (i=0; i<m; i++) // obliczamy h=d m-1 % q h=(d*h) % q; p = 0; ts = 0; // obliczamy wartości t 0 oraz p for (i = 0; i<m ; i++) p = (d*p+p[i]) % q; ts = (d*ts + T[i]) % q; Algorytm Rabina-Karpa w wersji Las Vegas h=1; for (i=0; i<m; i++) h=(d*h) % q; p = 0; ts = 0; for (i = 0; i<m ; i++) p = (d*p+p[i]) % q; ts = (d*ts + T[i]) % q; for (s = 0; s<=n-m; s++) bool=0; if (p = = ts) i=0; bool=1; 15
16 while (i < m && bool) if (P[i]!=T[s+i]) bool = 0; i++; if (bool) wzorzec P występuje w tekście T z przesunięciem s ; if (s < n-m) ts=(ts+d*q-t[s]*h) % q; ts=(ts*d+t[s+m])% q; 16
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
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
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
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
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 algorytmów zadania podstawowe
Analiza algorytmów zadania podstawowe 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 0 Jaka wartość zostanie zwrócona przez powyższą
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
Zadanie 1 Przygotuj algorytm programu - sortowanie przez wstawianie.
Sortowanie Dane wejściowe: ciąg n-liczb (kluczy) (a 1, a 2, a 3,..., a n 1, a n ) Dane wyjściowe: permutacja ciągu wejściowego (a 1, a 2, a 3,..., a n 1, a n) taka, że a 1 a 2 a 3... a n 1 a n. Będziemy
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,
Oznaczenia: 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, to interesuje nas złożoność obliczeniowa
Zadanie 1. Zmiana systemów. Zadanie 2. Szyfr Cezara. Zadanie 3. Czy liczba jest doskonała. Zadanie 4. Rozkład liczby na czynniki pierwsze Zadanie 5.
Zadanie 1. Zmiana systemów. Zadanie 2. Szyfr Cezara. Zadanie 3. Czy liczba jest doskonała. Zadanie 4. Rozkład liczby na czynniki pierwsze Zadanie 5. Schemat Hornera. Wyjaśnienie: Zadanie 1. Pozycyjne reprezentacje
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
Wstęp do Informatyki zadania ze złożoności obliczeniowej z rozwiązaniami
Wstęp do Informatyki zadania ze złożoności obliczeniowej z rozwiązaniami Przykład 1. Napisz program, który dla podanej liczby n wypisze jej rozkład na czynniki pierwsze. Oblicz asymptotyczną złożoność
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,
Zadania do wykonania. Rozwiązując poniższe zadania użyj pętlę for.
Zadania do wykonania Rozwiązując poniższe zadania użyj pętlę for. 1. apisz program, który przesuwa w prawo o dwie pozycje zawartość tablicy 10-cio elementowej liczb całkowitych tzn. element t[i] dla i=2,..,9
Dr inż. Robert Wójcik, p. 313, C-3, tel Katedra Informatyki Technicznej (K-9) Wydział Elektroniki (W-4) Politechnika Wrocławska
Dr inż. Robert Wójcik, p. 313, C-3, tel. 320-27-40 Katedra Informatyki Technicznej (K-9) Wydział Elektroniki (W-4) Politechnika Wrocławska E-mail: Strona internetowa: robert.wojcik@pwr.edu.pl google: Wójcik
Indukcja. Materiały pomocnicze do wykładu. wykładowca: dr Magdalena Kacprzak
Indukcja Materiały pomocnicze do wykładu wykładowca: dr Magdalena Kacprzak Charakteryzacja zbioru liczb naturalnych Arytmetyka liczb naturalnych Jedną z najważniejszych teorii matematycznych jest arytmetyka
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)
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
Odwrotna Notacja Polska
Odwrotna Notacja Polska Odwrotna Notacja Polska w skrócie ONP) jest sposobem zapisu wyrażeń arytmetycznych. Znak wykonywanej operacji umieszczany jest po operandach, argumentach tzw. zapis postfiksowy).
Strategia "dziel i zwyciężaj"
Strategia "dziel i zwyciężaj" W tej metodzie problem dzielony jest na kilka mniejszych podproblemów podobnych do początkowego problemu. Problemy te rozwiązywane są rekurencyjnie, a następnie rozwiązania
Wstęp do informatyki- wykład 1
MATEMATYKA 1 Wstęp do informatyki- wykład 1 Systemy liczbowe Treści prezentowane w wykładzie zostały oparte o: S. Prata, Język C++. Szkoła programowania. Wydanie VI, Helion, 2012 www.cplusplus.com Jerzy
Algorytmy tekstowe. Andrzej Jastrz bski. Akademia ETI
Andrzej Jastrz bski Akademia ETI Wyszukiwanie wzorca Wyszukiwaniem wzorca nazywamy sprawdzenie, czy w podanym tekscie T znajduje si podci g P. Szukamy sªowa kot: Ala ma kota, kot ma ale. Algorytm naiwny
Zasada indukcji matematycznej
Zasada indukcji matematycznej Twierdzenie 1 (Zasada indukcji matematycznej). Niech ϕ(n) będzie formą zdaniową zmiennej n N 0. Załóżmy, że istnieje n 0 N 0 takie, że 1. ϕ(n 0 ) jest zdaniem prawdziwym,.
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
1. Wykład NWD, NWW i algorytm Euklidesa.
1.1. NWD, NWW i algorytm Euklidesa. 1. Wykład 1 Twierdzenie 1.1 (o dzieleniu z resztą). Niech a, b Z, b 0. Wówczas istnieje dokładnie jedna para liczb całkowitych q, r Z taka, że a = qb + r oraz 0 r< b.
1 Podstawy c++ w pigułce.
1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,
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,
Zadanie 1. Potęgi (14 pkt)
2 Egzamin maturalny z informatyki Zadanie 1. otęgi (14 pkt) W poniższej tabelce podane są wartości kolejnych potęg liczby 2: k 0 1 2 3 4 5 6 7 8 9 10 2 k 1 2 4 8 16 32 64 128 256 512 1024 Ciąg a=(a 0,
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
Struktury danych i złożoność obliczeniowa Wykład 2. Prof. dr hab. inż. Jan Magott
Struktury danych i złożoność obliczeniowa Wykład 2. Prof. dr hab. inż. Jan Magott Metody konstrukcji algorytmów: Siłowa (ang. brute force), Dziel i zwyciężaj (ang. divide-and-conquer), Zachłanna (ang.
TEORETYCZNE PODSTAWY INFORMATYKI
1 TEORETYCZNE PODSTAWY INFORMATYKI WFAiS UJ, Informatyka Stosowana I rok studiów, I stopień Wykład 3 2 Złożoność obliczeniowa algorytmów Notacja wielkie 0 Notacja Ω i Θ Algorytm Hornera Przykłady rzędów
Zaawansowane algorytmy i struktury danych
Zaawansowane algorytmy i struktury danych u dr Barbary Marszał-Paszek Opracowanie pytań praktycznych z egzaminów. Strona 1 z 12 Pytania praktyczne z kolokwium zaliczeniowego z 19 czerwca 2014 (studia dzienne)
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
wagi cyfry 7 5 8 2 pozycje 3 2 1 0
Wartość liczby pozycyjnej System dziesiętny W rozdziale opiszemy pozycyjne systemy liczbowe. Wiedza ta znakomicie ułatwi nam zrozumienie sposobu przechowywania liczb w pamięci komputerów. Na pierwszy ogień
Podstawy Informatyki. Sprawność algorytmów
Podstawy Informatyki Sprawność algorytmów Sprawność algorytmów Kryteria oceny oszczędności Miara złożoności rozmiaru pamięci (złożoność pamięciowa): Liczba zmiennych + liczba i rozmiar struktur danych
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
Matematyka dyskretna. Andrzej Łachwa, UJ, /14
Matematyka dyskretna Andrzej Łachwa, UJ, 2016 andrzej.lachwa@uj.edu.pl 6/14 Sumy Oto dwie konwencje zapisu skończonych sum wyrazów: (notacja Sigma, Fourier, 1820) Czasami stosowana jest ogólniejsza notacja,
Algorytm selekcji Hoare a. Łukasz Miemus
Algorytm selekcji Hoare a Łukasz Miemus 1 lutego 2006 Rozdział 1 O algorytmie 1.1 Problem Mamy tablicę A[N] różnych elementów i zmienną int K, takie że 1 K N. Oczekiwane rozwiązanie to określenie K-tego
LABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI. Wprowadzenie do środowiska Matlab
LABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI Wprowadzenie do środowiska Matlab 1. Podstawowe informacje Przedstawione poniżej informacje maja wprowadzić i zapoznać ze środowiskiem
Język ludzki kod maszynowy
Język ludzki kod maszynowy poziom wysoki Język ludzki (mowa) Język programowania wysokiego poziomu Jeśli liczba punktów jest większa niż 50, test zostaje zaliczony; w przeciwnym razie testu nie zalicza
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
Podstawy programowania w języku C i C++
Podstawy programowania w języku C i C++ Część czwarta Operatory i wyrażenia Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót treści wykładu,
Programowanie Równoległe i Rozproszone. Algorytm Kung a. Algorytm Kung a. Programowanie Równoległe i Rozproszone Wykład 8. Przygotował: Lucjan Stapp
Programowanie Równoległe i Rozproszone Lucjan Stapp Wydział Matematyki i Nauk Informacyjnych Politechnika Warszawska (l.stapp@mini.pw.edu.pl) 1/34 PRiR Algorytm Kunga Dany jest odcinek [a,b] i ciągła funkcja
Wykład 6. Metoda eliminacji Gaussa: Eliminacja z wyborem częściowym Eliminacja z wyborem pełnym
1 Wykład 6 Metoda eliminacji Gaussa: Eliminacja z wyborem częściowym Eliminacja z wyborem pełnym ELIMINACJA GAUSSA Z WYBOREM CZĘŚCIOWYM ELEMENTÓW PODSTAWOWYCH 2 Przy pomocy klasycznego algorytmu eliminacji
struktury danych dla operacji słownikowych
struktury danych dla operacji słownikowych tablica nieuporządkowana tablica uporządkowana lista dowiązaniowa drzewo poszukiwań binarnych drzewa zrównoważone z tablice haszowaniem tablice z haszowaniem
Wstęp do programowania
Wstęp do programowania Złożoność obliczeniowa, poprawność programów Paweł Daniluk Wydział Fizyki Jesień 2013 P. Daniluk(Wydział Fizyki) WP w. XII Jesień 2013 1 / 20 Złożoność obliczeniowa Problem Ile czasu
METODY KOMPUTEROWE W OBLICZENIACH INŻYNIERSKICH
METODY KOMPUTEROWE W OBLICZENIACH INŻYNIERSKICH ĆWICZENIE NR 9 WYRAŻENIA LOGICZNE, INSTRUKCJE WARUNKOWE I INSTRUKCJE ITERACYJNE W PROGRAMIE KOMPUTEROWYM MATLAB Dr inż. Sergiusz Sienkowski ĆWICZENIE NR
Wstęp do informatyki- wykład 1 Systemy liczbowe
1 Wstęp do informatyki- wykład 1 Systemy liczbowe Treści prezentowane w wykładzie zostały oparte o: S. Prata, Język C++. Szkoła programowania. Wydanie VI, Helion, 2012 www.cplusplus.com Jerzy Grębosz,
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
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 Entropia, informacja, kodowanie Mariusz Różycki 24 sierpnia 2015
teoria informacji Entropia, informacja, kodowanie Mariusz Różycki 24 sierpnia 2015 1 zakres materiału zakres materiału 1. Czym jest teoria informacji? 2. Wprowadzenie matematyczne. 3. Entropia i informacja.
Definicja. Ciąg wejściowy: Funkcja uporządkowująca: Sortowanie polega na: a 1, a 2,, a n-1, a n. f(a 1 ) f(a 2 ) f(a n )
SORTOWANIE 1 SORTOWANIE Proces ustawiania zbioru elementów w określonym porządku. Stosuje się w celu ułatwienia późniejszego wyszukiwania elementów sortowanego zbioru. 2 Definicja Ciąg wejściowy: a 1,
Języki i operacje na językach. Teoria automatów i języków formalnych. Definicja języka
Języki i operacje na językach Teoria automatów i języków formalnych Dr inŝ. Janusz Majewski Katedra Informatyki Definicja języka Definicja języka Niech Σ będzie alfabetem, Σ* - zbiorem wszystkich łańcuchów
mgr inż. Grzegorz Kraszewski SYSTEMY MULTIMEDIALNE wykład 4, strona 1. GOLOMBA I RICE'A
mgr inż. Grzegorz Kraszewski SYSTEMY MULTIMEDIALNE wykład 4, strona 1. KOMPRESJA ALGORYTMEM ARYTMETYCZNYM, GOLOMBA I RICE'A Idea algorytmu arytmetycznego Przykład kodowania arytmetycznego Renormalizacja
Treść wykładu. Pierścienie wielomianów. Dzielenie wielomianów i algorytm Euklidesa Pierścienie ilorazowe wielomianów
Treść wykładu Pierścienie wielomianów. Definicja Niech P będzie pierścieniem. Wielomianem jednej zmiennej o współczynnikach z P nazywamy każdy ciąg f = (f 0, f 1, f 2,...), gdzie wyrazy ciągu f są prawie
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)
Rekurencja, schemat rekursji i funkcje pierwotnie rekurencyjne
Rekurencja, schemat rekursji i funkcje pierwotnie rekurencyjne Elementy Logiki i Teorii Mnogości 2015/2016 Zadanie 1. Oblicz iteracyjnie i rekurencyjnie f(4), gdzie f jest funkcją określoną na zbiorze
Obliczenia iteracyjne
Lekcja Strona z Obliczenia iteracyjne Zmienne iteracyjne (wyliczeniowe) Obliczenia iteracyjne wymagają zdefiniowania specjalnej zmiennej nazywanej iteracyjną lub wyliczeniową. Zmienną iteracyjną od zwykłej
Matematyka dyskretna. Andrzej Łachwa, UJ, /15
Matematyka dyskretna Andrzej Łachwa, UJ, 2013 andrzej.lachwa@uj.edu.pl 6/15 Sumy Oto dwie konwencje zapisu skończonych sum wyrazów: (notacja Sigma, Fourier, 1820) Czasami stosowana jest ogólniejsza notacja,
ALGORYTMY Algorytm poprawny jednoznaczny szczegółowy uniwersalny skończoność efektywność (sprawność) zmiennych liniowy warunkowy iteracyjny
ALGORYMY Algorytm to przepis; zestawienie kolejnych kroków prowadzących do wykonania określonego zadania; to uporządkowany sposób postępowania przy rozwiązywaniu zadania, problemu, z uwzględnieniem opisu
Rachunek prawdopodobieństwa
Rachunek prawdopodobieństwa Sebastian Rymarczyk srymarczyk@afm.edu.pl Tematyka zajęć 1. Elementy kombinatoryki. 2. Definicje prawdopodobieństwa. 3. Własności prawdopodobieństwa. 4. Zmienne losowe, parametry
Podstawy Programowania C++
Wykład 3 - podstawowe konstrukcje Instytut Automatyki i Robotyki Warszawa, 2014 Wstęp Plan wykładu Struktura programu, instrukcja przypisania, podstawowe typy danych, zapis i odczyt danych, wyrażenia:
ARYTMETYKA BINARNA. Dziesiątkowy system pozycyjny nie jest jedynym sposobem kodowania liczb z jakim mamy na co dzień do czynienia.
ARYTMETYKA BINARNA ROZWINIĘCIE DWÓJKOWE Jednym z najlepiej znanych sposobów kodowania informacji zawartej w liczbach jest kodowanie w dziesiątkowym systemie pozycyjnym, w którym dla przedstawienia liczb
ZŁOŻONOŚĆ OBLICZENIOWA ALGORYTMÓW
ZŁOŻONOŚĆ OBLICZENIOWA ALGORYTMÓW MASZYNY O DOSTEPIE SWOBODNYM (RAM) Bartosz Zieliński Katedra Fizyki Teoretycznej i Informatyki Zima 2011-2012 INSTRUKCJE MASZYNY RAM Instrukcja Argument Znaczenie READ
WHILE (wyrażenie) instrukcja;
INSTRUKCJE ITERACYJNE WHILE, DO WHILE, FOR Instrukcje iteracyjne pozwalają powtarzać daną instrukcję programu określoną liczbę razy lub do momentu osiągnięcia określonego skutku. Pętla iteracyjna while
Luty 2001 Algorytmy (7) 2000/2001 s-rg@siwy.il.pw.edu.pl
System dziesiętny 7 * 10 4 + 3 * 10 3 + 0 * 10 2 + 5 *10 1 + 1 * 10 0 = 73051 Liczba 10 w tym zapisie nazywa się podstawą systemu liczenia. Jeśli liczba 73051 byłaby zapisana w systemie ósemkowym, co powinniśmy
Tablice z haszowaniem
Tablice z haszowaniem - efektywna metoda reprezentacji słowników (zbiorów dynamicznych, na których zdefiniowane są operacje Insert, Search i Delete) - jest uogólnieniem zwykłej tablicy - przyspiesza operacje
operacje porównania, a jeśli jest to konieczne ze względu na złe uporządkowanie porównywanych liczb zmieniamy ich kolejność, czyli przestawiamy je.
Problem porządkowania zwanego również sortowaniem jest jednym z najważniejszych i najpopularniejszych zagadnień informatycznych. Dane: Liczba naturalna n i ciąg n liczb x 1, x 2,, x n. Wynik: Uporządkowanie
WHILE (wyrażenie) instrukcja;
INSTRUKCJE ITERACYJNE WHILE, DO WHILE, FOR Instrukcje iteracyjne pozwalają powtarzać daną instrukcję programu określoną liczbę razy lub do momentu osiągnięcia określonego skutku. Pętla iteracyjna while
Języki programowania zasady ich tworzenia
Strona 1 z 18 Języki programowania zasady ich tworzenia Definicja 5 Językami formalnymi nazywamy każdy system, w którym stosując dobrze określone reguły należące do ustalonego zbioru, możemy uzyskać wszystkie
Wykład 5. Sortowanie w czasie liniowologarytmicznym
Wykład 5 Sortowanie w czasie liniowologarytmicznym 1 Sortowanie - zadanie Definicja (dla liczb): wejście: ciąg n liczb A = (a 1, a 2,, a n ) wyjście: permutacja (a 1,, a n ) taka, że a 1 a n 2 Zestawienie
Macierze. Rozdział Działania na macierzach
Rozdział 5 Macierze Funkcję, która każdej parze liczb naturalnych (i, j) (i 1,..., n; j 1,..., m) przyporządkowuje dokładnie jedną liczbę a ij F, gdzie F R lub F C, nazywamy macierzą (rzeczywistą, gdy
Matematyka dyskretna. Andrzej Łachwa, UJ, /14
Matematyka dyskretna Andrzej Łachwa, UJ, 2012 andrzej.lachwa@uj.edu.pl 2/14 Funkcji podłogi z logarytmu można użyć do wyliczenia liczby cyfr liczby naturalnej k (k>0): w układzie dziesiętnym log 10 (k)
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
Metody probabilistyczne
Metody probabilistyczne. Twierdzenia graniczne Wojciech Kotłowski Instytut Informatyki PP http://www.cs.put.poznan.pl/wkotlowski/ 20.2.208 / 26 Motywacja Rzucamy wielokrotnie uczciwą monetą i zliczamy
Efektywność Procedur Obliczeniowych. wykład 5
Efektywność Procedur Obliczeniowych wykład 5 Modele procesu obliczeń (8) Jedno-, wielotaśmowa MT oraz maszyna RAM są równoważne w przypadku, jeśli dany problem jest rozwiązywany przez jeden model w czasie
INŻYNIERIA BEZPIECZEŃSTWA LABORATORIUM NR 2 ALGORYTM XOR ŁAMANIE ALGORYTMU XOR
INŻYNIERIA BEZPIECZEŃSTWA LABORATORIUM NR 2 ALGORYTM XOR ŁAMANIE ALGORYTMU XOR 1. Algorytm XOR Operacja XOR to inaczej alternatywa wykluczająca, oznaczona symbolem ^ w języku C i symbolem w matematyce.
Symulacja w przedsiębiorstwie
Symulacja w przedsiębiorstwie Generowanie liczb losowych Cel Celem laboratorium jest zapoznanie się z funkcjami generowania liczb pseudolosowych w środowisku Ms Excel. Funkcje te są podstawą modeli symulacyjnych
Sortowanie topologiczne skierowanych grafów acyklicznych
Sortowanie topologiczne skierowanych grafów acyklicznych Metody boolowskie w informatyce Robert Sulkowski http://robert.brainusers.net 23 stycznia 2010 1 Definicja 1 (Cykl skierowany). Niech C = (V, A)
Prawdopodobieństwo geometryczne
Prawdopodobieństwo geometryczne Krzysztof Jasiński Wydział Matematyki i Informatyki UMK, Toruń V Lieceum Ogólnokształące im. Jana Pawała II w Toruniu 13.03.2014 Krzysztof Jasiński (WMiI UMK) Prawdopodobieństwo
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
Projekt AS KOMPETENCJI jest współfinansowany przez Unię Europejską w ramach środków Europejskiego Funduszu Społecznego
Projekt AS KOMPETENCJI jest współfinansowany przez Unię Europejską w ramach środków Europejskiego Funduszu Społecznego Program Operacyjny Kapitał Ludzki 2007-2013 CZŁOWIEK NAJLEPSZA INWESTYCJA Publikacja
Wybrane zagadnienia teorii liczb
Wybrane zagadnienia teorii liczb Podzielność liczb NWW, NWD, Algorytm Euklidesa Arytmetyka modularna Potęgowanie modularne Małe twierdzenie Fermata Liczby pierwsze Kryptosystem RSA Podzielność liczb Relacja
Matematyka dyskretna. Andrzej Łachwa, UJ, /10
Matematyka dyskretna Andrzej Łachwa, UJ, 2018 andrzej.lachwa@uj.edu.pl 10/10 Podziały i liczby Stirlinga Liczba Stirlinga dla cykli (często nazywana liczbą Stirlinga pierwszego rodzaju) to liczba permutacji
ZADANIE 1. Ważenie (14 pkt)
ZADANIE 1. Ważenie (14 pkt) Danych jest n przedmiotów o niewielkich gabarytach i różnych wagach. Jest też do dyspozycji waga z dwiema szalkami, ale nie ma odważników. Kładąc na wadze przedmioty a i b,
EGZAMIN MATURALNY Z INFORMATYKI 17 MAJA 2016 POZIOM PODSTAWOWY. Godzina rozpoczęcia: 14:00 CZĘŚĆ I WYBRANE: Czas pracy: 75 minut
Arkusz zawiera informacje prawnie chronione do momentu rozpoczęcia egzaminu. Układ graficzny CKE 2013 KOD UZUPEŁNIA ZDAJĄCY PESEL miejsce na naklejkę EGZAMIN MATURALNY Z INFORMATYKI POZIOM PODSTAWOWY CZĘŚĆ
Kod znak-moduł. Wartość liczby wynosi. Reprezentacja liczb w kodzie ZM w 8-bitowym formacie:
Wykład 3 3-1 Reprezentacja liczb całkowitych ze znakiem Do przedstawienia liczb całkowitych ze znakiem stosowane są następujące kody: - ZM (znak-moduł) - U1 (uzupełnienie do 1) - U2 (uzupełnienie do 2)
Podstawowe algorytmy i ich implementacje w C. Wykład 9
Wstęp do programowania 1 Podstawowe algorytmy i ich implementacje w C Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 9 Element minimalny i maksymalny zbioru Element minimalny
Tablice z haszowaniem
Tablice z haszowaniem - efektywna metoda reprezentacji słowników (zbiorów dynamicznych, na których zdefiniowane są operacje Insert, Search i Delete) - jest uogólnieniem zwykłej tablicy - przyspiesza operacje
Konstrukcje warunkowe Pętle
* Konstrukcje warunkowe Pętle *Instrukcja if sposób na sprawdzanie warunków *Konstrukcja: if(warunek) else { instrukcje gdy warunek spełniony} {instrukcje gdy warunek NIE spełniony} * 1. Wylicz całkowity
Algorytmy i struktury danych. Wykład 4
Wykład 4 Różne algorytmy - obliczenia 1. Obliczanie wartości wielomianu 2. Szybkie potęgowanie 3. Algorytm Euklidesa, liczby pierwsze, faktoryzacja liczby naturalnej 2017-11-24 Algorytmy i struktury danych
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
Jednym z najprostszych sposobów porządkowania jest technika stosowana przy sortowaniu listów:
Jednym z najprostszych sposobów porządkowania jest technika stosowana przy sortowaniu listów: Listy rozkładane są do różnych przegródek. O tym, do której z nich trafi koperta, decydują różne fragmenty
wstęp do informatyki i programowania część testowa (25 pyt. / 60 min.)
egzamin podstawowy 7 lutego 2017 r. wstęp do informatyki i programowania część testowa (25 pyt. / 60 min.) Instytut Informatyki Uniwersytetu Wrocławskiego Paweł Rzechonek imię, nazwisko i nr indeksu:..............................................................
Samodzielnie wykonaj następujące operacje: 13 / 2 = 30 / 5 = 73 / 15 = 15 / 23 = 13 % 2 = 30 % 5 = 73 % 15 = 15 % 23 =
Systemy liczbowe Dla każdej liczby naturalnej x Î N oraz liczby naturalnej p >= 2 istnieją jednoznacznie wyznaczone: liczba n Î N oraz ciąg cyfr c 0, c 1,..., c n-1 (gdzie ck Î {0, 1,..., p - 1}) taki,
Wstęp do programowania
Wstęp do programowania Algorytmy na tablicach Paweł Daniluk Wydział Fizyki Jesień 2013 P. Daniluk (Wydział Fizyki) WP w. III Jesień 2013 1 / 23 Dwadzieścia pytań Zasady 1 Osoba 1 wymyśla hasło z ustalonej
Podstawy Informatyki Maszyna Turinga
Podstawy Informatyki alina.momot@polsl.pl http://zti.polsl.pl/amomot/pi Plan wykładu 1 Czym jest Programowanie maszyny Turinga Teza Churcha-Turinga 2 3 4 Czym jest Programowanie maszyny Turinga Teza Churcha-Turinga,
Maszyna Turinga. Algorytm. czy program???? Problem Hilberta: Przykłady algorytmów. Cechy algorytmu: Pojęcie algorytmu
Problem Hilberta: 9 Czy istnieje ogólna mechaniczna procedura, która w zasadzie pozwoliłaby nam po kolei rozwiązać wszystkie matematyczne problemy (należące do odpowiednio zdefiniowanej klasy)? 2 Przykłady
Wprowadzenie do informatyki i użytkowania komputerów. Kodowanie informacji System komputerowy
1 Wprowadzenie do informatyki i użytkowania komputerów Kodowanie informacji System komputerowy Kodowanie informacji 2 Co to jest? bit, bajt, kod ASCII. Jak działa system komputerowy? Co to jest? pamięć
Wskaźniki. Programowanie Proceduralne 1
Wskaźniki Programowanie Proceduralne 1 Adresy zmiennych Sterta 1 #include 2 3 int a = 2 ; 4 5 int main ( ) 6 { 7 int b = 3 ; 8 9 printf ( " adres zmiennej a %p\n", &a ) ; 10 printf ( " adres