Dynamické programování
|
|
- Sabina Bartošová
- před 6 lety
- Počet zobrazení:
Transkript
1 ALG 0 Dynamické programování zkratka: DP Zdroje, přehledy, ukázky viz 0
2 Dynamické programování Charakteristika Neřeší jeden konkrétní typ úlohy, je to všeobecná strategie (podobně jako Rozděl a panuj) pro řešení převážně optimalizačních úloh z různých oblastí tvorby algoritmů. Významné vlastnosti. Hledané optimální řešení lze sestavit z vhodně volených optimalních řešení téže úlohy nad redukovanými daty. 2. V rekurzivně formulovaném postupu řešení se opakovaně objevují stejné menší podproblémy. DP umožňuje obejít opakovaný výpočet většinou jednoduchou tabelací výsledků menších podproblémů.
3 Dynamické programování Příklady aplikací: Hledání optimálních cest v grafech Nejdelší podposloupnosti s předepsanými vlastnostmi Optimální plnění ruksaku (kontejneru, nádob...) Optimální rozvrhování navazujících procesů Přibližné vyhledávání v textu daných vzorků (bioinformatika) Nejdelší společná podposloupnost Optimální pořadí násobení matic Optimální vyhledávací strom Optimální vrcholové pokrytí hran stromu Množství dalších... 2
4 Dynamické programování A4BALG 205/0 Seznam DP algoritmů na en.wikipedia.org/wiki/dynamic_programming Ilustrační otisk obrazovky
5 Tabelace v DP - příklad Definice funkce f(x,y) = (x = 0) (y = 0) 2 f(x, y-) + f(x-,y) (x > 0) && (y > 0) Otázka f(0,0) =? Program int f(int x, int y) { if ( (x == 0) (y == 0)) return ; return (2* f(x, y-) + f(x-,y)); } print( f(0,0) ); Odpověď f(0,0) =
6 Tabelace v DP - příklad Jednoduchá analýza int count = 0; int f(int x, int y) { count++; if ( (x == 0) (y == 0)) return ; return (2* f(x, y-) + f(x-,y)); } xyz = f(0,0); print(count); Výsledek analýzy count =
7 Tabelace v DP - příklad Detailnější analýza strom rekurzivního volání f(0,0) f(0,9) f(9,0) f(0,8) f(9,9) f(9,9) f(8,0) f(0,7) f(9,8) f(9,8) f(8,9) f(9,8) f(8,9) f(8,9) f(7,0) f(0,6) 9,7 9,7 8,8 9,7 8,8 8,8 7,9 9,7 8,8 8,8 7,9 8,8 7,9 7,9 f(6,0) f(x,y)... Opakující se výpočty, velké množství! 8,8 9,7 zobrazeny jen parametry pro nedostatek místa 6
8 Tabelace v DP - příklad Detailnější analýza pokračuje efektivita rekurzivního volání f(0,0) počet: volání hodnot f(9,0) 2 2 f(9,9) f(9,9) f(8,0) 4 f(9,8) f(8,9) f(9,8) f(8,9) f(8,9) f(7,0) 8 4 9,7 8,8 8,8 7,9 9,7 8,8 8,8 7,9 8,8 7,9 7,9 f(6,0)
9 Tabelace v DP - příklad f(x,y) = (x = 0) (y = 0) 2 f(x, y-) + f(x-,y) (x > 0) && (y > 0) 0 2 Tabulka všeobecně f(0,0) f(,0) f(2,0) f(0,0) f(0,) f(,) f(0,2) f(x,y-) 2 f(x-,y) f(x,y) x f(0,8) 9 f(9,9) f(0,9) 0 f(0,0) f(8, 0) f(9,0) f(0,0) y 8
10 Tabelace v DP - příklad f(x,y) = (x = 0) (y = 0) 2 f(x, y-) + f(x-,y) (x > 0) && (y > 0) Tabulka numericky x f(x,y-) 2 f(x-,y) f(x,y) y 9
11 Tabelace v DP - příklad Všechny hodnoty se předpočítají int dynarr [N+][N+]; void filldynarr() { for (int xy = 0; xy <= N; xy++) dynarr[0][xy] = dynarr[xy][0] = ; } for (int y = ; y <=N; y++) for (int x = ; x <= N; x++) dynarr[y][x] = 2*dynArr[y-][x] + dynarr[y][x-]; Volání funkce int f(int x, int y) { return dynarr[y][x]; } 0
12 Hledání optimálních cest v grafu Značení Graf G = (V, E), množina uzlů resp. hran: V(g) resp. E(G), N = V(G), M = E(G), případně n = V, m = M apod. Cesta v grafu = posloupnost na sebe navazujících hran, která prochází každým uzlem nejvýše jednou. Délka cesty v neváženém grafu = počet hran na cestě. Př. Délka (B D E F C) = 4. A B C D E F G Délka cesty ve váženém grafu = součet vah hran na cestě. Př. Délka (A E F C G) = 4. A 7 B C D E F G
13 Hledání optimálních cest v grafu Nejkratší cesty Úloha nalezení nejkratší cesty mezi dvěma danými uzly, případně mezi některými dvojicemi uzlů nebo mezi všemi dvojicemi uzlů. (Například minimalizace nákladů na přesun z X do Y.) Postupy Je vyřešena úspěšně pro všechny praktické případy. V neváženém obecném grafu známe BFS, pro jiné případy, zejména vážených grafů, existují specializované algoritmy -- Dijkstra, Floyd-Warshall, Johnson, Bellman-Ford, atd. Složitost Asymptotická složitost je vždy polynomiální v počtu uzlů a hran, typicky nalezení jedné cesty má složitost nanejvýš O(N 2 ), kde N je počet uzlů grafu. 2
14 Hledání optimálních cest v grafu Nejdelší cesty Úloha nalezení nejdelší cesty v grafu mezi dvěma danými uzly, nebo v celém grafu vůbec. (Například maximalizace zisků při provádění navzájem závislých činností.) Exponenciální složitost NP - těžký problém Není dosud uspokojivě vyřešena v plné obecnosti. Možné strategie. Brute force -- exponenciální složitost, pro N > cca 20 bezcenná. 2. Algoritmy přibližného řešení s polynomiální složitostí -- buď najdou optimum jen s určitou pravděpodobností -- nebo zaručí jen nalezení suboptimálního řešení -- typicky jsou netriviální a náročné na správnou implementaci.
15 Hledání nejdelších cest v grafu Možné strategie. Specifické typy grafů dovolují použít efektivní specifický algoritmus. Nejjednodušší případ A. Graf je strom (vážený ano i ne, orientovaný ano i ne). Nejdelší cestu lze najít, např. s pomocí průchodu postorder, vždy v čase (N). Příležitost pro DP B. Graf je orientovaný, acyklický, vážený ano i ne. Standardní označení: DAG (Directed Acyclic Graph) 4
16 Topologické uspořádání DAG Topologické uspořádání uzlů DAG je takové pořadí jeho uzlů, ve kterém každá hrana vede z uzlu s nižším pořadím do uzlu s vyšším pořadím. Každý DAG lze topologicky uspořádat, většinou více způsoby. Orientovaný graf s alespoň jedním cyklem nelze topologicky uspořádat. Mnoho úloh DP obsahuje DAG na vstupu již topologicky uspořádaný. Topologické uspořádání DAG (alespoň jedno) lze sestavit v čase (M), tj. v čase úměrném počtu hran DAG. 5
17 DAG a jeho topologické uspořádání Příklad
18 DAG a jeho různá topologická uspořádání Příklad 2a V uzlu je zapsáno jeho pořadí v topologickém uspořádání 7
19 DAG a jeho různá topologická uspořádání Příklad 2b
20 DAG a jeho různá topologická uspořádání Příklad 2c
21 Topologické uspořádání DAG Algoritmus Složitost 0. new queue Q of Node counter = 0. for each x in V(G) if (x.indegree == 0) // x is a root Q.insert(x) x.toporder = counter++ 2. while (!Q.empty()) { Node v = Q.pop() for each edge (v, w) E(G) { G.removeEdge((v, w)) if (w.indegree == 0) // w is a root Q.insert(w) w.toporder = counter++ } } Předpokládáme, že operace G.removeEdge((v, w)) má konstantní složitost. 0. Složitost O(N). Složitost (N) 2. Složitost (M), každá hrana je navštívena právě jednou a v konstantním čase zpracována. Složitost: (N+M) Pořadí, ve kterém se uzly vkládají do fronty, určuje topogické uspořádání DAG. 20
22 Topologické uspořádání DAG - příklad Queue:, 2,. Queue: 2,, Queue:, 4. 2 Queue: 4. 2
23 Topologické uspořádání DAG - příklad Queue: 5, 6. Queue: 6, 7, Queue: 7, 8. Queue: 8, 9. 22
24 Topologické uspořádání DAG - příklad Queue: 9. Queue: Empty. Topologické uspořádání
25 Nejdelší cesta v DAG Předpokládáme topologické uspořádání a v jeho směru procházíme DAG. Označme d[x] délku té cesty v DAG, která končí v x a je nejdelší možná. Charakteristický pohled "odzadu dopředu": -- d[x] určujeme až v okamžiku, kdy jsou známy hodnoty d pro všechny předchozí (= již zpracované) uzly v topologickém uspořádání. -- d[x] určíme jako maximum z hodnot { d[y] + w, d[y2] + w2,..., d[yk] + wk }, kde (y, x), (y2, x),..., (yk, x) jsou všechny hrany končící v x a w, w2,..., wk jsou jejich odpovídající váhy. Příklad Zpracovaná část DAG w Směr postupu y y2 y w x w2 Topologické uspořádání 24
26 Nejdelší cesta v DAG -- d[x] určíme jako maximum z hodnot { d[y] + w, d[y2] + w2,..., d[yk] + wk }, kde (y, x), (y2, x),..., (yk, x) jsou všechny hrany končící v x a w, w2,..., wk jsou jejich odpovídající váhy. -- Uzel yj, pro který je hodnota d[yj] + wj maximální a nezáporná, ustavíme předchůdcem x na hledané nejdelší cestě. -- Pokud jsou všechny hodnoty {d[y] + w, d[y2] + w2,..., d[yk] + wk} záporné, nepřispívají do nejdelší cesty a položíme d[x] = 0, předchůdce x = null. Příklad 0 A4BALG 205/0 y y2 y 0 x 40 d[y]=0 d[y2]=20 d[y]=5 d[x]=60 p[x]=y2 25
27 Nejdelší cesta v DAG Příklad Určete nejdelší cestu a její délku. 26
28 Nejdelší cesta v DAG d=0 p=nil d = max {0+6} = 6 p= 27
29 Nejdelší cesta v DAG d=0 d=6 p=nil p= d = max {0+-2, 6+2} = 8 p = 2 28
30 Nejdelší cesta v DAG d=0 d=6 d=8 p=nil p= p=2 d = max {0+8, 6+, 8+-2} = 9 p = 2 29
31 Nejdelší cesta v DAG d=0 d=6 d=8 d=9 p=nil p= p=2 p=2 d = max {6+-, 8+-} = 7 p = 0
32 Nejdelší cesta v DAG d=0 d=6 d=8 d=9 d=7 p=nil p= p=2 p=2 p= d = max {0+5, 8+, 9+, 7+4} = 2 p = 4
33 Nejdelší cesta v DAG d=0 d=6 d=8 d=9 d=7 d=2 p=nil p= p=2 p=2 p= p=4 d = max {6+7, 7+-, 2+2} = 4 p = 6 2
34 Nejdelší cesta v DAG d=0 d=6 d=8 d=9 d=7 d=2 d=4 p=nil p= p=2 p=2 p= p=4 p=6 Délka nejdelší cesty: 4 Nejdelší cesta:
35 Nejdelší cesta v DAG 0. allocate memory for distance and predecessor of each node. for each x in V(G) { x.dist = neginfinity x.pred = null } 0. Složitost (N). Složitost (N) // supposing nodes are processed // in ascending topological order 2. for each node x in V(G) for each edge e = (y, x) in E(G) if (x. dist < y.dist + e.weight) { x. dist = y.dist + e.weight x.pred = y; } if (x. dist < 0) x.dist = 0; // avoid negative path lengths } 2. Složitost (M), každá hrana je navštívena právě jednou a v konstantním čase zpracována. Složitost: (N+M) 4
36 Nejdelší cesta v DAG Varianta I 2. for each node x in V(G) { for each edge e = (y, x) in E(G) if (x. dist < y.dist + e.weight) { x. dist = y.dist + e.weight x.pred = y; } if (x. dist < 0) x.dist = 0; } Varianta II 2. for each node x in V(G) { if (x. dist < 0) x.dist = 0; for each edge e = (x, y) in E(G) if (y. dist < x.dist + e.weight) { y. dist = x.dist + e.weight y.pred = x; } } y y y x x y y y order of processing = topological order order of processing = topological order 5
37 Nejdelší cesty v DAG Varování Algoritmy uváděné v literatuře a na webu většinou úlohu maximální cesty v DAG řeší jen pro nezáporná ohodnocení hran a toto své omezení explicitně nezmiňují. Pro DAG obsahující také záporné váhy hran je nelze použít. Chybný výsledek varianty předpokládající nezáporné váhy hran d= d= - d= - d= d= - d= d= d= -2 maximální d! Faktická maximální cesta je s váhou 4, Algoritmus počítající jen s nezápornými hodnotami hran najde jen suboptimální cestu s váhou 2. 6
38 Nejdelší cesty v DAG Problém rekonstrukce všech optimálních cest -- může jich být příliš mnoho. 0 2 N Ukázka 0 2 N a a a a b b b b a a a a b b b b a a a a b b b b b b b b a a a a Každá cesta z kořene do listu je optimální, má cenu N (a+b). Počet všech těchto cest je Comb(2N, N), přičemž 2 N < Comb(2N, N) < 4 N. Počet optimálních řešení tedy roste exponenciálně vůči hodnotě N. Např. N Počet optimálních řešení
NEJKRATŠÍ CESTY I. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze
NEJKRATŠÍ CESTY I Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze BI-GRA, LS 2010/2011, Lekce 7 Evropský sociální fond Praha & EU: Investujeme do vaší
R zné algoritmy mají r znou složitost
/ / zné algoritmy mají r znou složitost Dynamické programování / / Definice funkce Otázka Program f(x,y) = (x = ) (y = ) f(x, y-) + f(x-,y) (x > ) && (y > ) f(,) =? int f(int x, int y) { if ( (x == ) (y
Ná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
Dynamické programování
Dynamické programování Karel Richta a kol. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Karel Richta a kol., 207 Datové struktury a algoritmy, B6B36DSA 05/207, Lekce 2
Algoritmy na ohodnoceném grafu
Algoritmy na ohodnoceném grafu Dvě základní optimalizační úlohy: Jak najít nejkratší cestu mezi dvěma vrcholy? Dijkstrův algoritmus s t Jak najít minimální kostru grafu? Jarníkův a Kruskalův algoritmus
Vzdálenost uzlů v neorientovaném grafu
Vzdálenosti a grafy Vzdálenost uzlů v neorientovaném grafu Je dán neorientovaný neohodnocený graf G = (V,E,I) vzdálenost uzlů u a v v neorientovaném souvislém grafu G je délka nejkratší cesty spojující
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
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
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)
dag a dp v něm, bellman-ford, floyd-warshall
dag a dp v něm, bellman-ford, floyd-warshall Petr Ryšavý 24. září 2018 Katedra počítačů, FEL, ČVUT topologické očíslování Topologické očíslování Definice (Topologické očíslování) Topologické očíslování
Grafové algoritmy. Programovací techniky
Grafové algoritmy Programovací techniky Grafy Úvod - Terminologie Graf je datová struktura, skládá se z množiny vrcholů V a množiny hran mezi vrcholy E Počet vrcholů a hran musí být konečný a nesmí být
Algoritmus 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
Graf. Uzly Lokality, servery Osoby fyzické i právní Informatické objekty... atd. Hrany Cesty, propojení Vztahy Informatické závislosti... atd.
Graf 2 0 3 1 4 5 Uzly Lokality, servery Osoby fyzické i právní Informatické objekty... atd. Hrany Cesty, propojení Vztahy Informatické závislosti... atd. Běžné reprezentace grafu Uzly = indexy Stupně uzlů
TGH06 - Hledání nejkratší cesty
TGH06 - Hledání nejkratší cesty Jan Březina Technical University of Liberec 26. března 2013 Motivační problémy Silniční sít reprezentovaná grafem. Najdi nejkratší/nejrychlejší cestu z místa A do místa
ALG 04. Zásobník Fronta Operace Enqueue, Dequeue, Front, Empty... Cyklická implementace fronty. Průchod stromem do šířky
LG 04 Zásobník Fronta Operace nqueue, equeue, Front, mpty... yklická implementace fronty Průchod stromem do šířky Grafy průchod grafem do šířky průchod grafem do hloubky Ořezávání a heuristiky 1 Zásobník
TGH06 - Hledání nejkratší cesty
TGH06 - Hledání nejkratší cesty Jan Březina Technical University of Liberec 31. března 2015 Motivační problémy Silniční sít reprezentovaná grafem. Ohodnocené hrany - délky silnic. Najdi nejkratší/nejrychlejší
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
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
Použití dalších heuristik
Použití dalších heuristik zkracování cesty při FIND-SET UNION podle hodností Datové struktury... p[x] - předchůdce uzlu x MAKE-SET(x) p[x] := x hod[x] := 0 hod[x] - hodnost (aprox. výšky) UNION(x,y) LINK(FIND-SET(x),
TGH05 - aplikace DFS, průchod do šířky
TGH05 - aplikace DFS, průchod do šířky Jan Březina Technical University of Liberec 31. března 2015 Grafová formulace CPM (critical path method) Orientovaný acyklický graf (DAG) je orientovaný graf neobsahující
Algoritmy a datové struktury
Algoritmy a datové struktury Stromy 1 / 32 Obsah přednášky Pole a seznamy Stromy Procházení stromů Binární stromy Procházení BS Binární vyhledávací stromy 2 / 32 Pole Hledání v poli metodou půlení intervalu
5 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í
Grafové algoritmy. Programovací techniky
Grafové algoritmy Programovací techniky Grafy Úvod - Terminologie Graf je datová struktura, skládá se z množiny vrcholů V a množiny hran mezi vrcholy E Počet vrcholů a hran musí být konečný a nesmí být
Grafové algoritmy. Programovací techniky
Grafové algoritmy Programovací techniky Grafy Úvod - Terminologie Graf je datová struktura, skládá se z množiny vrcholů V a množiny hran mezi vrcholy E Počet vrcholů a hran musí být konečný a nesmí být
Obsah 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
Aproximativní 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
TGH05 - aplikace DFS, průchod do šířky
TGH05 - aplikace DFS, průchod do šířky Jan Březina Technical University of Liberec 28. března 2017 Grafová formulace CPM (critical path method) Orientovaný acyklický graf (DAG) je orientovaný graf neobsahující
bfs, dfs, fronta, zásobník, prioritní fronta, halda
bfs, dfs, fronta, zásobník, prioritní fronta, halda Petr Ryšavý 20. září 2016 Katedra počítačů, FEL, ČVUT prohledávání grafů Proč prohledávání grafů Zkontrolovat, zda je sít spojitá. Hledání nejkratší
bfs, dfs, fronta, zásobník, prioritní fronta, halda
bfs, dfs, fronta, zásobník, prioritní fronta, halda Petr Ryšavý 19. září 2017 Katedra počítačů, FEL, ČVUT prohledávání grafů Proč prohledávání grafů Zkontrolovat, zda je sít spojitá. Hledání nejkratší
Stromy. Příklady. Rekurzivní datové struktury. Základní pojmy
Základní pojmy Stromy doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Graf uzly hrany orientované / neorientované Souvislý
Stromy. Karel Richta a kol. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Karel Richta a kol.
Stromy Karel Richta a kol. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Karel Richta a kol., 2018, B6B36DSA 01/2018, Lekce 9 https://cw.fel.cvut.cz/wiki/courses/b6b36dsa/start
Hledáme efektivní řešení úloh na grafu
Hledáme efektivní řešení úloh na grafu Mějme dán graf následující úlohy: G = ( V, E), chceme algoritmicky vyřešit Je daný vrchol t dosažitelný z vrcholu s? Pokud ano, jaká nejkratší cesta tyto vrcholy
5. Dynamické programování
5. Dynamické programování BI-EP1 Efektivní programování 1 ZS 2011/2012 Ing. Martin Kačer, Ph.D. 2010-11 Martin Kačer Katedra teoretické informatiky Fakulta informačních technologií České vysoké učení technické
07 Základní pojmy teorie grafů
07 Základní pojmy teorie grafů (definice grafu, vlastnosti grafu, charakteristiky uzlů, ohodnocené grafy) Definice grafu množina objektů, mezi kterými existují určité vazby spojující tyto objekty. Uspořádaná
Stromy. Strom: souvislý graf bez kružnic využití: počítačová grafika seznam objektů efektivní vyhledávání výpočetní stromy rozhodovací stromy
Stromy úvod Stromy Strom: souvislý graf bez kružnic využití: počítačová grafika seznam objektů efektivní vyhledávání výpočetní stromy rozhodovací stromy Neorientovaný strom Orientovaný strom Kořenový orientovaný
Dynamické programování. Optimální binární vyhledávací strom
The complexity of different algorithms varies: O(n), Ω(n ), Θ(n log (n)), Dynamické programování Optimální binární vyhledávací strom Různé algoritmy mají různou složitost: O(n), Ω(n ), Θ(n log (n)), The
PROHLEDÁVÁNÍ GRAFŮ. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze
PROHLEDÁVÁNÍ GRAFŮ Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze BI-GRA, LS 2010/2011, Lekce 4 Evropský sociální fond Praha & EU: Investujeme do
ALGORITMIZACE 2010/03 STROMY, BINÁRNÍ STROMY VZTAH STROMŮ A REKURZE ZÁSOBNÍK IMPLEMENTUJE REKURZI PROHLEDÁVÁNÍ S NÁVRATEM (BACKTRACK)
ALGORITMIZACE 2010/03 STROMY, BINÁRNÍ STROMY VZTAH STROMŮ A REKURZE ZÁSOBNÍK IMPLEMENTUJE REKURZI PROHLEDÁVÁNÍ S NÁVRATEM (BACKTRACK) Strom / tree uzel, vrchol / node, vertex hrana / edge vnitřní uzel
ALGORITMIZACE 2010/03 STROMY, BINÁRNÍ STROMY VZTAH STROMŮ A REKURZE ZÁSOBNÍK IMPLEMENTUJE REKURZI PROHLEDÁVÁNÍ S NÁVRATEM (BACKTRACK)
ALGORITMIZACE 2010/03 STROMY, BINÁRNÍ STROMY VZTAH STROMŮ A REKURZE ZÁSOBNÍK IMPLEMENTUJE REKURZI PROHLEDÁVÁNÍ S NÁVRATEM (BACKTRACK) Strom / tree uzel, vrchol / node, vertex hrana / edge vnitřní uzel
Zdůvodněte, proč funkce n lg(n) roste alespoň stejně rychle nebo rychleji než než funkce lg(n!). Symbolem lg značíme logaritmus o základu 2.
1 3 4 5 6 7 8 9 10 11 1 13 14 15 16 17 18 19 0 1 3 4 5 6 7 8 9 30 31 3 Zdůvodněte, proč funkce f(n) = n log(n) 1 n 1/ roste rychleji než funkce g(n) = n. Zdůvodněte, proč funkce f(n) = n 3/ log(n) roste
TOKY V SÍTÍCH II. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze
TOKY V SÍTÍCH II Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze BI-GRA, LS 010/011, Lekce 10 Evropský sociální fond Praha & EU: Investujeme do vaší
ORIENTOVANÉ GRAFY, REPREZENTACE GRAFŮ
ORIENTOVANÉ GRAFY, REPREZENTACE GRAFŮ Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze BI-GRA, LS 2/2, Lekce Evropský sociální fond Praha & EU: Investujeme
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
opakování reprezentace grafů, dijkstra, bellman-ford, johnson
opakování reprezentace grafů, dijkstra, bellman-ford, johnson Petr Ryšavý 19. září 2016 Katedra počítačů, FEL, ČVUT opakování reprezentace grafů Graf Definice (Graf) Graf G je uspořádaná dvojice G = (V,
Paralelní grafové algoritmy
Paralelní grafové algoritmy Značení Minimální kostra grafu Nejkratší cesta z jednoho uzlu Nejkratší cesta mezi všemi dvojicemi uzlů Použité značení Definition Bud G = (V, E) graf. Pro libovolný uzel u
Binární vyhledávací stromy pokročilé partie
Binární vyhledávací stromy pokročilé partie KMI/ALS lekce Jan Konečný 30.9.204 Literatura Cormen Thomas H., Introduction to Algorithms, 2nd edition MIT Press, 200. ISBN 0-262-5396-8 6, 3, A Knuth Donald
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
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
Optimalizace & soft omezení: algoritmy
Optimalizace & soft omezení: algoritmy Soft propagace Klasická propagace: eliminace nekonzistentních hodnot z domén proměnných Soft propagace: propagace preferencí (cen) nad k-ticemi hodnot proměnných
Úvod do teorie grafů
Úvod do teorie grafů Neorientovaný graf G = (V,E,I) V množina uzlů (vrcholů) - vertices E množina hran - edges I incidence incidence je zobrazení, buď: funkce: I: E V x V relace: I E V V incidence přiřadí
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é
Dynamické programování UIN009 Efektivní algoritmy 1
Dynamické programování. 10.3.2005 UIN009 Efektivní algoritmy 1 Srovnání metody rozděl a panuj a dynamického programování Rozděl a panuj: top-down Dynamické programování: bottom-up Rozděl a panuj: překrývání
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;
A4B33ALG 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
= je prostý orientovaný graf., formálně c ( u, v) 0. dva speciální uzly: zdrojový uzel s a cílový uzel t. Dále budeme bez
Síť Síť je čtveřice N = ( G, s, t, c) kde G ( V, A) = je prostý orientovaný graf a každé orientované hraně ( u, v) je přiřazeno nezáporné číslo, které se nazývá kapacita hrany ( u, v), formálně c ( u,
Přijímací zkouška - matematika
Přijímací zkouška - matematika Jméno a příjmení pište do okénka Číslo přihlášky Číslo zadání 1 Grafy 1 Pro který z následujících problémů není znám žádný algoritmus s polynomiální časovou složitostí? Problém,
4EK311 Operační výzkum. 5. Teorie grafů
4EK311 Operační výzkum 5. Teorie grafů 5. Teorie grafů definice grafu Graf G = uspořádaná dvojice (V, E), kde V označuje množinu n uzlů u 1, u 2,, u n (u i, i = 1, 2,, n) a E označuje množinu hran h ij,
B3B33ALP - 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]
Teorie grafů BR Solutions - Orličky Píta (Orličky 2010) Teorie grafů / 66
Teorie grafů Petr Hanuš (Píta) BR Solutions - Orličky 2010 23.2. 27.2.2010 Píta (Orličky 2010) Teorie grafů 23.2. 27.2.2010 1 / 66 Pojem grafu Graf je abstraktní pojem matematiky a informatiky užitečný
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á??
Dijkstrův algoritmus
Dijkstrův algoritmus Hledání nejkratší cesty v nezáporně hranově ohodnoceném grafu Necht je dán orientovaný graf G = (V, H) a funkce, která každé hraně h = (u, v) H přiřadí nezáporné reálné číslo označované
f(x,y) = max ( f(x 1, y 1)+ f(x 1,y) ) + f(x,y 1) +1 jinak f(x,y,z) = f(x 1, y 1, z 1)+ f(x 1,y,z) + f(x,y 1,z) + f(x,y,z 1)+1 jinak
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ý
Dynamicky vázané metody. Pozdní vazba, virtuální metody
Dynamicky vázané metody Pozdní vazba, virtuální metody Motivace... class TBod protected: float x,y; public: int vrat_pocet_bodu() return 1; ; od třídy TBod odvodíme: class TUsecka: public TBod protected:
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
Dynamické programování
Algoritmická matematika 3 KMI/ALM3 Mgr. Petr Osička, Ph.D ZS 2014 1 Základní princip Dynamické programování Princip dynamického programování je založen na podobné myšlence jako rozděl a panuj. Vstupní
Metody analýzy dat I (Data Analysis I) Rozsáhlé struktury a vlastnosti sítí (Large-scale Structures and Properties of Networks) - pokračování
Metody analýzy dat I (Data Analysis I) Rozsáhlé struktury a vlastnosti sítí (Large-scale Structures and Properties of Networks) - pokračování Základní (strukturální) vlastnosti sítí Stupně vrcholů a jejich
Základní datové struktury III: Stromy, haldy
Základní datové struktury III: Stromy, haldy prof. Ing. Pavel Tvrdík CSc. Katedra počítačových systémů Fakulta informačních technologií České vysoké učení technické v Praze c Pavel Tvrdík, 2010 Efektivní
Dynamické programování
ALG Dynamické rogramování Nejdelší rostoucí odoslounost Otimální ořadí násobení matic Nejdelší rostoucí odoslounost Z dané oslounosti vyberte co nejdelší rostoucí odoslounost. 5 4 9 5 8 6 7 Řešení: 4 5
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
Základní pojmy. Úvod do programování. Základní pojmy. Zápis algoritmu. Výraz. Základní pojmy
Ú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 Procesor Procesorem je objekt, který vykonává algoritmem popisovanou
NPRG030 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í
B3B33ALP - 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)):
opakování reprezentace grafů, dijkstra, bellman-ford, johnson
opakování reprezentace grafů, dijkstra, bellman-ford, johnson Petr Ryšavý 18. září 2017 Katedra počítačů, FEL, ČVUT opakování reprezentace grafů Graf Definice (Graf) Graf G je uspořádaná dvojice G = (V,
Ukážeme si lineární algoritmus, který pro pevné k rozhodne, zda vstupní. stromový rozklad. Poznamenejme, že je-li k součástí vstupu, pak rozhodnout
Ukážeme si lineární algoritmus, který pro pevné k rozhodne, zda vstupní graf má stromovou šířku nejvýše k, a je-li tomu tak, také vrátí příslušný stromový rozklad. Poznamenejme, že je-li k součástí vstupu,
6. Tahy / Kostry / Nejkratší cesty
6. Tahy / Kostry / Nejkratší cesty BI-EP2 Efektivní programování 2 LS 2017/2018 Ing. Martin Kačer, Ph.D. 2011-18 Martin Kačer Katedra teoretické informatiky Fakulta informačních technologií České vysoké
bfs, dfs, fronta, zásobník
bfs, dfs, fronta, zásobník Petr Ryšavý 25. září 2018 Katedra počítačů, FEL, ČVUT prohledávání grafů Proč prohledávání grafů Zkontrolovat, zda je sít spojitá. Hledání nejkratší cesty, plánování cest. Prohledávání
Matice sousednosti NG
Matice sousednosti NG V = [ v ij ] celočíselná čtvercová matice řádu U v ij = ρ -1 ( [u i, u j ] )... tedy počet hran mezi u i a u j?jaké vlastnosti má matice sousednosti?? Smyčky, rovnoběžné hrany? V
Metody síťové analýzy
Metody síťové analýzy Řeší problematiku složitých systémů, zejména pak vazby mezi jejich jednotlivými prvky. Vychází z teorie grafů. Základní metody síťové analýzy: CPM (Critical Path Method) deterministický
Modely teorie grafů, min.kostra, max.tok, CPM, MPM, PERT
PEF ČZU Modely teorie grafů, min.kostra, max.tok, CPM, MPM, PERT Okruhy SZB č. 5 Zdroje: Demel, J., Operační výzkum Jablonský J., Operační výzkum Šubrt, T., Langrová, P., Projektové řízení I. a různá internetová
4EK212 Kvantitativní management. 7.Řízení projektů
4EK212 Kvantitativní management 7.Řízení projektů 6.5 Řízení projektů Typická aplikace teorie grafů Projekt = soubor činností Příklady: Vývoj a uvedení nového výrobku Výstavba či rekonstrukce objektu Plán
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
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é
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
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ý
Operační výzkum. Síťová analýza. Metoda CPM.
Operační výzkum Síťová analýza. Metoda CPM. Operační program Vzdělávání pro konkurenceschopnost Název projektu: Inovace magisterského studijního programu Fakulty ekonomiky a managementu Registrační číslo
Základy informatiky. 07 Teorie grafů. Kačmařík/Szturcová/Děrgel/Rapant
Základy informatiky 07 Teorie grafů Kačmařík/Szturcová/Děrgel/Rapant Obsah přednášky barvení mapy teorie grafů definice uzly a hrany typy grafů cesty, cykly, souvislost grafů Barvení mapy Kolik barev je
Jan Březina. Technical University of Liberec. 21. dubna 2015
TGH11 - Maximální párování a související problémy Jan Březina Technical University of Liberec 21. dubna 2015 Bipartitní grafy Bipartitní graf - je obarvitelný dvěma barvami. Tj. V lze rozělit na disjunktní
Kapitola 11. Vzdálenost v grafech. 11.1 Matice sousednosti a počty sledů
Kapitola 11 Vzdálenost v grafech V každém grafu lze přirozeným způsobem definovat vzdálenost libovolné dvojice vrcholů. Hlavním výsledkem této kapitoly je překvapivé tvrzení, podle kterého lze vzdálenosti
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
4EK311 Operační výzkum. 6. Řízení projektů
4EK311 Operační výzkum 6. Řízení projektů 6. Řízení projektů Typická aplikace teorie grafů Projekt = soubor činností Příklady: Vývoj a uvedení nového výrobku Výstavba či rekonstrukce objektu Plán výrobního
Reprezentace aritmetického výrazu - binární strom reprezentující aritmetický výraz
Reprezentace aritmetického výrazu - binární strom reprezentující aritmetický výraz (2 + 5) * (13-4) * + - 2 5 13 4 - listy stromu obsahují operandy (čísla) - vnitřní uzly obsahují operátory (znaménka)
PLANARITA A TOKY V SÍTÍCH
PLANARITA A TOKY V SÍTÍCH Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze BI-GRA, LS 2010/2011, Lekce 9 Evropský sociální fond Praha & EU: Investujeme
Příklad 1/23. Pro rostoucí spojité fukce f(x), g(x) platí f(x) Ω(g(x)). Z toho plyne, že: a) f(x) Ο(g(x)) b) f(x) Θ(g(x)) d) g(x) Ω(f(x))
Příklad 1/23 Pro rostoucí spojité fukce f(x), g(x) platí f(x) Ω(g(x)). Z toho plyne, že: a) f(x) Ο(g(x)) b) f(x) Θ(g(x)) c) g(x) Θ(f(x)) d) g(x) Ω(f(x)) e) g(x) Ο(f(x)) 1 Příklad 2/23 Pro rostoucí spojité
Základní pojmy teorie grafů [Graph theory]
Část I Základní pojmy teorie grafů [Graph theory] V matematice grafem obvykle rozumíme grafické znázornění funkční závislosti. Pro tento předmět je však podstatnější pohled jiný. V teorii grafů rozumíme
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
RECURSION
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ý
Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 12.
Vyhledávání doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Prezentace ke dni 12. září 2016 Jiří Dvorský (VŠB TUO) Vyhledávání 201 / 344 Osnova přednášky
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
Dynamické datové struktury II.
Dynamické datové struktury II. Stromy. Binární vyhledávací strom. DFS. BFS. Tomáš Bayer bayertom@natur.cuni.cz Katedra aplikované geoinformatiky a kartografie, Přírodovědecká fakulta UK. Tomáš Bayer bayertom@natur.cuni.cz
Zadání a řešení testu z matematiky a zpráva o výsledcích přijímacího řízení do magisterského navazujícího studia od podzimu 2015
Zadání a řešení testu z matematiky a zpráva o výsledcích přijímacího řízení do magisterského navazujícího studia od podzimu 05 Zpráva o výsledcích přijímacího řízení do magisterského navazujícího studia