TEORETYCZNE PODSTAWY INFORMATYKI

Podobne dokumenty
Teoretyczne podstawy informatyki

TEORETYCZNE PODSTAWY INFORMATYKI

TEORETYCZNE PODSTAWY INFORMATYKI

Podstawy Informatyki. Sprawność algorytmów

Rekurencje. Jeśli algorytm zawiera wywołanie samego siebie, jego czas działania moŝe być określony rekurencją. Przykład: sortowanie przez scalanie:

Zaawansowane algorytmy i struktury danych

Teoretyczne podstawy informatyki

Wykład 4: Iteracja, indukcja i rekurencja

i = n = n 1 + n 2 1 i 2 n 1. n(n + 1)(2n + 1) n (n + 1) =

Za pierwszy niebanalny algorytm uważa się algorytm Euklidesa wyszukiwanie NWD dwóch liczb (400 a 300 rok przed narodzeniem Chrystusa).

Matematyczne Podstawy Informatyki

Krzysztof Gniłka. Twierdzenie o rekurencji uniwersalnej

Wykład 2. Poprawność algorytmów

Sortowanie przez scalanie

Wprowadzenie do złożoności obliczeniowej

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,

Strategia "dziel i zwyciężaj"

Matematyka dyskretna. Andrzej Łachwa, UJ, /14

Efektywność algorytmów

Rekurencja. Matematyka dyskretna

Zaliczenie. Egzamin. lub. Wykład. Zaliczenie. Ćwiczenie. 3 zadania. Projekty. Ocena. Na ocenę

Zasady analizy algorytmów

Złożoność algorytmów. Wstęp do Informatyki

Efektywna metoda sortowania sortowanie przez scalanie

Algorytmy i Struktury Danych

Algorytmy i struktury danych Matematyka III sem.

Złożoność Obliczeniowa Algorytmów

Rekurencja (rekursja)

Podstawy programowania. Wykład: 13. Rekurencja. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

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 )

Wstęp do programowania

Zaawansowane algorytmy i struktury danych

Metody numeryczne w przykładach

Uwaga: Funkcja zamień(a[j],a[j+s]) zamienia miejscami wartości A[j] oraz A[j+s].

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 13. Karol Tarnowski A-1 p.

Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy. Wykład 13. Karol Tarnowski A-1 p.

Wykład 3. Metoda dziel i zwyciężaj

Podyplomowe Studium Informatyki

Rekurencja. Dla rozwiązania danego problemu, algorytm wywołuje sam siebie przy rozwiązywaniu podobnych podproblemów. Przykład: silnia: n! = n(n-1)!

Wykład 7. Informatyka Stosowana. 21 listopada Informatyka Stosowana Wykład 7 21 listopada / 27

5. Rozwiązywanie układów równań liniowych

Złożoność obliczeniowa algorytmu ilość zasobów komputera jakiej potrzebuje dany algorytm. Pojęcie to

Sortowanie - wybrane algorytmy

Algorytmy i Struktury Danych.

I. Liczby i działania

Wymagania edukacyjne z matematyki

Wymagania edukacyjne z matematyki

Metody numeryczne I. Janusz Szwabiński. Metody numeryczne I (C) 2004 Janusz Szwabiński p.1/61

Przykładowe zadania z teorii liczb

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

Wymagania eduka cyjne z matematyki

Algorytmy w teorii liczb

INFORMATYKA SORTOWANIE DANYCH.

Porównanie czasów działania algorytmów sortowania przez wstawianie i scalanie

Algorytmy i Struktury Danych.

Poprawność semantyczna

koordynator modułu dr hab. Michał Baczyński rok akademicki 2012/2013

Sortowanie przez wstawianie

Funkcje wymierne. Jerzy Rutkowski. Działania dodawania i mnożenia funkcji wymiernych określa się wzorami: g h + k l g h k.

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

Analiza algorytmów zadania podstawowe

Układy równań liniowych. Krzysztof Patan

TEORETYCZNE PODSTAWY INFORMATYKI

Wymagania edukacyjne z matematyki dla uczniów klasy VII szkoły podstawowej

2. DZIAŁANIA NA WIELOMIANACH

WYMAGANIA EDUKACYJNE Z MATEMATYKI KLASA I GIMNAZJUM Małgorzata Janik

Programowanie dynamiczne cz. 2

Sylabus modułu: Matematyczne podstawy informatyki (kod modułu:03-mo2n-12-mpln)

WYMAGANIA KONIECZNE - OCENA DOPUSZCZAJĄCA:

Programowanie dynamiczne

Klasa 2 INFORMATYKA. dla szkół ponadgimnazjalnych zakres rozszerzony. Założone osiągnięcia ucznia wymagania edukacyjne na. poszczególne oceny

UKŁADY ALGEBRAICZNYCH RÓWNAŃ LINIOWYCH

Wymagania edukacyjne z matematyki dla klasy VII

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

Kongruencje pierwsze kroki

TEORETYCZNE PODSTAWY INFORMATYKI

REKURENCJA W JĘZYKU HASKELL. Autor: Walczak Michał

Wykład 8. Rekurencja. Iterować jest rzeczą ludzką, wykonywać rekursywnie boską. L. Peter Deutsch

Programowanie dynamiczne i algorytmy zachłanne

ANALIZA ALGORYTMÓW. Analiza algorytmów polega między innymi na odpowiedzi na pytania:

Szczegółowe wymagania edukacyjne na poszczególne oceny dla klasy I gimnazjum

Indukcja matematyczna

Wymagania z matematyki ( zakres wiedzy) dla klasy VII na poszczególne oceny

Algorytmy i str ruktury danych. Metody algorytmiczne. Bartman Jacek

Rekurencja. Przykład. Rozważmy ciąg

Transformata Fouriera. Sylwia Kołoda Magdalena Pacek Krzysztof Kolago

KARTA PRZEDMIOTU. Algorytmy i struktury danych, C4

Matematyka dyskretna

Aproksymacja funkcji a regresja symboliczna

Techniki konstruowania algorytmów. Metoda dziel i zwyciężaj

Przedmiotowy system oceniania

WYMAGANIA EDUKACYJNE NA POSZCZEGÓLNE OCENY W KLASIE I GIMNAZJUM

Algorytmy i Struktury Danych

Dopuszczający. Opracowanie: mgr Michał Wolak 2

WYMAGANIA NA POSZCZEGÓLNE STOPNIE KLASA I GIMNAZJUM

Teraz bajty. Informatyka dla szkół ponadpodstawowych. Zakres rozszerzony. Część 1.

ALGORYTMY I STRUKTURY DANYCH

Algorytmy i Struktury Danych, 2. ćwiczenia

KARTA PRZEDMIOTU. 1. Informacje ogólne. 2. Ogólna charakterystyka przedmiotu. Algorytmy i struktury danych, C3

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

Transkrypt:

1 TEORETYCZNE PODSTAWY INFORMATYKI 16/01/2017 WFAiS UJ, Informatyka Stosowana I rok studiów, I stopień

Repetytorium złożoność obliczeniowa 2 Złożoność obliczeniowa Notacja wielkie 0 Notacja Ω i Θ Rozwiązywanie rekurencji Złożoność obliczeniowa zamortyzowana 16/01/2017

Złożoność obliczeniowa 3 Złożoność obliczeniowa: Jest to miara służąca do porównywania efektywności algorytmów. Mamy dwa kryteria efektywności: Czas, Pamięć Do oceny efektywności stosujemy jednostki logiczne wyrażające związek miedzy rozmiarem danych N (wielkość pliku lub tablicy) a ilością czasu T potrzebną na ich przetworzenie. 19/10/2015

Złożoność asymptotyczna 4 Funkcja wyrażająca zależność miedzy N a T jest zwykle bardzo skomplikowana, a jej obliczenie ma znaczenie jedynie w odniesieniu do dużych rozmiarów danych Przybliżona miara efektywności to tzw. złożoność asymptotyczna. 19/10/2015

Notacja wielkie O 5 Definicja: f(n) jest O(g(n)), jeśli istnieją liczby dodatnie c i n 0 takie że: f(n) < c g(n) dla wszystkich n n 0. Przykład: f(n) = n 2 + 100n + log 10 n + 1000 możemy przybliżyć jako: ( n f(n) n 2 + 100n + O(log 10 albo jako: ( 2 f(n) O(n Notacja wielkie O ma kilka pozytywnych własności które możemy wykorzystać przy szacowaniu efektywności algorytmów. 19/10/2015

Własności notacji wielkie O 6 Własność 1 (przechodniość): Jeśli f(n) jest O(g(n)) i g(n) jest O(h(n)), to f(n) jest (( O(h(n Własność 2: Jeśli f(n) jest O(h(n)) i g(n) jest O(h(n)), to f(n)+g(n) jest (( O(h(n Własność 3: ( k Funkcja an k jest O(n Własność 4: Funkcja n k jest O(n k+j ) dla dowolnego dodatniego j 19/10/2015

Własności notacji wielkie O 7 Z tych wszystkich własności wynika, że dowolny wielomian jest wielkie O dla n podniesionego do najwyższej w nim potęgi, czyli : f(n) = a k n k + a k-1 n k-1 + + a 1 n +a 0 jest O(n k ) (jest też oczywiście O(n k+j ) dla dowolnego ( j dodatniego 19/10/2015

Własności notacji wielkie O 8 Własność 5: (( O(g(n Jeśli f(n) = c g(n), to f(n) jest Własność 6: Funkcja log a n jest O(log b n) dla dowolnych a i b większych niż 1 Własność 7: log a n jest O(log 2 n) dla dowolnego dodatniego a 19/10/2015

Własności notacji wielkie O 9 Jedną z najważniejszych funkcji przy ocenianiu efektywności algorytmów jest funkcja logarytmiczna. Jeżeli można wykazać że złożoność algorytmu jest rzędu logarytmicznego, algorytm można traktować jako bardzo dobry. Istnieje wiele funkcji lepszych w tym sensie niż logarytmiczna, jednak zaledwie kilka spośród nich, jak O(log 2 log 2 n) czy O(1) ma praktyczne znaczenie. 19/10/2015

Notacja Ω i Θ 10 Notacja wielkie O odnosi się do górnych ograniczeń funkcji. Istnieje symetryczna definicja dotycząca dolnych ograniczeń Definicja f(n) jest Ω(g(n)), jeśli istnieją liczby dodatnie c i n 0 takie że, f(n) c g(n) dla wszystkich n n 0. Równoważność f(n) jest Ω(g(n)) wtedy i tylko wtedy, gdy g(n) jest O(f(n)) Definicja f(n) jest Θ(g(n)), jeśli istnieją takie liczby dodatnie c 1, c 2 i n 0 takie że, c 1 g(n) f(n) c 2 g(n) dla wszystkich n n 0. 19/10/2015

Notacja O, Ω i Θ 11 19/10/2015

Czas działania programu 12 Mając do dyspozycji definicję wielkie O oraz własności (1)-(7) będziemy mogli, wg. kilku prostych zasad, skutecznie analizować czasy działania większości programów spotykanych w praktyce. Efektywność algorytmów ocenia się przez szacowanie ilości czasu i pamięci potrzebnych do wykonania zadania, dla którego algorytm został zaprojektowany. Najczęściej jesteśmy zainteresowani złożonością czasową, mierzoną zazwyczaj liczbą przypisań i porównań realizowanych podczas wykonywania programu. Bardzo często interesuje nas tylko złożoność asymptotyczna, czyli czas działania dla dużej ilości analizowanych zmiennych. 19/10/2015

Czas działania programu 13 Dla konkretnych danych wejściowych jest wyrażony liczba wykonanych prostych (elementarnych) operacji lub kroków. Jest dogodne zrobienie założenia że operacja elementarna jest maszynowo niezależna. Każde wykonanie i-tego wiersza programu jest równe c i, przy czym c i jest stałą. Kiedy algorytm zawiera rekurencyjne wywołanie samego siebie, jego czas działania można często opisać zależnością rekurencyjna (rekurencja) wyrażającą czas dla problemu rozmiaru n za pomocą czasu dla podproblemów mniejszych rozmiarów. Możemy wiec użyć narzędzi matematycznych aby rozwiązać rekurencje i w ten sposób otrzymać oszacowania czasu działania algorytmu. 16/01/2017

14 Rekurencja dla algorytmu typu dziel i zwyciężaj Rekurencja odpowiadającą czasowi działania algorytmu typu dziel i zwyciężaj opiera się na podziale jednego poziomu rekursji na trzy etapy. Niech T(n) będzie czasem działania dla jednego problemu rozmiaru n. Jeśli rozmiar problemu jest odpowiednio mały, powiedzmy n c dla pewnej stałej c, to jego rozwiązanie zajmuje stały czas, co zapiszemy jako (1). Załóżmy ze dzielimy problem na a podproblemów, każdy rozmiaru n/b. Jeśli D(n) jest czasem dzielenia problemu na podproblemy, a C(n) czasem scalania rozwiązań podproblemow w pełne rozwiązanie dla oryginalnego problemu, to otrzymujemy rekurencje T(n) = (1) jeśli n c T(n) = a T(n/b) + D(n) + C(n) w przeciwnym przypadku 16/01/2017

Rekurencja dla algorytmu typu dziel 15 i zwyciężaj Przykład: algorytm sortowania przez scalanie dziel: znajdujemy środek przedziału, zajmuje to czas stały D(n)= q(1), zwyciężaj: rozwiązujemy rekurencyjnie dwa podproblemy, każdy rozmiaru n/2, co daje czas działania 2 T(n/2), połącz: działa w czasie q(n), a wiec C(n)= q(n). Ostatecznie: T(n) = q(1) jeśli n=1 T(n) = 2 T(n/2) + q(1) + q(n) jeśli n>1 Rozwiązaniem tej rekurencji jest T(n) = q(n log n). 16/01/2017

Metody rozwiązywania rekurencji 16 Metoda podstawiania: zgadujemy oszacowanie, a następnie dowodzimy przez indukcję jego poprawność. Metoda iteracyjna: przekształcamy rekurencję na sumę, korzystamy z technik ograniczania sum. Metoda uniwersalna: stosujemy oszacowanie na rekurencję mające postać T(n) = a T(n/b) + f(n), gdzie a 1, b>1, a f(n) jest daną funkcją. 16/01/2017

Metoda podstawiania 17 Polega na zgadnięciu postaci rozwiązania, a następnie wykazaniu przez indukcję, że jest ono poprawne. Trzeba też znaleźć odpowiednie stałe. Bardzo skuteczna, stosowana tylko w przypadkach kiedy łatwo jest przewidzieć postać rozwiązania. 16/01/2017

Metoda podstawiania 18 Przykład: Postać rekurencji: T(n) = 2T(n/2) + n Zgadnięte rozwiązanie: ( n T(n) = q(n log Podstawa: n=2; T(1)=1; T(2)=4; Indukcja: T(n) 2 (c(n/2)log(n/2)) + n c n log(n/2) + n T(n) c n log(n/2) + n = c n log(n) c n log(2) + n T(n) c n log(n) c n log(2) + n = c n log (n) c n + n T(n) c n log (n) c n + n c n log(n) spełnione dla c>=1; 16/01/2017

Metoda iteracyjna 19 Polega na rozwijaniu (iterowaniu) rekurencji i wyrażanie jej jako sumy składników zależnych tylko od n warunków brzegowych. Następnie mogą być użyte techniki sumowania do oszacowania rozwiązania. 16/01/2017

Metoda iteracyjna 20 Przykład: Postać rekurencji: T(n) = 3T(n/4) + n Iterujemy: T(n) = n + 3T(n/4) = n + 3((n/4) +3T(n/16)) = n + 3 (n/4) + 9T(n/16) T(n) = n + 3 (n/4) + 9T(n/16) = n + 3 n/4 + 9 n/16 + 27 T(n/64) Iterujemy tak długo aż osiągniemy warunki brzegowe. Składnik i-ty w ciągu wynosi 3i n/4i. Iterowanie kończymy, gdy n=1 lub n/4i = 1 (czyli i > log4(n)). T(n) n +3n/4 + 9n/16 + 27n/64 +.. + 3 log4n q(1) T(n) 4n + 3 log4n q(1) = q(n) 16/01/2017

Metoda iteracyjna 21 Metoda iteracyjna jest zazwyczaj związana z dużą ilością przekształceń algebraicznych, więc zachowanie prostoty nie jest łatwe. Punkt kluczowy to skoncentrowanie się na dwóch parametrach: liczbie iteracji koniecznych do osiągnięcia warunku brzegowego oraz sumie składników pojawiających się w każdej iteracji. 16/01/2017

Drzewa rekursji 22 Pozwalają w dogodny sposób zilustrować rozwijanie rekurencji, jak również ułatwiają stosowanie aparatu algebraicznego służącego do rozwiązywania tej rekurencji. Szczególnie użyteczne gdy rekurencja opisuje algorytm typu dziel i zwyciężaj. 16/01/2017

23 Drzewa rekursji dla algorytmu i zwycieżaj T(n) = 2 T(n/2) + n 2 dziel n 2 n 2 ( T(n/2 ( T(n/2 16/01/2017

24 Drzewa rekursji dla algorytmu dziel i zwyciężaj T(n) = 2 T(n/2) + n 2 n 2 n 2 (n/2) 2 (n/2) 2 ½ n 2 ( T(n/4 ( T(n/4 ( T(n/4 ( T(n/4 1/4 n 2 = q(n 2 ) Rozwiązaniem tego równania jest T(n) = q(n 2 ) 16/01/2017

Drzewa rekursji 25 T(n) = T(n/3) + T(2n/3) + n k= log 3/2 n n n n/3 2n/3 n n/9 2n/9 2n/9 4n/9 n Dzielimy tak długo aż n (2/3) k = 1 => n = (3/2) k => k = log 3/2 (n) = log 3/2 (2) * log(n) = q(n logn) Rozwiązaniem tego równania jest T(n) = q(n logn) 16/01/2017

Funkcje tworzące 26 Rekurencje były badane już od 1202 roku przez L. Fibonacciego A. de Moivre w 1730 roku wprowadził pojęcie funkcji tworzących do rozwiązywania rekurencji. 16/01/2017

Metoda rekurencji universalnej 27 Metoda rekurencji uniwersalnej podaje uniwersalny przepis rozwiązywania równania rekurencyjnego postaci: ( f(n T(n) = a T(n/b) + gdzie a 1 i b>1 są stałymi, a f(n) jest funkcja asymptotycznie dodatnia. Za wartość (n/b) przyjmujemy najbliższą liczbę całkowitą (mniejsza lub większą od wartości dokładnej). 16/01/2017

Metoda rekurencji universalnej 28 Rekurencja opisuje czas działania algorytmu, który dzieli problem rozmiaru n na a problemów, każdy rozmiaru n/b, gdzie a i b są dodatnimi stałymi. Każdy z a problemów jest rozwiązywany rekurencyjnie w czasie T(n/b). Koszt dzielenia problemu oraz łączenia rezultatów częściowych jest opisany funkcja f(n). 16/01/2017

29 Twierdzenie o rekurencji uniwersalnej 16/01/2017

30 Twierdzenie o rekurencji uniwersalnej 16/01/2017

Przykład 31 16/01/2017

Przykład 32 16/01/2017

Przykład 33 16/01/2017

Przykład 34 16/01/2017

Złożoność zamortyzowana 35 11/01/2016

Złożoność zamortyzowana 36 11/01/2016

Złożoność zamortyzowana 37 11/01/2016

Przykład 38 11/01/2016

Przykład 39 11/01/2016

Przykład dla kosztu amortyzacji = 2 40 11/01/2016

Przykład dla kosztu amortyzacji = 3 41 11/01/2016

Złożoność zamortyzowana 42 11/01/2016

Kontynuacja przykładu 43 11/01/2016

Dane zewnętrzne 44 11/01/2016

Dane zewnętrzne 45 11/01/2016

Dane zewnętrzne 46 11/01/2016

Sortowanie 47 11/01/2016

Sortowanie przez łączenie 48 11/01/2016

Przykład 49 11/01/2016

Podsumowanie 50 11/01/2016