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 bayertom@natur.cuni.cz 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 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. Úvodní informace o předmětu (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 / 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 5. Algoritmizace problémů Algoritmus 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í. Tomáš Krok Bayer využívá bayertom@natur.cuni.cz elementární (Katedraoperace, aplikované geoinformatiky které Problémy lze a algoritmy kartografie. provádět Přírodovědecká v konečném fakulta UK.) č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 10. Efektivita algoritmu Analýza efektivity 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 12 / 68 V průmyslové implementaci nejčastěji používáno optimální řešení aneb v

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)) f(n) O( g(n) ) 8) n k O(f(n)) O(f(n) n k ) 7) O(f(n)) O(g(n) 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 ): f(n) k 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)), 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. Tomáš Druhý Bayer bayertom@natur.cuni.cz cyklus je rychlejší. (Katedra aplikované geoinformatiky Problémy a algoritmy kartografie. Přírodovědecká fakulta UK.) 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 Tomáš Bayer (Katedra aplikované geoinformatiky Problémy C n = a algoritmy kartografie. n Přírodovědecká fakulta UK.) 32 / 68 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 Algoritmus 2: 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 = C 1 = 0; pro n > 1 :C n = C n/2 + 1, n = 2 N : půlení vstupu Divide and Conquer. Algoritmus 3: C n = log 2 (N) n(n + 1) 2 C 1 = 0; pro n > 2 :C n = C n/2 + n, n = 2 N : půlení vstupu + kontrola vstupní položky

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 s, 109 s, 1012 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ší Tomáš algoritmus. Bayer bayertom@natur.cuni.cz (Katedra aplikované geoinformatiky Problémy a algoritmy kartografie. Přírodovědecká fakulta UK.) 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 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é), problémy algoritmicky řešitelné (ne deterministicky v polynomiálním čase), problémy algoritmicky neřešitelné. 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. 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 c=0

40 Složitost problému 38. Deterministické a nedeterministické 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 Tomáš ověří Bayer vydáním bayertom@natur.cuni.cz ANO.(Katedra aplikované geoinformatiky Problémy a algoritmy kartografie. Přírodovědecká fakulta UK.) 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. V praxi stačí jeden převod. 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? 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. Tomáš 3) Bayer Jako bayertom@natur.cuni.cz poslední vytváříme (Katedra zpravidla aplikovanéhlavní geoinformatiky Problémy program. a algoritmy kartografie. Přírodovědecká fakulta UK.) 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 47. Metoda hrubé síly Základní techniky návrhu algoritmu 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ů: Inkrementální vkládání, Inkrementální konstrukce, Inkrementální výběr. Vlastnosti: 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 N M, N = {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í). A(P(M)) = A(P(N m n)) = A(P(N)) + A(P(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 (např. 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 53. Divide & Conquer Základní techniky návrhu algoritmu 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í 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é. Tomáš - Není Bayer bayertom@natur.cuni.cz zaručeno, že takové (Katedra aplikované řešenígeoinformatiky bude Problémy vždy a algoritmy kartografie. nalezeno. Přírodovědecká fakulta UK.) 58 / 68

59 57. Kvalita řešení Základní techniky návrhu algoritmu 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 se snaží z množiny M = {m i } vybrat podmnožinu N M takovou, která má minimální sumu ohodnocení W = w(n) = N M w(m i ) = min. Hodnotu W i = 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 účelové funkce m = arg min (w(m i )) m i M ve snaze nalézt globální minimum/maximum účelové funkce. N = arg min ( w(m i )). m i M N M Následně Ñ = {N + m}. Pokud w(ñ) < w(n): N = {N + m}, M = {M m}. Globální minimum nemusí být vždy nalezeno, algoritmus 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 s nejnižším resp. nejvyšším ohodnocením w, dočasně ho přidáme k existující množině prvků Ñ = {N + m}. Pro novou množinu N určíme w(n). Pokud : w(ñ) < W Přidáním prvku m se snížilo ohodnocení množiny N, updatujeme minimum W = w(ñ). Pak N = Ñ. V opačném případně množinu N ponecháme beze změny. Body 2,3 opakujeme pro všechna m. Po prohledání všech m i M účelová funkce w(n) splňuje podmínku minimálního ohodnocení. 61 / 68

62 Základní techniky návrhu algoritmu 60. Heuristika: TSP, Nearest Neighbor 62 / 68

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 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í: Použití: 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. 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

68 66. Volba algoritmu Volba algoritmu a problém Při volbě algoritmu nutno zohlednit: Jaké jsou požadavky na vstupní / výstupní data? Jaká je velikost vstupních / výstupních dat, tj. pro jaká n problém řeším? Požaduji exaktní / přibližné řešení? Jak jsem schopen ověřit kvalitu přibližného řešení? Je problém řešitelný pro libovolnou konfiguraci vstupních dat? Existují speciální případy, které musí být řešeny zvlášt nebo je lze zanedbat? Lze problém efektivně převést na jiný problém? Jak má být problém rychle vyřešen, tj. on-line, nebo mohu čekat sekundy, minuty, hodiny či dny? Jak dlouho má vývoj aplikace trvat, tj. kolik času a financí je do řešení problému možno investovat? O jaký typ problému se jedná, nepatří mezi NP problémy? Lze urychlit / vylepšit řešení volbou vhodných datových struktur? Lze urychlit / vylepšit řešení předzpracováním dat? 68 / 68

Algoritmy používané ve výpočetní geometrii

Algoritmy používané ve výpočetní geometrii Algoritmy používané ve výpočetní geometrii Hrubá síla. Inkrementální metoda. Zametací přímka. Heuristiky. Rozděl a panuj. Tomáš Bayer bayertom@natur.cuni.cz Katedra aplikované geoinformatiky a kartografie.

Více

Problémy a algoritmy

Problémy a algoritmy Problémy a algoritmy Algoritmus. Vlastnosti algoritmů. Dělení algoritmů. Složitost algoritmů. Tomáš Bayer bayertom@natur.cuni.cz Katedra aplikované geoinformatiky a kartografie. Přírodovědecká fakulta

Více

Časová složitost / Time complexity

Č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

Více

Tato tematika je zpracována v Záznamy přednášek: str

Tato tematika je zpracována v Záznamy přednášek: str Obsah 10. přednášky: Souvislosti Složitost - úvod Výpočet časové složitosti Odhad složitosti - příklady Posuzování složitosti Asymptotická složitost - odhad Přehled technik návrhů algoritmů Tato tematika

Více

ALGORITMY A DATOVÉ STRUKTURY

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

Více

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

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

Úvod do informatiky. Miroslav Kolařík

Úvod do informatiky. Miroslav Kolařík Úvod do informatiky přednáška jedenáctá Miroslav Kolařík Zpracováno dle P. Martinek: Základy teoretické informatiky, http://phoenix.inf.upol.cz/esf/ucebni/zti.pdf Obsah 1 Složitost algoritmu 2 Třídy složitostí

Více

Třídy složitosti P a NP, NP-úplnost

Třídy složitosti P a NP, NP-úplnost Třídy složitosti P a NP, NP-úplnost Cíle přednášky: 1. Definovat, za jakých okolností můžeme problém považovat za efektivně algoritmicky řešitelný. 2. Charakterizovat určitou skupinu úloh, pro které není

Více

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

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

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

Dynamické datové struktury III.

Dynamické datové struktury III. Dynamické datové struktury III. Halda. Tomáš Bayer bayertom@natur.cuni.cz Katedra aplikované geoinformatiky a kartografie, Přírodovědecká fakulta UK. Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované

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

TGH05 - Problém za milion dolarů.

TGH05 - Problém za milion dolarů. TGH05 - Problém za milion dolarů. Jan Březina Technical University of Liberec 20. března 2012 Časová složitost algoritmu Závislost doby běhu programu T na velikosti vstupních dat n. O(n) notace, standardní

Více

Algoritmizace Dynamické programování. Jiří Vyskočil, Marko Genyg-Berezovskyj 2010

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

Více

Složitost algoritmů. Karel Richta a kol. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Karel Richta a kol.

Složitost algoritmů. Karel Richta a kol. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Karel Richta a kol. 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

Více

Prohledávání do šířky = algoritmus vlny

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é

Více

Booleovská algebra. Booleovské binární a unární funkce. Základní zákony.

Booleovská algebra. Booleovské binární a unární funkce. Základní zákony. Booleovská algebra. Booleovské binární a unární funkce. Základní zákony. Tomáš Bayer bayertom@natur.cuni.cz Katedra aplikované geoinformatiky a kartografie, Přírodovědecká fakulta UK. Tomáš Bayer bayertom@natur.cuni.cz

Více

NP-ÚPLNÉ PROBLÉMY. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze

NP-ÚPLNÉ PROBLÉMY. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze NP-ÚPLNÉ PROBLÉMY Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze BI-GRA, LS 2010/2011, Lekce 13 Evropský sociální fond Praha & EU: Investujeme do

Více

Digitální učební materiál

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_148_IVT Autor: Ing. Pavel Bezděk Tematický okruh:

Více

Složitost Filip Hlásek

Složitost Filip Hlásek Složitost Filip Hlásek Abstrakt. Příspěvek popisuje dva základní koncepty teoretické informatiky, Turingovy stroje a složitost. Kromě definic důležitých pojmů uvádí také několik souvisejících tvrzení,

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

Dynamické programování

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)

Více

Algoritmizace. Jiří Vyskočil, Marko Genyg-Berezovskyj 2010

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

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

Různé algoritmy mají různou složitost

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

Více

Algoritmizace prostorových úloh

Algoritmizace prostorových úloh INOVACE BAKALÁŘSKÝCH A MAGISTERSKÝCH STUDIJNÍCH OBORŮ NA HORNICKO-GEOLOGICKÉ FAKULTĚ VYSOKÉ ŠKOLY BÁŇSKÉ - TECHNICKÉ UNIVERZITY OSTRAVA Algoritmizace prostorových úloh Třídění, vyhledávání Daniela Szturcová

Více

Úvod do informatiky. Miroslav Kolařík

Úvod do informatiky. Miroslav Kolařík Úvod do informatiky přednáška devátá Miroslav Kolařík Zpracováno dle učebního textu prof. Bělohlávka: Úvod do informatiky, KMI UPOL, Olomouc 2008 Obsah 1 Kombinatorika: princip inkluze a exkluze 2 Počítání

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

Digitální učební materiál

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:

Více

Výpočetní složitost algoritmů

Výpočetní složitost algoritmů Výpočetní složitost algoritmů Slajdy pro výuku na KS Ondřej Čepek Sylabus 1. Definice časové a prostorové složitosti algoritmů. Příklady na konkrétních algoritmech. Prostředky pro popis výpočetní složitosti

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

Vztah teorie vyčíslitelnosti a teorie složitosti. IB102 Automaty, gramatiky a složitost, /31

Vztah teorie vyčíslitelnosti a teorie složitosti. IB102 Automaty, gramatiky a složitost, /31 Vztah teorie vyčíslitelnosti a teorie složitosti IB102 Automaty, gramatiky a složitost, 2. 12. 2013 1/31 IB102 Automaty, gramatiky a složitost, 2. 12. 2013 2/31 Časová složitost algoritmu počet kroků výpočtu

Více

Projekční algoritmus. Urychlení evolučních algoritmů pomocí regresních stromů a jejich zobecnění. Jan Klíma

Projekční algoritmus. Urychlení evolučních algoritmů pomocí regresních stromů a jejich zobecnění. Jan Klíma Urychlení evolučních algoritmů pomocí regresních stromů a jejich zobecnění Jan Klíma Obsah Motivace & cíle práce Evoluční algoritmy Náhradní modelování Stromové regresní metody Implementace a výsledky

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

PŘÍJMENÍ a JMÉNO: Login studenta: DATUM:

PŘÍJMENÍ a JMÉNO: Login studenta: DATUM: PŘÍJMENÍ a JMÉNO: Login studenta: DATUM: Závěrečný test z předmětu Vyčíslitelnost a složitost Doba trvání: 90 minut Max. zisk: 100 bodů Obecné pokyny: Po obdržení testu ihned do pravého horního rohu napište

Více

Výroková a predikátová logika - III

Výroková a predikátová logika - III Výroková a predikátová logika - III Petr Gregor KTIML MFF UK ZS 2017/2018 Petr Gregor (KTIML MFF UK) Výroková a predikátová logika - III ZS 2017/2018 1 / 16 2-SAT 2-SAT Výrok je v k-cnf, je-li v CNF a

Více

IB111 Úvod do programování skrze Python

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ě

Více

Třída PTIME a třída NPTIME. NP-úplnost.

Třída PTIME a třída NPTIME. NP-úplnost. VAS - Přednáška 9 Úvod ke kursu. Složitost algoritmu. Model RAM. Odhady složitosti. Metoda rozděl a panuj. Greedy algoritmy. Metoda dynamického programování. Problémy, třídy složitosti problémů, horní

Více

Binární soubory (datové, typované)

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

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

Třída PTIME a třída NPTIME. NP-úplnost.

Třída PTIME a třída NPTIME. NP-úplnost. VAS - Přednáška 9 Úvod ke kursu. Složitost algoritmu. Model RAM. Odhady složitosti. Metoda rozděl a panuj. Greedy algoritmy. Metoda dynamického programování. Problémy, třídy složitosti problémů, horní

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

Časová a prostorová složitost algoritmů

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

Více

Voronoiův diagram. RNDr. Petra Surynková, Ph.D. Univerzita Karlova v Praze Matematicko-fyzikální fakulta

Voronoiův diagram. RNDr. Petra Surynková, Ph.D. Univerzita Karlova v Praze Matematicko-fyzikální fakulta 12 RNDr., Ph.D. Katedra didaktiky matematiky Univerzita Karlova v Praze Matematicko-fyzikální fakulta petra.surynkova@mff.cuni.cz http://surynkova.info Definice V( P) nad množinou bodů P { p v rovině 1,

Více

Datové struktury 2: Rozptylovací tabulky

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

Více

Základy algoritmizace

Základy algoritmizace Algoritmus Toto je sice na první pohled pravdivá, ale při bližším prozkoumání nepřesná definice. Například některé matematické postupy by této definici vyhovovaly, ale nejsou algoritmy. Přesné znění definice

Více

Dynamické datové struktury IV.

Dynamické datové struktury IV. Dynamické datové struktury IV. Prioritní fronta. Tomáš Bayer bayertom@natur.cuni.cz Katedra aplikované geoinformatiky a kartografie, Přírodovědecká fakulta UK. Tomáš Bayer bayertom@natur.cuni.cz (Katedra

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

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

Algoritmizace řazení Bubble Sort

Algoritmizace řazení Bubble Sort Algoritmizace řazení Bubble Sort Cílem této kapitoly je seznámit studenta s třídícím algoritmem Bubble Sort, popíšeme zde tuto metodu a porovnáme s jinými algoritmy. Klíčové pojmy: Třídění, Bubble Sort,

Více

Digitální učební materiál

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:

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

Algoritmizace složitost rekurzivních algoritmů. Jiří Vyskočil, Marko Genyg-Berezovskyj 2010

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

Více

Základní informace o předmětu Otázka:

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ů

Více

Triangulace. RNDr. Petra Surynková, Ph.D. Univerzita Karlova v Praze Matematicko-fyzikální fakulta.

Triangulace. RNDr. Petra Surynková, Ph.D. Univerzita Karlova v Praze Matematicko-fyzikální fakulta. 11 RNDr., Ph.D. Katedra didaktiky matematiky Univerzita Karlova v Praze Matematicko-fyzikální fakulta petra.surynkova@mff.cuni.cz http://surynkova.info Význam triangulace trojúhelník je základní grafický

Více

Algoritmizace diskrétních. Ing. Michal Dorda, Ph.D.

Algoritmizace diskrétních. Ing. Michal Dorda, Ph.D. Algoritmizace diskrétních simulačních modelů Ing. Michal Dorda, Ph.D. 1 Úvodní poznámky Při programování simulačních modelů lze hlavní dílčí problémy shrnout do následujících bodů: 1) Zachycení statických

Více

DobSort. Úvod do programování. DobSort Implementace 1/3. DobSort Implementace 2/3. DobSort - Příklad. DobSort Implementace 3/3

DobSort. Úvod do programování. DobSort Implementace 1/3. DobSort Implementace 2/3. DobSort - Příklad. DobSort Implementace 3/3 DobSort Ú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 V roce 1980 navrhl Dobosiewicz variantu (tzv. DobSort),

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

12. Globální metody MI-PAA

12. Globální metody MI-PAA Jan Schmidt 2011 Katedra číslicového návrhu Fakulta informačních technologií České vysoké učení technické v Praze Zimní semestr 2011/12 MI-PAA EVROPSKÝ SOCIÁLNÍ FOND PRAHA & EU: INVESTUJENE DO VAŠÍ BUDOUCNOSTI

Více

Základy algoritmizace a programování

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;

Více

Da D to t v o é v ty t py IB111: Datové typy

Da D to t v o é v ty t py IB111: Datové typy Datové typy IB111: Datové typy Data a algoritmizace jaká data potřebuji pro vyřešení problému? jak budu data reprezentovat? jaké operaci s nimi potřebuji provádět? Navržení práce s daty je velice důležité

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

Algoritmizace prostorových úloh

Algoritmizace prostorových úloh INOVACE BAKALÁŘSKÝCH A MAGISTERSKÝCH STUDIJNÍCH OBORŮ NA HORNICKO-GEOLOGICKÉ FAKULTĚ VYSOKÉ ŠKOLY BÁŇSKÉ - TECHNICKÉ UNIVERZITY OSTRAVA Algoritmizace prostorových úloh Grafové úlohy Daniela Szturcová Tento

Více

Dynamické programování

Dynamické programování ALG 11 Dynamické programování Úloha batohu neomezená Úloha batohu /1 Úloha batohu / Knapsack problem Máme N předmětů, každý s váhou Vi a cenou Ci (i = 1, 2,..., N) a batoh s kapacitou váhy K. Máme naložit

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

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

3. Třídy P a NP. Model výpočtu: Turingův stroj Rozhodovací problémy: třídy P a NP Optimalizační problémy: třídy PO a NPO MI-PAA

3. Třídy P a NP. Model výpočtu: Turingův stroj Rozhodovací problémy: třídy P a NP Optimalizační problémy: třídy PO a NPO MI-PAA Jan Schmidt 2011 Katedra číslicového návrhu Fakulta informačních technologií České vysoké učení technické v Praze Zimní semestr 2011/12 MI-PAA EVROPSKÝ SOCIÁLNÍ FOND PRAHA & EU: INVESTUJENE DO VAŠÍ BUDOUCNOSTI

Více

Úloha - rozpoznávání číslic

Úloha - rozpoznávání číslic Úloha - rozpoznávání číslic Vojtěch Franc, Tomáš Pajdla a Tomáš Svoboda http://cmp.felk.cvut.cz 27. listopadu 26 Abstrakt Podpůrný text pro cvičení předmětu X33KUI. Vysvětluje tři způsoby rozpoznávání

Více

Markov Chain Monte Carlo. Jan Kracík.

Markov Chain Monte Carlo. Jan Kracík. Markov Chain Monte Carlo Jan Kracík jan.kracik@vsb.cz Princip Monte Carlo integrace Cílem je (přibližný) výpočet integrálu I(g) = E f [g(x)] = g(x)f (x)dx. (1) Umíme-li generovat nezávislé vzorky x (1),

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

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

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

Problémy třídy Pa N P, převody problémů

Problémy třídy Pa N P, převody problémů Problémy třídy Pa N P, převody problémů Cvičení 1. Rozhodněte o příslušnosti následujících problémů do tříd Pa N P(N PCověříme později): a)jedanýgrafsouvislý? danýproblémjeztřídy P,řešíhonapř.algoritmyDFS,BFS.

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

Algoritmy a algoritmizace

Algoritmy a algoritmizace Otázka 21 Algoritmy a algoritmizace Počítačové programy (neboli software) umožňují počítačům, aby přestaly být pouhou stavebnicí elektronických a jiných součástek a staly se pomocníkem v mnoha lidských

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

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

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

Zobrazte si svazy a uspořádané množiny! Jan Outrata

Zobrazte si svazy a uspořádané množiny! Jan Outrata LatVis Zobrazte si svazy a uspořádané množiny! Jan Outrata Motivace potřeba visualizovat matematické (algebraické) struktury rychle, přehledně a automaticky počítačovými prostředky ruční kreslení je zdlouhavé

Více

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

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

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

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

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

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

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

Výroková a predikátová logika - II

Výroková a predikátová logika - II Výroková a predikátová logika - II Petr Gregor KTIML MFF UK ZS 2015/2016 Petr Gregor (KTIML MFF UK) Výroková a predikátová logika - II ZS 2015/2016 1 / 18 Základní syntax Jazyk Výroková logika je logikou

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

Asymptotická složitost algoritmů

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

Více

Dynamické datové struktury I.

Dynamické datové struktury I. Dynamické datové struktury I. Seznam. Fronta. Zásobník. Tomáš Bayer bayertom@natur.cuni.cz Katedra aplikované geoinformatiky a kartografie, Přírodovědecká fakulta UK. Tomáš Bayer bayertom@natur.cuni.cz

Více

STATISTICKÉ ODHADY Odhady populačních charakteristik

STATISTICKÉ ODHADY Odhady populačních charakteristik STATISTICKÉ ODHADY Odhady populačních charakteristik Jak stanovit charakteristiky rozložení sledované veličiny v základní populaci? Populaci většinou nemáme celou k dispozici, musíme se spokojit jen s

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

Úvod do problematiky

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

Více

Prioritní fronta, halda

Prioritní fronta, halda Prioritní fronta, halda Priority queue, heap Jan Kybic http://cmp.felk.cvut.cz/~kybic kybic@fel.cvut.cz 2016 2018 1 / 26 Prioritní fronta Halda Heap sort 2 / 26 Prioritní fronta (priority queue) Podporuje

Více

Algoritmizace- úvod. Ing. Tomáš Otáhal

Algoritmizace- úvod. Ing. Tomáš Otáhal Algoritmizace- úvod Ing. Tomáš táhal Historie 9. století perský matematik a astronom Mohammed Al-Chorezím v latinském přepise příjmení= algoritmus Nejstarší algoritmus Euklides řecký matematik, 4. století

Více

11 VYPOČITATELNOST A VÝPOČTOVÁ SLOŽITOST

11 VYPOČITATELNOST A VÝPOČTOVÁ SLOŽITOST 11 VYPOČITATELNOST A VÝPOČTOVÁ SLOŽITOST Na první přednášce jsme si neformálně zavedli pojmy problém a algoritmus pro jeho řešení, které jsme na počítači vykonávali pomocí programů. Jako příklad uveďme

Více