Složitost algoritmů. Karel Richta a kol. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Karel Richta a kol.
|
|
- Jiřina Kopecká
- před 8 lety
- Počet zobrazení:
Transkript
1 Složitost algoritmů Karel Richta a kol. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Karel Richta a kol., 2017 Datové struktury a algoritmy, B6B36DSA 02/2017, Lekce 3 Karel Richta a kol. (FEL) Složitost algoritmů B6B36DSA, 2017, Lekce 3, 1/80
2 Složitost algoritmů Algoritmy mají různou složitost. V praxi je důležité umět mezi sebou porovnat více algoritmů, které řeší stejný problém, abychom mohli rozhodnout, kdy který použít. Existují dvě přirozené míry pro porovnání: doba výpočtu podle daného algoritmu potřebná pro zpracování daného objemu dat (časová složitost) a velikost paměti využívané při výpočtu (paměťová složitost). Pro určení složitosti zpravidla používáme intuitivní abstraktní model RAM počítače, který pracuje s celými čísly a má paměť adresovanou celými čísly, do které lze ukládat celá čísla. Některé metody určení složitosti rekurzivních algoritmů: strom rekurze, substituční metoda, mistrovská metoda. Karel Richta a kol. (FEL) Složitost algoritmů B6B36DSA, 2017, Lekce 3, 2/80
3 Asymptotická složitost Skutečná složitost výpočtu závisí na implementaci algoritmu, na konkrétním počítači kde je prováděn - vlastně se nedá v obecném případě přesně spočítat. Abychom mohli spočítat aspoň něco, začaly se používat odhady složitosti až na multiplikativní konstantu. Tyto odhady popisují růst složitosti vzhledem ke zvětšujícím se vstupům, ale neurčují konkrétní funkci (číslo). Přestože lze v případě jednodušších algoritmů určit složitost přesně, ve většině případů to nestojí za tu námahu, v řadě případů složitých algoritmů je to velmi obtížné. Proto se to typicky nedělá. Z praktického hlediska nás zajímá především, jak se bude algoritmus chovat pro velké ( ) instance problému. Typicky nám stačí vyjádřit řád růstu funkce složitosti se zanedbáním příspěvků nižších řádů. Říkáme tomu proto asymptotická složitost asymptoticky se blíží k této hodnotě. Karel Richta a kol. (FEL) Složitost algoritmů B6B36DSA, 2017, Lekce 3, 3/80
4 Rychlost... Jeden algoritmus (program, postup, metoda ) je rychlejší než druhý. Co ta věta znamená?? Karel Richta a kol. (FEL) Složitost algoritmů B6B36DSA, 2017, Lekce 3, 4/80
5 Asymptotická složitost y y x x Každému algoritmu lze jednoznačně přiřadit neklesající funkci zvanou asymptotická (časová) složitost, která charakterizuje počet operací algoritmu v závislosti na rostoucím rozsahu vstupních dat. Čím pomaleji tato funkce roste, tím je algoritmus rychlejší. Karel Richta a kol. (FEL) Složitost algoritmů B6B36DSA, 2017, Lekce 3, 5/80
6 Asymptotická složitost Y Y ~ zatížení systému (trvání výpočtu) X X ~ naše požadavky (rozsah vstupních dat) Karel Richta a kol. (FEL) Složitost algoritmů B6B36DSA, 2017, Lekce 3, 6/80
7 Příklady Najdi min Find and max max and hodnotu min in the array v poli STANDARD min max a min max a if (a[i] < min) min = a[i]; if (a[i] > max) max = a[i]; min max a Karel Richta a kol. (FEL) Složitost algoritmů B6B36DSA, 2017, Lekce 3, 7/80
8 Příklady Najdi min and max hodnotu v poli STANDARD min max a atd... hotovo min max a kód min = a[0]; max = a[0]; for ( i = 1; i < a.length; i++ ) { if (a[i] < min) min = a[i]; if (a[i] > max) max = a[i]; } Karel Richta a kol. (FEL) Složitost algoritmů B6B36DSA, 2017, Lekce 3, 8/80
9 Příklady Najdi min and max hodnotu v poli RYCHLEJI! min max a min max a if (a[i] < a[i+1]) { if ( a[i] < min) min = a[i]; if (a[i+1] > max) max = a[i+1];} min max a Karel Richta a kol. (FEL) Složitost algoritmů B6B36DSA, 2017, Lekce 3, 9/80
10 Příklady Najdi min and max hodnotu v poli RYCHLEJI! min max a if (a[i] < a[i+1]) { if ( a[i] < min) min = a[i]; if (a[i+1] > max) max = a[i+1];} else { if ( a[i] > max) max = a[i]; if (a[i+1] < min) min = a[i+1];} min max a Karel Richta a kol. (FEL) Složitost algoritmů B6B36DSA, 2017, Lekce 3, 10/80
11 Příklady Najdi min and max hodnotu v poli RYCHLEJI! hotovo min max a kód min = a[0]; max = a[0]; for (i=1; i < a.length-1; i=i+2 ) { if (a[i] < a[i+1]) { if ( a[i] < min) min = a[i]; if (a[i+1] > max) max = a[i+1];} else { if ( a[i] > max) max = a[i]; if (a[i+1] < min) min = a[i+1];}} Karel Richta a kol. (FEL) Složitost algoritmů B6B36DSA, 2017, Lekce 3, 11/80
12 Počítání složitosti Elementární operace aritmetická operace porovnání dvou čísel přesun čísla v paměti Složitost A celkový počet elementárních operací zjednodušení Složitost B celkový počet elementárních operací nad daty Karel Richta a kol. (FEL) Složitost algoritmů B6B36DSA, 2017, Lekce 3, 12/80
13 Počítání složitosti Složitost B celkový počet elementárních operací nad daty další zjednodušení Složitost C celkový počet porovnání čísel (znaků).v datech Takto složitost mnohdy počítáme Karel Richta a kol. (FEL) Složitost algoritmů B6B36DSA, 2017, Lekce 3, 13/80
14 Počítání složitosti Najdi min and max hodnotu v poli STANDARD Složitost Všechny operace Případ A 1 1 a.length = N min = a[0]; max = a[0]; 1 for ( i = 1; i < a.length; i++){ N 1 N if (a[i] < min) min = a[i]; N N 1 N 1 if (a[i] > max) max = a[i]; } exkluzive! nejlepší nejhorší N + N 1 + N N = 4N N + N 1 + N 1 + N 1 + N 1 = 5N 1 Karel Richta a kol. (FEL) Složitost algoritmů B6B36DSA, 2017, Lekce 3, 14/80
15 Počítání složitosti Najdi min and max hodnotu v poli STANDARD složitost Operace nad daty Případ B 1 1 a.length = N min = a[0]; max = a[0]; for ( i = 1; i < a.length; i++){ N N 1 if (a[i] < min) min = a[i]; N N 1 if (a[i] > max) max = a[i]; } nejlepší nejhorší N N = 2N N 1 + N 1 + N 1 + N 1 = 4N 2 Karel Richta a kol. (FEL) Složitost algoritmů B6B36DSA, 2017, Lekce 3, 15/80
16 Počítání složitosti Najdi min and max hodnotu v poli STANDARD složitost C pouze testy v datech min = a[0]; max = a[0]; for ( i = 1; i < a.length; i++){ N 1 if (a[i] < min) min = a[i]; N 1 a.length = N if (a[i] > max) max = a[i]; } vždy N 1 + N 1 = 2N 2 testů Karel Richta a kol. (FEL) Složitost algoritmů B6B36DSA, 2017, Lekce 3, 16/80
17 Počítání složitosti Najdi min and max hodnotu v poli RYCHLEJI! složitost C pouze testy v datech a N a.length = N Jedna dvojice 3 testy (N 1)/2 dvojic vždy 3(N 1)/2 = (3N 3)/2 testů Karel Richta a kol. (FEL) Složitost algoritmů B6B36DSA, 2017, Lekce 3, 17/80
18 Velikost pole Počítání složitosti N Počet testů STANDARDNÍ 2 (N 1) Počet testů RYCHLEJŠÍ (3N 3)/2 poměr STD./RYCHL Tab. 1 Karel Richta a kol. (FEL) Složitost algoritmů B6B36DSA, 2017, Lekce 3, 18/80
19 Příklady data pole a: pole b: úloha Kolik prvků pole b je rovno součtu prvků pole a? řešení pole a: součet = 4 pole b: výsledek = 3 Karel Richta a kol. (FEL) Složitost algoritmů B6B36DSA, 2017, Lekce 3, 19/80
20 funkce Příklady int sumarr(int[] a) { /*snadné*/ } POMALÁ metoda count = 0; for (int i = 0; i < b.length; i++) if (b[i]==sumarr(a)) count++; return count; count = 0; sumof_b = sumarr(a); RYCHLÁ metoda for (int i = 0; i < b.length; i++) if (b[i]==sumof_b) count++; return count; Karel Richta a kol. (FEL) Složitost algoritmů B6B36DSA, 2017, Lekce 3, 20/80
21 pole a: Počítání složitosti a.length == n b.length == n POMALÁ metoda n x n = n 2 operací pole b: Kvadratická složitost pole a: a.length == n b.length == n RYCHLÁ metoda součet a: 4 2 x n operací pole b: Lineární složitost Karel Richta a kol. (FEL) Složitost algoritmů B6B36DSA, 2017, Lekce 3, 21/80
22 Počítání složitosti Velikost pole N POMALÁ metoda operací N 2 RYCHLÁ metoda operací 2N poměr POMALÁ/RYCHLÁ Tab. 2 Karel Richta a kol. (FEL) Složitost algoritmů B6B36DSA, 2017, Lekce 3, 22/80
23 Počítání složitosti Velikost pole N Poměr rychlostí řešení 1. úlohy Poměr rychlostí řešení 2. úlohy Tab. 3 Karel Richta a kol. (FEL) Složitost algoritmů B6B36DSA, 2017, Lekce 3, 23/80
24 Příklady Hledání v seřazeném poli lineární, POMALÉ dané pole Seřazené pole: velikost = N najdi 993! testů: N najdi 363! testů: Karel Richta a kol. (FEL) Složitost algoritmů B6B36DSA, 2017, Lekce 3, 24/80
25 Příklady Hledání v seřazeném poli binární, RYCHLÉ najdi 863! testy 2 testy testy test Karel Richta a kol. (FEL) Složitost algoritmů B6B36DSA, 2017, Lekce 3, 25/80
26 k Datové struktury a algoritmy Exponent, logarimus a půlení intervalu N... N =2 k = = =2 1 N = 2 k => =2 0 k = log 2 (N) Karel Richta a kol. (FEL) Složitost algoritmů B6B36DSA, 2017, Lekce 3, 26/80
27 Velikost pole lineární hledání případ nejlepší Počítání složitosti nejhorší Počet testů průměrný binární hledání nejhorší případ poměr Tab. 4 Karel Richta a kol. (FEL) Složitost algoritmů B6B36DSA, 2017, Lekce 3, 27/80
28 Počítání složitosti Doba výpočtu pro různé časové složitosti s předpokladem, že 1 operace trvá 1 s (10-6 sec) složitost Počet operací log 2 n 3,3 s 4,3 s 5 s 5,8 s 9 s 10 s n 10 s 20 s 40 s 60 s 0,5 ms 1 ms n log 2 n 33 s 86 s 0,2 ms 0,35 ms 4,5 ms 10 ms n 2 0,1 ms 0,4 ms 1,6 ms 3,6 ms 0,25 s 1 s n 3 1 ms 8 ms 64 ms 0,2 s 125 s 17 min n 4 10 ms 160 ms 2,56 s 13 s 17 hod 11,6 dnů 2 n 1 ms 1 s 12,7 dnů let let let n! 3,6 s let let let let let Tab. 5 Karel Richta a kol. (FEL) Složitost algoritmů B6B36DSA, 2017, Lekce 3, 28/80
29 Druhy složitosti Mějme problém P a algoritmus A, který ho řeší. Řekneme, že algoritmus A vyžaduje čas f(n), když pro každé přirozené číslo n > n 0 platí, že f(n) je maximum doby běhu algoritmu A pro všechny instance problému P velikosti nejvýše n. Funkci f nazýváme složitost v nejhorším případě, tj. hranici, kterou algoritmus A nikdy nepřekročí. Číslo n 0 slouží pro odstínění malých dat, kdy se může algoritmus chovat odlišně. Horní odhad funkci f není snadné spočítat, proto někdy hledáme horní odhad, tj. funkci g takovou, že ji f nikdy nedosáhne: f = (g). Dolní odhad někdy naopak hledáme dolní odhad. Očekávaná složitost dobu běhu uvažujeme jako náhodnou veličinu, očekávaná složitost je pak její očekávaná hodnota. Není to přesnější odhad, ale lze tak získat realističtější odhad pro velký objem dat. Amortizovaná složitost je to jistý kompromis mezi složitostí v nejhorším případě a očekávanou složitostí. Snaží se odhadnout maximální počet kroků pro provedení posloupnosti operací. Karel Richta a kol. (FEL) Složitost algoritmů B6B36DSA, 2017, Lekce 3, 29/80
30 Odhady složitosti Nechť f a g jsou funkce na přirozených číslech. Značíme: f = O(g) když c > 0 n : f(n) cg(n) (asymptotická horní mez funkce f nepřesáhne v limitě hodnoty funkce g až na konstantu g představuje horní mez, kam až f může dosáhnout odhad složitosti v nejhorším případě) f = (g) když c > 0 nekonečně mnoho n : f(n) > cg(n) (asymptotická dolní mez funkce f nedosáhne v limitě hodnoty funkce g až na konstantu g představuje dolní mez, kam už f nemůže dosáhnout odhad složitosti v nejlepším případě) f = (g) když c,d > 0 n : dg(n) f(n) cg(n) (asymptotická těsná mez funkce f a g jsou až na konstantu stejné odhad složitosti v průměrném případě) Převážně budeme používat O, protože chceme hlavně horní odhady, kdežto dolní odhady bývá obvykle těžší zjistit. U složitostí se bavíme o funkcích z N do N. Reálné funkce konvertujeme na funkce N N nejčastěji pomocí a. Karel Richta a kol. (FEL) Složitost algoritmů B6B36DSA, 2017, Lekce 3, 30/80
31 Karel Richta a kol. (FEL) Složitost algoritmů B6B36DSA, 2017, Lekce 3, 31/80
32 Karel Richta a kol. (FEL) Složitost algoritmů B6B36DSA, 2017, Lekce 3, 32/80
33 Příklad: Ověření složitosti dle definice Ověřme, že: Z definice: po úpravě: A stačí tedy (pro n n 0 =7): Ověřme, že: Z definice: po úpravě: A to pro všechna libovolně velká n jistě neplatí. Karel Richta a kol. (FEL) Složitost algoritmů B6B36DSA, 2017, Lekce 3, 33/80
34 Karel Richta a kol. (FEL) Složitost algoritmů B6B36DSA, 2017, Lekce 3, 34/80
35 Karel Richta a kol. (FEL) Složitost algoritmů B6B36DSA, 2017, Lekce 3, 35/80
36 Karel Richta a kol. (FEL) Složitost algoritmů B6B36DSA, 2017, Lekce 3, 36/80
37 Karel Richta a kol. (FEL) Složitost algoritmů B6B36DSA, 2017, Lekce 3, 37/80
38 Striktní odhady složitosti Nechť f a g jsou funkce na přirozených číslech. Značíme: f = (g) když n 0 Nat n n 0 : f(n) < c g(n) (striktní asymptotická horní mez funkce f nepřesáhne v limitě hodnoty funkce g až na konstantu g představuje horní mez, kam až f může dosáhnout odhad složitosti v nejhorším případě ) f = (g) když n 0 Nat n n 0 : c g(n) < f(n) (striktní asymptotická dolní mez funkce g je pro f asymptotickou mezí žádná multiplikativní konstanta neumožní, aby g(n) dostihlo f(n)) Karel Richta a kol. (FEL) Složitost algoritmů B6B36DSA, 2017, Lekce 3, 38/80
39 Karel Richta a kol. (FEL) Složitost algoritmů B6B36DSA, 2017, Lekce 3, 39/80
40 Karel Richta a kol. (FEL) Složitost algoritmů B6B36DSA, 2017, Lekce 3, 40/80
41 Zákony asymptotické aritmetiky Karel Richta a kol. (FEL) Složitost algoritmů B6B36DSA, 2017, Lekce 3, 41/80
42 Použití asymptotické notace Asymptotická notace nám umožnuje zjednodušovat výrazy zanedbáním nepodstatných částí. Co znamená zápis f(n) = 4n 3 + (n 2 )? Výraz (n 2 ) zastupuje anonymní funkci z množiny (n 2 ) (nějaká kvadratická funkce), jejíž konkrétní podobu pro zatím zanedbáváme. Co znamenají zápisy (1), O(1), (1)? Přesněji neurčené konstantní meze. Co znamená zápis f(n) = O(n O(1) )? f(n) je shora omezena nějakou polynomiální funkcí n c, kde c sice přesně neznáme, ale víme, že to je konstanta. Karel Richta a kol. (FEL) Složitost algoritmů B6B36DSA, 2017, Lekce 3, 42/80
43 Porovnání rychlosti růstu funkcí Řád růstu funkcí Funkce f(x) roste asymptoticky rychleji než funkce g(x), když f(x) Ω(g(x)) & f(x) (g(x)) Porovnání rychlosti algoritmů Pozor! Algoritmus A je asymptoticky pomalejší než algoritmus B, když f A (n) Ω(f B (n)) & f A (n) (f B (n)), kde f A (n), resp. f B (n) je funkce určující počet operací, které provede algoritmus A, resp. B, při zpracování dat o rozsahu n. Karel Richta a kol. (FEL) Složitost algoritmů B6B36DSA, 2017, Lekce 3, 43/80
44 Řád růstu funkce Datové struktury a algoritmy Řád růstu funkcí Řád růstu funkce f je taková co nejjednodušší funkce g, pro kterou platí g(x) (f(x)) Manipulace Řád růstu funkce f získáme většinou tak, že zanedbáme 1. Aditivní členy rostoucí pomaleji nebo stejně rychle 2. Multiplikativní konstantu Příklady ff(n) = 4 2 n n n/2 (2 n ) Řád růstu ff(n) je 2 n hh(x) = x + log 2 (x) - (x) x Řád růstu hh(x) je x Karel Richta a kol. (FEL) Složitost algoritmů B6B36DSA, 2017, Lekce 3, 44/80
45 Řád růstu funkcí y e(x) = (x+26.44) p(x) = (x ) x Karel Richta a kol. (FEL) Složitost algoritmů B6B36DSA, 2017, Lekce 3, 45/80
46 Řád růstu funkcí Zoom out! : y 1 p(x) = (x ) 16 e(x) = (x+26.44) 10 5 předchozí pohled x Karel Richta a kol. (FEL) Složitost algoritmů B6B36DSA, 2017, Lekce 3, 46/80
47 Řád růstu funkcí Zoom out! : y e(x) = (x+26.44) 1 p(x) = (x ) 16 předchozí pohled x Karel Richta a kol. (FEL) Složitost algoritmů B6B36DSA, 2017, Lekce 3, 47/80
48 Řád růstu funkcí Zoom out! : y x e(x) = (x+26.44) 1 p(x) = (x ) 16 předchozí pohled atd: e(1000) = p(1000) = Karel Richta a kol. (FEL) Složitost algoritmů B6B36DSA, 2017, Lekce 3, 48/80
49 Asymptotická složitost Asymptotická složitost algoritmu Asymptotická složitost algoritmu A je řád růstu funkce f(n), která charakterizuje počet elementárních operací algoritmu A při zpracování dat o rozsahu n. (rozsah dat = celkový počet čísel a znaků v nich) Ve většině případů nehraje roli, zda uvažujeme A) počet všech elementárních operací B) počet všech elementárních operací nad daty C) počet testů nad daty Asymptotická složitost vycházívá táž. Karel Richta a kol. (FEL) Složitost algoritmů B6B36DSA, 2017, Lekce 3, 49/80
50 Asymptotická složitost Asymptotická složitost předložených ukázek Asymptotická složitost hledání minima v poli o n prvcích je n. V obou uvedených případech. Asymptotická složitost pomalého zjišťování, kolik čísel v poli je rovno součtu jiného pole, je n 2. Asymptotická složitost rychlého zjišťování, kolik čísel v poli je rovno součtu jiného pole, je n. Za předpokladu, že obě pole mají délku n. Asymptotická složitost lineárního hledání prvku v poli je n. Asymptotická složitost hledání prvku uspořádaném poli pomocí půlení intervalu je log(n). Za předpokladu, že pole má délku n. Karel Richta a kol. (FEL) Složitost algoritmů B6B36DSA, 2017, Lekce 3, 50/80
51 Asymptotická složitost Úmluvy Zjednodušení Běžně se zkráceným termínem složitost algoritmu rozumí právě výraz asymptotická časová složitost algoritmu Zmatení Běžně se v literatuře neříká f(x) náleží do (g(x)), ale f(x) je (g(x)). Rovněž se to tak značí: f(x) = (g(x)) namísto f(x) (g(x)) (a stejně pro O a ). Chápe se to ale beze změny, v původním smyslu náležení. Karel Richta a kol. (FEL) Složitost algoritmů B6B36DSA, 2017, Lekce 3, 51/80
52 Asymptotická složitost ( ) ( ) ( ) O( ) Karel Richta a kol. (FEL) Složitost algoritmů B6B36DSA, 2017, Lekce 3, 52/80
53 Složitost rekurzivních algoritmů T(n) -- asymptotická (časová) složitost algoritmu při vstupu o velikosti n Př.: MERGESORT Asymptotická složitost vyřešení triviální úlohy T(n) = (1) pro n = 1 2T(n/2) + (n) pro n > 1 Jak asymptotická složitost při vstupu o velikosti n závisí na asymptotické složitosti při vstupu o velikosti n/2 Složitost rozdělení problému a spojení dílčích řešení (polovin pole v Merge sortu) Karel Richta a kol. (FEL) Složitost algoritmů B6B36DSA, 2017, Lekce 3, 53/80
54 Složitost rekurzivních algoritmů Co lze zanedbat Typickou hodnotu n si vhodně zvolíme (v Merge sortu mocninu 2) Konkrétní konstanta neovlivní výslednou asymptotickou složitost T(n) = (1) pro n = 1 2T(n/2) + (n) pro n > 1 n/2 a obecně n/konst není celé číslo, mysleme si však, že (víceméně) je, a použijme jej místo správného n/2 či n/2 apod. Většinou výsledek nebude ovlivněn. Karel Richta a kol. (FEL) Složitost algoritmů B6B36DSA, 2017, Lekce 3, 54/80
55 Složitost rekurzivních algoritmů Pro algoritmus A platí Příklad T(n) = (1) pro n = 1 3T( n/4 ) + (n 2 ) pro n > 1 Rozdělí data na čtvrtiny. Vyřešení čtvrtinové úlohy trvá T( n/4 ). Jedna čtvrtina se nezpracovává* ) tři čtvrtiny se zpracují v čase 3T( n/4 ). * ) z důvodů zde nepodstatných :-) Čas potřebný na rozdělení na čtvrtiny a na spojení čtvrtinových řešení je (n 2 ). Karel Richta a kol. (FEL) Složitost algoritmů B6B36DSA, 2017, Lekce 3, 55/80
56 Složitost rekurzivních algoritmů Příklad T(n) = (1) pro n = 1 3T( n/4 ) + (n 2 ) pro n > 1 Vztah pro výpočet Zanedbáme celé části, nahradíme úměrou T(n) = 3T(n/4) + c n 2 Karel Richta a kol. (FEL) Složitost algoritmů B6B36DSA, 2017, Lekce 3, 56/80
57 STROM REKURZE Karel Richta a kol. (FEL) Složitost algoritmů B6B36DSA, 2017, Lekce 3, 57/80
58 Strom rekurze T(n) = 3T(n/4) + c n 2 c n 2 čas na dělení problému na dílčí problémy a pak spojení dílčích řešení T (n/4) T (n/4) T (n/4) čas na vyřešení jednoho dílčího problému Strom rekurze je ale větší... Karel Richta a kol. (FEL) Složitost algoritmů B6B36DSA, 2017, Lekce 3, 58/80
59 Strom rekurze Strom rekurze c n 2 T(n) = 3T(n/4) + c n 2 c (n/4) 2 c (n/4) 2 c (n/4) 2 n 2 c ( 16 ) n 2 c ( 16 ) n 2 c ( 16 ) n 2 c ( 16 ) n 2 16 c ( 2 ) n 2 c ( 16 ) n 2 c ( 16 ) T(1) T(1) T(1) T(1) T(1) T(1) T(1)... Karel Richta a kol. (FEL) Složitost algoritmů B6B36DSA, 2017, Lekce 3, 59/80
60 Strom rekurze Průběh výpočtu 1. Nakresli strom rekurze 2. Spočti jeho hloubku 3. Spočti jeho šířku v patře k 4. Spočti cenu uzlu v patře k 5. Sečti ceny uzlů v patře k 6. Sečti ceny všech pater hloubka k cena uzlu = asymptotická složitost zpracování podproblému odpovídajícího uzlu ve stromu rekurze. cena stromu = asymptotická složitost zpracování celé úlohy. Karel Richta a kol. (FEL) Složitost algoritmů B6B36DSA, 2017, Lekce 3, 60/80
61 Strom rekurze T(n) = 3T(n/4) + c n 2 Průběh výpočtu 1. Nakresli strom rekurze 2. Spočti jeho hloubku... k V hloubce k je velikost podproblému n/4 k. Velikost podproblému je tedy = 1, když n/4 k = 1, tj k = log 4 (n). hloubka stromu Takže strom má log 4 (n) + 1 pater (hloubka kořene je k=0). Karel Richta a kol. (FEL) Složitost algoritmů B6B36DSA, 2017, Lekce 3, 61/80
62 Strom rekurze T(n) = 3T(n/4) + c n 2 Průběh výpočtu Spočti jeho šířku v patře k patro 1 uzel 1. patro 3 uzly 2. patro 3 3 = 9 uzlů 3. patro = 27 uzlů... k počet uzlů v jednom patře k. patro = 3 k uzlů Karel Richta a kol. (FEL) Složitost algoritmů B6B36DSA, 2017, Lekce 3, 62/80
63 Strom rekurze T(n) = 3T(n/4) + c n 2 Průběh výpočtu Spočti cenu uzlu v patře k patro c n 2 1. patro c (n/4) 2 2. patro c (n/16) 2 3. patro c (n/64) 2... k cena uzlu v patře k k. patro c (n/4 k ) 2 Karel Richta a kol. (FEL) Složitost algoritmů B6B36DSA, 2017, Lekce 3, 63/80
64 Strom rekurze Průběh výpočtu Sečti ceny uzlů v patře k... T(n) = 3T(n/4) + c n 2 V patře k je 3 k uzlů, každý má cenu c (n/4 k ) 2. k celková cena patra 3 k c (n/4 k ) 2 = (3/16) k c n 2 Pozor na poslední patro: Karel Richta a kol. (FEL) Složitost algoritmů B6B36DSA, 2017, Lekce 3, 64/80
65 Strom rekurze Průběh výpočtu Sečti ceny uzlů v patře k... T(n) = 3T(n/4) + c n 2 Poslední patro je v hloubce log 4 (n) a má tedy k 3 log (n) = n log (3) uzlů. 4 4 cena posledního patra Každý uzel v posledním patře přispívá konstantní cenou, takže cena posledního patra je n log 4 (3) konst = (n log 4 (3) ) Karel Richta a kol. (FEL) Složitost algoritmů B6B36DSA, 2017, Lekce 3, 65/80
66 Strom rekurze Průběh výpočtu Sečti ceny všech pater T(n) = 3T(n/4) + c n 2 Celková cena = cn 2 + 3/16 cn 2 + (3/16) 2 cn (3/16) log (n 1) cn2 + (n log 4 (3) ) 4 = (1 + 3/16 + (3/16) (3/16) log 4 (n 1) ) cn 2 + (n log 4 (3) ). = Geometrickou posloupnost nahradíme přibližně geometrickou řadou (zbytek řady je zanedbatelný). Získáváme horní odhad součtu. (1 + 3/16 + (3/16) 2 + (3/16) ad inf. ) cn 2 + (n log 4 (3) ) = (1 / (1 3/16) ) cn 2 + (n log 4 (3) ) = 16/13 cn 2 + (n log 4 (3) ) = Karel Richta a kol. (FEL) Složitost algoritmů B6B36DSA, 2017, Lekce 3, 66/80
67 Strom rekurze Průběh výpočtu Sečti ceny všech pater T(n) = 3T(n/4) + c n 2 k Asymptotická složitost algoritmu A 2 > log 4 (3) = 16/13 cn 2 + (n log 4 (3) ) = (n 2 ) Karel Richta a kol. (FEL) Složitost algoritmů B6B36DSA, 2017, Lekce 3, 67/80
68 SUBSTITUČNÍ METODA Karel Richta a kol. (FEL) Složitost algoritmů B6B36DSA, 2017, Lekce 3, 68/80
69 Substituční metoda Příklad Rekurentní vztah popisující asymptotickou složitost algoritmu B T(n) = 2T( n/2 ) + n Náš odhad složitosti T(n) = O(n log 2 (n)) Zdroj odhadu: zkušenost, podobnost s jinými úlohami úvaha, intuice... :-) Chceme dokázat: Náš odhad platí Metoda: Běžná matematická indukce, do níž dosadíme (substituujeme) daný rekurentní vztah Karel Richta a kol. (FEL) Složitost algoritmů B6B36DSA, 2017, Lekce 3, 69/80
70 Substituční metoda Chceme dokázat : T(n) = O(n log 2 (n)), to jest : T(n) c n log 2 (n), pro vhodné c > 0 Krok II (obecný krok) matematické indukce: Dokážeme, že pokud nerovnost platí pro n/2, platí i pro n. Víme: Předpokládáme: T(n) = 2T( n/2 ) + n T( n/2 ) c n/2 log 2 ( n/2 ) Substituce: úpravy: T(n) 2 c n/2 log 2 ( n/2 ) + n cn log 2 (n/2) + n = cn log 2 (n) cn log 2 (2) +n = cn log 2 (n) cn + n cn log 2 (n), pokud c 1 Karel Richta a kol. (FEL) Složitost algoritmů B6B36DSA, 2017, Lekce 3, 70/80
71 Substituční metoda Krok I matematické indukce Nerovnost T(n) c n log 2 (n), platí pro nějaké konkrétní malé n. Potíž Nelze dokazovat pro n = 1, neboť bychom dokazovali protože jistě je T(1) > 0. Pozorování T(1) c 1 log 2 (1) = 0, což neplatí, T(n) = 2T( n/2 ) + n Pokud n > 3, v rekurentním vztahu se T(1) neobjeví, tedy pokud dokážeme indukční krok I pro n = 2 a n = 3, je důkaz hotov pro všechna n 2. Řešení Jde nám ale o asymptotickou složitost, tudíž důkaz pro n 2 stačí. Karel Richta a kol. (FEL) Složitost algoritmů B6B36DSA, 2017, Lekce 3, 71/80
72 Substituční metoda Krok I matematické indukce pro n = 2 a n = 3 Ať T(1) = k. T(n) = 2T( n/2 ) + n Z rekurentního vztahu plyne T(2) = 2k+2 T(3) = 2k+3 Chceme mít: T(2) c 2 log 2 (2) T(3) c 3 log 2 (3) Stačí tedy volit c max { (2k+2)/2, (2k+3)/(3 log 2 (3)) }. Tudíž, kdyby k bylo např. 10, stačilo by volit c max { ( )/2, (2 10+3)/(3 log 2 (3)) } = max {11, 4.84 } = 11. Karel Richta a kol. (FEL) Složitost algoritmů B6B36DSA, 2017, Lekce 3, 72/80
73 MISTROVSKÁ METODA (THE MASTER METHOD) Karel Richta a kol. (FEL) Složitost algoritmů B6B36DSA, 2017, Lekce 3, 73/80
74 Věta Mistrovská metoda Nechť a 1 a b > 1 jsou konstanty, f(n) je funkce a nechť asymptotická složitost daného algoritmu je definována rekurentním vztahem T(n) = at(n/b) + f(n), kde podíl n/b lze libovolně interpretovat jako n/b nebo n/b. Potom platí 1. Pokud f(n) = O(n log b (a) e ) pro nějakou konstantu e > 0, pak T(n) = (n log b (a) ). 2. Pokud f(n) = (n log b (a) ), pak T(n) = (n log b (a) log 2 (n)). 3. Pokud f(n) = (n log b (a) +e ) pro nějakou konstantu e > 0, a pokud a f(n/b) c f(n) pro pro nějaké c < 1 a pro všechna dostatečně velká n, pak T(n) = (f(n)). Karel Richta a kol. (FEL) Složitost algoritmů B6B36DSA, 2017, Lekce 3, 74/80
75 Komentáře k podmínkám věty Mistrovská metoda 1. Pokud f(n) = O(n log b (a) e ) pro nějakou konstantu e > 0, pak T(n) = (n log b (a) ). / / / Podmínka 1. říká, že f(n) musí růst polynomiálně pomaleji než funkce n log b (a). 3. Pokud f(n) = (n log b (a) +e ) pro nějakou konstantu e > 0, a pokud a f(n/b) c f(n) pro pro nějaké c < 1 a pro všechna dostatečně velká n, pak T(n) = (f(n)). / / / Podmínka 3. říká, že f(n) musí růst polynomiálně rychleji než funkce n log (a). b Karel Richta a kol. (FEL) Složitost algoritmů B6B36DSA, 2017, Lekce 3, 75/80
76 Pokud f(n) = O(n log b (a) e ) pro nějakou konstantu e > 0, pak T(n) = (n log b (a) ).... Mistrovská metoda Příklad. T(n) = 9T(n/3) + n a = 9, b = 3, f(n) = n. Platí nlog (a) b = log 3 (9) = (n 2 ) n f(n) = O( n log (9) e ), kde e = 1 3 Celkem tedy T(n) = (n 2 ) Karel Richta a kol. (FEL) Složitost algoritmů B6B36DSA, 2017, Lekce 3, 76/80
77 ... Mistrovská metoda 3. Pokud f(n) = (n log b (a) +e ) pro nějakou konstantu e > 0, a pokud a f(n/b) c f(n) pro pro nějaké c < 1 a pro všechna dostatečně velká n, pak T(n) = (f(n)). Příklad. T(n) = 2T(n/2) + n log 2 (n) a = 2, b = 2, f(n) = n log 2 (n). f(n) = n log 2 (n) roste asymptoticky rychleji než Platí nlog b (a) Pozor, neroste ale polynomiálně rychleji. Poměr n log 2 (n) / n = log 2 (n) roste pomaleji než každá rostoucí polynomiální funkce. n log2(n) (n 1+e ) pro každé kladné e. Předpoklad 3. není splněn. = n nlog b (a) = n. Karel Richta a kol. (FEL) Složitost algoritmů B6B36DSA, 2017, Lekce 3, 77/80
78 Diskuze k mistrovské metodě Rovnice T(n) = at(n/b) + f(n) odpovídá rekurzivnímu algoritmu, který dělí problém o velikosti n na a částí o velikosti n/b a na dělení a zpětné kombinování výsledku potřebuje f(n) času. Ve všech 3 případech se f(n) srovnává s nlogb a a řešení je dáno větším z nich: f(n) je polynomiálně menší než která se nakonec prosadí. Obě funkce jsou stejného řádu a proto výsledkem je: Opak případu (1) - f(n) je polynomiálně větší než prosadí se f. Tyto 3 případy nepokrývají všechny možnosti. Pokud je rozdíl mezi funkcemi menší než polynomiální, nelze tuto metodu použít!!! Např. rovnice t(n) = 2t(n/2) + n log n není mistrovskou metodou řešitelná. Karel Richta a kol. (FEL) Složitost algoritmů B6B36DSA, 2017, Lekce 3, 78/80
79 Příklad: MERGE-SORT Rovnice: T(n) = 2 T(n/2) + n a = 2 b = 2 f(n) = n = n lg 2 = (n) Jedná se tedy o případ, kdy jsou funkce stejného řádu a dle mistrovské věty platí: T(n) = (n lg n) Karel Richta a kol. (FEL) Složitost algoritmů B6B36DSA, 2017, Lekce 3, 79/80
80 The End Karel Richta a kol. (FEL) Složitost algoritmů B6B36DSA, 2017, Lekce 3, 80/80
Různé algoritmy mají různou složitost
/ 1 Různé algoritmy mají různou složitost 1/ 1 Rychlost... Jeden algoritmus (program, postup, metoda ) je rychlejší než druhý. Co ta věta znamená?? 2/ 1 Asymptotická složitost y y x x Každému algoritmu
Algoritmy I, složitost
A0B36PRI - PROGRAMOVÁNÍ Algoritmy I, složitost České vysoké učení technické Fakulta elektrotechnická v 1.01 Rychlost... Jeden algoritmus (program, postup, metoda ) je rychlejší než druhý. Co ta věta znamená??
Rzné algoritmy mají rznou složitost
X36DSA 25 / 3 DSA Rzné algoritmy mají rznou složitost X36DSA 25 2 / 3 DSA The complexity of different algorithms varies X36DSA 25 3 / 3 Abeceda Jazyk Abeceda konená (neprázdná) množina symbol A mohutnost
Algoritmizace složitost rekurzivních algoritmů. Jiří Vyskočil, Marko Genyg-Berezovskyj 2010
složitost rekurzivních algoritmů Jiří Vyskočil, Marko Genyg-Berezovskyj 2010 Vyjádřen ení složitosti rekurzivního algoritmu rekurentním m tvarem Příklad vyjádření složitosti rekurzivního algoritmu rekurencí:
Úvod do problematiky
Úvod do problematiky Karel Richta a kol. Přednášky byly připraveny i s pomocí materiálů, které vyrobili Marko Berezovský, Petr Felkel, Josef Kolář, Michal Píše a Pavel Tvrdík Katedra počítačů Fakulta elektrotechnická
Časová složitost / Time complexity
Časová složitost / Time complexity Jan Kybic http://cmp.felk.cvut.cz/~kybic kybic@fel.cvut.cz 2016 2018 1 / 24 Složitost algoritmů Algorithm complexity Časová a paměťová složitost Trvání výpočtu v závislosti
Digitální učební materiál
Digitální učební materiál Číslo projektu: CZ.1.07/1.5.00/34.0548 Název školy: Gymnázium, Trutnov, Jiráskovo náměstí 325 Název materiálu: VY_32_INOVACE_146_IVT Autor: Ing. Pavel Bezděk Tematický okruh:
Mimo samotné správnosti výsledku vypočteného zapsaným algoritmem je ještě jedno
12 Délka výpočtu algoritmu Mimo samotné správnosti výsledku vypočteného zapsaným algoritmem je ještě jedno neméně důležité hledisko k posouzení vhodnosti algoritmu k řešení zadané úlohy. Jedná se o čas,
COMPLEXITY
Níže uvedené úlohy představují přehled otázek, které se vyskytly v tomto nebo v minulých semestrech ve cvičení nebo v minulých semestrech u zkoušky. Mezi otázkami semestrovými a zkouškovými není žádný
Dynamické programování
Dynamické programování prof. Ing. Pavel Tvrdík CSc. Katedra počítačových systémů Fakulta informačních technologií České vysoké učení technické v Praze c Pavel Tvrdík, 2010 Efektivní algoritmy (BI-EFA)
Doba běhu daného algoritmu/programu. 1. Který fragment programu z následujících dvou proběhne rychleji?
1 Doba běhu daného algoritmu/programu 1. Který fragment programu z následujících dvou proběhne rychleji? int n = 100; int sum = 0; for (i = 0; i < n; i++) for (j = 0; j < i; j++) sum += i+j; int n = 75;
Matematická analýza pro informatiky I. Limita posloupnosti (I)
Matematická analýza pro informatiky I. 3. přednáška Limita posloupnosti (I) Jan Tomeček tomecek@inf.upol.cz http://aix-slx.upol.cz/ tomecek/index Univerzita Palackého v Olomouci 25. února 2011 tomecek@inf.upol.cz
Složitost 1.1 Opera ní a pam ová složitost 1.2 Opera ní složitost v pr rném, nejhorším a nejlepším p ípad 1.3 Asymptotická složitost
1 Složitost 1.1 Operační a paměťová složitost Nezávislé určení na konkrétní implementaci Několik typů operací = sčítání T+, logické T L, přiřazení T A(assign), porovnání T C(compare), výpočet adresy pole
10. Složitost a výkon
Jiří Vokřínek, 2016 B6B36ZAL - Přednáška 10 1 Základy algoritmizace 10. Složitost a výkon doc. Ing. Jiří Vokřínek, Ph.D. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Jiří
Algoritmizace. Jiří Vyskočil, Marko Genyg-Berezovskyj 2010
Jiří Vyskočil, Marko Genyg-Berezovskyj 2010 Úvod stránky předmětu: https://cw.felk.cvut.cz/doku.php/courses/a4b33alg/start cíle předmětu Cílem je schopnost samostatné implementace různých variant základních
ALGORITMY A DATOVÉ STRUKTURY
Název tématického celku: Cíl: ALGORITMY A DATOVÉ STRUKTURY Metodický list č. 1 Časová složitost algoritmů Základním cílem tohoto tematického celku je vysvětlení potřebných pojmů a definic nutných k popisu
Složitost algoritmů. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava
Složitost algoritmů doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Prezentace ke dni 27. prosince 2015 Jiří Dvorský (VŠB TUO) Složitost algoritmů
Zdůvodněte, proč funkce n lg(n) roste alespoň stejně rychle nebo rychleji než než funkce lg(n!). Symbolem lg značíme logaritmus o základu 2.
1 3 4 5 6 7 8 9 10 11 1 13 14 15 16 17 18 19 0 1 3 4 5 6 7 8 9 30 31 3 Zdůvodněte, proč funkce f(n) = n log(n) 1 n 1/ roste rychleji než funkce g(n) = n. Zdůvodněte, proč funkce f(n) = n 3/ log(n) roste
Algoritmizace Dynamické programování. Jiří Vyskočil, Marko Genyg-Berezovskyj 2010
Dynamické programování Jiří Vyskočil, Marko Genyg-Berezovskyj 2010 Rozděl a panuj (divide-and-conquer) Rozděl (Divide): Rozděl problém na několik podproblémů tak, aby tyto podproblémy odpovídaly původnímu
Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 21.
Vyhledávání doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Prezentace ke dni 21. září 2018 Jiří Dvorský (VŠB TUO) Vyhledávání 242 / 433 Osnova přednášky
PŘEDNÁŠKA 2 POSLOUPNOSTI
PŘEDNÁŠKA 2 POSLOUPNOSTI 2.1 Zobrazení 2 Definice 1. Uvažujme libovolné neprázdné množiny A, B. Zobrazení množiny A do množiny B je definováno jako množina F uspořádaných dvojic (x, y A B, kde ke každému
Datové struktury 2: Rozptylovací tabulky
Datové struktury 2: Rozptylovací tabulky prof. Ing. Pavel Tvrdík CSc. Katedra počítačových systémů Fakulta informačních technologií České vysoké učení technické v Praze c Pavel Tvrdík, 2010 Efektivní algoritmy
Obsah. Euler-Fermatova věta. Reziduální aritmetika. 3. a 4. přednáška z kryptografie
Obsah Počítání modulo n a jeho časová složitost 3. a 4. přednáška z kryptografie 1 Počítání modulo n - dokončení Umocňování v Zn 2 Časová složitost výpočtů modulo n Asymptotická notace Základní aritmetické
Interpolace Uvažujme třídu funkcí jedné proměnné ψ(x; a 0,..., a n ), kde a 0,..., a n jsou parametry, které popisují jednotlivé funkce této třídy. Mějme dány body x 0, x 1,..., x n, x i x k, i, k = 0,
Vyvažování a rotace v BVS, všude se předpokládá AVL strom
Vyvažování a rotace v BVS, všude se předpokládá AVL strom 1. Jednoduchá levá rotace v uzlu u má operační složitost a) závislou na výšce levého podstromu uzlu u b) mezi O(1) a Θ(n) c) závislou na hloubce
Přednáška 3: Limita a spojitost
3 / 1 / 17, 1:38 Přednáška 3: Limita a spojitost Limita funkce Nejdříve je potřeba upřesnit pojmy, které přesněji popisují (topologickou) strukturu množiny reálných čísel, a to zejména pojem okolí 31 Definice
Numerická stabilita algoritmů
Numerická stabilita algoritmů Petr Tichý 9. října 2013 1 Numerická stabilita algoritmů Pravidla v konečné aritmetice Pro počítání v konečné aritmetice počítače platí určitá pravidla, která jsou důležitá
1 Posloupnosti a řady.
1 Posloupnosti a řady. 1.1 Posloupnosti reálných čísel. Definice 1.1: Posloupností reálných čísel nazýváme zobrazení f množiny N všech přirozených čísel do množiny R všech reálných čísel. Pokud nemůže
IV. Základní pojmy matematické analýzy IV.1. Rozšíření množiny reálných čísel
Matematická analýza IV. Základní pojmy matematické analýzy IV.1. Rozšíření množiny reálných čísel na množině R je definováno: velikost (absolutní hodnota), uspořádání, aritmetické operace; znázornění:
Časová složitost algoritmů
Časová složitost algoritmů Důležitou vlastností algoritmu je časová náročnost výpočtů provedené podle daného algoritmu Ta se nezískává měřením doby výpočtu pro různá data, ale analýzou algoritmu, jejímž
Základy algoritmizace a programování
Základy algoritmizace a programování Složitost algoritmů. Třídění Přednáška 8 16. listopadu 2009 Který algoritmus je "lepší"? Různé algoritmy, které řeší stejnou úlohu zbytek = p % i; zbytek = p - p/i*i;
Posloupnosti a jejich limity
KMA/MAT Přednáška č. 7, Posloupnosti a jejich ity 5. listopadu 203 Motivační příklady Prozkoumejme, zatím laicky, následující posloupnosti: Posloupnost, 4, 9,..., n 2,... : Hodnoty rostou nade všechny
Limita posloupnosti, limita funkce, spojitost. May 26, 2018
Limita posloupnosti, limita funkce, spojitost May 26, 2018 Definice (Okolí bodu) Okolím bodu a R (také ε- okolím) rozumíme množinu U(a, ε) = {x R; x a < ε} = (a ε, a + ε), bod a se nazývá střed okolí a
bin arn ı vyhled av an ı a bst Karel Hor ak, Petr Ryˇsav y 23. bˇrezna 2016 Katedra poˇ c ıtaˇ c u, FEL, ˇ CVUT
binární vyhledávání a bst Karel Horák, Petr Ryšavý 23. března 2016 Katedra počítačů, FEL, ČVUT Příklad 1 Naimplementujte binární vyhledávání. Upravte metodu BinarySearch::binarySearch. 1 Příklad 2 Mysĺım
Kapitola 1. Úvod. 1.1 Značení. 1.2 Výroky - opakování. N... přirozená čísla (1, 2, 3,...). Q... racionální čísla ( p, kde p Z a q N) R...
Kapitola 1 Úvod 1.1 Značení N... přirozená čísla (1, 2, 3,...). Z... celá čísla ( 3, 2, 1, 0, 1, 2,...). Q... racionální čísla ( p, kde p Z a q N) q R... reálná čísla C... komplexní čísla 1.2 Výroky -
Zpracoval: hypspave@fel.cvut.cz 7. Matematická indukce a rekurse. Řešení rekurentních (diferenčních) rovnic s konstantními koeficienty.
Zpracoval: hypspave@fel.cvut.cz 7. Matematická indukce a rekurse. Řešení rekurentních (diferenčních) rovnic s konstantními koeficienty. (A7B01MCS) I. Matematická indukce a rekurse. Indukční principy patří
Příklad 1/23. Pro rostoucí spojité fukce f(x), g(x) platí f(x) Ω(g(x)). Z toho plyne, že: a) f(x) Ο(g(x)) b) f(x) Θ(g(x)) d) g(x) Ω(f(x))
Příklad 1/23 Pro rostoucí spojité fukce f(x), g(x) platí f(x) Ω(g(x)). Z toho plyne, že: a) f(x) Ο(g(x)) b) f(x) Θ(g(x)) c) g(x) Θ(f(x)) d) g(x) Ω(f(x)) e) g(x) Ο(f(x)) 1 Příklad 2/23 Pro rostoucí spojité
Binární vyhledávací stromy pokročilé partie
Binární vyhledávací stromy pokročilé partie KMI/ALS lekce Jan Konečný 30.9.204 Literatura Cormen Thomas H., Introduction to Algorithms, 2nd edition MIT Press, 200. ISBN 0-262-5396-8 6, 3, A Knuth Donald
Časová a prostorová složitost algoritmů
.. Časová a prostorová složitost algoritmů Programovací techniky doc. Ing. Jiří Rybička, Dr. ústav informatiky PEF MENDELU v Brně rybicka@mendelu.cz Hodnocení algoritmů Programovací techniky Časová a prostorová
0.1 Úvod do matematické analýzy
Matematika I (KMI/PMATE) 1 0.1 Úvod do matematické analýzy 0.1.1 Limita a spojitost funkce Lineární funkce Lineární funkce je jedna z nejjednodušších a možná i nejpoužívanějších funkcí. f(x) = kx + q D(f)
Zavedení a vlastnosti reálných čísel
Zavedení a vlastnosti reálných čísel jsou základním kamenem matematické analýzy. Konstrukce reálných čísel sice není náplní matematické analýzy, ale množina reálných čísel R je pro matematickou analýzu
přirozený algoritmus seřadí prvky 1,3,2,8,9,7 a prvky 4,5,6 nechává Metody řazení se dělí:
Metody řazení ve vnitřní a vnější paměti. Algoritmy řazení výběrem, vkládáním a zaměňováním. Heapsort, Shell-sort, Radix-sort, Quicksort. Řazení sekvenčních souborů. Řazení souborů s přímým přístupem.
NPRG030 Programování I 3/2 Z --- NPRG031 Programování II --- 2/2 Z, Zk
NPRG030 Programování I 3/2 Z --- NPRG031 Programování II --- 2/2 Z, Zk Pavel Töpfer Katedra softwaru a výuky informatiky MFF UK MFF Malostranské nám., 4. patro, pracovna 404 pavel.topfer@mff.cuni.cz http://ksvi.mff.cuni.cz/~topfer
Obsah přednášky. Analýza algoritmu Algoritmická složitost Návrhy algoritmů Urychlování algoritmů 1/41
Obsah přednášky Analýza algoritmu Algoritmická složitost Návrhy algoritmů Urychlování algoritmů 1/41 Analýza algoritmu Proč vůbec dělat analýzu? pro většinu problémů existuje několik různých přístupů aby
7. Funkce jedné reálné proměnné, základní pojmy
, základní pojmy POJEM FUNKCE JEDNÉ PROMĚNNÉ Reálná funkce f jedné reálné proměnné je funkce (zobrazení) f: X Y, kde X, Y R. Jde o zvláštní případ obecného pojmu funkce definovaného v přednášce. Poznámka:
Složitosti základních operací B + stromu
Složitosti základních operací B + stromu Radim Bača VŠB Technická univerzita Ostrava Fakulta elektrotechniky a informatiky Katedra informatiky ŠKOMAM 2010-1- 28/1/2010 Složitosti základních operací B +
Asymptotická složitost algoritmů
Semestrální projekt 1 Y14TED Asymptotická složitost algoritmů Autor: Antonín DANĚK Osnova Slide 2 Co je to složitost algoritmu? Jak se počítá složitost algoritmu? Smysl přesného výpočtu složitosti algoritmu
IB108 Sada 1, Příklad 1 Vypracovali: Tomáš Krajča (255676), Martin Milata (256615)
IB108 Sada 1, Příklad 1 ( ) Složitost třídícího algoritmu 1/-Sort je v O n log O (n.71 ). Necht n = j i (velikost pole, které je vstupním parametrem funkce 1/-Sort). Lehce spočítáme, že velikost pole předávaná
Stromy, haldy, prioritní fronty
Stromy, haldy, prioritní fronty prof. Ing. Pavel Tvrdík CSc. Katedra počítačů FEL České vysoké učení technické DSA, ZS 2008/9, Přednáška 6 http://service.felk.cvut.cz/courses/x36dsa/ prof. Pavel Tvrdík
Omezenost funkce. Definice. (shora, zdola) omezená na množině M D(f ) tuto vlastnost. nazývá se (shora, zdola) omezená tuto vlastnost má množina
Přednáška č. 5 Vlastnosti funkcí Jiří Fišer 22. října 2007 Jiří Fišer (KMA, PřF UP Olomouc) KMA MMAN1 Přednáška č. 4 22. října 2007 1 / 1 Omezenost funkce Definice Funkce f se nazývá (shora, zdola) omezená
Číselné posloupnosti
Číselné posloupnosti Jiří Fišer KMA, PřF UP Olomouc ZS09 Jiří Fišer (KMA, PřF UP Olomouc) KMA MA2AA ZS09 1 / 43 Pojem posloupnosti Každé zobrazení N do R nazýváme číselná posloupnost. 1 a 1, 2 a 2, 3 a
Digitální učební materiál
Digitální učební materiál Číslo projektu: CZ.1.07/1.5.00/34.0548 Název školy: Gymnázium, Trutnov, Jiráskovo náměstí 325 Název materiálu: VY_32_INOVACE_145_IVT Autor: Ing. Pavel Bezděk Tematický okruh:
Rekurentní rovnice, strukturální indukce
, strukturální indukce Jiří Velebil: Y01DMA 23. února 2010: Strukturální indukce 1/19 Backusova-Naurova forma Například syntaxe formuĺı výrokové logiky kde a At. Poznámky 1 Relaxace BNF. ϕ ::= a tt (ϕ
Matematická analýza ve Vesmíru. Jiří Bouchala
Matematická analýza ve Vesmíru Jiří Bouchala Katedra aplikované matematiky jiri.bouchala@vsb.cz www.am.vsb.cz/bouchala - p. 1/19 typu: m x (sin x, cos x) R(x, ax +...)dx. Matematická analýza ve Vesmíru.
Rekurentní rovnice, strukturální indukce
Rekurentní rovnice, strukturální indukce Jiří Velebil: A7B01MCS 26. září 2011: 1/20 Příklad (Parketáž triminy z minulé přednášky) P(n) = počet parket k vyparketování místnosti rozměru n 1 P(1) = 1. 2 P(n
Operace s maticemi. 19. února 2018
Operace s maticemi Přednáška druhá 19. února 2018 Obsah 1 Operace s maticemi 2 Hodnost matice (opakování) 3 Regulární matice 4 Inverzní matice 5 Determinant matice Matice Definice (Matice). Reálná matice
Základní informace o předmětu Otázka:
Základní informace o předmětu Otázka: Proč vůbec porovnávat algoritmy? Vlastnosti algoritmů přirozenost a stabilita algoritmu časová náročnost algoritmu asymetrická a asymptotická časová náročnost algoritmů
Základní datové struktury III: Stromy, haldy
Základní datové struktury III: Stromy, haldy prof. Ing. Pavel Tvrdík CSc. Katedra počítačových systémů Fakulta informačních technologií České vysoké učení technické v Praze c Pavel Tvrdík, 2010 Efektivní
Matematika (KMI/PMATE)
Úvod do matematické analýzy Funkce a její vlastnosti Funkce a její vlastnosti Veličina Veličina - pojem, který popisuje kvantitativní (číselné) vlastnosti reálných i abstraktních objektů. Funkce a její
Zimní semestr akademického roku 2014/ prosince 2014
Cvičení k předmětu BI-ZMA Tomáš Kalvoda Katedra aplikované matematiky FIT ČVUT Matěj Tušek Katedra matematiky FJFI ČVUT Obsah Cvičení Zimní semestr akademického roku 2014/2015 2. prosince 2014 Předmluva
( + ) ( ) f x x f x. x bude zmenšovat nekonečně přesný. = derivace funkce f v bodě x. nazýváme ji derivací funkce f v bodě x. - náš základní zápis
1.. Derivace elementárních funkcí I Předpoklad: 1 Shrnutí z minulé hodin: Chceme znát jakým způsobem se mění hodnot funkce f ( f ( + f ( přibližná hodnota změn = přesnost výpočtu se bude zvětšovat, kdž
p 2 q , tj. 2q 2 = p 2. Tedy p 2 je sudé číslo, což ale znamená, že
KAPITOLA 1: Reálná čísla [MA1-18:P1.1] 1.1. Číselné množiny Přirozená čísla... N = {1,, 3,...} nula... 0, N 0 = {0, 1,, 3,...} = N {0} Celá čísla... Z = {0, 1, 1,,, 3,...} Racionální čísla... { p } Q =
Univerzita Karlova v Praze Pedagogická fakulta
Univerzita Karlova v Praze Pedagogická fakulta SEMINÁRNÍ PRÁCE Z METOD ŘEŠENÍ 1 TEORIE ČÍSEL 000/001 Cifrik, M-ZT Příklad ze zadávacích listů 10 101 Dokažte, že číslo 101 +10 je dělitelné číslem 51 Důkaz:
0.1 Úvod do lineární algebry
Matematika KMI/PMATE 1 01 Úvod do lineární algebry 011 Lineární rovnice o 2 neznámých Definice 011 Lineární rovnice o dvou neznámých x, y je rovnice, která může být vyjádřena ve tvaru ax + by = c, kde
Obecná informatika. Matematicko-fyzikální fakulta Univerzity Karlovy v Praze. Podzim 2012
Obecná informatika Přednášející Putovních přednášek Matematicko-fyzikální fakulta Univerzity Karlovy v Praze Podzim 2012 Přednášející Putovních přednášek (MFF UK) Obecná informatika Podzim 2012 1 / 18
Je založen na pojmu derivace funkce a její užití. Z předchozího studia je třeba si zopakovat a orientovat se v pojmech: funkce, D(f), g 2 : y =
0.1 Diferenciální počet Je částí infinitezimálního počtu, což je souhrnný název pro diferenciální a integrální počet. Je založen na pojmu derivace funkce a její užití. Z předchozího studia je třeba si
Matematika (KMI/PMATE)
Matematika (KMI/PMATE) Přednáška druhá aneb Úvod do matematické analýzy Limita a spojitost funkce Matematika (KMI/PMATE) 1 / 30 Osnova přednášky lineární funkce y = kx + q definice lineární funkce význam
PRIMITIVNÍ FUNKCE. Primitivní funkce primitivní funkce. geometrický popis integrály 1 integrály 2 spojité funkce konstrukce prim.
PRIMITIVNÍ FUNKCE V předchozích částech byly zkoumány derivace funkcí a hlavním tématem byly funkce, které derivace mají. V této kapitole se budou zkoumat funkce, které naopak jsou derivacemi jiných funkcí
Limita a spojitost funkce. 3.1 Úvod. Definice: [MA1-18:P3.1]
KAPITOLA 3: Limita a spojitost funkce [MA-8:P3.] 3. Úvod Necht je funkce f definována alespoň na nějakém prstencovém okolí bodu 0 R. Číslo a R je itou funkce f v bodě 0, jestliže pro každé okolí Ua) bodu
0.1 Funkce a její vlastnosti
0.1 Funkce a její vlastnosti Veličina - pojem, který popisuje kvantitativní (číselné) vlastnosti reálných i abstraktních objektů. Příklady veličin: hmotnost (m) čas (t) výše úrokové sazby v bance (i) cena
FUNKCE POJEM, VLASTNOSTI, GRAF
FUNKCE POJEM, VLASTNOSTI, GRAF Zavedení pojmu funkce funkce Funkce f na množině D R je předpis, který každému číslu x z množiny D přiřazuje právě jedno reálné číslo y z množiny R. Množina D se nazývá definiční
Texty k přednáškám z MMAN3: 4. Funkce a zobrazení v euklidovských prostorech
Texty k přednáškám z MMAN3: 4. Funkce a zobrazení v euklidovských prostorech 1. července 2008 1 Funkce v R n Definice 1 Necht n N a D R n. Reálnou funkcí v R n (reálnou funkcí n proměnných) rozumíme zobrazení
Věta o dělení polynomů se zbytkem
Věta o dělení polynomů se zbytkem Věta. Nechť R je okruh, f, g R[x], přičemž vedoucí koeficient polynomu g 0 je jednotka okruhu R. Pak existuje jediná dvojice polynomů q, r R[x] taková, že st(r) < st(g)
7. Rozdělení pravděpodobnosti ve statistice
7. Rozdělení pravděpodobnosti ve statistice Statistika nuda je, má však cenné údaje, neklesejte na mysli, ona nám to vyčíslí Jednou z úloh statistiky je odhad (výpočet) hodnot statistického znaku x i,
Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 12.
Vyhledávání doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Prezentace ke dni 12. září 2016 Jiří Dvorský (VŠB TUO) Vyhledávání 201 / 344 Osnova přednášky
Kapitola 1: Reálné funkce 1/20
Kapitola 1: Reálné funkce 1/20 Funkce jedné proměnné 2/20 Definice: Necht M R. Jestliže každému x M je přiřazeno jistým předpisem f právě jedno y R, říkáme, že y je funkcí x. x... nezávisle proměnná (neboli
PRIMITIVNÍ FUNKCE DEFINICE A MOTIVACE
PIMITIVNÍ FUNKCE V předchozích částech byly zkoumány derivace funkcí a hlavním tématem byly funkce, které derivace mají. V této kapitole se budou zkoumat funkce, které naopak jsou derivacemi jiných funkcí
Polynomy. Mgr. Veronika Švandová a Mgr. Zdeněk Kříž, Ph. D. 1.1 Teorie Zavedení polynomů Operace s polynomy...
Polynomy Obsah Mgr. Veronika Švandová a Mgr. Zdeněk Kříž, Ph. D. 1 Základní vlastnosti polynomů 2 1.1 Teorie........................................... 2 1.1.1 Zavedení polynomů................................
Základy matematické analýzy
Základy matematické analýzy Spojitost funkce Ing. Tomáš Kalvoda, Ph.D. 1, Ing. Daniel Vašata 2 1 tomas.kalvoda@fit.cvut.cz 2 daniel.vasata@fit.cvut.cz Katedra aplikované matematiky Fakulta informačních
9 Kolmost vektorových podprostorů
9 Kolmost vektorových podprostorů Od kolmosti dvou vektorů nyní přejdeme ke kolmosti dvou vektorových podprostorů. Budeme se zabývat otázkou, kdy jsou dva vektorové podprostory na sebe kolmé a jak to poznáme.
IB111 Úvod do programování skrze Python
Vyhledávání, řazení, složitost IB111 Úvod do programování skrze Python 2012 Otrávené studny 8 studen, jedna z nich je otrávená laboratorní rozbor dokáže rozpoznat přítomnost jedu ve vodě je drahý (je časově
Prohledávání do šířky = algoritmus vlny
Prohledávání do šířky = algoritmus vlny - souběžně zkoušet všechny možné varianty pokračování výpočtu, dokud nenajdeme řešení úlohy průchod stromem všech možných cest výpočtu do šířky, po vrstvách (v každé
Dosud jsme se zabývali pouze soustavami lineárních rovnic s reálnými koeficienty.
Kapitola 4 Tělesa Dosud jsme se zabývali pouze soustavami lineárních rovnic s reálnými koeficienty. Všechna čísla byla reálná, vektory měly reálné souřadnice, matice měly reálné prvky. Také řešení soustav
2. Složitost, grafové algoritmy (zapsal Martin Koutecký)
2. Složitost, grafové algoritmy (zapsal Martin Koutecký) Model Ram Při analýze algoritmu bychom chtěli nějak popsat jeho složitost. Abychom mohli udělat toto, potřebujeme nejprve definovat výpočetní model.
Test prvočíselnosti. Úkol: otestovat dané číslo N, zda je prvočíslem
Test prvočíselnosti Úkol: otestovat dané číslo N, zda je prvočíslem 1. zkusit všechny dělitele od 2 do N-1 časová složitost O(N) cca N testů 2. stačí zkoušet všechny dělitele od 2 do N/2 (větší dělitel
0.1 Úvod do matematické analýzy
Matematika I (KMI/PMATE) 1 0.1 Úvod do matematické analýzy 0.1.1 Pojem funkce Veličina - pojem, který popisuje kvantitativní (číselné) vlastnosti reálných i abstraktních objektů. Příklady veličin: hmotnost
Matematika (CŽV Kadaň) aneb Úvod do lineární algebry Matice a soustavy rovnic
Přednáška třetí (a pravděpodobně i čtvrtá) aneb Úvod do lineární algebry Matice a soustavy rovnic Lineární rovnice o 2 neznámých Lineární rovnice o 2 neznámých Lineární rovnice o dvou neznámých x, y je
4 Stromy a les. Definice a základní vlastnosti stromů. Kostry grafů a jejich počet.
4 Stromy a les Jedním ze základních, a patrně nejjednodušším, typem grafů jsou takzvané stromy. Jedná se o souvislé grafy bez kružnic. Přes svou (zdánlivou) jednoduchost mají stromy bohatou strukturu a
Náplň. v.0.03 16.02.2014. - Jednoduché příklady na práci s poli v C - Vlastnosti třídění - Způsoby (algoritmy) třídění
Náplň v.0.03 16.02.2014 - Jednoduché příklady na práci s poli v C - Vlastnosti třídění - Způsoby (algoritmy) třídění Spojení dvou samostatně setříděných polí void Spoj(double apole1[], int adelka1, double
Numerická matematika 1
Numerická matematika 1 Obsah 1 Řešení nelineárních rovnic 3 1.1 Metoda půlení intervalu....................... 3 1.2 Metoda jednoduché iterace..................... 4 1.3 Newtonova metoda..........................
Matematika I (KMI/PMATE)
Přednáška první aneb Úvod do matematické analýzy Funkce a její vlastnosti Úvod do matematické analýzy Osnova přednášky pojem funkce definice funkce graf funkce definiční obor funkce obor hodnot funkce
Určování složitosti algoritmů. Základy diskrétní matematiky, BI-ZDM
Určování složitosti algoritmů doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky FIT České vysoké učení technické v Praze c Josef Kolar, 2011 Základy diskrétní matematiky, BI-ZDM ZS 2011/12, Lekce
V každém kroku se a + b zmenší o min(a, b), tedy vždy alespoň o 1. Jestliže jsme na začátku dostali 2
Euklidův algoritmus Doprovodný materiál pro cvičení Programování I. NPRM044 Autor: Markéta Popelová Datum: 31.10.2010 Euklidův algoritmus verze 1.0 Zadání: Určete největšího společného dělitele dvou zadaných
Základy řazení. Karel Richta a kol.
Základy řazení Karel Richta a kol. Přednášky byly připraveny s pomocí materiálů, které vyrobili Marko Berezovský, Petr Felkel, Josef Kolář, Michal Píše a Pavel Tvrdík Katedra počítačů Fakulta elektrotechnická
Základy algoritmizace, návrh algoritmu
Základy algoritmizace, návrh algoritmu Algoritmus Předpoklady automatického výpočtu: předem stanovit (rozmyslet) přesný postup během opakovaného provádění postupu již nepřemýšlet a postupovat mechanicky
Binární soubory (datové, typované)
Binární soubory (datové, typované) - na rozdíl od textových souborů data uložena binárně (ve vnitřním tvaru jako v proměnných programu) není čitelné pro člověka - všechny záznamy téhož typu (může být i
Poznámka. Je-li f zobrazení, ve kterém potřebujeme zdůraznit proměnnou, píšeme f(x) (resp. f(y), resp. f(t)) je zobrazení místo f je zobrazení.
2. ZOBRAZENÍ A FUNKCE 2.1 Zobrazení 2. 1. 1 Definice: Nechť A a B jsou množiny. Řekneme že f je zobrazení množiny A do množiny B jestliže (i) f A B (ii) ke každému z množiny A eistuje právě jedno y z množiny
Interpolace Lagrangeovy polynomy. 29. října 2012
Interpolace Lagrangeovy polynomy Michal Čihák 29. října 2012 Problematika interpolace V praxi máme často k dispozici údaje z různých měření tzv. data. Data mohou mít například podobu n uspořádaných dvojic
Metody výpočtu limit funkcí a posloupností
Metody výpočtu limit funkcí a posloupností Martina Šimůnková, 6. listopadu 205 Učební tet k předmětu Matematická analýza pro studenty FP TUL Značení a terminologie R značí množinu reálných čísel, rozšířenou
1. Posloupnosti čísel
1. Posloupnosti čísel 1.1. Posloupnosti a operace s nimi Definice 1.1 Posloupnost reálných čísel ( = reálná posloupnost ) je zobrazení, jehož definičním oborem je množina N a oborem hodnot je nějaká podmnožina