TGH01 - Algoritmizace

Podobne dokumenty
TGH01 - Algoritmizace

Kristýna Kuncová. Matematika B2 18/19

Anotace. Martin Pergel,

(1) Derivace. Kristýna Kuncová. Matematika B2 17/18. Kristýna Kuncová (1) Derivace 1 / 35

Edita Pelantová, katedra matematiky / 16

Elementární funkce. Edita Pelantová. únor FJFI, ČVUT v Praze. katedra matematiky, FJFI, ČVUT v Praze

Aproximace funkcí 1,00 0,841 1,10 0,864 1,20 0,885. Body proložíme lomenou čarou.

Funkce zadané implicitně. 4. března 2019

PA152,Implementace databázových systémů 2 / 25

Úvodní informace. 18. února 2019

(13) Fourierovy řady

Kristýna Kuncová. Matematika B3

Co nám prozradí derivace? 21. listopadu 2018

Komplexní analýza. Martin Bohata. Katedra matematiky FEL ČVUT v Praze Martin Bohata Komplexní analýza Mocninné řady 1 / 18

Univerzita Palackého v Olomouci

Vybrané kapitoly z matematiky

Katedra kybernetiky skupina Inteligentní Datové Analýzy (IDA) Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

Matematika (KMI/PMATE)

5. a 12. prosince 2018

MATEMATIKA 3 NUMERICKÉ METODY. Katedra matematiky a didaktiky matematiky Technická univerzita v Liberci

Necht je funkce f spojitá v intervalu a, b a má derivaci v (a, b). Pak existuje bod ξ (a, b) tak, že f(b) f(a) b a. Geometricky

(2) Funkce. Kristýna Kuncová. Matematika B2. Kristýna Kuncová (2) Funkce 1 / 25

Inverzní Z-transformace

Krzysztof Gniłka. Twierdzenie o rekurencji uniwersalnej

MATEMATIKA 3. Katedra matematiky a didaktiky matematiky Technická univerzita v Liberci

x2 + 2x 15 x 2 + 4x ) f(x) = x 2 + 2x 15 x2 + x 12 3) f(x) = x 3 + 3x 2 10x. x 3 + 3x 2 10x x 2 + x 12 10) f(x) = log 2.

Formálne jazyky Automaty. Formálne jazyky. 1 Automaty. IB110 Podzim

Reprezentace dat. BI-PA1 Programování a Algoritmizace I. Ladislav Vagner

Stochastické modelování v ekonomii a financích Konzistence odhadu LWS. konzistence OLS odhadu. Předpoklady pro konzistenci LWS

Numerické metody a statistika

1 Soustava lineárních rovnic

Vladimír Ulman Centre for Biomedical Image Analysis. 10th October, 2007 FI MU, Brno

Kristýna Kuncová. Matematika B2

Automatové modely. Stefan Ratschan. Fakulta informačních technologíı. Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

Paralelní implementace a optimalizace metody BDDC

ZÁPADOČESKÁ UNIVERZITA V PLZNI FAKULTA PEDAGOGICKÁ Katedra matematiky. Dudek Martin. obor Matematická studia

Petr Hasil. c Petr Hasil (MUNI) Nekonečné řady MA III (M3100) 1 / 187

Matematika III Stechiometrie stručný

Kristýna Kuncová. Matematika B2 18/19. Kristýna Kuncová (1) Vzorové otázky 1 / 36

Logika V. RNDr. Kateřina Trlifajová PhD. Katedra teoretické informatiky Fakulta informačních technologíı BI-MLO, ZS 2011/12

Quick sort, spojové struktury

Linea rnı (ne)za vislost

Algoritmy a datové struktury 2. Sylabus: Vyhledávání vzorků v textu: alg. Aho-Corasicková

Martin Pergel. 26. února Martin Pergel

B0B99PRPA Procedurální programování

1. Informace o předmětu, úvod do programování

B0B99PRPA Procedurální programování

Podstawy Informatyki. Sprawność algorytmów

Teoretyczne podstawy informatyki

TGH08 - Optimální kostry

Určitý (Riemannův) integrál a aplikace. Nevlastní integrál. 19. prosince 2018

1 Definice. A B A B vlastní podmnožina. 4. Relace R mezi množinami A a B libovolná R A B. Je-li A = B relace na A

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

3. Problémy s omezujícími podmínkami (CSP Constraint Satisfaction Problems)

Obsah. Zobrazení na osmistěn. 1 Zobrazení sféry po částech - obecné vlastnosti 2 Zobrazení na pravidelný konvexní mnohostěn

Základy informatiky IB110. podzim Fakulta informatiky Masarykova univerzita

Matematická analýza II pro kombinované studium. Konzultace první a druhá. RNDr. Libuše Samková, Ph.D. pf.jcu.cz

Petr Beremlijski, Marie Sadowská

Kapitola 2. Nelineární rovnice

NÁVOD K POUŽITÍ KEZELÉSI KÉZIKÖNYV INSTRUKCJA OBSŁUGI NÁVOD NA POUŽÍVANIE. Česky. Magyar. Polski. Slovensky

DFT. verze:

Algorytmy i struktury danych Matematyka III sem.

B0B99PRPA Procedurální programování. Stanislav Vítek

Komplexní analýza. Martin Bohata. Katedra matematiky FEL ČVUT v Praze Martin Bohata Komplexní analýza Úvod 1 / 32

Informatyka A. Algorytmy

Algorytmy i Struktury Danych.

kontaktní modely (Winklerův, Pasternakův)

Funkce více proměnných: limita, spojitost, derivace


Anna Kratochvílová Anna Kratochvílová (FJFI ČVUT) PDR ve zpracování obrazu / 17

Sortowanie przez wstawianie

Obsah. Limita posloupnosti a funkce. Petr Hasil. Limita posloupnosti. Pro a R definujeme: Je-li a < 0, pak a =, a ( ) =. vlastní body.

Matematika 1 Jiˇr ı Fiˇser 24. z aˇr ı 2013 Jiˇr ı Fiˇser (KMA, PˇrF UP Olomouc) KMA MAT1 24. z aˇr ı / 52

Złożoność Obliczeniowa Algorytmów

Numerické metody minimalizace

Analiza Algorytmów Moduł 3 Rekurencje

Katedra kybernetiky laboratoř Inteligentní Datové Analýzy (IDA) Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

Numerické metody 8. května FJFI ČVUT v Praze

Lineární algebra - iterační metody

Operace s funkcemi [MA1-18:P2.1] funkční hodnota... y = f(x) (x argument)

PARADIGMATA PROGRAMOVÁNÍ 1B

Výzvy, které před matematiku staví

1 Dedekindovy řezy (30 bodů)

Obsah. 1 Konstrukce (definice) Riemannova integrálu Výpočet Newtonova Leibnizova věta Aplikace výpočet objemů a obsahů 30

IEL Přechodové jevy, vedení

Definice Řekneme, že PDA M = (Q,Σ,Γ,δ,q 0,Z 0,F) je. 1. pro všechna q Q a Z Γ platí: kdykoliv δ(q,ε,z), pak δ(q,a,z) = pro všechna a Σ;

Fakulta biomedic ınsk eho inˇzen yrstv ı Teoretick a elektrotechnika Prof. Ing. Jan Uhl ıˇr, CSc. L eto 2017

Podyplomowe Studium Programowania i Systemów Baz Danych

Statistika (KMI/PSTAT)

Kapitola 4: Soustavy diferenciálních rovnic 1. řádu

Sortowanie przez scalanie

Kombinatorika na slovech v kryptologii

Obsah: Rozhodovací stromy. Úvod do umělé inteligence 11/12 2 / 41. akce

Tabulky, součin tabulek

Kombinatorika a grafy I



(a). Pak f. (a) pro i j a 2 f

Wykład 5. Sortowanie w czasie liniowologarytmicznym

Zaawansowane algorytmy. Wojciech Horzelski

Transkrypt:

TGH01 - Algoritmizace Jan Březina Technical University of Liberec 28. února 2017

Co je to algoritmus? Porovnávání algoritmů

Porovnávání algoritmů Co je to algoritmus? Který algoritmus je lepší? Záleží na kritériu:

Porovnávání algoritmů Co je to algoritmus? Který algoritmus je lepší? Záleží na kritériu: Rychlost výpočtu (časová složitost)

Porovnávání algoritmů Co je to algoritmus? Který algoritmus je lepší? Záleží na kritériu: Rychlost výpočtu (časová složitost) Pamět ová náročnost (pamět ová složitost)

Porovnávání algoritmů Co je to algoritmus? Který algoritmus je lepší? Záleží na kritériu: Rychlost výpočtu (časová složitost) Pamět ová náročnost (pamět ová složitost) Složitost implementace (rychlost implementace)

Porovnávání algoritmů Co je to algoritmus? Který algoritmus je lepší? Záleží na kritériu: Rychlost výpočtu (časová složitost) Pamět ová náročnost (pamět ová složitost) Složitost implementace (rychlost implementace) Robusnost (odolnost vůči chybám vstupu)

Složitost algoritmu jako funkce vstupu Maximální zjednodušení: vstup má velikost n ( např. bytů) výpočet trvá T (n) elementárních kroků (např. instrukcí) a potřebuje M(n) jednotek paměti ( např. bytů)

Porovnání různých složitostí Pro seriový počítač s frekvencí 1GHz (10 9 operací za sekundu) T (n) n = 10 100 1000 1000000 za 1 hodinu log n 3.3ns 6.7ns 10ns 20ns n 3.2ns 10ns 32ns 1µs 10 25 (1000x world) n 10ns 100ns 1µs 1ms 10 12 (TB) n log n 33ns 664ns 10µs 20ms 10 11 n 2 100ns 10µs 1 ms 17min 10 6 (MB) n 3 1µs 1ms 1s 31let 15000 2 n 1µs 41 n! 3ms 15 Závěr: Na konstantě nezáleží.

O(n) notace Necht g a f jsou dvě reálné funkce reálné proměnné. g(n) = O(f(n)) pokud existuje konstanta C, že pro dost velká n je g(n) < Cf(n) g(n) = Ω(f(n)) pokud existuje konstanta c, že pro dost velká n je g(n) > cf(n) g(n) = Θ(f(n)) pokud platí g(n) = O(f(n)) i g(n) = Ω(f(n)) Přesnější notace: g O(f), g patří do funkcí asymptotocky menších než f, g f, g je asymptoticky menší než f

Počítání, pro f i O(g i (n)): Vlastnosti Příklady: analogie T f, př: analogie T f, př: f 1 f 2 = O(g 1 g 2 ) f 1 + f 2 = O(g 1 + g 2 ) = O(max(g 1, g 2 )) f(h(n)) = O(g(H(n))) H(f(n)) = O(H(g(n))) f(n) f(n) = O(g(n)) lim n g(n) < n 2 + log(n) = O(n 2 ), = O(n 3 ), O(n log(n)) n 2 + log(n) = Θ(n 2 ), Ω(n 3 ), = Ω(n log(n))

Asymptotická složitost Algoritmus má asymptotickou časovou složitost O(f(n)) pokud pro dobu běhu jakožto funkce velikosti vstupních dat T (n), platí Vlastnosti: T (n) O(f(n)). Nezávisí na rychlosti počítače (ukrytá v konstantě). Nezávisí na kvalitě překladače, zručnosti programátora. Charakterizuje chování v nejhorším případě. Pomíjí členy nižšího řádu. Platí pouze pro dost veliká data.

Příklad binární vs. Finonačiho halda Složitost operací používaných v Dijkstrově algoritmu Binární halda Fibonacci halda Odeber Min. O(lg n) O(lg n) Zmenšení Kĺıče O(lg n) O(1) Praxe, Boost C++ library: Generating graph...10 000 vertices, 20 000 000 edges. Running Dijkstra s with binary heap...1.46 seconds. Running Dijkstra s with Fibonacci heap...1.31 seconds. Speedup = 1.1145.

Určení složitosti algoritmu function InsertSort (A[1:n]) for i = 2... len(a) do key = A[i] j = i-1 while j > 0 and A[j] > key do A[j+1] = A[j] j = j - 1 A[j+1] = key

Dolní odhad složitosti třídění (složitost třídění) Rozhodovací strom: Počet uspořádání - listů je n! Výška stromu: log n! = log n + log(n 1) +... log 2 + log 1 n/2 log(n/2) cn log(n)

Jiné druhy složitosti Průměrná složitost složitost průměrovaná přes možné vstupy quicksort asymptotocká složitost O(n 2 ) průměrná složitost O(n log n) Amortizovaná složitost složitost pro vleké množství opakovaných operací příklad, dynamické pole (std::vector)

Složitost rekurzivních algoritmů function Rekurze (A[1:n]) Θ(n); Rekurze (A[1:n/2]); Rekurze (A[n/2:n]) T (n) = 2T (n/2) + Θ(n), T (1) = 1 Theorem (Master theorem) Pokud T (n) = at (n/b) + f(n), a 1, b > 1 1. f(n) = O(n log b a ε ), pak T (n) = Θ(n log b a ) 2. f(n) = Θ(n log b a), pak T (n) = Θ(n log b a lg(n)) 3. f(n) = Ω(n log b +ε ), pak T (n) = Θ(f(n)) Složitost Rekurze je tedy případ 2, Θ(nlgn).

Pseudokód Bloky FOR, IF, WHILE vyznačeny odsazením a vertikální čarou. Hodnota čítače ve FOR má první neplatnou hodnotu po konci cyklu. // Komentář Přiřazení - porovnání -= Přístup k prvkům pole: A[i] Sekvence: 1..4, A[1..4] Atributy objektů: A.size, Child.parent Předávání parametrů funkcí hodnotou. Zkrácené vyhodnocování AND a OR.

Insert sort function InsertSort (A[1:n]) for i = 2... len(a) do key = A[i] j = i-1 while j > 0 and A[j] > key do A[j+1] = A[j] j = j - 1 A[j+1] = key

Důkaz správnosti algoritmu Invariant: Vlastnost dat, která: platí na počátku (po inicializaci) zachovává se její platnost na konci implikuje splnění úkolu

Správnost insert sortu Invariant: Na začátku for cyklu obsahuje A[1... i 1] prvních i 1 prvků původního pole, setříděných. Inicialiazace: První prvek původního pole tvoří setříděnou posloupnost délky 1. Zachování: Do cyklu vstupuje setříděná posloupnost prvků A[1... i 1]. Z cyklu vystupuje setříděná posloupnost prvků A[1... i]. Ukončení: For cyklus skončí pro i = n + 1, pole A[1... n] obsahuje setříděnou poslouponst prvků celého původního pole.