Tato tematika je zpracována v Záznamy přednášek: str
|
|
- Renata Vítková
- před 5 lety
- Počet zobrazení:
Transkript
1 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 je zpracována v Záznamy přednášek: str Úlohy (řešení na konci přednášky) Př.1: Napište program pro výpočet funkce g(x) s přesností ε. g(x)= 1 + x/1! + x 2 /2! + x 3 /3! + x 4 /4! +... Př.2: Je možno najít takovou cestu, abychom prošli všemi mosty, ale každým z nich pouze jednou? (Euler: úloha o sedmi mostech města Královce) Př.3: Nalezněte všechny způsoby, kterými může šachová figurka jezdce proskákat všechna políčka šachovnice, přičemž může na každé políčko skočit pouze jedenkrát. Přednášky KIV/PPA1, A. Netrvalová, přednáška
2 Souvislosti Řešitelnost problému - zúžení na tzv. rozhodovací problém (Ano/Ne). Algoritmicky rozhodnutelný problém - algoritmus řeší rozhodovací problém, tj. pro vstup poskytne správný výstup v konečném čase Problémy - P, NP, převoditelnost, SAT (v PPA2) Efektivní algoritmus - řeší problém s minimálními nároky na hardware v co nejrychlejším čase, cílem je optimální využití existujících prostředků Nejjednodušší vs. nejrychlejší Nejjednodušší řešení - jednoduchá implementace - delší čas běhu Nejrychlejší řešení - náročná implementaci (časově kritické aplikace) Reálné aplikace kompromis Analýza efektivity - empiricky (porovnáním náhodná, nevhodná a reálná data) - exaktně (využití matematické analýzy) Cíl analýzy - porovnání algoritmů řešících stejný problém - odhad výkonnosti (?pro jaký typ vstupu) Strana 2 (celkem 20)
3 Složitost - úvod Složitost vztah algoritmu k prostředkům (čas a velikost paměti) Časová složitost - množina vstupních dat počet operací výpočtu - čas je dán počtem provedených operací (doba provedení operace nezáleží na rozsahu vstupních dat) Paměťová složitost - závislost paměťových nároků na vstupních datech Časová složitost časté potíže a omyly - podcenění nezkušenost, řešení triviálních úloh - použití rychlejšího PC problém vyřeší (NE) - zrychlení dílčími úpravami (NE) Řešení - použít rychlejší algoritmus (existuje-li) Výpočet časové složitosti stanovujeme v závislosti na - konkrétních datech - na základě rozsahu dat - analýzou algoritmu obvykle složité Příklad výpočtu u triviálního algoritmu Operace: p přiřazení,c porovnání, s součet Strana 3 (celkem 20)
4 static int soucetprvku(int pole){ int suma = 0; // p1 for(int i=0; i<pole.length; i++) { // p2+c1+s1+p3 suma += pole[i]; // s2+p4 return suma; C(n) = p1+p2+(n+1)c1+n(s1+p3)+n(s2+p4) pokud a = (p=c=s) C(n) = a+a+(n+1)a+n(a+a)+n(a+a)= 3a+5an a trvá jednotku času C(n) = 3+5n C(n) = n - lineární složitost int n = 100; int sum = 0; for (int i = 0; i < n; i++){ for (int j = 0; j < i; j++){ sum += i+j; n = 100; sum = 0; for (int i = 0; i < n; i++){ for (int j = 0; j < n; j++){ sum += i+j; PŘÍKLAD: Která programová sekvence proběhne rychleji? Strana 4 (celkem 20)
5 První kód: vnější cyklus 100x, vnitřní 1,2,...,99, celkem n(n-1)/2=100/2*99=4950x Druhý kód: vnější cyklus 100x, vnitřní cyklus 100, celkem 100*100= První cyklus je rychlejší. Odhad složitosti - příklady Hrubý odhad orientace podle cyklů Př.1: Určete řádovou složitost následujícího algoritmu. Sledovanou operací je sčítání.... for(int i = 0; i < m; i++) { for(int j = 0; j < n; j++) { c[i][j] := a[i][j] + b[i][j]; Složitost algoritmu O(m *n) Př.2: Sledovanou operací je násobení ve výrazu j = j * 2 int n = 8; for(int i = 0; i < n; i++) { int j = 1; do { j = j * 2; while (j < n); Složitost algoritmu je O(n log 2 (n)) Strana 5 (celkem 20)
6 Př.3: Určete řádovou složitost následující programové sekvence.... min = a[0]; for(int i = 0; i < n; i++) { if (min < a[i]) { min = a[i]; max = a[0]; for(int i = 0; i < n; i++){ if (max > a [i]) { max = a [i]; Složitost algoritmu: O(2*n) Př.4: Určete řádovou složitost následujícího algoritmu. Sledovanou operací je: a = a / 3 final int n = 15; for(int i = 1; i < n ; i++) { float a = n; do { a = a / 3; while (a > 1); Složitost? Strana 6 (celkem 20)
7 Složitost algoritmu je O((n-1)*log 3 (n)). Př.5: Určete řádový odhad O následující funkce, pokud při zvětšení dat na n+1 dojde ke zvětšení počtu operací o 2 n. C1 = 2, Cn = 2 n + Cn 1 pro n > 1 C 1 = 2 C 2 = C1 = C 3 = C2 = C n = 2 n + 2 ( n - 1) ( n + 1) n n Cn = 2 2 = i = 2 = n + i n Složitost algoritmu je O(n 2 ). Posuzování složitosti - nejhorší případ: max(t1(n),t2(n),...,tn(n)) - průměrný případ: ~t(t1(n),t2(n),...,tn(n)) - nejlepší případ: min(t1(n),t2(n),...,tn(n)) Strana 7 (celkem 20)
8 Malý rozdíl mezi nejlepším a nejhorším případem - dobře navržený algoritmus Optimalizace algoritmu - zmenšení rozdílu Když nejlepší = nejhorší případ, nelze optimalizovat Asymptotická složitost - odhad Složitější algoritmy - přesné (algebraické) vyjádření složitosti algoritmu matematicky náročné Ve většině případů postačí vhodný odhad Strana 8 (celkem 20)
9 Asymptotická složitost ( pro n ) se limitně blíží k algebraické hodnotě složitosti Odhady - asymptotický horní odhad: O(g(N)) - asymptotický dolní odhad: Ω (g(n)) - asymptotický oboustranný odhad: Θ(g(N)) k, k1, k2 - konstanty, f(n) - fce, g(n) - odhad Strana 9 (celkem 20)
10 Strana 10 (celkem 20)
11 Př. 1: Problém s dobou řešení k n 2 je na řešen na PC pro n = Jak je možné zvětšit vstup, aby byla úloha vyřešena na 10x rychlejším PC v tomtéž čase? Staré PC: k ;nové PC 10 k k = k n 2 n = = 31622,7766. Poměr se zvětší 31623/10000 ~ 3 Př. 2: Algoritmus A1 - pro řešení úlohy použije 10000n operací Algoritmus A2 - použije 12n operací Pro jakou množinu dat je výhodnější použít A2? 12n n n n < 0, n 1 = -4; n 2 = 837 Pro n < 837 je vhodnější algoritmus A2. Ukázka časové složitosti Složitost n = 10 n = 100 n = 1000 logaritmická lineární kvadratická kubická exponenciální faktoriálová Strana 11 (celkem 20)
12 P - polynomiální algoritmy. - výpočetně zvládnutelné problémy V praxi - nejčastěji O(n),O(n log(n),o(n 2 ),O(n 3 ) Problémy - aritmetické operace, řazení,vyhledávání, některé grafové algoritmy,... NP - nedeterministicky polynomiální algoritmy (bude v PPA2) Přehled technik návrhů algoritmů - Metoda hrubé síly (Brute Force Algorithm) - Rozděl a panuj (Divide and Conquer) - Heuristické algoritmy (Heuristic Algorithm) - Aproximační algoritmy - Pravděpodobnostní algoritmy 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, s faktoriálem 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ší. Rozděl a panuj Založena na opakovaném rozdělování problému na menší a jednodušší podproblémy. Dělení prováděno dokud není řešení podproblému triviální. Takové řešení Strana 12 (celkem 20)
13 umíme zpravidla nalézt bez složitých výpočtu. 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) Heuristické algoritmy Charakteristika heuristiky: - vygenerováno velké množství potenciálních řešení, v nich hledáno nejlepší možné řešení Vygenerovaná množina nemusí obsahovat nejlepší možné řešení. Řešení nemusí být nalezeno rychle, některé heuristiky pracují poměrně dlouho. Není zaručeno, že takové řešení bude vždy nalezeno Aproximační algoritmy - pro úlohy, pro které není k dispozici polynomiální algoritmus Cílem nalezení přípustného řešení, hodnocení kvality aproximace, snaha o co nejrychlejší konvergenci Pravděpodobnostní algoritmy Algoritmy zavádějí do procesu řešení nedeterministický prvek, tj. prvek náhodnosti. Opakovaný běh algoritmu nad stejnou vstupní množinou může poskytovat různé výsledky, proto se algoritmy spouštějí opakovaně Genetické algoritmy - princip evoluční biologie, techniky napodobující biologické procesy jako křížení, mutace, dědičnost,... k postupnému zlepšování dosaženého výsledku Strana 13 (celkem 20)
14 Úlohy Př.1 (existuje více algoritmů) - nevhodný: každý člen součtu pomocí funkcí public class EnaX { ŠPATNĚ static private Scanner sc = new Scanner(System.in); static final double EPS = 1e-5; static long fak(int n){ long vysledek = 1; for (int i=2; i<=n; i++){ vysledek *= i; return vysledek; static double spoctienax(int x){ double soucet = 1; double clen = 1; int i = 1; do { clen = Math.pow(x,i)/ fak(i); i++; soucet += clen; while(clen > EPS); return soucet; Zadej x:15 Vypocteny vysledek = Spravny vysledek = Strana 14 (celkem 20)
15 Řešení - použijte iterační výpočet (nepoužívejte opakovaný výpočet mocniny a faktoriálu): a 0 =1, a 1 = a 0 *x/1, a 2 = a 1 *x/2, a 3 = a 2 *x/3,... import java.util.*; public class EnaX { static private Scanner sc = new Scanner(System.in); static final double EPS = 1e-5; static double spoctienax(int x){ double soucet = 1; double clen = 1; // clen je scitanec int i = 1; // i-ty scitanec do { clen *= (double)x / i++ ; // spocti clen soucet += clen; // a přičti ho k součtu while( clen > EPS); // je-li mensi nez eps, hotovo return soucet; public static void main(string[] args) { DOBŘE System.out.print("Zadej x:"); int x = sc.nextint(); Zadej x:15 System.out.println("Vypocteno Vypocteny vysledek = " = spoctienax(x)); System.out.println("Spravny Spravny vysledek vysledek = = " + Math.exp(x)); Strana 15 (celkem 20)
16 Př.2 Řešení neexistuje, tj. takovou cestu najít nelze Euler (r. 1741) - Eulerův tah (path) lze tehdy a jen tehdy, není-li žádný anebo jsou-li 2 vrcholy grafu lichého stupně (začátek a konec cesty) Alternativní úloha Eulerův uzavřený tah, tj. smyčka (circuit) - začátek a konec cesty v tomtéž vrcholu (nesmí být vrchol lichého stupně) (více v PPA2) Příklad na Eulerův tah: Strana 16 (celkem 20)
17 Př.3 Jednoduchá varianta: Úloha: Nalezněte nejkratší cestu šachovým koněm z jednoho pole (třeba D3) na všechna ostatní pole. Postup: 0. Na startovní pole zapiš číslo 0 1. Všechna dosud neoznačená pole dostupná jedním tahem z pole označeného 0 označ 1 2. Všechna dosud neoznačená pole dostupná jedním tahem z pole označeného 1 označ atd. Nalezení cesty pak proveď odzadu (backtracking): Je-li cílové políčko označené N, hledáme políčko dostupné z něj jedním tahem a označené N-1 - až k políčku 0. Strana 17 (celkem 20)
18 Naše úloha 1. Prověříme všechny možnosti, tj. řešení hrubou silou - exponenciální složitost, neboť v ideálním případu můžeme skočit až na 8 polí O(8 n*n ) = 8 64 ~ možností Pokud by ověření 1 možnosti trvalo jen 1ns, celý výpočet let! 2. Zjednodušení - počet tahů je 63, ale skončíme neúspěchem mnohem dříve (po 4, 6, 8 tazích): Strana 18 (celkem 20)
19 - z krajního políčka lze pokračovat 2, 3, 4 a 6 skoky - na 8 políček lze skočit pouze z 1. tahu (počet možností skoku z políčka je n-1, neboť skok musí být z přípustné pozice) - poslední tah má pouze jednu možnost, předposlední dvě možnosti,... - řada tahů budou tzv. vynucené zbude pouze jedna možnost pro celý řetězec tahů Zpřesněný horní odhad: 1 4 *2 8 *3 20 *5 16 *7 15 = možností, tj let! Pro šachovnici 8x8 polí není úloha zcela řešitelná. V současné době (s použitím PC) je úloha kompletně řešitelná pro šachovnici 6x6 polí. Zpřesněný odhad: 1 4 *2 8 *3 12 *5 8 *7 3 = možností, tj. 34 let. Skutečný výpočet (6x6): možností sec. Java Pentium Centrino 1,5 GHz Kvalifikovaný odhad pro 8x8: skutečné možnosti 10-5 z horního odhadu = možností, tj let. Strana 19 (celkem 20)
20 Úloha pro zájemce (prezentace řešení na další přednášce) Je dána posloupnost celých čísel a 1, a 2,... a n. Nalezněte celistvý úsek posloupnosti a i až a j, takový, aby součet hodnot těchto prvků byl maximální. Nezapomeňte, že indexy i, j představují pořadí prvků, tj. i, j > 0. Ilustrační příklady: {-2, 11, -4, 13, -5, 2 í = 2, j = 4, s = 20 {1, -3, 4, -2, -1, 6 í = 3, j = 6, s = 7 {-1, -3, -5, -7, -2 í = 0, j = 0, s = 0 Pro řešení tohoto problému lze napsat odlišné, více či méně efektivní algoritmy. Strana 20 (celkem 20)
Tato tematika je zpracována v Záznamy přednášek: str
Obsah 9. přednášky: Fáze programování Řešení problémů, dekompozice a program Dekompozice objektový přístup* Efektivita algoritmů Složitost úvod Výpočet časové složitosti Odhad složitosti - příklady Posuzování
VíceČ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íceAlgoritmy 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íceProhledá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íceObsah 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íceAlgoritmizace 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íceRů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íce10. 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íceIterační výpočty Projekt č. 2
Dokumentace k projektu pro předměty IUS & IZP Iterační výpočty Projekt č. 2 Autor: Jan Kaláb (xkalab00@stud.fit.vutbr.cz) Úvod Úkolem bylo napsat v jazyce C program sloužící k výpočtům matematických funkcí
VíceDynamické 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íceAlgoritmizace a programování
Algoritmizace a programování Řídicí struktury jazyka Java Struktura programu Příkazy jazyka Blok příkazů Logické příkazy Ternární logický operátor Verze pro akademický rok 2012/2013 1 Struktura programu
VíceALGORITMY 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íceAlgoritmizace. 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íceDigitá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íceSlož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íceAsymptotická 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íce3. přednáška. Obsah: Řídící struktury sekvence, if-else, switch, for, while, do-while. Zpracování posloupnosti
Obsah: Řídící struktury sekvence, if-else, switch, for, while, do-while. Zpracování posloupnosti 3. přednáška nalezení největšího prvku, druhého nejvyššího prvku, algoritmus shozeného praporku. Algoritmizace
VíceČ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ÚVODNÍ ZNALOSTI. datové struktury. správnost programů. analýza algoritmů
ÚVODNÍ ZNALOSTI datové struktury správnost programů analýza algoritmů Datové struktury základní, primitivní, jednoduché datové typy: int, char,... hodnoty: celá čísla, znaky, jednoduché proměnné: int i;
VíceAlgoritmy 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íceA4B33ALG 2010/05 ALG 07. Selection sort (Select sort) Insertion sort (Insert sort) Bubble sort deprecated. Quicksort.
A4B33ALG 2010/05 ALG 07 Selection sort (Select sort) Insertion sort (Insert sort) Bubble sort deprecated Quicksort Stabilita řazení 1 Selection sort Neseřazeno Seřazeno Start T O U B J R M A K D Z E min
VíceBiná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íceSlož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íceDoba 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Úvod do programování - Java. Cvičení č.4
Úvod do programování - Java Cvičení č.4 1 Sekvence (posloupnost) Sekvence je tvořena posloupností jednoho nebo více příkazů, které se provádějí v pevně daném pořadí. Příkaz se začne provádět až po ukončení
VíceDigitá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íce11 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íce3. ú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íceSlož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íceDatabá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Ú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íceDatové 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íceRekurze. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 12.
Rekurze 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) Rekurze 161 / 344 Osnova přednášky
VíceVý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Řídicí struktury. alg3 1
Řídicí struktury Řídicí struktura je programová konstrukce, která se skládá z dílčích příkazů a předepisuje pro ně způsob provedení Tři druhy řídicích struktur: posloupnost, předepisující postupné provedení
VíceFaculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague
1 / 40 regula Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague regula 1 2 3 4 5 regula 6 7 8 2 / 40 2 / 40 regula Iterační pro nelineární e Bud f reálná funkce
VíceÚ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íceNP-Ú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íceDynamické programování
ALG 0 Dynamické programování zkratka: DP Zdroje, přehledy, ukázky viz https://cw.fel.cvut.cz/wiki/courses/a4balg/literatura_odkazy 0 Dynamické programování Charakteristika Neřeší jeden konkrétní typ úlohy,
VíceProblé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íceRozklad problému na podproblémy
Rozklad problému na podproblémy Postupný návrh programu rozkladem problému na podproblémy zadaný problém rozložíme na podproblémy pro řešení podproblémů zavedeme abstraktní příkazy s pomocí abstraktních
VíceVyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 21.
Vyhledávání doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Prezentace ke dni 21. září 2018 Jiří Dvorský (VŠB TUO) Vyhledávání 242 / 433 Osnova přednášky
VíceNPRG030 Programování I, 2018/19 1 / :25:37
NPRG030 Programování I, 2018/19 1 / 26 24. 9. 2018 10:25:37 Čísla v algoritmech a programech 10 26 Poloměr vesmíru 2651 studujících studentů MFF UK 3.142857... Ludolfovo číslo 10 16 stáří vesmíru v sekundách!!!
Více5. přednáška - Rozklad problému na podproblémy
5. přednáška - Rozklad problému na podproblémy Obsah přednášky: Rozklad problému na podproblémy. Rekurze. Algoritmizace (Y36ALG), Šumperk - 5. přednáška 1 Rozklad problému na podproblémy Postupný návrh
VíceAlgoritmus pro hledání nejkratší cesty orientovaným grafem
1.1 Úvod Algoritmus pro hledání nejkratší cesty orientovaným grafem Naprogramoval jsem v Matlabu funkci, která dokáže určit nejkratší cestu v orientovaném grafu mezi libovolnými dvěma vrcholy. Nastudoval
VíceZá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íceKTE / ZPE Informační technologie
4 KTE / ZPE Informační technologie Ing. Petr Kropík, Ph.D. email: pkropik@kte.zcu.cz tel.: +420 377 63 4639, +420 377 63 4606 (odd. informatiky) Katedra teoretické elektrotechniky FEL ZČU Plzeň Největší
VíceProblé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íceZáklady programování (IZP)
Základy programování (IZP) Sedmé počítačové cvičení Brno University of Technology, Faculty of Information Technology Božetěchova 1/2, 612 66 Brno - Královo Pole Petr Veigend, iveigend@fit.vutbr.cz 2018/2019,
VíceZá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Řešení: PŘENESVĚŽ (N, A, B, C) = přenes N disků z A na B pomocí C
Hanojské věže - 3 kolíky A, B, C - na A je N disků různé velikosti, seřazené od největšího (dole) k nejmenšímu (nahoře) - kolíky B a C jsou prázdné - úkol: přenést všechny disky z A na B, mohou se odkládat
VíceČ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íce5 Rekurze a zásobník. Rekurzivní volání metody
5 Rekurze a zásobník Při volání metody z metody main() se do zásobníku uloží aktivační záznam obsahující - parametry - návratovou adresu, tedy adresu, kde bude program pokračovat v metodě main () po skončení
VíceObsah 10. přednášky: Jak bude probíhat zkouška?! Podrobné informace:
Obsah 10. přednášky: Kódování dat - terminologie Rozdělení kódů Kódování čísel Kódování znaků Dynamické programování* Příklad řešení úlohy ACM* Úloha pro zájemce* efektivita algoritmu Tato tematika je
VíceNMIN101 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íceB3B33ALP - Algoritmy a programování - Zkouška z předmětu B3B33ALP. Marek Boháč bohacm11
333LP - lgoritmy a programování - Zkouška z předmětu 333LP Jméno Příjmení Už. jméno Marek oháč bohacm11 Zkouškový test Otázka 1 Jaká je hodnota proměnné count po vykonání následujícího kódu: data=[4,4,5,5,6,6,6,7,7,7,7,8,8]
VíceB3B33ALP - Algoritmy a programování - Zkouška z předmětu B3B33ALP. Marek Boháč bohacm11
Jméno Příjmení Už. jméno Marek oháč bohacm11 Zkouškový test Otázka 1 Jaká je hodnota proměnné count po vykonání následujícího kódu: data=[4,4,5,5,6,6,6,7,7,7,7,8,8] count=0 for i in range(1,len(data)):
VíceNá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íceAlgoritmizace a programování. Terminálový vstup a výstup
Algoritmizace a programování Terminálový vstup a výstup Verze pro akademický rok 2012/2013 1 Výpis hodnot Terminálový vstup a výstup budeme používat jako základní způsob interakce programu s uživatelem
VíceDigitá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íceObsah prezentace. Základní pojmy v teorii o grafech Úlohy a prohledávání grafů Hledání nejkratších cest
Obsah prezentace Základní pojmy v teorii o grafech Úlohy a prohledávání grafů Hledání nejkratších cest 1 Základní pojmy Vrchol grafu: {množina V} Je to styčná vazba v grafu, nazývá se též uzlem, prvkem
VíceProgramování: základní konstrukce, příklady, aplikace. IB111 Programování a algoritmizace
Programování: základní konstrukce, příklady, aplikace IB111 Programování a algoritmizace 2011 Připomenutí z minule, ze cvičení proměnné, výrazy, operace řízení výpočtu: if, for, while funkce příklady:
VíceAproximativní algoritmy UIN009 Efektivní algoritmy 1
Aproximativní algoritmy. 14.4.2005 UIN009 Efektivní algoritmy 1 Jak nakládat s NP-těžkými úlohami? Speciální případy Aproximativní algoritmy Pravděpodobnostní algoritmy Exponenciální algoritmy pro data
VíceNPRG030 Programování I RNDr.Tomáš Holan, Ph.D. 4.patro, č
NPRG030 Programování I RNDr.Tomáš Holan, Ph.D. 4.patro, č.404 http://ksvi.mff.cuni.cz/~holan/ Tomas.Holan@mff.cuni.cz NPRG030 Programování I, 2014/15 1 / 37 6. 10. 2014 11:42:59 NPRG030 Programování I,
Více3 KTE / ZPE Informační technologie
3 KTE / ZPE Informační technologie Ing. Petr Kropík, Ph.D. email: pkropik@kte.zcu.cz tel.: +420 377 63 4639, +420 377 63 4606 (odd. informatiky) Katedra teoretické elektrotechniky FEL ZČU Plzeň Komentáře
VíceC# konzole Podíl dvou čísel, podmínka IF
C# konzole Podíl dvou čísel, podmínka IF Tematická oblast Datum vytvoření 2013 Ročník 3 Stručný obsah Způsob využití Autor Kód Internetové technologie, programování Výpočet podílu v konzolové aplikaci
VíceIterač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íce1 2 3 4 5 6 součet cvičení celkem. známka. Úloha č.: max. bodů: skut. bodů:
Úloha č.: max. bodů: skut. bodů: 1 2 3 4 5 6 součet cvičení celkem 20 12 20 20 14 14 100 známka UPOZORNĚNÍ : a) Písemná zkouška obsahuje 6 úloh, jejichž řešení musí být vepsáno do připraveného formuláře.
VíceSlož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ícestránkách přednášejícího.
Předmět: MA 4 Dnešní látka Iterační metoda Jacobiova iterační metoda Gaussova-Seidelova iterační metoda Superrelaxační metoda (metoda SOR) Metoda sdružených gradientů Četba: Text o lineární algebře v Příručce
VíceTří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ícePoslední nenulová číslice faktoriálu
Poslední nenulová číslice faktoriálu Kateřina Bambušková BAM015, I206 Abstrakt V tomto článku je popsán a vyřešen problém s určením poslední nenulové číslice faktoriálu přirozeného čísla N. Celý princip
VíceAlgoritmizace 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íceVyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 12.
Vyhledávání doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Prezentace ke dni 12. září 2016 Jiří Dvorský (VŠB TUO) Vyhledávání 201 / 344 Osnova přednášky
VícePříklad 1/23. Pro rostoucí spojité fukce f(x), g(x) platí f(x) Ω(g(x)). Z toho plyne, že: a) f(x) Ο(g(x)) b) f(x) Θ(g(x)) d) g(x) Ω(f(x))
Příklad 1/23 Pro rostoucí spojité fukce f(x), g(x) platí f(x) Ω(g(x)). Z toho plyne, že: a) f(x) Ο(g(x)) b) f(x) Θ(g(x)) c) g(x) Θ(f(x)) d) g(x) Ω(f(x)) e) g(x) Ο(f(x)) 1 Příklad 2/23 Pro rostoucí spojité
VíceAlgoritmy vyhledávání a řazení. Zatím nad lineární datovou strukturou (polem)
Algoritmy vyhledávání a řazení Zatím nad lineární datovou strukturou (polem) Vyhledávací problém Vyhledávání je dáno Universum (množina prvků) U je dána konečná množina prvků X U (vyhledávací prostor)
VíceSeminář 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ícePaměť počítače. alg2 1
Paměť počítače Výpočetní proces je posloupnost akcí nad daty uloženými v paměti počítače Data jsou v paměti reprezentována posloupnostmi bitů (bit = 0 nebo 1) Připomeňme: paměť je tvořena řadou 8-mi bitových
VíceAlgoritmus. 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íceNMIN101 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íceDobSort. Ú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íceint t1, t2, t3, t4, t5, t6, t7, prumer; t1=sys.readint();... t7=sys.readint(); prume pru r = r = ( 1+t 1+t t3+ t3+ t4 t5+ t5+ +t7 +t7 )/ ;
Pole Příklad: přečíst teploty naměřené v jednotlivých dnech týdnu, vypočítat průměrnou teplotu a pro každý den vypsat odchylku od průměrné teploty Řešení s proměnnými typu int: int t1, t2, t3, t4, t5,
VíceProjekč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íceZá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íceNPRG030 Programování I, 2018/19 1 / :03:07
NPRG030 Programování I, 2018/19 1 / 20 3. 12. 2018 09:03:07 Vnitřní třídění Zadání: Uspořádejte pole délky N podle hodnot prvků Měřítko efektivity: * počet porovnání * počet přesunů NPRG030 Programování
VíceMatematika (KMI/PMATE)
Matematika (KMI/PMATE) Přednáška druhá aneb Úvod do matematické analýzy Limita a spojitost funkce Matematika (KMI/PMATE) 1 / 30 Osnova přednášky lineární funkce y = kx + q definice lineární funkce význam
VíceMimo 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íceNávrh Designu: Radek Mařík
1. 7. Najděte nejdelší rostoucí podposloupnost dané posloupnosti. Použijte metodu dynamického programování, napište tabulku průběžných délek částečných výsledků a tabulku předchůdců. a) 5 8 11 13 9 4 1
VíceNumerická stabilita algoritmů
Numerická stabilita algoritmů Petr Tichý 9. října 2013 1 Numerická stabilita algoritmů Pravidla v konečné aritmetice Pro počítání v konečné aritmetice počítače platí určitá pravidla, která jsou důležitá
Více2. 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ícePole a kolekce. v C#, Javě a C++
Pole a kolekce v C#, Javě a C++ C# Deklarace pole typ_prvku_pole[] jmeno_pole; Vytvoření pole jmeno_pole = new typ_prvku_pole[pocet_prvku_pole]; Inicializace pole double[] poled = 4.8, 8.2, 7.3, 8.0; Java
Více2.1 Podmínka typu case Cykly Cyklus s podmínkou na začátku Cyklus s podmínkou na konci... 5
Obsah Obsah 1 Řídicí struktury 1 2 Podmínka 1 2.1 Podmínka typu case......................... 2 3 Příkaz skoku 3 4 Cykly 4 4.1 Cyklus s podmínkou na začátku................... 4 4.2 Cyklus s podmínkou
VíceMarkov 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íceSlož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íceLekce 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íceVýčtový typ strana 67
Výčtový typ strana 67 8. Výčtový typ V této kapitole si ukážeme, jak implementovat v Javě statické seznamy konstant (hodnot). Příkladem mohou být dny v týdnu, měsíce v roce, planety obíhající kolem slunce
VíceZáklady programování (IZP)
Základy programování (IZP) Deváté počítačové cvičení Brno University of Technology, Faculty of Information Technology Božetěchova 1/2, 612 66 Brno - Královo Pole Petr Veigend, iveigend@fit.vutbr.cz 2016/2017
Více14.4.2010. Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.
Základy programování (IZAPR) Přednáška 7 Ing. Michael Bažant, Ph.D. Katedra softwarových technologií Kancelář č. 229, Náměstí Čs. legií Michael.Bazant@upce.cz Obsah přednášky 7 Parametry metod, předávání
VíceNPRG030 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íceRekurze a rychlé třídění
Rekurze a rychlé třídění Jan Kybic http://cmp.felk.cvut.cz/~kybic kybic@fel.cvut.cz 2016 2017 1 / 54 Rekurze Rychlé třídění 2 / 54 Rekurze Recursion Rekurze = odkaz na sama sebe, definice za pomoci sebe
Více