TGH01 - Algoritmizace

Podobne dokumenty
TGH01 - Algoritmizace

Anotace. Martin Pergel,

Kristýna Kuncová. Matematika B2 18/19

Edita Pelantová, katedra matematiky / 16

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

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

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.

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

Úvodní informace. 18. února 2019

Vybrané kapitoly z matematiky

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

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

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

Matematika (KMI/PMATE)

Inverzní Z-transformace

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

Martin Pergel. 26. února Martin Pergel

5. a 12. prosince 2018

1 Soustava lineárních rovnic

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.

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

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

Krzysztof Gniłka. Twierdzenie o rekurencji uniwersalnej

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

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

Matematika III Stechiometrie stručný

Kombinatorika a grafy I

Kristýna Kuncová. Matematika B2

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

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

TGH08 - Optimální kostry

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

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

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

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

Linea rnı (ne)za vislost

Matematika 2, vzorová písemka 1

Quick sort, spojové struktury

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

Numerické metody minimalizace

Zadání: Vypočítejte hlavní momenty setrvačnosti a vykreslete elipsu setrvačnosti na zadaných

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

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

Kapitola 2. Nelineární rovnice

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

Petr Beremlijski, Marie Sadowská

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 Σ;

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


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

Katedra aplikované matematiky FEI VŠB Technická univerzita Ostrava

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

Podstawy Informatyki. Sprawność algorytmów

Teoretyczne podstawy informatyki

B0B99PRPA Procedurální programování

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

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

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

Základy informatiky IB110. podzim Fakulta informatiky Masarykova univerzita

B0B99PRPA Procedurální programování

Sortowanie przez wstawianie

Obsah: CLP Constraint Logic Programming. Úvod do umělé inteligence 6/12 1 / 17

GEM a soustavy lineárních rovnic, část 2

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

Geometrická nelinearita: úvod

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

Lineární algebra - iterační metody

Algorytmy i struktury danych Matematyka III sem.

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

Powyższe reguły to tylko jedna z wersji gry. Istnieje wiele innych wariantów, można też ustalać własne zasady. Miłej zabawy!

Analiza Algorytmów Moduł 3 Rekurencje

Petr Křemen FEL ČVUT. Petr Křemen (FEL ČVUT) Vysvětlování modelovacích chyb 133 / 156

DFT. verze:

Informatyka A. Algorytmy

Algorytmy i Struktury Danych.

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

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

heteroskedasticitě Radim Navrátil, Jana Jurečková Katedra pravděpodobnosti a matematické statistiky, MFF UK, Praha

Laplaceova transformace

Register and win!

Złożoność Obliczeniowa Algorytmów

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

PARADIGMATA PROGRAMOVÁNÍ 1B

Metody, s nimiž se seznámíme v této kapitole, lze použít pro libovolnou

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

FAKULTA STAVEBNÍ. Stavební statika. Telefon: WWW:

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

podle přednášky doc. Eduarda Fuchse 16. prosince 2010

Západočeská univerzita v Plzni Fakulta aplikovaných věd. Katedra matematiky. Semestrální práce - matematika a byznys

Diferenciální rovnice základní pojmy. Rovnice se

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

Průvodce studiem V této kapitole se budeme zabývat diferenciálním počtem pro funkce více

Úvod do umělé inteligence, jazyk Prolog

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

z geoinformatických dat

Cauchyova úloha pro obyčejnou diferenciální rovnici

Ústav teorie informace a automatizace RESEARCH REPORT. Pavel Boček, Karel Vrbenský: Implementace algoritmu MIDIA v prostředí Google Spreadsheets

Podyplomowe Studium Programowania i Systemów Baz Danych

Statistika (KMI/PSTAT)

Transkrypt:

TGH01 - Algoritmizace Jan Březina Technical University of Liberec 31. března 2015

Metainformace materiály: jan.brezina.matfyz.cz/vyuka/tgh (./materialy/crls8.pdf - Introduction to algorithms) SPOX: tgh.spox.spoj.pl seminární práce, pro konkrétní úlohu: formulace úlohy jako grafového problému aplikace algoritmu z přednášky na jeho řešení implementace algoritmu možná spolupráce (je třeba deklarovat) při zkoušce umět vysvětlit zkouška písemná + ústní

Záleží na kritériu: Který algoritmus je lepší?

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

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)

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)

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

Porovnání různých složitostí Pro seriový počítač s frekvencí 1GHz (10 9 operací za sekundu) 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ží.

Asymptotická časová složitost 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 je asymptoticky menší než f) g O(f(n)) nebo také g f

Vlastnosti asymptotické složitosti Počítání, pro f i O(g i (n)): 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))) i h(f(n)) = O(h(g(n))) f(n) f(n) = O(g(n)) lim n g(n) < Nezávisí na rychlosti počítače (ukrytá v konstantě). Nezávisí na kvalitě překladače, zručnosti programátora. Pomíjí členy nižšího řádu. Platí pouze pro dost veliká data.

Příklady: analogie T f, př: n 2 + log(n) = O(n 2 ), = O(n 3 ), O(n log(n)) analogie T f, př: n 2 + log(n) = Θ(n 2 ), Ω(n 3 ), Ω(n log(n))

Příklad binární vs. Finonačiho halda Složitost operací používaných v Dijkstrově algoritmu Binární halda Fibonacci halda Vložení O(lgn) O(1) Odeber Min. O(lgn) O(lgn) Zmenšení Kĺıče O(lgn) 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.

Složitost v nejhorším případě 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í 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)

... quicksort Složitost v průměrném případě

.. dynamické pole (std::vector) Amortizovaná složitost

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).

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

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

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.

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.