Problémy a algoritmy

Rozměr: px
Začít zobrazení ze stránky:

Download "Problémy a algoritmy"

Transkript

1 Problémy a algoritmy Algoritmus. Vlastnosti algoritmů. Dělení algoritmů. Složitost algoritmů. Tomáš Bayer Katedra aplikované geoinformatiky a kartografie. Přírodovědecká fakulta UK. 1 / 68

2 Obsah přednášky 1 Úvodní informace o předmětu 2 Problém a algoritmus 3 Algoritmus 4 Analýza efektivity algoritmu Složitost algoritmu Asymptotická složitost 5 Složitost problému 6 Základní techniky návrhu algoritmu 7 Volba algoritmu a problém 2 / 68

3 Úvodní informace o předmětu 1. Plán přednášek Tematické celky: (1,2) Problémy a algoritmy. (3) Úvod do výpočetní geometrie. (4) Geometrické vyhledávání. (5) Konvexní obálky. (6,7) 2D triangulace. (8) Voroného diagramy. (9) Topologická kostra. (10, 11) Kartografická generalizace. (12) Operace s uzavřenými oblastmi v GIS. Cvičení: Implementace algoritmů v jazyce C++ pod GNU/Linux. Literatura: [1] Rourke O. J.: Computational Geometry in C, 2005, Cambridge University Press. [2] de Berg, van Kreveld, Overmars M., Schwarzkopf O.: Computational Geometry, 2000, Springer. [3] Bayer T.: Algoritmy v digitální kartografii, 2008, UK v Praze. [4] Žára J. & kol.: Moderní počítačová grafika, 2004, Computer Press. 3 / 68

4 Problém a algoritmus 2. Problém Termín mající více významů. Definice 1 (Slovník spisovného jazyka českého) Věc k řešení, nerozřešená sporná otázka, otázka k rozhodnutí, nesnadná věc Definice 2 (Wikipedia). Podmínky nebo situace nebo stav, který je nevyřešený, nebo nechtěný, nebo nežádoucí. Problém vyžaduje řešení. Pro nalezení řešení nutné pochopit nejdůležitější aspekty problému. Ne všechny problémy jsme v současné době schopni úspěšně a efektivně vyřešit!!! 4 / 68

5 Problém a algoritmus 3. Problém & počítačová kartografie Zajímají nás problémy, které lze přesně formulovat s využitím matematického aparátu, jejichž řešení lze mechanizovat (např. s využitím počítače). Kartografie je věda a současně umění, u řady problémů neexistuje exaktní řešení: barevnost mapy, čitelnost mapy, kartografická generalizace. Řešení problémů v počítačové kartografii (Digital Cartography) založeno na kombinaci exaktních a subjektivních postupů. Snaha nalézt exaktní postupy řešení a omezovat vliv lidského faktoru při zpracování geodat. V každém okamžiku přibývá mnohem více dat, než lze ručně zpracovat. 5 / 68

6 Problém a algoritmus 4. Popis problému Problém v geoinformatice/počítačové kartografii lze formálně zapsat takto: NÁZEV PROBLÉMU: Slovní popis problému VSTUP: Popis přípustného vstupu (množina vstupních dat). VÝSTUP: Popis výstupu, tj. výsledku, který je pro daný vstup očekáván. Musí existovat funkce f přiřazující vstupním datům požadovaný výstup. Nalezení řešení problému nalezení příslušné funkce f. Definice: Každý problém P je určen uspořádanou trojicí (IN, OUT, f), kde IN představuje množinu přípustných vstupů, OUT množinu očekávaných výstupů a f : IN OUT funkci přiřazující každému vstupu očekávaný výstup. VSTUP/VÝSTUP: Kombinace znaků, celých čísel či přirozených čísel představující kódování. 6 / 68

7 Algoritmus 5. Algoritmizace problémů Dynamický rozvoj přírodních/technických věd přináší řadu nových problémů. Poptávka po odbornících: kteří se orientují v současné problematice a jsou schopni problémy efektivně řešit, kteří jsou schopni hledat řešení nových problémů. Většina současných problémů z oblasti přírodních/technických věd je nějak řešitelná s využitím knihoven či specializovaného software. Vždy lze nalézt nějakou variantu problému, která ještě nebyla zpracována, či problém drobně modifikovat. Jak postupovat dále? Čekat, až problém někdo někdy vyřeší? Řešení problému hledáno ve formě obecného předpisu zahrnujícího posloupnost jednotlivých kroků, tzv. algoritmus řešení. Algoritmizace problémů rozvíjí logické myšlení, zejména schopnost abstraktního uvažování. 7 / 68

8 Algoritmus 6. Algoritmus Pojem cca 1000 let starý, poprvé použit významným perským matematikem Abú Abdallahem Muhammadem ibn Musa al-khwarizmim. 1 Algoritmus je obecný předpis sloužící pro řešení zadaného problému. Představuje posloupnost kroků doplněných jednoznačnými pravidly. Setkáváme se s ním i v běžném životě: kuchyňský recept, lékařský předpis. Algoritmicky řešitelné problémy Algoritmus A řeší problém P, pokud libovolnému vstupu x, x IN, přiřazuje v konečném počtu kroků (alespoň jeden) výstup y, y OUT, tak, že platí: y = f(x). Poznámky: Předpokládáme, že algoritmus A rozumí vstupnímu kódování a je schopen uložit data ve výstupním kódování. Pro zadaný vstup x může existovat více než jedno řešení y, algoritmus A by měl nalézt alespoň jedno. 1 Fibonacci jeho příjmení zkomolil na Algorizmi a začal tento termín používat. 8 / 68

9 Algoritmus 7. Vlastnosti algoritmu A) Determinovanost Algoritmus musí být jednoznačný jako celek i v každém svém kroku. Tohoto stavu nelze dosáhnout přirozenými jazyky, proto jsou pro zápis algoritmu používány formální jazyky. Algoritmus je invariantní vůči formálnímu jazyku!!! B) Rezultativnost Algoritmus vede vždy ke správnému výsledku v konečném počtu kroků. C) Hromadnost Algoritmus lze použít pro řešení stejné třídy problémů s různými vstupními hodnotami. Pro jejich libovolnou kombinaci obdržíme jednoznačné řešení. D) Opakovatelnost Při opakovaném použití stejných vstupních dat vždy obdržíme tentýž výsledek. Pozor na heuristiky! E) Efektivnost Každý krok algoritmu by měl být efektivní. Krok využívá elementární operace, které lze provádět v konečném čase. 9 / 68

10 Algoritmus 8. Řešitelnost problému Řešitelnost problému nelze posuzovat obecně, je nutné stanovit určitá omezení. Omezení problému na speciální typ problému, tzv. ANO/NE problém Problém musí být řešitelný v konečném čase. ANO/NE problém (tzv. rozhodovací problém): Vstupní množina IN = {0, 1} a výstupní množina OUT = {0, 1} jsou dvouprvkové, algoritmus A, problém P. VSTUP: x 1, x 2 VÝSTUP: f(x 1 ) = f(x 2 )? (tj. ANO/NE) Pokud algoritmus A řeší rozhodovací problém problém P (přiřadí správně odpovědi a skončí v konečném čase), problém P označujeme jako algoritmicky rozhodnutelný. Pokud algoritmus A vstupu, na který je odpověd 1, přiřadí správnou odpověd 1 a skončí a pro vstup, na který je odpověd 0, přiřadí odpověd 0 nebo je jeho běh nekonečný, problém P označujeme jako algoritmicky částečně rozhodnutelný. V jiném případě označujeme problém jako algoritmicky nerozhodnutelný. 10 / 68

11 Algoritmus 9. Doplňkový problém P Doplňkový problém P k rozhodovacímu problému P. Představuje takový problém, který má stejné vstupy jako P, ale výstupy jsou prohozeny. Vztahy mezi P a P: Definice1: Je -li P rozhodnutelný problém, pak je P také částečně rozhodnutelný. Definice 2: Je -li P rozhodnutelný, pak je i P rozhodnutelný. Definice 3, negace (2): Je -li P nerozhodnutelný, pak je i P nerozhodnutelný. Postova věta: Je -li P částečně rozhodnutelný a P částečně rozhodnutelný, pak je P rozhodnutelný. 11 / 68

12 Analýza efektivity algoritmu 10. Efektivita algoritmu Efektivita algoritmu je důležitou výkonnostní charakteristikou. Výkonnostní charakteristiky algoritmů nelze ignorovat: časové a materiální úspory. Každý algoritmus má kritické místo (tzv. bottleneck ), které spotřebuje většinu výkonu optimalizace. Efektivní algoritmus řeší problém s minimálními nároky na hardware v co nejrychlejším čase, cílem je co neoptimálnější využití existujících prostředků Time Is Money. Rychlost běhu algoritmu ovlivňuje rychlost běhu jeho nejpomalejší komponenty, pozor na zdánlivě nepodstatné detaily. Nejrychlejší vs. optimální řešení: Nejjednodušší řešení zpravidla nejdéle trvá, ale je jednoduché na implementaci (nenáročné aplikace). Nejrychlejší řešení bývá zpravidla velmi náročné na implementaci (časově kritické aplikace), nemusí však být stabilní. Optimální řešení bývá řádově pomalejší než nejrychlejší varianta, avšak spolehlivé. Průmyslová implementace V průmyslové implementaci nejčastěji používáno optimální řešení aneb v jednoduchosti je síla. 12 / 68

13 Analýza efektivity algoritmu 11. Analýza efektivity algoritmu Efektivita algoritmu stanovena na základě jeho analýzy. Analýzu algoritmu je možné provádět: Empiricky: srovnáním doby běhu různých algoritmů. Provádí se nad 3 množinami dat: náhodná data (ověřují funkcionalitu algoritmu), data s nevhodnou vstupní konfigurací (ověřují schopnost zpracovat libovolná data), skutečná data. Exaktně: s využitím matematické analýzy. Analýza řad, hledání asymptotických funkcí. Cíle analýzy algoritmů: Porovnání různých algoritmů řešící stejný problém: výběr nejvhodnějšího algoritmu (optimalizace volbou algoritmu). Odhad výkonnosti algoritmu: lze tento algoritmus použít pro zadaný problém a vstup? Nastavení parametrů algoritmu: jak nastavit vstupní parametry, aby algoritmus běžel co nejefektivněji? Výběr vhodných datových struktur (optimalizace volbou datové struktury) Častou chybou je pouhé sledování výkonnostních charakteristik algoritmů. Implementace a odladění výkonově efektivnějšího algoritmu pro libovolný vstupní množinu může být značně složité vhodnější je použít pomalejší, ale univerzálnější algoritmus. 13 / 68

14 Analýza efektivity algoritmu Složitost algoritmu 12. Složitost algoritmu Jeden problém může být řešen sadou různých algoritmů. Kdyby počítač pracoval s nekonečnou rychlostí, nezáleželo by na volbě algoritmu. V praxi vykonání instrukce trvá určitou dobu, nejrychlejší je přiřazení, nejpomalejší násobení/dělení. Vyhýbat se mocninám a odmocninám, velmi pomalý výpočet. Různé algoritmy se budou lišit dobou běhu, a to mnohdy velmi významně. Jak exaktně určit, rychlost algoritmu a množství spotřebované paměti? Dvě kritéria: Časová složitost algoritmu (Time Complexity) Popisuje dobu zpracování vstupních dat D algoritmem A v čase T, vyjádřena časovou funkcí t T = t(a(d)) Pamět ová složitost algoritmu (Space Complexity) Popisuje pamět ovou náročnost algoritmu. 14 / 68

15 Analýza efektivity algoritmu Složitost algoritmu 13. Posuzování složitosti algoritmu Doba běhu algoritmu i pamět ová náročnost se mění, existují dva přístupy vyjadřující dobu běhu: A) V závislosti na velikosti vstupní množiny Složitost lze definovat jako funkcí velikosti vstupu n. Závislost doby běhu na n lze hledat v exaktním tvaru (např. 4n 3 9n n + 27), což není časté, nebo běžně ve formě odhadu (např. O(n 3 )). B) V závislosti na vstupní množině dat Pro vstupní množinu se stejnou velikostí n se doba běhu může výrazně měnit (např. třídící algoritmus se chová výrazně jinak, pokud má na vstupu náhodnou, částečně setříděnou nebo reverzně setříděnou posloupnost dat). Složitost lze posuzovat: dle nejhoršího možného případu (Worst Case). dle průměrné doby běhu (Average Case). dle nejlepšího možného případu (Best Case). 15 / 68

16 Analýza efektivity algoritmu Složitost algoritmu 14. Worst/Average Case Nejhorší možný případ (Worst Case): Pro dané n je výsledkem maximum z dob běhu algoritmu pro všechny vstupy velikosti n. T WORST = max(t 1 (n), T 2 (n),..., T n (n)) Zachycuje nejdelší možnou dobu běhu algoritmu (např. nevhodná konfigurace vstupních dat), může být o několik řádů vyšší než Average Case. Algoritmus se bude ve všech případech chovat lépe než pesimistický odhad. V praxi k takové situaci nemusí dojít (nebo jen ve velmi řídkých případech), vlastnosti algoritmu mohou být tímto odhadem zkresleny. Průměrná doby běhu (Average Case): Průměrná doba výpočtu na (běžných) datech velikosti n. Může být o několik řádů lepší než Worst Case. Problematické určení, nejčastěji medián. T AVERAGE = t(t1 (n), T 2 (n),..., T n (n)) Nemusí reprezentovat skutečná data, pouhý matematický konstrukt. 16 / 68

17 Analýza efektivity algoritmu Složitost algoritmu 15. Best Case Nejlepší možný případ (Best Case) Pro dané n je výsledkem minimum z dob běhu algoritmu pro všechny vstupy velikosti n. T BEST = min(t 1(n), T 2(n),..., T n(n)) Zachycuje nejkratší možnou dobu běhu algoritmu (pro ideální konfiguraci vstupních dat). Abychom se abstrahovali od závislosti na hardware, vytváříme model tzv. abstraktního počítače, jehož parametry jsou odvozeny od skutečného počítače. Příkladem abstraktního matematického počítače může být tzv. Turingův stroj nebo tzv. RAM (Random Acces Machine). U dobře navržených algoritmů rozdíl mezi Best Case a Worst Case malý. Optimalizace algoritmu: snížení rozpětí mezi Best Case a Worst Case. Pokud Best Case = Worst Case, nelze dále optimalizovat. Některé algoritmy nejsou z důvodu vysokého Worst Case používány pro časově kritické aplikace, např. QuickSort: Average Case T AVER = n log n, ale Worst Case: T WORST = n 2!!!. Nahrazován HeapSortem, kde AC WC:T AVER = T WORST = n log n. 17 / 68

18 Analýza efektivity algoritmu Složitost algoritmu 16. Ukázka 18 / 68

19 Analýza efektivity algoritmu Asymptotická složitost 17. Asymptotická složitost Pro složitější algoritmy je přesné (algebraické) vyjádření složitosti algoritmu matematicky náročné. Ve většině případů postačí nahrazení přesného vyjádření časové složitosti jeho vhodným odhadem. Asymptotická složitost se pro n limitně blíží k algebraické hodnotě složitosti. Zásady: 1) V matematických výrazech ignorujeme členy malých hodnot (ignorujeme aditivní a multiplikativní konstanty). 2) Do testování nezahrnujeme části algoritmů, které přispívají k analyzovanému výkonu nepatrně (tj. zanedbáme rychlé části algoritmu). 5 asymptotických odhadů složitosti: 1) Asymptotický horní odhad časové složitosti: ostrý O(g(N)), neostrý o(g(n)). 2) Asymptotický dolní odhad časové složitosti: ostrý Ω(g(N)), neostrý ω(g(n)). 3) Asymptotický oboustranný odhad časové složitosti: Θ(g(N)). 19 / 68

20 Analýza efektivity algoritmu Asymptotická složitost 18. Asymptotický horní odhad složitosti O(g(N)) Ilustruje nejhorší možný případ doby běhu algoritmu. Předpoklad 1: Zanedbání multiplikativní konstanty c Necht f(n) je libovolná funkce a c libovolná konstanta, c > 0. Pak funkce f(n) a c f(n) jsou označovány jako (asymptoticky) stejně rychle rostoucí. Předpoklad 2: Zanedbání aditivní konstanty d Necht f(n) je libovolná funkce a d libovolná konstanta, d > 0. Pak funkce f(n) a f(n) + d jsou označovány jako (asymptoticky) stejně rychle rostoucí. Důsledky obou předpokladů: funkce f(n) a c f(n) + d jsou stejně rychle rostoucí. Např. funkce 0.001n 2, 0.5n 2 50, 100n , n patří do stejné třídy (kvadratické funkce). 20 / 68

21 Analýza efektivity algoritmu Asymptotická složitost 19. Definice O(g(N)) Pro libovolné funkce f, g: N N platí: f(n) O(g(n)) ( k N)( n 0 N)( n > n 0 ): f(n) k g(n). Komentář k definici: Z definice plyne, že funkce f(n) roste řádově nejvýše rychle jako g(n), g(n) je horním odhadem f(n). Z definice nevyplývá, že f(n) g(n). Jedná se o řádový růst, zanedbáváme aditivní a multiplikativní konstanty. Z definice nevyplývá, že n : f(n) g(n). Existuje nějaké (n 0 N)(n 0 > N) od kterého vztah asymptoticky platí. Z definice vyplývá, že f(n) O(g(n) tehdy, pokud pro dostatečně velkou konstantu k platí f(n) k g(n), tj. existuje pouze konečné množství výjimek. 21 / 68

22 Analýza efektivity algoritmu Asymptotická složitost 20. Ukázka asymptotického horního odhadu O(g(N)) Příklad: Platí, že 20n 2 O(0.001n 2 )?. Řešení: 20n 2 k 0.001n 2. k 20 = Platí / 68

23 Analýza efektivity algoritmu Asymptotická složitost 21. Pravidla pro práci s O-notací 1) O(O(f(n)) O(f(n)) 2) O(f(n)) + O(f(n)) O(f(n)) 3) c O(g(n)) O(g(n)) 4) O(c g(n)) O(g(n)) 5) f(n) g(n) = O(h(n)) f(n) = g(n) + O(h(n)) 6) O(f(n)) O(g(n)) O(f(n) g(n)) 7) O(f(n)) O(g(n) O( f(n) g(n) ) 8) n k O(f(n)) O(f(n) n k ) 9) O(f(n) + g(n)) O(max(f(n), g(n))) 23 / 68

24 Analýza efektivity algoritmu Asymptotická složitost 22. Příklady Příklad 1, zjednodušení výrazu: (O(n) + n)(n + O(lg(n)) + O(n) + 1) + O(50) (O(n) + n)(n + O(lg(n)) + O(n)) = O(n 2 ) + n 2 + O(n lg(n)) + O(n 2 ) + O(n 2 ) + O(n 2 ) + O(n) + n + O(50). O(n 2 ) + n 2 + O(n lg(n)) + O(n 2 ) + O(n 2 ) + O(n 2 ) + O(n) + n + O(50) = O(n 2 ) + n 2. Příklad 2, zjednodušení výrazu:. (10 lg(n) + O(n) + 4n) n n lg n + O(n) (10 lg(n) + O(n) + 4n) 10 lg(n) + O(n) + 4n n = n lg n + O(n) lg n + O(1) = 10 + O( n logn ) + 4n = O(n) + n. log n 24 / 68

25 Analýza efektivity algoritmu Asymptotická složitost 23. Další asymptotické odhady (1/2) Asymptotický horní odhad složitosti O(g(n)) (ostrý): Pro libovolné funkce f, g: N N platí: f(n) O(g(n)) ( k N)( n 0 N)( n > n 0 ): f(n) k g(n). Interpretace: f roste nejvýše tak rychle jako g. Asymptotický dolní odhad složitosti Ω(g(n)) (ostrý): Pro libovolné funkce f, g: N N platí: f(n) Ω(g(n)) ( k N)( n 0 N)( n > n 0 ): k f(n) g(n). Interpretace: f roste nejméně tak rychle jako g. Asymptotický horní odhad složitosti o(g(n)) (neostrý): Pro libovolné funkce f, g: N N platí: f(n) o(g(n)) ( k N)( n 0 N)( n > n 0 ): f(n) < k g(n). Interpretace: f roste pomaleji než g. 25 / 68

26 Analýza efektivity algoritmu Asymptotická složitost 24. Další asymptotické odhady (2/2) Asymptotický dolní odhad složitosti ω(g(n)) (neostrý): Pro libovolné funkce f, g: N N platí: f(n) ω(g(n)) ( k N)( n 0 N)( n > n 0 ): k f(n) < g(n). Interpretace: f roste rychleji než g. Asymptotický oboustranný (horní i dolní) odhad Θ(g(n)) : Pro libovolné funkce f, g: N N platí: f(n) Θ(g(n)) ( k 1 N)( k 2 N)( n 0 N)( n > n 0 ): 0 k 1 g(n) f(n) k 2 g(n). Interpretace: Odhad stejné rychlosti růstu, f roste stejně rychle jako g, tj. složitost algoritmu daného f(n) je asymptoticky stejná jako g(n). Popisuje očekávanou složitost (tj. průměrný případ). Vztahy mezi O-notacemi jsou platné i pro ostatní asymptotické odhady Ω(g(n)), o(g(n)), ω(g(n)). V praxi jsou nejčastěji používány asymptotické odhady O(g(n)), Ω(g(n)), Θ(g(n)). 26 / 68

27 Analýza efektivity algoritmu Asymptotická složitost 25. Ukázka asymptotického dolního odhadu Ω(g(N)) 27 / 68

28 Analýza efektivity algoritmu Asymptotická složitost 26. Ukázka asymptotického oboustranného odhadu Θ(g(N)) 28 / 68

29 Analýza efektivity algoritmu Asymptotická složitost 27. Příklady Př. 1: Který kód 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 = 50;int sum = 0; for (i = 0; i < n; i++){ for (j = 0; j < n; j++){ sum += i+j; } } První kód: vnější cyklus 100x, vnitřní 0,1,2,...,99, celkem 50*99=4950x Druhý kód: vnější cyklus 50x, vnitřní cyklus 50, celkem 50*50=2500. Druhý cyklus je rychlejší. 29 / 68

30 Analýza efektivity algoritmu Asymptotická složitost 28. Příklady Př. 2: Problém s dobou řešení k n 2 je na řešen pro n = na PC. Jak je možné zvětšit vstup, aby byla úloha na 10x rychlejším počítači vyřešena ve stejném čase? Staré PC: k ,nové PC 10 k k = k n 2 n = = Poměr se zvětší = Př. 3: Algoritmus A 1 pro řešení úlohy použije 10000n operací, algoritmus A 2 pro řešení úlohy použije 12n operací. Pro jakou množinu dat je výhodnější použít A 2? 12n n n n < 0 n 1 = 4, n 2 = 837. Pro n < 837 je vhodnější algoritmus A / 68

31 Analýza efektivity algoritmu Asymptotická složitost 29. Příklady Př. 4: Která tvrzení jsou pravdivá? 1) 20n O(n) 2) 60n 2 100n O(n 2 ) 3) n 2 O(n log n) 4) log n O(n) 5) n log n O(n 2 ) 6) n log n Ω(n) 7) n log n Ω(n 2 ) 8) n Ω(n log n) Řešení: Ad 1) Patří do stejné skupiny, pravdivé. Ad2) viz 1) Ad 3) n log n roste pomaleji než n 2, nepravdivé. Ad 4) n roste rychleji než log n, pravdivé. Ad 5) n 2 roste rychleji než n log n, pravdivé. Ad 6) n roste pomaleji než n log n, pravdivé. Ad 7) n 2 roste rychleji než n log n, nepravdivé. Ad 8) n log n roste rychleji než n, nepravdivé. 31 / 68

32 Analýza efektivity algoritmu Asymptotická složitost 30. Příklady odhadů složitosti Algoritmus 1: C 1 = 1; pro n > 1 :C n = C n 1 + n: procházení n 1 položek C n = C n 1 + n = C n 2 + (n 1) + n = C n 3 + (n 2) + (n 1) + n = C (n 2) + (n 1) + n = Algoritmus 2: C 1 = 0; pro n > 1 :C n = C n/2 + 1, n = 2 N : půlení vstupu Divide and Conquer. C n = log 2 (N) n(n + 1) 2 Algoritmus 3: C 1 = 0; pro n > 2 :C n = C n/2 + n, n = 2 N : půlení vstupu + kontrola vstupní položky C n = n 32 / 68

33 Analýza efektivity algoritmu Asymptotická složitost 31. Charakteristika algoritmů dle časové složitosti Složitost Vyjádření Charakteristika Konstantní 1 Konstantní doba běhu programu. Nezávisí na vstupních datech. Logaritmická log(n) Doba běhu se mírně zvětšuje v závislosti na N. Řešení hledáno opakovaným dělení vstupní množiny na menší množiny (hledání v binárním stromu). Lineární n Doba běhu programu roste lineárně s N. Zpracováván každý prvek, např.cyklus. n log(n) n log(n) Doba běhu roste téměř lineárně. Opakované dělení vstupního problému na menší problémy, které jsou řešeny nezávisle (Divide and Conquer, např. třídění). Kvadratická n 2 Doba běhu roste kvadraticky, vhodný pro menší množiny dat. Vnořený cyklus. Kubická n 3 Doba běhu roste s třetí mocninou, dvojnásobně vnořený cyklus. V praxi snaha nahrazovat algoritmus předchozími dvěma kategoriemi (Greedy algoritmy) Exponenciální 2 n Exponenciální doba běhu. Použitelné pro množiny do n=30 Aplikace v kryptografii. 33 / 68

34 Analýza efektivity algoritmu Asymptotická složitost 32. Ukázka časové složitosti algoritmů Vstupní množina n = 10, 100, 1000 prvků. Počet operací nutných pro řešení problému. Složitost n = 10 n = 100 n = 1000 Logaritmická složitost Lineární složitost Kvadratická složitost Kubická složitost Bikvadratická složitost Exponenciální složitost Faktoriální složitost / 68

35 Analýza efektivity algoritmu Asymptotická složitost 33. Ukázka doby běhu algoritmů Ukázka doby běhu algoritmu pro n = CPU: Počet operací/s 106, 109, s s s Složitost CPU 106 CPU 109 CPU 1012 s s s Logaritmická složitost hodiny vteřiny okamžitě Lineární složitost hodiny vteřiny okamžitě N log(n) hodiny vteřiny okamžitě Kvadratická složitost nikdy roky týdny Kubická složitost nikdy nikdy měsíce Bikvadratická složitost nikdy nikdy roky Exponenciální složitost nikdy nikdy nikdy Faktoriální složitost nikdy nikdy nikdy Nepostačuje zakoupení výkonnějšího PC. 35 / 68

36 Analýza efektivity algoritmu Asymptotická složitost 34. Grafické znázornění algoritmů dle časové složitosti Vstupní množina: n (0, 20) 36 / 68

37 Složitost problému 35. Složitost problému vs složitost algoritmu Dle výše uvedených postupů lze určit složitost algoritmu. Jak přejít ke složitosti problému? Problém může být řešen řadou algoritmů s různou složitostí: O(n 3 ), O(n 2 ), O(n log n)... Složitost problému odpovídá složitosti efektivního algoritmu, který problém řeší. Věty o vztazích složitosti problému a algoritmu: Věta 1: Problém P má složitost O(g(n)), jestliže pro něj existuje algoritmus řešící ho v O(g(n)). Interpretace: Pokud se podaří nalézt algoritmus se složitostí O(g(n)), pak má problém i složitost O(g(n)). Věta 2: Problém P má složitost Ω(g(n)), jestliže pro něj existuje algoritmus řešící ho v Ω(g(n)). Interpretace: Neexistuje algoritmus, který by problém řešil rychleji. Velmi obtížné matematické důkazy!!! Věta 3: Problém P má složitost Θ(g(n)), jestliže pro něj existuje algoritmus řešící ho v Θ(g(n)). Interpretace: 1)+2) Hledán algoritmus se složitostí O(g(n)) + důkaz, že neexistuje rychlejší algoritmus. Tyto algoritmy v konkrétním případě nemusejí být známy. 37 / 68

38 Složitost problému 36. Třída složitosti algoritmů Zaváděny pro (hierarchickou) kategorizaci problémů dle jejich složitosti. Rozčlenění problémů do tříd téže složitosti umožňuje: 1) Odhalovat vzájemné podobnosti těchto problémů. 2) Řešení jednoho problému převodem na jiný problém, tj. převodu problému s neznámým řešením na podobný problém s již známým řešením. Problém se snažíme zařadit do třídy s co nejnižší složitostí. Většina problémů má limitní hranici složitosti, po jejímž dosažení již algoritmus nelze urychlit. Definice: Pro funkci f : N N označujeme třídou časové složitosti τ(f(n)) množinu problémů P, které lze řešit s časovou složitostí O(f). P τ(n) τ(n log n) τ(n 2 ) τ(n 3 ) τ(2 n ). 38 / 68

39 Složitost problému 37. Třída složitosti PTIME Dvě základní třídy složitosti: třída složitosti PTIME (problémy rychle řešitelné), třída složitosti NPTIME (problémy rychle verifikovatelné). Třída složitosti PTIME: Do této třídy patří problémy řešitelné algoritmy s polynomiální složitostí: O(n c ). PTIME = τ(n c ) Problémy, pro něž existuje polynomiální algoritmus, nazýváme výpočetně snadné, představují prakticky zvládnutelné problémy. c=0 V praxi nejčastěji používány algoritmy se složitostí: O(n), O(n log(n), O(n 2 ), O(n 3 ). Nejznámější problémy třídy PTIME: aritmetické operace, třídění, vyhledávání, některé grafové či geometrické algoritmy. 39 / 68

40 Složitost problému 38. Nedeterministické polynomiální algoritmy Nedeterministický algoritmus: při opakovaném stejném vstupu dává různé výsledky (ke každé hodnotě vstupu definována více variant výstupu, algoritmus se rozhoduje náhodně/pseudonáhodně). Deterministický algoritmus: při opakovaném stejném vstupu dává stejné výsledky (ke každé hodnotě vstupu definována hodnota výstupu). Pro každou množinu vstupních dat existuje 2 nc potenciálních řešení, u každého z nich nutné zjistit, zda se jedná o skutečné řešení odpověd ANO/NE, vede opět k rozhodovacímu problému. Definice: Nedeterministický algoritmus A rozhoduje ANO/NE problém P, pokud: Pro problém, na nějž je odpověd ANO alespoň jeden výpočet nedeterministického algoritmu A vydá ANO. Pro problém, na nějž je odpověd NE každý výpočet nedeterministického algoritmu A vydá NE. Převoditelnost lze realizovat v polynomiálním čase. Je -li vstupní formule splnitelná, alespoň jeden opakovaný výpočet tuto skutečnost ověří vydáním ANO. 40 / 68

41 Složitost problému 39. Třída složitosti NPTIME Časová složitost nedeterministického algoritmu: Časovou složitostí nedeterministického algoritmu A představuje funkce T A : N N, kde T A(n) je délkou nejdelšího výpočtu algoritmu A pro vstup velikosti n T A(n) = max(t A). Třída NPTIME je třídou všech problémů, které jsou rozhodovány Nedeterministickými polynomiálními algoritmy v polynomiálním čase O(n c ), c > 0. Existuje pro ně verifikační algoritmus pracující v polynomiálně omezeném čase. Použití u tzv. optimalizačních úloh obslužné algoritmy: Jak optimalizovat počet pokladen, aby fronta byla co nemenší a náklady zaměstnavatele co nejnižší? Jak optimalizovat dopravní značení (semafory), aby se co nejvíce zmenšily fronty v ulicích? Vztah mezi PTIME a NPTIME: PTIME NPTIME nebo PTIME = NPTIME 41 / 68

42 Složitost problému 40. Převoditelnost problému Obtížnost problémů náležejících třídy NP je stejná. Nalezení rychlého algoritmu pro řešení kterékoliv z těchto úloh, by znamenalo nalezení rychlého algoritmu pro všechny úlohy této třídy (Cook, 1970). Pokud umíme efektivně řešit problém P 2, potom lze problém P 1 můžeme efektivně vyřešit tím převedením na P 2. Převedení musí být dostatečně rychlé (tj. polynomiální). Polynomiální ANO/NE problém P 1 je polynomiálně převoditelný na problém P 2, jestliže existuje polynomiální algoritmus A: který pro libovolný vstup v problému P 1 sestrojí vstup A(v) problému P 2. platí, že odpověd na otázku problému P 1 pro vstup v je ANO právě tehdy, když odpověd na otázku problému P 2 pro vstup A(v) je ANO. 42 / 68

43 Složitost problému 41. NP-těžký a NP-úplný problém NP-těžký problém Problém Q nazýváme NP-těžkým, pokud každý problém ve třídě NP lze na problém Q polynomiálně převést. Interpretace: Pokud bychom nalezli nějaký polynomiální algoritmus řešící problém Q, pak takový algoritmus musí existovat pro každý problém v NP: PTIME = NPTIME (zatím žádný takový algoritmus nebyl nalezen). Není znám algoritmus řešící problém v polynomiálním čase, řešení lze ověřit v polynomiálním čase. NP-úplný problém Problém Q nazýváme NP-úplným, pokud je NP-těžký, a náleží do třídy NP. Jedná se o nejtěžší úlohy z třídy NP. Do této skupiny patří řada problémů, u kterých není známo exaktní řešení. Není znám algoritmus řešící problém v polynomiálním čase avšak nelze prokázat, že takové řešení neexistuje. Praktické použití: je číslo x prvočíslo? Existují p, q 1 tak, aby platilo x = pq? Není znám algoritmus provádějící rozklad x na součin prvočísel (faktorizace) (RSA). 43 / 68

44 Složitost problému 42. Vztah mezi P, NP, NP-úplným problémem 44 / 68

45 Složitost problému 43. Příklady NP-úplných problémů V současné době existuje přes 1000 NP-úplných problémů, u kterých není znám polynomiální algoritmus. Jsou často velmi podobné problémům, u kterých existuje polynomiální algoritmus. Příklady NP-úplných problémů: TSP problem (problém obchodního cestujícího): navštívení všech vrcholů grafu právě jednou, délka cesty nejkratší. Problém k barev: obarvení vrcholů grafu tak, aby žádné dva sousední vrcholy nebyly obarveny dvěma stejnými barvami. Problém batohu: Jak naskládat do batohu předměty známého tvaru tak, aby zabíraly co nejméně místa? Loupežnický problém: rozdělení množiny n dvě podmnožiny se stejným součtem. NP-úplné problémy lze řešit přibližně: aproximační algoritmy. 45 / 68

46 Základní techniky návrhu algoritmu 44. Techniky návrhu algoritmů Návrh algoritmu prováděn dvěma technikami: Návrh algoritmu Shora dolů, Návrh algoritmu Zdola nahoru. V praxi obě techniky z důvodů větší efektivity často kombinujeme. Představují analogie postupů používaný při řešení běžných problémů. 46 / 68

47 Základní techniky návrhu algoritmu 45. Návrh algoritmu Shora dolů Návrh algoritmu Shora dolů Odvozen z postupu, jakým člověk řeší složité úkoly v praxi. Problém rozkládáme na jednodušší kroky, tzv. dekompozice problému. Postup směrem od obecného ke konkrétnímu. Postupně tak dospějeme k elementárním krokům, které již zpravidla umíme poměrně snadno vyřešit. Návrh algoritmu metodou shora-dolů je nejpoužívanějším přístupem. Příkladem využití návrhu shora dolů může být metoda Divide&Conquer. Návrh algoritmu Zdola nahoru Opačný přístup než Shora dolů. Elementární kroky se snažíme za použití abstrakce sdružovat do složitějších celků ve snaze nalézt řešení zadaného problému. Postup směrem od konkrétního k obecnému. Používán převážně při implementaci algoritmu: 1) Nejprve vytváříme nejjednodušší komponenty. 2) Jednoduché komponenty spojujeme ve složitější komponenty. 3) Jako poslední vytváříme zpravidla hlavní program. 47 / 68

48 Základní techniky návrhu algoritmu 46. Druhy algoritmů Problémy řešené v běžném životě jsou různorodé. Při návrhu algoritmu neexistuje univerzální technika vedoucí k nalezení řešení. V některých případech požadujeme přesné řešení, někdy postačuje řešení přibližné (přesné nemusí existovat, viz NP-úplné problémy ). Každá z technik je vhodná pro řešení jiných skupin problému. V závislosti na typu problému je nutné zvolit vhodnou techniku k jeho řešení. Přehled technik návrhu algoritmů: Metoda hrubé síly (Brute Force Algorithm). Inkrementální algoritmy (Incremental Algorithms). Rozděl a panuj (Divide and Conquer). Heuristické algoritmy (Heuristic Algorithm). Aproximační algoritmy Randomizované algoritmy 48 / 68

49 Základní techniky návrhu algoritmu 47. Metoda hrubé síly Vyzkoušení všech variant řešení problému, vybráno nejlepší z nich. Počet operací nutných k nalezení řešení roste nepolynomicky (exponenciálně n c, faktoriálně n!). Výhodou je jednoduchost implementace. Lze aplikovat pouze na malé datové soubory, pro rozsáhlé soubory nelze vyzkoušet všechny metody, nalezené řešení nemusí být nejlepší. Postupy založené na hrubé síle bývají nazývány naivními algoritmy, neobsahují žádnou hlubší myšlenku. Využití např. u NP problémů. Lepších výsledků pro tyto problémy dosahují heuristické algoritmy. 49 / 68

50 Základní techniky návrhu algoritmu 48. Inkrementální algoritmy Postupné přidávání resp. výběr jednoho prvku ze vstupní množiny resp. z existujícího řešení, po každém takovém kroku je řešení aktualizováno. Druhy inkrementálních algoritmů: Vlastnosti: Inkrementální vkládání, Inkrementální konstrukce, Inkrementální výběr. Algoritmy implementačně poměrně jednoduché, za předpokladu, že přidání / odebrání jednoho prvku příliš neovlivní výsledné řešení. Vhodné i pro značně složité problémy. Snadno lze analyzovat změny řešení v závislosti na vstupní množině dat. Lze použít jako on-line algoritmy, po přidání vstupu vidíme výsledné řešení nad podmnožinou zpracovaného data setu. Jedny z nejčastěji používaných algoritmů ve výpočetní geometrii: konvexní obálky, Voronoi Diagramy, Delauany triangulace. 50 / 68

51 Základní techniky návrhu algoritmu 49. Inkrementální vkládání = Incremental Insertion Algoritmus inkrementálního vkládání konstruuje řešení nad množinou M = {m i} n i=1 prvků tak, že nalezne řešení pro množinu M = {m i} n 1 i=1 prvků a poté do této množiny přidá prvek m n (tj. updatuje stávající řešení). {m i} n i=1 = {m i} n 1 i=1 m n Celá vstupní množina dat nemusí být k dispozici po dobu běhu algoritmu, data mohou být získávána průběžně (tj. i v době běhu algoritmu). Data mohou být vybírána ze vstupní množiny bud randomizovaně nebo dle určitých pravidel. Jeden z nejčastěji používaných postupů ve výpočetní geometrii. V paměti udržováno většinou pouze výsledné řešení, pro některé situace i průběžná řešení (DT). V takovém případě lze snadno analyzovat vliv dat na řešené, tj. provést krok zpět. Pro první kroky řešení ( malá n) je nutno vstupní množinu doplnit vhodně volenými daty a tato data po zpracování množiny n prvků z řešení dodatečně odstranit. 51 / 68

52 Základní techniky návrhu algoritmu 50. Inkrementální vkládání: konstrukce DT 52 / 68

53 Základní techniky návrhu algoritmu 51. Inkrementální konstrukce = Incremental Construction Algoritmus inkrementálního konstrukce generuje řešení nad podmnožinou N M průběžně, přidání dalšího vstupu zpravidla neovlivní dílčí řešení. Data zpracovávána podle požadavků algoritmu, nemohou být přidávána na vstup randomizovaně. V době běhu algoritmu musí být k dispozici celá vstupní množina dat. Pro urychlení běhu algoritmu je vhodné data předzpracovat, např. vhodně setřídit. Algoritmus inkrementální konstrukce často používán ve výpočetní geometrii: Delaunay triangulace Většinou pomalejší než inkrementální vkládání. 53 / 68

54 Základní techniky návrhu algoritmu 52. Inkrementální konstrukce: DT 54 / 68

55 Základní techniky návrhu algoritmu 53. Divide & Conquer Založena na opakovaném rozdělování problému na menší a jednodušší podproblémy, které jsou svým řešením podobné původnímu problému. Důsledek návrhu algoritmu technikou Shora dolů. Hodí se pro dekomponovatelné úlohy, tj. úlohy rozdělitelné na podúlohy stejného nebo podobného typu. Dělení prováděno dokud není řešení podproblému triviální (tj. většinou přímé). Takové řešení umíme zpravidla nalézt bez složitých výpočtů. Podproblémy řešeny nezávisle na sobě a poté jejich řešení spojena v celek, čímž získáme řešení původního problému. Odhad složitosti: Θ(n log n) Techniky řešení: Rekurze, iterace. Příklady: třídící algoritmy (Merge Sort, Quick Sort), významné pro úlohy výpočetní geometrie (Convex Hull, Voronoi Diagram, Delaunay Triangulace...), kartografická generalizace (Douglas Peucker Algorithm) 55 / 68

56 Základní techniky návrhu algoritmu 54. Ukázka Douglas-Peuckerova algoritmu 56 / 68

57 Základní techniky návrhu algoritmu 55. Heuristické algoritmy Charakteristika heuristiky: Technika řešení problémů, vygenerováno velké množství potenciálních řešení (na rozdíl od metody hrubé síly nikoliv všechny varianty), z nich hledáno nejlepší možné řešení. Vygenerovaná množina nemusí obsahovat nejlepší možné řešení. Heuristické algoritmy využívají heuristiku. Nehledají exaktní řešení problému, ale tzv. přípustné řešení, takové řešení není nejlepší možné, ale zároveň není špatné. Řešení nemusí být nalezeno v rychlém čase, některé heuristiky pracují poměrně dlouho. Špatné určování časové složitosti, někdy běží rychle, jindy ne (závislost na vstupních datech). Zvýšením počtu opakování lze dosáhnou přesnějšího řešení, kvalita řešení zpravidla je zpravidla funkcí počtu iterací (odmocnina) nadměrné zvyšování iterací nemá proto smysl. 57 / 68

58 Základní techniky návrhu algoritmu 56. Techniky heuristiky Základní techniky heuristiky: Iterativní algoritmy: Postupné hledání řešení nad zmenšující se množinou možných řešení, kvalita řešení se v každém dalším kroku zlepšuje. Hladové algoritmy: V každém dílčím kroku hledáno optimální řešení. Hledáním lokálního minima chceme nalézt globální minimum. Genetické algoritmy: Založeny na principech evoluční biologie. Do dalšího kroku přežívají pouze perspektivní řešení, která jsou dále zlepšována drobnou modifikací (křížením). Výhody a nevýhoda heuristiky: + Snadná implementace. + Často jediné řešení problémů, u nichž neexistuje exaktní řešení (NP problémy). - Obtížné stanovení časové složitosti, závislost na konfiguraci vstupních dat. - Řešení nelze dokázat. - V mezních situacích nemusí být nalezené řešení vhodné. - Není zaručeno, že takové řešení bude vždy nalezeno. 58 / 68

59 Základní techniky návrhu algoritmu 57. Kvalita řešení Cílem nalezení přípustného řešení, jak je nalezené řešení dobré?. Hodnocení kvality nalezeného řešení: odchylka řešení m A nalezeného algoritmem A od optimálního řešení m opt Často hodnoceno poměrem k, nalezené řešení představuje k% optima (např. 90%). k = m A m opt Jako optimální řešení může být posuzováno dosud nejlepší nalezené řešení. počet kroků vedoucích k nalezení řešení Snaha o co nejrychlejší konvergenci algoritmu. Důležitá volba podmínky ukončující iteraci. 59 / 68

60 Základní techniky návrhu algoritmu 58. Hladový algoritmus = Greedy Algorithm. Hladový algoritmus se snaží z množiny M = {m i } vybrat podmnožinu N M takovou, která má minimální/maximální sumu ohodnocení w(n) = N M w(m i). Hodnotu w(m i ) nazýváme ohodnocením prvku m i, funkci w(n) označujeme jako účelovou funkcí. Hladový algoritmus hledá v každém kroku lokální minimum/maximum účelové funkce ve snaze nalézt globální minimum/maximum účelové funkce. Tímto postupem však globální minimum nemusí být vždy nalezeno. Algoritmus v takovém případě vygeneruje přípustné řešení, které není výrazně horší než optimální řešení. Jako přípustné řešené označíme libovolnou množinu N M, jako optimální řešení množinu N M pro kterou platí w(n) = min resp. w(n) = max. 60 / 68

61 Základní techniky návrhu algoritmu 59. Implementace hladového algoritmu Při implementaci Greedy algoritmů používány dynamické datové struktury, zejména prioritní fronta. Vstupní množina M, množina řešení N. Postup: Všechny prvky m i množiny M setřídíme do posloupnosti vzestupně resp. sestupně dle hodnot w i v závislosti na tom, zda hledáme minimum/maximum. V každém kroku vybereme prvek m j s nejnižším resp. nejvyšším ohodnocením w j, dočasně ho přidáme k existující množině prvků N j 1. Pro novou množinu N j určíme w(n j). Pokud : w(n j) < min resp. w(n j) > max: Přidáním prvku m j se snížilo resp. zvýšilo ohodnocení množiny N j 1. Spočteme nové minimum min = w(n j) resp. maximu max = w(n j) množiny N j. Prvek m j přidáme do N j 1. Pak N j = N j 1 m j. V opačném případně množinu N j 1 ponecháme beze změny: N j = N j 1. Body 2,3 opakujeme pro všechna m. Po prohledání všech m účelová funkce w(n j) splňuje podmínku minimálního resp. maximálního ohodnocení. 61 / 68

62 Základní techniky návrhu algoritmu Tomáš Bayer Ukázka konstrukce (Katedra aplikované nejkratší geoinformatiky Problémy cesty a algoritmy kartografie. metodou Přírodovědecká Nearest fakultaneighbor. UK.) 62 / Heuristika: TSP, Nearest Neighbor

63 Základní techniky návrhu algoritmu 61. Heuristika: TSP, Best Insertion 63 / 68

64 Základní techniky návrhu algoritmu 62. Randomizované algoritmy Algoritmy zavádějí do procesu řešení nedeterministický prvek, tj. prvek náhodnosti. Cílem zjednodušení implementace algoritmu při zachování Worst Case. Máme -li štěstí (jestliže není vybrán nevhodný prvek), běží algoritmus průměrně rychleji. Tímto postupem lze řešit úlohy, které nemusí být běžně řešitelné. Metody randomizace: Náhodný (nedeterministický) výběr prvku ze vstupních dat Zpracování dat ze vstupní množiny v náhodném pořadí, v každém okamžiku vybrán náhodný prvek. Náhodné stanovení prahové veličiny Výběr náhodného prvku u kterého očekáváme požadované statistické parametry (např. medián). Nahrazuje předzpracování ve formě statistické analýzy dat. Výhody a nevýhody: + snadnost implementace, + vylepšení špatných vlastností algoritmů (špatný Worst Case, dobrý Average Case), - nelze použít pro NP problémy, - v obecných případech vede převod deterministického algoritmu na nedeterministický ke zhoršení výkonu. 64 / 68

65 Základní techniky návrhu algoritmu 63. Randomizované algoritmy Dělení randomizovaných algoritmů: Randomizované inkrementální algoritmy: Zpravidla náhodný výběr prvku ze vstupní množiny, použití např. u triangulací. Randomizované Divide & Conquer algoritmy: Náhodný výběr prvku majícího předpokládané statistické parametry. Např. QuickSort, náhodné stanovení mediánu. Vzorkování: Před spuštěním algoritmu obyčejně provedena statistická analýza podmnožiny dat, statistické parametry následně vztaženy na celý vstupní soubor. Výběr vzorku velmi důležitý, požadavky: reprezentativnost (vzorek reprezentuje rozložení dat v celém souboru), přiměřená velikost (krátká doba zpracování). 65 / 68

66 Základní techniky návrhu algoritmu 64. Randomizované algoritmy Typy vzorkování: Jednoduché vzorkování Všechny prvky vstupní množiny mají stejnou pravděpodobnost pro zařazení do vzorku. Položky vybrány náhodně, nemusí být rovnoměrně rozloženy. Systematické vzorkování Výběr každé n-té položky, první položka vybrána náhodně. Výhodou lepší rozložení položek v souboru. Shlukové vzorkování Ze vstupní množiny vybrán náhodný / předem daný počet vzorků. Zpracovány všechny prvky každého vybraného vzorku. Použití: Třídící algoritmy, konvexní obálky, triangulace, hledání průsečíků. 66 / 68

67 Základní techniky návrhu algoritmu 65. Randomizované zpracování bodů: body vybírány ze shluků v náhodném pořadí 67 / 68

Algoritmus. Cílem kapitoly je seznámit žáky se základy algoritmu, s jeho tvorbou a způsoby zápisu.

Algoritmus. Cílem kapitoly je seznámit žáky se základy algoritmu, s jeho tvorbou a způsoby zápisu. Algoritmus Cílem kapitoly je seznámit žáky se základy algoritmu, s jeho tvorbou a způsoby zápisu. Klíčové pojmy: Algoritmus, vlastnosti algoritmu, tvorba algoritmu, vývojový diagram, strukturogram Algoritmus

Více

10. Složitost a výkon

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ří

Více

Triangulace. Význam triangulace. trojúhelník je základní grafický element aproximace ploch předzpracování pro jiné algoritmy. příklad triangulace

Triangulace. Význam triangulace. trojúhelník je základní grafický element aproximace ploch předzpracování pro jiné algoritmy. příklad triangulace Význam triangulace trojúhelník je základní grafický element aproximace ploch předzpracování pro jiné algoritmy příklad triangulace Definice Triangulace nad množinou bodů v rovině představuje takové planární

Více

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

Více

Složitost. Teoretická informatika Tomáš Foltýnek

Složitost. Teoretická informatika Tomáš Foltýnek Složitost Teoretická informatika Tomáš Foltýnek foltynek@pef.mendelu.cz Teoretická informatika 2 Opakování z minulé přednášky Co říká Churchova teze? Jak lze kódovat Turingův stroj? Co je to Univerzální

Více

Algoritmy I, složitost

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á??

Více

Základy algoritmizace, návrh algoritmu

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

Více

Michal Krátký. Úvod do programování. Cíl kurzu. Podmínky získání zápočtu III/III

Michal Krátký. Úvod do programování. Cíl kurzu. Podmínky získání zápočtu III/III Michal Krátký Úvod do programování Michal Krátký 1,Jiří Dvorský 1 1 Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programování, 2004/2005 tel.: +420 596 993 239 místnost: A1004 mail: michal.kratky@vsb.cz

Více

TGH12 - Problém za milion dolarů

TGH12 - Problém za milion dolarů TGH12 - Problém za milion dolarů Jan Březina Technical University of Liberec 7. května 2013 Složitost problému Co je to problém? Složitost problému Co je to problém? K daným vstupním datům (velkému binárnímu

Více

3. úloha - problém batohu metodami branch & bound, dynamické programování, heuristika s testem

3. úloha - problém batohu metodami branch & bound, dynamické programování, heuristika s testem ČVUT FEL X36PAA - Problémy a algoritmy 3. úloha - problém batohu metodami branch & bound, dynamické programování, heuristika s testem Jméno: Marek Handl Datum: 1. 1. 2009 Cvičení: Pondělí 9:00 Zadání Naprogramujte

Více

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 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ů

Více

Optimalizace obecný úvod. [proč optimalizovat?] Formalizace problému. [existují podobné problémy?]

Optimalizace obecný úvod. [proč optimalizovat?] Formalizace problému. [existují podobné problémy?] Optimalizace obecný úvod 1 Optimalizace obecný úvod Motivace optimalizačních úloh [proč optimalizovat?] Formalizace problému [jak obecně popsat optimalizační úlohu?] Klasifikace optimalizačních problémů

Více

Zákony hromadění chyb.

Zákony hromadění chyb. Zákony hromadění chyb. Zákon hromadění skutečných chyb. Zákon hromadění středních chyb. Tomáš Bayer bayertom@natur.cuni.cz Přírodovědecká fakulta Univerzity Karlovy v Praze, Katedra aplikované geoinformatiky

Více

Algoritmus. Přesné znění definice algoritmu zní: Algoritmus je procedura proveditelná Turingovým strojem.

Algoritmus. Přesné znění definice algoritmu zní: Algoritmus je procedura proveditelná Turingovým strojem. Algoritmus Algoritmus je schematický postup pro řešení určitého druhu problémů, který je prováděn pomocí konečného množství přesně definovaných kroků. nebo Algoritmus lze definovat jako jednoznačně určenou

Více

MATURITNÍ TÉMATA Z MATEMATIKY

MATURITNÍ TÉMATA Z MATEMATIKY MATURITNÍ TÉMATA Z MATEMATIKY 1. Základní poznatky z logiky a teorie množin Pojem konstanty a proměnné. Obor proměnné. Pojem výroku a jeho pravdivostní hodnota. Operace s výroky, složené výroky, logické

Více

Databáze, sítě a techniky programování X33DSP

Databáze, sítě a techniky programování X33DSP Databáze, sítě a techniky programování X33DSP Anotace: Náplní předmětu jsou některé techniky a metody používané ve výpočetních systémech zaměřených na biomedicínské inženýrství. Cílem je položit jednotný

Více

3 Co je algoritmus? 2 3.1 Trocha historie... 2 3.2 Definice algoritmu... 3 3.3 Vlastnosti algoritmu... 3

3 Co je algoritmus? 2 3.1 Trocha historie... 2 3.2 Definice algoritmu... 3 3.3 Vlastnosti algoritmu... 3 Obsah Obsah 1 Program přednášek 1 2 Podmínky zápočtu 2 3 Co je algoritmus? 2 3.1 Trocha historie............................ 2 3.2 Definice algoritmu.......................... 3 3.3 Vlastnosti algoritmu.........................

Více

Mimo samotné správnosti výsledku vypočteného zapsaným algoritmem je ještě jedno

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,

Více

COMPLEXITY

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ý

Více

Výukový materiál zpracován v rámci projektu EU peníze školám

Výukový materiál zpracován v rámci projektu EU peníze školám Výukový materiál zpracován v rámci projektu EU peníze školám Registrační číslo projektu: CZ. 1.07/1.5.00/34.0637 Šablona III/2 Název VY_32_INOVACE_39_Algoritmizace_teorie Název školy Základní škola a Střední

Více

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í 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

Více

Doba běhu daného algoritmu/programu. 1. Který fragment programu z následujících dvou proběhne rychleji?

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;

Více

Seminář z IVT Algoritmizace. Slovanské gymnázium Olomouc Tomáš Kühr

Seminář z IVT Algoritmizace. Slovanské gymnázium Olomouc Tomáš Kühr Seminář z IVT Algoritmizace Slovanské gymnázium Olomouc Tomáš Kühr Algoritmizace - o čem to je? Zatím jsme se zabývali především tím, jak určitý postup zapsat v konkrétním programovacím jazyce (např. C#)

Více

Algoritmizace prostorových úloh

Algoritmizace prostorových úloh Algoritmizace prostorových úloh Vektorová data Daniela Szturcová Prostorová data Geoobjekt entita definovaná v prostoru. Znalost jeho identifikace, lokalizace umístění v prostoru, vlastností vlastních

Více

Definice 7.2. Nejmenší přirozené číslo k, pro které je graf G k-obarvitelný, se nazývá chromatické číslo (barevnost) grafu G a značí se χ(g).

Definice 7.2. Nejmenší přirozené číslo k, pro které je graf G k-obarvitelný, se nazývá chromatické číslo (barevnost) grafu G a značí se χ(g). 7 Barevnost grafu Definice 71 Graf G se nazývá k-obarvitelný, jestliže každému jeho uzlu lze přiřadit jednu z barev 1 k tak, že žádné dva sousední uzly nemají stejnou barvu Definice 72 Nejmenší přirozené

Více

VÝUKOVÝ MATERIÁL. Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632 Číslo projektu

VÝUKOVÝ MATERIÁL. Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632 Číslo projektu VÝUKOVÝ MATERIÁL Identifikační údaje školy Vyšší odborná škola a Střední škola, Varnsdorf, příspěvková organizace Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632

Více

Kartografické stupnice. Přednáška z předmětu Tematická kartografie (KMA/TKA) Otakar Čerba Západočeská univerzita

Kartografické stupnice. Přednáška z předmětu Tematická kartografie (KMA/TKA) Otakar Čerba Západočeská univerzita Kartografické stupnice Přednáška z předmětu Tematická kartografie (KMA/TKA) Otakar Čerba Západočeská univerzita Datum vytvoření dokumentu: 20. 9. 2004 Datum poslední aktualizace: 16. 10. 2012 Stupnice

Více

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

Více

Definice 9.4. Nedeterministický algoritmus se v některých krocích může libovolně rozhodnout pro některé z několika možných různých pokračování.

Definice 9.4. Nedeterministický algoritmus se v některých krocích může libovolně rozhodnout pro některé z několika možných různých pokračování. 9.5 Třída NP Definice 9.4. Nedeterministický algoritmus se v některých krocích může libovolně rozhodnout pro některé z několika možných různých pokračování. Příklad. Uvažujme problém IND a následující

Více

NP-úplnost problému SAT

NP-úplnost problému SAT Problém SAT je definován následovně: SAT(splnitelnost booleovských formulí) Vstup: Booleovská formule ϕ. Otázka: Je ϕ splnitelná? Příklad: Formule ϕ 1 =x 1 ( x 2 x 3 )jesplnitelná: např.přiohodnocení ν,kde[x

Více

Komplexní čísla, Kombinatorika, pravděpodobnost a statistika, Posloupnosti a řady

Komplexní čísla, Kombinatorika, pravděpodobnost a statistika, Posloupnosti a řady Předmět: Náplň: Třída: Počet hodin: Pomůcky: Matematika Komplexní čísla, Kombinatorika, pravděpodobnost a statistika, Posloupnosti a řady 4. ročník a oktáva 3 hodiny týdně PC a dataprojektor, učebnice

Více

Rekurentní rovnice, strukturální indukce

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

Více

1 Algoritmus. 1.1 Úvod

1 Algoritmus. 1.1 Úvod 1 Algoritmus Cílem této kapitoly je seznámi studenty se základními pojmy informatiky jako jsou algoritmus, program, složitost. Student získá také přehled o složitostních třídách problémů (algoritmů). O

Více

Složitost a moderní kryptografie

Složitost a moderní kryptografie Složitost a moderní kryptografie Radek Pelánek Modulární systém dalšího vzdělávání pedagogických pracovníků JmK v přírodních vědách a informatice CZ.1.07/1.3.10/02.0024 Složitost a moderní kryptografie

Více

Algoritmizace. 1. Úvod. Algoritmus

Algoritmizace. 1. Úvod. Algoritmus 1. Úvod Algoritmizace V dnešní době již počítače pronikly snad do všech oblastí lidské činnosti, využívají se k řešení nejrůznějších úkolů. Postup, který je v počítači prováděn nějakým programem se nazývá

Více

Časová složitost algoritmů

Č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ž

Více

Výpočetní geometrie Computational Geometry

Výpočetní geometrie Computational Geometry Datové struktury a algoritmy Část 11 Výpočetní geometrie Computational Geometry Petr Felkel 20.12.2005 Úvod Výpočetní geometrie (CG) Příklady úloh Algoritmické techniky paradigmata řazení - jako předzpracování

Více

Pohled do nitra mikroprocesoru Josef Horálek

Pohled do nitra mikroprocesoru Josef Horálek Pohled do nitra mikroprocesoru Josef Horálek Z čeho vycházíme = Vycházíme z Von Neumannovy architektury = Celý počítač se tak skládá z pěti koncepčních bloků: = Operační paměť = Programový řadič = Aritmeticko-logická

Více

Úvod do mobilní robotiky AIL028

Úvod do mobilní robotiky AIL028 Pravděpodobnostní plánování zbynek.winkler at mff.cuni.cz, md at robotika.cz http://robotika.cz/guide/umor05/cs 12. prosince 2005 1 Co už umíme a co ne? Jak řešit složitější případy? Definice konfiguračního

Více

Funkce a lineární funkce pro studijní obory

Funkce a lineární funkce pro studijní obory Variace 1 Funkce a lineární funkce pro studijní obory Autor: Mgr. Jaromír JUŘEK Kopírování a jakékoliv další využití výukového materiálu je povoleno pouze s uvedením odkazu na www.jarjurek.cz. 1. Funkce

Více

Konvexní obálka množiny bodů.

Konvexní obálka množiny bodů. Konvexní obálka množiny bodů. Graham Scan. Jarvis Scan. Quick Hull. Inkrementální metoda. Divide and Conquer. Rotating Calipers. Tomáš Bayer bayertom@natur.cuni.cz Katedra aplikované geoinformatiky a kartografie.

Více

Metody síťové analýzy

Metody síťové analýzy Metody síťové analýzy Řeší problematiku složitých systémů, zejména pak vazby mezi jejich jednotlivými prvky. Vychází z teorie grafů. Základní metody síťové analýzy: CPM (Critical Path Method) deterministický

Více

Od Turingových strojů k P=NP

Od Turingových strojů k P=NP Složitost Od Turingových strojů k P=NP Zbyněk Konečný Zimnění 2011 12. 16.2.2011 Kondr (Než vám klesnou víčka 2011) Složitost 12. 16.2.2011 1 / 24 O čem to dnes bude? 1 Co to je složitost 2 Výpočetní modely

Více

2. úkol MI-PAA. Jan Jůna (junajan) 3.11.2013

2. úkol MI-PAA. Jan Jůna (junajan) 3.11.2013 2. úkol MI-PAA Jan Jůna (junajan) 3.11.2013 Specifikaci úlohy Problém batohu je jedním z nejjednodušších NP-těžkých problémů. V literatuře najdeme množství jeho variant, které mají obecně různé nároky

Více

Úvod do mobilní robotiky AIL028

Úvod do mobilní robotiky AIL028 md at robotika.cz, zbynek.winkler at mff.cuni.cz http://robotika.cz/guide/umor07/cs 27. listopadu 2007 1 Mapa světa Exaktní plánování 2 3 Plánování s otáčením Mapa světa - příklad Obsah Mapa světa Exaktní

Více

2. Složitost, grafové algoritmy (zapsal Martin Koutecký)

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.

Více

Základní datové struktury

Základní datové struktury Základní datové struktury Martin Trnečka Katedra informatiky, Přírodovědecká fakulta Univerzita Palackého v Olomouci 4. listopadu 2013 Martin Trnečka (UPOL) Algoritmická matematika 1 4. listopadu 2013

Více

Problém obchodního cestujícího(tsp) Vstup: Množina n měst a vzdálenosti mezi nimi. Výstup: Nejkratší okružní cesta procházející všemi městy.

Problém obchodního cestujícího(tsp) Vstup: Množina n měst a vzdálenosti mezi nimi. Výstup: Nejkratší okružní cesta procházející všemi městy. Problém obchodního cestujícího(tsp) Vstup: Množina n měst a vzdálenosti mezi nimi. Výstup: Nejkratší okružní cesta procházející všemi městy. Poznámka:Slovem okružní myslíme,žecestakončívestejném městě,

Více

0.1 Úvod do matematické analýzy

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

Více

Mgr. Ladislav Zemánek Maturitní okruhy Matematika 2013-2014. 1. Obor reálných čísel

Mgr. Ladislav Zemánek Maturitní okruhy Matematika 2013-2014. 1. Obor reálných čísel Mgr. Ladislav Zemánek Maturitní okruhy Matematika 2013-2014 1. Obor reálných čísel - obor přirozených, celých, racionálních a reálných čísel - vlastnosti operací (sčítání, odčítání, násobení, dělení) -

Více

Rekurentní rovnice, strukturální indukce

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 (ϕ

Více

Operátory pro maticové operace (operace s celými maticemi) * násobení maticové Pro čísla platí: 2*2

Operátory pro maticové operace (operace s celými maticemi) * násobení maticové Pro čísla platí: 2*2 * násobení maticové Pro čísla platí: Pro matice - násobení inverzní maticí inv inverzní matice A -1 k dané matici A je taková matice, která po vynásobení s původní maticí dá jednotkovou matici. Inverzní

Více

Přijímací zkouška - matematika

Přijímací zkouška - matematika Přijímací zkouška - matematika Jméno a příjmení pište do okénka Číslo přihlášky Číslo zadání 1 Grafy 1 Pro který z následujících problémů není znám žádný algoritmus s polynomiální časovou složitostí? Problém,

Více

Stromy, haldy, prioritní fronty

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

Více

Učební plán 4. letého studia předmětu matematiky. Učební plán 6. letého studia předmětu matematiky

Učební plán 4. letého studia předmětu matematiky. Učební plán 6. letého studia předmětu matematiky Učební plán 4. letého studia předmětu matematiky Ročník I II III IV Dotace 3 3+1 2+1 2+2 Povinnost povinný povinný povinný povinný Učební plán 6. letého studia předmětu matematiky Ročník 1 2 3 4 5 6 Dotace

Více

REGRESNÍ ANALÝZA V PROSTŘEDÍ MATLAB

REGRESNÍ ANALÝZA V PROSTŘEDÍ MATLAB 62 REGRESNÍ ANALÝZA V PROSTŘEDÍ MATLAB BEZOUŠKA VLADISLAV Abstrakt: Text se zabývá jednoduchým řešením metody nejmenších čtverců v prostředí Matlab pro obecné víceparametrové aproximační funkce. Celý postup

Více

Obecná informatika. Matematicko-fyzikální fakulta Univerzity Karlovy v Praze. Podzim 2012

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

Více

Moderní technologie ve studiu aplikované fyziky CZ.1.07/2.2.00/ Množiny, funkce

Moderní technologie ve studiu aplikované fyziky CZ.1.07/2.2.00/ Množiny, funkce Moderní technologie ve studiu aplikované fyziky CZ.1.07/2.2.00/07.0018 2. Množiny, funkce MNOŽIN, ZÁKLDNÍ POJMY Pojem množiny patří v matematice ke stěžejním. Nelze jej zavést ve formě definice pomocí

Více

Kybernetika a umělá inteligence, cvičení 10/11

Kybernetika a umělá inteligence, cvičení 10/11 Kybernetika a umělá inteligence, cvičení 10/11 Program 1. seminární cvičení: základní typy klasifikátorů a jejich princip 2. počítačové cvičení: procvičení na problému rozpoznávání číslic... body za aktivitu

Více

Maturitní témata profilová část

Maturitní témata profilová část Seznam témat Výroková logika, úsudky a operace s množinami Základní pojmy výrokové logiky, logické spojky a kvantifikátory, složené výroky (konjunkce, disjunkce, implikace, ekvivalence), pravdivostní tabulky,

Více

Amortizovaná složitost. Prioritní fronty, haldy (binární, d- regulární, binomiální, Fibonacciho), operace nad nimi a jejich složitost

Amortizovaná složitost. Prioritní fronty, haldy (binární, d- regulární, binomiální, Fibonacciho), operace nad nimi a jejich složitost Amortizovaná složitost. Prioritní fronty, haldy binární, d- regulární, binomiální, Fibonacciho), operace nad nimi a jejich složitost 1. Asymptotické odhady Asymptotická složitost je deklarována na základě

Více

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115 Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115 Číslo projektu: CZ.1.07/1.5.00/34.0410 Číslo šablony: 1 Název materiálu: Ročník: Identifikace materiálu: Jméno autora: Předmět: Tématický celek:

Více

Počítačová geometrie I

Počítačová geometrie I 0 I RNDr., Ph.D. Katedra didaktiky matematiky Univerzita Karlova v Praze Matematicko-fyzikální fakulta petra.surynkova@mff.cuni.cz http://surynkova.info Osnova předmětu Pojem výpočetní geometrie, oblasti

Více

1 Tyto materiály byly vytvořeny za pomoci grantu FRVŠ číslo 1145/2004.

1 Tyto materiály byly vytvořeny za pomoci grantu FRVŠ číslo 1145/2004. Prostá regresní a korelační analýza 1 1 Tyto materiály byly vytvořeny za pomoci grantu FRVŠ číslo 1145/2004. Problematika závislosti V podstatě lze rozlišovat mezi závislostí nepodstatnou, čili náhodnou

Více

Složitost her. Herní algoritmy. Otakar Trunda

Složitost her. Herní algoritmy. Otakar Trunda Složitost her Herní algoritmy Otakar Trunda Úvod měření složitosti Formální výpočetní model Turingův stroj Složitost algoritmu = závislost spotřebovaných prostředků na velikosti vstupu Časová složitost

Více

Pojem algoritmus. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava

Pojem algoritmus. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Pojem algoritmus 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) Pojem algoritmus 54 / 344

Více

zejména Dijkstrův algoritmus pro hledání minimální cesty a hladový algoritmus pro hledání minimální kostry.

zejména Dijkstrův algoritmus pro hledání minimální cesty a hladový algoritmus pro hledání minimální kostry. Kapitola Ohodnocené grafy V praktických aplikacích teorie grafů zpravidla graf slouží jako nástroj k popisu nějaké struktury. Jednotlivé prvky této struktury mají často přiřazeny nějaké hodnoty (může jít

Více

Iterační výpočty. Dokumentace k projektu č. 2 do IZP. 24. listopadu 2004

Iterační výpočty. Dokumentace k projektu č. 2 do IZP. 24. listopadu 2004 Dokumentace k projektu č. 2 do IZP Iterační výpočty 24. listopadu 2004 Autor: Kamil Dudka, xdudka00@stud.fit.vutbr.cz Fakulta Informačních Technologií Vysoké Učení Technické v Brně Obsah 1. Úvod...3 2.

Více

Pravděpodobnost, náhoda, kostky

Pravděpodobnost, náhoda, kostky Pravděpodobnost, náhoda, kostky Radek Pelánek IV122, jaro 2015 Výhled pravděpodobnost náhodná čísla lineární regrese detekce shluků Dnes lehce nesourodá směs úloh souvisejících s pravděpodobností krátké

Více

NMIN101 Programování 1 2/2 Z --- NMIN102 Programování /2 Z, Zk

NMIN101 Programování 1 2/2 Z --- NMIN102 Programování /2 Z, Zk NMIN101 Programování 1 2/2 Z --- NMIN102 Programování 2 --- 2/2 Z, Zk Pavel Töpfer Katedra software 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

Více

GIS Geografické informační systémy

GIS Geografické informační systémy GIS Geografické informační systémy Obsah přednášky Prostorové vektorové modely Špagetový model Topologický model Převody geometrií Vektorový model Reprezentuje reálný svět po jednotlivých složkách popisu

Více

Požadavky k opravným zkouškám z matematiky školní rok 2013-2014

Požadavky k opravným zkouškám z matematiky školní rok 2013-2014 Požadavky k opravným zkouškám z matematiky školní rok 2013-2014 1. ročník (první pololetí, druhé pololetí) 1) Množiny. Číselné obory N, Z, Q, I, R. 2) Absolutní hodnota reálného čísla, intervaly. 3) Procenta,

Více

Lekce 01 Úvod do algoritmizace

Lekce 01 Úvod do algoritmizace Počítačové laboratoře bez tajemství aneb naučme se učit algoritmizaci a programování s využitím robotů Lekce 01 Úvod do algoritmizace Tento projekt CZ.1.07/1.3.12/04.0006 je spolufinancován Evropským sociálním

Více

MI-PAA. úkol č.3. Řešení problému batohu dynamickým programováním, metodou větví a hranic a aproximativním algoritmem

MI-PAA. úkol č.3. Řešení problému batohu dynamickým programováním, metodou větví a hranic a aproximativním algoritmem Jakub Holý holyjak1@fit.cvut.cz MI-PAA úkol č.3 Řešení problému batohu dynamickým programováním, metodou větví a hranic a aproximativním algoritmem Zadání Naprogramujte řešení problému batohu: 1. metodou

Více

Učební texty k státní bakalářské zkoušce Matematika Základy lineárního programování. študenti MFF 15. augusta 2008

Učební texty k státní bakalářské zkoušce Matematika Základy lineárního programování. študenti MFF 15. augusta 2008 Učební texty k státní bakalářské zkoušce Matematika Základy lineárního programování študenti MFF 15. augusta 2008 1 15 Základy lineárního programování Požadavky Simplexová metoda Věty o dualitě (bez důkazu)

Více

Úvod do programování 10. hodina

Úvod do programování 10. hodina Úvod do programování 10. hodina RNDr. Jan Lánský, Ph.D. Katedra informatiky a matematiky Fakulta ekonomických studií Vysoká škola finanční a správní 2015 Umíme z minulé hodiny Syntax Dvojrozměrné pole

Více

Algoritmizace a programování

Algoritmizace a programování Algoritmizace a programování Vyhledávání, vkládání, odstraňování Vyhledání hodnoty v nesetříděném poli Vyhledání hodnoty v setříděném poli Odstranění hodnoty z pole Vkládání hodnoty do pole Verze pro akademický

Více

Cvičení z matematiky jednoletý volitelný předmět

Cvičení z matematiky jednoletý volitelný předmět Název předmětu: Zařazení v učebním plánu: Cvičení z matematiky O8A, C4A, jednoletý volitelný předmět Cíle předmětu Obsah předmětu je zaměřen na přípravu studentů gymnázia na společnou část maturitní zkoušky

Více

OPTIMALIZAČNÍ ÚLOHY. Modelový příklad problém obchodního cestujícího:

OPTIMALIZAČNÍ ÚLOHY. Modelový příklad problém obchodního cestujícího: OPTIMALIZAČNÍ ÚLOHY Problém optimalizace v různých oblastech: - minimalizace času, materiálu, - maximalizace výkonu, zisku, - optimalizace umístění komponent, propojení,... Modelový příklad problém obchodního

Více

Základy algoritmizace

Základy algoritmizace Základy algoritmizace Matematické algoritmy (11MAG) Jan Přikryl 1. přednáška 11MAG pondělí 5. října 2014 verze: 2014-11-10 10:35 Obsah 1 Algoritmy a algoritmizace 1 1.1 Vlastnosti algoritmů..................................

Více

2. Množiny, funkce. Poznámka: Prvky množiny mohou být opět množiny. Takovou množinu, pak nazýváme systém množin, značí se

2. Množiny, funkce. Poznámka: Prvky množiny mohou být opět množiny. Takovou množinu, pak nazýváme systém množin, značí se MNOŽIN, ZÁKLDNÍ POJMY Pojem množiny patří v matematice ke stěžejním. Nelze jej zavést ve formě definice pomocí primitivních pojmů; považuje se totiž rovněž za pojem primitivní. Představa o pojmu množina

Více

Numerická matematika 1

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

Více

Paralelní programování

Paralelní programování Paralelní programování přednášky Jan Outrata únor duben 2011 Jan Outrata (KI UP) Paralelní programování únor duben 2011 1 / 14 Atomické akce dále nedělitelná = neproložitelná jiným procesem izolovaná =

Více

Automatizované řešení úloh s omezeními

Automatizované řešení úloh s omezeními Automatizované řešení úloh s omezeními Martin Kot Katedra informatiky, FEI, Vysoká škola báňská Technická universita Ostrava 17. listopadu 15, Ostrava-Poruba 708 33 Česká republika 25. října 2012 M. Kot

Více

Matematika PRŮŘEZOVÁ TÉMATA

Matematika PRŮŘEZOVÁ TÉMATA Matematika ročník TÉMA 1-4 Operace s čísly a - provádí aritmetické operace v množině reálných čísel - používá různé zápisy reálného čísla - používá absolutní hodnotu, zapíše a znázorní interval, provádí

Více

Matematika POZNÁMKY PRŮŘEZOVÁ TÉMATA

Matematika POZNÁMKY PRŮŘEZOVÁ TÉMATA Matematika ročník TÉMA 1-4 Operace s čísly a - provádí aritmetické operace v množině reálných čísel - používá různé zápisy reálného čísla - používá absolutní hodnotu, zapíše a znázorní interval, provádí

Více

Maturitní témata z matematiky

Maturitní témata z matematiky Maturitní témata z matematiky G y m n á z i u m J i h l a v a Výroky, množiny jednoduché výroky, pravdivostní hodnoty výroků, negace operace s výroky, složené výroky, tabulky pravdivostních hodnot důkazy

Více

Posloupnosti a jejich konvergence POSLOUPNOSTI

Posloupnosti a jejich konvergence POSLOUPNOSTI Posloupnosti a jejich konvergence Pojem konvergence je velmi důležitý pro nediskrétní matematiku. Je nezbytný všude, kde je potřeba aproximovat nějaké hodnoty, řešit rovnice přibližně, používat derivace,

Více

METODY DOLOVÁNÍ V DATECH DATOVÉ SKLADY TEREZA HYNČICOVÁ H2IGE1

METODY DOLOVÁNÍ V DATECH DATOVÉ SKLADY TEREZA HYNČICOVÁ H2IGE1 METODY DOLOVÁNÍ V DATECH DATOVÉ SKLADY TEREZA HYNČICOVÁ H2IGE1 DOLOVÁNÍ V DATECH (DATA MINING) OBJEVUJE SE JIŽ OD 60. LET 20. ST. S ROZVOJEM POČÍTAČOVÉ TECHNIKY DEFINICE PROCES VÝBĚRU, PROHLEDÁVÁNÍ A MODELOVÁNÍ

Více

AVDAT Mnohorozměrné metody, metody klasifikace Shluková analýza

AVDAT Mnohorozměrné metody, metody klasifikace Shluková analýza AVDAT Mnohorozměrné metody, metody klasifikace Shluková analýza Josef Tvrdík Katedra informatiky Přírodovědecká fakulta Ostravská univerzita Shluková analýza Cílem shlukové analýzy je nalézt v datech podmnožiny

Více

HEURISTICKÉ ALGORITMY PRO ŘEŠENÍ ÚLOH OBCHODNÍHO CESTUJÍCÍHO

HEURISTICKÉ ALGORITMY PRO ŘEŠENÍ ÚLOH OBCHODNÍHO CESTUJÍCÍHO HEURISTICKÉ ALGORITMY PRO ŘEŠENÍ ÚLOH OBCHODNÍHO CESTUJÍCÍHO Heuristické algoritmy jsou speciálními algoritmy, které byly vyvinuty pro obtížné úlohy, jejichž řešení je obtížné získat v rozumném čase. Mezi

Více

Dijkstrův algoritmus

Dijkstrův algoritmus Dijkstrův algoritmus Hledání nejkratší cesty v nezáporně hranově ohodnoceném grafu Necht je dán orientovaný graf G = (V, H) a funkce, která každé hraně h = (u, v) H přiřadí nezáporné reálné číslo označované

Více

přirozený algoritmus seřadí prvky 1,3,2,8,9,7 a prvky 4,5,6 nechává Metody řazení se dělí:

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.

Více

Časové a organizační vymezení

Časové a organizační vymezení Vzdělávací oblast Vzdělávací obor Vyučovací předmět Týdenní hodinové dotace Časové a organizační vymezení Matematika a její aplikace Matematika a její aplikace Matematika 1. stupeň 2. stupeň 1. ročník

Více

Cvičení z matematiky - volitelný předmět

Cvičení z matematiky - volitelný předmět Vyučovací předmět : Období ročník : Učební texty : Cvičení z matematiky - volitelný předmět 3. období 9. ročník Sbírky úloh, Testy k přijímacím zkouškám, Testy Scio, Kalibro aj. Očekávané výstupy předmětu

Více

2 MATEMATIKA A JEJÍ APLIKACE UČEBNÍ OSNOVY

2 MATEMATIKA A JEJÍ APLIKACE UČEBNÍ OSNOVY 2 MATEMATIKA A JEJÍ APLIKACE UČEBNÍ OSNOVY 2. 2 Cvičení z matematiky Časová dotace 7. ročník 1 hodina 8. ročník 1 hodina 9. ročník 1 hodina Charakteristika: Předmět cvičení z matematiky doplňuje vzdělávací

Více

24.11.2009 Václav Jirchář, ZTGB

24.11.2009 Václav Jirchář, ZTGB 24.11.2009 Václav Jirchář, ZTGB Síťová analýza 50.let V souvislosti s potřebou urychlit vývoj a výrobu raket POLARIS v USA při závodech ve zbrojení za studené války se SSSR V roce 1958 se díky aplikaci

Více

4. Digitální model terénu.

4. Digitální model terénu. 4. Digitální model terénu. 154GEY2 Geodézie 2 4.1 Úvod - Digitální model terénu. 4.2 Tvorba digitálního modelu terénu. 4.3 Druhy DMT podle typu ploch. 4.4 Polyedrický model terénu (TIN model). 4.5 Rastrový

Více

MINISTERSTVO ŠKOLSTVÍ, MLÁDEŽE A TĚLOVÝCHOVY. Učební osnova předmětu MATEMATIKA

MINISTERSTVO ŠKOLSTVÍ, MLÁDEŽE A TĚLOVÝCHOVY. Učební osnova předmětu MATEMATIKA MINISTERSTVO ŠKOLSTVÍ, MLÁDEŽE A TĚLOVÝCHOVY Učební osnova předmětu MATEMATIKA pro střední odborné školy s humanitním zaměřením (6 8 hodin týdně celkem) Schválilo Ministerstvo školství, mládeže a tělovýchovy

Více

Posloupnosti a jejich limity

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

Více