:-) Asymptotická složitost algoritmů Autor: Antonín DANĚK Semestrální projekt 1 – Y14TED.

Slides:



Advertisements
Podobné prezentace
METODA LINEÁRNÍ SUPERPOZICE SUPERPOSITION THEOREM Metoda superpozice vychází z teze: Účinek součtu příčin = součtu následků jednotlivých příčin působících.
Advertisements

Strategické otázky výzkumníka 1.Jaký typ výzkumu zvolit? 2.Na jakém vzorku bude výzkum probíhat? 3.Jaké výzkumné metody a techniky uplatnit?
Mgr. Renáta Davidová.  Hrací plocha je rozdělena do 2 sloupců, které představují různé kategorie otázek.  Každé otázce ve sloupci je přiřazeno bodové.
Slouží ke grafickému znázorn ě ní množin, vztah ů mezi množinami a operací s množinami. Vennovy diagramy Projekt OP VK - CZ.1.07/1.1.26/ „Matematika.
NÁZEV ŠKOLY: S0Š Net Office, spol. s r.o, Orlová Lutyně AUTOR: Ing. Oldřich Vavříček NÁZEV: Podpora výuky v technických oborech TEMA: Základy elektrotechniky.
Přechodové charakteristiky různých typů soustav. Statická soustava nultého řádu Statická soustava prvního řádu Statická soustava druhého řádu a vyšších.
Mechanika II Mgr. Antonín Procházka. Co nás dneska čeká?  Mechanická práce, výkon, energie, mechanika tuhého tělesa.  Mechanická práce a výkon, kinetická.
Výukový materiál zpracovaný v rámci projektu EU peníze školám Registrační číslo projektu:CZ.1.07/1.4.00/ Šablona:III/2 Inovace a zkvalitnění výuky.
Funkce Lineární funkce a její vlastnosti 2. Funkce − definice Funkce je předpis, který každému číslu z definičního oboru, který je podmnožinou množiny.
Definice: Funkce f na množině D(f)  R je předpis, který každému číslu z množiny D(f) přiřazuje právě jedno reálné číslo. Jinak: Nechť A, B jsou neprázdné.
Interpolace funkčních závislostí
MATEMATIKA Funkce.
Vázané oscilátory.
Matematika 3 – Statistika Kapitola 4: Diskrétní náhodná veličina
Rozhodování 1.
Lineární funkce - příklady
NÁZEV ŠKOLY: S0Š Net Office, spol. s r.o, Orlová Lutyně
Výukový materiál zpracován v rámci projektu
Soustava dvou lineárních rovnic se dvěma neznámými
úlohy lineárního programování
8.1 Aritmetické vektory.
Číslo projektu CZ.1.07/1.5.00/ Číslo materiálu
8.1.2 Podprostory.
Programovací jazyky Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Ing. Jitka Vlčková. Dostupné z Metodického portálu ISSN.
NÁZEV ŠKOLY: S0Š Net Office, spol. s r.o, Orlová Lutyně
Funkce Funkce (píšeme f (x) ) je každé zobrazení množiny A do množiny R, kde A je libovolná podmnožina množiny R. Zobrazované množině A říkáme definiční.
DIGITÁLNÍ UČEBNÍ MATERIÁL
Repetitorium z matematiky Podzim 2012 Ivana Medková
4.1 – 4.3 Lineární nerovnice i jednoduchý podílový tvar
Základy zpracování geologických dat testování statistických hypotéz
SÁRA ŠPAČKOVÁ MARKÉTA KOČÍBOVÁ MARCELA CHROMČÁKOVÁ LUKÁŠ BARTOŠ B3E1
Soustava dvou lineárních rovnic se dvěma neznámými
Výukový materiál zpracován v rámci projektu
Kvadratické nerovnice
Rovnice a graf přímé úměrnosti.
DIDAKTIKA LYŽOVÁNÍ.
Lineární funkce.
Programování (14PRG) 1. cvičení.
BIBS Informatika pro ekonomy přednáška 2
8.1.3 Lineární obal konečné množiny vektorů
AUTOR: Mgr. Hana Vrtělková NÁZEV: VY_32_INOVACE_M_02_Zlomky
Rovnice základní pojmy.
Číslicové měřící přístroje
Střední hodnoty Udávají střed celé skupiny údajů, kolem kterého všechny hodnoty kolísají (analogie těžiště). Aritmetický průměr - vznikne součtem hodnot.
Měření elektrického odporu
Optimální pořadí násobení matic
FUNKCE Hejný [str. 240] ontogeneze funkčního myšlení
ZŠ, Týn nad Vltavou, Malá Strana
NÁZEV: VY_32_INOVACE_06_10_M7_Hanak
Jiří Vyskočil, Marko Genyg-Berezovskyj 2010
Teorie chyb a vyrovnávací počet 1
Fitování Konstrukce křivky (funkce), která co nejlépe odpovídá naměřeným hodnotám. - může podléhat dodatečným podmínkám Lineární vs. nelineární regrese.
ALG 08 Merge sort -- řazení sléváním
Lineární činitel prostupu
Primitivní funkce Přednáška č.3.
AUTOR: Mgr. Hana Vrtělková NÁZEV: VY_32_INOVACE_M_06_Hra 3 TEMA: Hra 3
* Funkce Matematika – 9. ročník *.
Fitování Konstrukce křivky (funkce), která co nejlépe odpovídá naměřeným hodnotám. - může podléhat dodatečným podmínkám Lineární vs. nelineární regrese.
Teorie chyb a vyrovnávací počet 1
Dynamické programování Úloha batohu neomezená
NÁZEV ŠKOLY: S0Š Net Office, spol. s r.o, Orlová Lutyně
Lineární funkce a její vlastnosti
Více náhodných veličin
Funkce Pojem funkce Dostupné z Metodického portálu ISSN: , financovaného z ESF a státního rozpočtu ČR. Provozováno Výzkumným ústavem.
Grafy kvadratických funkcí
Seminář o stavebním spoření
Procesy – základní pojmy
Algoritmizace a datové struktury (14ASD)
Teorie chyb a vyrovnávací počet 2
Slovní úlohy o společné práci − 3
Transkript prezentace:

:-) Asymptotická složitost algoritmů Autor: Antonín DANĚK Semestrální projekt 1 – Y14TED

:-) Slide 2 Osnova Co je to složitost algoritmu? Jak se počítá složitost algoritmu? Smysl přesného výpočtu složitosti algoritmu aneb Zjednodušení Zjednodušení aneb Asymptotická složitost algoritmů Ukázka – lineární versus kvadratický algoritmus Řád růstu funkcí Složitosti řadících algoritmů

:-) Slide 3 Co je to složitost algoritmu? Co je to algoritmus? Postup práce (kuchařka, Java metoda) Vlastnosti (konečnost) Dva algoritmy vykonají stejnou práci, ale trvají různě dlouho. Proč? Mají různou složitost Vykonávají různý počet operací

:-) Slide 4 Jak se počítá složitost algoritmu? static int count=0; for(int i=0; i<pole.length; i++) { if(pole[i]<=i) count++; } static int count=0; for(int i=0; i<pole.length; i++) { if(pole[i]<=i) count++; } Složitost algoritmu se vyjadřuje počtem provedených základních operací. Aritmetické operace Podmínky (testy) Přesuny v paměti Složitost tohoto kódu je: 1 + N + N + 0..N – Nejhorší varianta: 3N + 1 – Nejlepší varianta: 2N + 1

:-) Slide 5 Smysl přesného výpočtu složitosti algoritmu aneb Zjednodušení Předpokládáme, že je jedna operace zabere procesoru 1 μs (10^-6 vteřiny). Ve skutečnosti je obvykle situace ještě několikrát lepší (4 jádrové 3GHz procesory). »Program musí být pro běh na více jádrech optimalizovaný. Milion operací proběhne za 1s „Čím výkonnější procesory nám hardwareáři dávají, tím méně softwareáři optimalizují programy pro rychlost.“ Nemá smysl počítat jednotlivé operace. Nemá smysl počítat ani 10ky, 100ky, 1000ce, ce (či ce) operací.

:-) Slide 6 Zjednodušení aneb Asymptotická složitost algoritmů static int count=0; for(int i=0; i<pole.length; i++) { if(pole[i]<=i) count++; } static int count=0; for(int i=0; i<pole.length; i++) { if(pole[i]<=i) count++; } Složitost tohoto kódu je: 1 + N + N + 0..N – Nejhorší varianta: 3N + 1 – Nejlepší varianta: 2N + 1 Asymptotická složitost tohoto kódu je: N Obvykle automaticky mluvíme o asymptotické složitosti – Zanedbáme operace nezávislé na datech – Zanedbáme dílčí jednodušší části algoritmu – Zanedbáme multiplikační konstanty

:-) Slide 7 Ukázka – lineární versus kvadratický algoritmus - kvadratický POMALÉ (N^2): for(int i=0; i<pole2.length; i++) { if(sumPole(pole1)==pole2[i]) count++; } POMALÉ (N^2): for(int i=0; i<pole2.length; i++) { if(sumPole(pole1)==pole2[i]) count++; } Máme dvě pole. Program zjistí součet prvků prvního pole (sumPole();) a do proměnné count uloží, kolikrát se takové číslo nachází v druhém poli. Metoda sumPole(); projde celé první pole – její složitost je N. Náš cyklus prochází druhé pole a v každé iteraci volá tuto metodu. N krát tedy voláme metodu o složitosti N (Předpokládáme stejnou velikost obou polí.) → N * N = N^2

:-) Slide 8 Ukázka – lineární versus kvadratický algoritmus - lineární RYCHLÉ (N): int suma = sumPole(pole1); for(int i=0; i<pole2.length; i++) { if(suma==pole2[i]) count++; } RYCHLÉ (N): int suma = sumPole(pole1); for(int i=0; i<pole2.length; i++) { if(suma==pole2[i]) count++; } Máme dvě pole. Program zjistí součet prvků prvního pole (sumPole();) a do proměnné count uloží, kolikrát se takové číslo nachází v druhém poli. Zásadní rozdíl: Sumu prvního pole jsme předpočítali a uložili do proměnné. Metodu sumPole(); tedy voláme pouze jednou a asymptotická složitost tohoto algoritmu je N.

:-) Slide 9 Ukázka – lineární versus kvadratický algoritmus - výsledek Asymptotická složitost algoritmu by se dala vyložit jako řád růstu času v závislosti na datech. Pro milionové N: – už není parabola viditelná – „červený” algoritmus proběhne za 1s – „modý” algoritmus proběhne za 11 dní

:-) Slide 10 Řád růstu funkcí* * Tento slide je extrémně nudný. Množina omega ( Ω ) – funkce které od určitého bodu rostou rychleji než f(x) (nebo jejich násobek) Množina omikron ( Ο ) – funkce které od určitého bodu rostou pomaleji než f(x) (nebo jejich násobek) Množina theta ( Θ) – funkce které rostou stejně rychle jako f(x) N^2 Ω(N) log(N) Ο(N) N Ο(N^2) N*log(N) Ω(N)

:-) Slide 11 Tabulka rychlostí (jestliže jedna operace zabere procesoru 1μs) Tabulka vychází z: Ještě rychleji než 2^N roste N! HeapSor t BubbleSor t

:-) Slide 12 Složitosti řadících algoritmů BubbleSort:N^2 InsertionSort:N^2 SelectionSort:N^2 QuickSort:N^2 MergeSort: N*log(N) HeapSort:N*log(N) Velmi často potřebujeme seřadit nějaké prvky. – Je velmi vhodné, naučit se používat efektivní algoritmy.

:-) Slide 13 Konec Děkuji za pozornost. Máte-li dotaz – ptejte se. Zdroje: hlava, Wikipedia