Heuristiky, best-first search, A* search
|
|
- Dalibor Vopička
- před 6 lety
- Počet zobrazení:
Transkript
1 Heuristiky, best-first search, A* search Aleš Horák Obsah: Informované prohledávání stavového prostoru Jak najít dobrou heuristiku? Úvod do umělé inteligence 4/12 1 / 25
2 Informované prohledávání stavového prostoru Příklad cesta na mapě Příklad cesta na mapě Najdi cestu z města Arad do města Bukurest Oradea 71 Neamt 87 Zerind Iasi Arad Sibiu 99 Fagaras Vaslui Timisoara Rimnicu Vilcea Pitesti Lugoj Hirsova Mehadia Urziceni Dobreta 120 Bukurest 90 Craiova Eforie Giurgiu Úvod do umělé inteligence 4/12 2 / 25
3 Informované prohledávání stavového prostoru Příklad cesta na mapě Příklad schéma rumunských měst Města: Arad Bukurest Craiova Dobreta Eforie Fagaras Giurgiu Hirsova Iasi Lugoj Mehadia Neamt... Cesty: Arad Timisoara 118 Arad Sibiu 140 Arad Zerind 75 Timisoara Lugoj 111 Sibiu Fagaras 99 Sibiu Rimnicu Vilcea 80 Zerind Oradea Giurgiu Bukurest 90 Pitesti Bukurest 101 Fagaras Bukurest 211 Urziceni Bukurest 85 Úvod do umělé inteligence 4/12 3 / 25
4 Informované prohledávání stavového prostoru Příklad cesta na mapě Příklad schéma rumunských měst Oradea 71 Neamt 87 Zerind Iasi Arad Sibiu 99 Fagaras Vaslui Timisoara Rimnicu Vilcea Pitesti Lugoj Hirsova Mehadia Urziceni Dobreta 120 Bukurest 90 Craiova Eforie Giurgiu Úvod do umělé inteligence 4/12 4 / 25
5 Informované prohledávání stavového prostoru Příklad cesta na mapě Příklad schéma rumunských měst Oradea 71 Neamt 87 Zerind Iasi Arad Sibiu 99 Fagaras Vaslui Timisoara Rimnicu Vilcea Pitesti Lugoj Hirsova Mehadia Urziceni Dobreta 120 Bukurest 90 Craiova Eforie Giurgiu Arad 366 Bukurest 0 Craiova 160 Dobreta 242 Eforie 161 Fagaras 178 Giurgiu 77 Hirsova 151 Iasi 226 Lugoj 244 Mehadia 241 Neamt 234 Oradea 380 Pitesti 98 Rimnicu Vilcea 193 Sibiu 253 Timisoara 329 Urziceni 80 Vaslui 199 Zerind 374 Úvod do umělé inteligence 4/12 4 / 25
6 Informované prohledávání stavového prostoru Příklad cesta na mapě Příklad schéma rumunských měst Oradea 71 Neamt 87 Zerind Iasi Arad Sibiu 99 Fagaras Vaslui Timisoara Rimnicu Vilcea Pitesti Lugoj Hirsova Mehadia Urziceni Dobreta 120 Bukurest 90 Craiova Eforie Giurgiu Arad 366 Bukurest 0 Craiova 160 Dobreta 242 Eforie 161 Fagaras 178 Giurgiu 77 Hirsova 151 Iasi 226 Lugoj 244 Mehadia 241 Neamt 234 Oradea 380 Pitesti 98 Rimnicu Vilcea 193 Sibiu 253 Timisoara 329 Urziceni 80 Vaslui 199 Zerind 374 Úvod do umělé inteligence 4/12 4 / 25
7 Informované prohledávání stavového prostoru Příklad cesta na mapě Příklad cesta na mapě Neinformované prohledávání: DFS, BFS a varianty nemá (téměř) žádné informace o pozici cíle slepé prohledávání zná pouze: počáteční/cílový stav přechodovou funkci Úvod do umělé inteligence 4/12 5 / 25
8 Informované prohledávání stavového prostoru Příklad cesta na mapě Příklad cesta na mapě Neinformované prohledávání: DFS, BFS a varianty nemá (téměř) žádné informace o pozici cíle slepé prohledávání zná pouze: počáteční/cílový stav přechodovou funkci Informované prohledávání: má navíc informaci o (odhadu) bĺızkosti stavu k cílovému stavu heuristická funkce (heuristika) Úvod do umělé inteligence 4/12 5 / 25
9 Informované prohledávání stavového prostoru Heuristické hledání nejlepší cesty Heuristické hledání nejlepší cesty Best-first Search použití ohodnocovací funkce f(n) pro každý uzel výpočet přínosu daného uzlu udržujeme seznam uzlů uspořádaný (vzestupně) vzhledem k f(n) použití heuristické funkce h(n) pro každý uzel odhad vzdálenosti daného uzlu (stavu) od cíle čím menší h(n), tím bĺıže k cíli, h(goal) = 0. nejjednodušší varianta hladové heuristické hledání, Greedy best-first search f(n) = h(n) Úvod do umělé inteligence 4/12 6 / 25
10 Informované prohledávání stavového prostoru Hladové heuristické hledání Hladové heuristické hledání příklad Hledání cesty z města Arad do města Bukurest ohodnocovací funkce f(n) = h(n) = h vzd Buk (n), přímá vzdálenost z n do Bukuresti Arad 366 Sibiu Timisoara Zerind Arad Fagaras Oradea Rimnicu Vilcea Sibiu Bukurest Úvod do umělé inteligence 4/12 7 / 25
11 Informované prohledávání stavového prostoru Hladové heuristické hledání Hladové heuristické hledání příklad Hledání cesty z města Arad do města Bukurest ohodnocovací funkce f(n) = h(n) = h vzd Buk (n), přímá vzdálenost z n do Bukuresti Arad Sibiu Timisoara Zerind Arad Fagaras Oradea Rimnicu Vilcea Sibiu Bukurest Úvod do umělé inteligence 4/12 7 / 25
12 Informované prohledávání stavového prostoru Hladové heuristické hledání Hladové heuristické hledání příklad Hledání cesty z města Arad do města Bukurest ohodnocovací funkce f(n) = h(n) = h vzd Buk (n), přímá vzdálenost z n do Bukuresti Arad Sibiu Timisoara Zerind Arad Fagaras Oradea Rimnicu Vilcea Sibiu Bukurest Úvod do umělé inteligence 4/12 7 / 25
13 Informované prohledávání stavového prostoru Hladové heuristické hledání Hladové heuristické hledání příklad Hledání cesty z města Arad do města Bukurest ohodnocovací funkce f(n) = h(n) = h vzd Buk (n), přímá vzdálenost z n do Bukuresti Arad Sibiu Timisoara 329 Zerind Arad 366 Fagaras Oradea Rimnicu Vilcea Sibiu Bukurest Úvod do umělé inteligence 4/12 7 / 25
14 Informované prohledávání stavového prostoru Hladové heuristické hledání Hladové heuristické hledání vlastnosti expanduje vždy uzel, který se zdá nejbĺıže k cíli cesta nalezená v příkladu (g(arad Sibiu Fagaras Bukurest) = 450) je sice úspěšná, ale není optimální (g(arad Sibiu RimnicuVilcea Pitesti Bukurest) = 418) úplnost optimálnost časová složitost prostorová složitost Úvod do umělé inteligence 4/12 8 / 25
15 Informované prohledávání stavového prostoru Hladové heuristické hledání Hladové heuristické hledání vlastnosti expanduje vždy uzel, který se zdá nejbĺıže k cíli cesta nalezená v příkladu (g(arad Sibiu Fagaras Bukurest) = 450) je sice úspěšná, ale není optimální (g(arad Sibiu RimnicuVilcea Pitesti Bukurest) = 418) úplnost optimálnost časová složitost prostorová složitost obecně není úplný (nekonečný prostor, cykly) Úvod do umělé inteligence 4/12 8 / 25
16 Informované prohledávání stavového prostoru Hladové heuristické hledání Hladové heuristické hledání vlastnosti expanduje vždy uzel, který se zdá nejbĺıže k cíli cesta nalezená v příkladu (g(arad Sibiu Fagaras Bukurest) = 450) je sice úspěšná, ale není optimální (g(arad Sibiu RimnicuVilcea Pitesti Bukurest) = 418) úplnost optimálnost časová složitost prostorová složitost obecně není úplný (nekonečný prostor, cykly) není optimální Úvod do umělé inteligence 4/12 8 / 25
17 Informované prohledávání stavového prostoru Hladové heuristické hledání Hladové heuristické hledání vlastnosti expanduje vždy uzel, který se zdá nejbĺıže k cíli cesta nalezená v příkladu (g(arad Sibiu Fagaras Bukurest) = 450) je sice úspěšná, ale není optimální (g(arad Sibiu RimnicuVilcea Pitesti Bukurest) = 418) úplnost optimálnost časová složitost prostorová složitost obecně není úplný (nekonečný prostor, cykly) není optimální O(b m ), hodně záleží na h Úvod do umělé inteligence 4/12 8 / 25
18 Informované prohledávání stavového prostoru Hladové heuristické hledání Hladové heuristické hledání vlastnosti expanduje vždy uzel, který se zdá nejbĺıže k cíli cesta nalezená v příkladu (g(arad Sibiu Fagaras Bukurest) = 450) je sice úspěšná, ale není optimální (g(arad Sibiu RimnicuVilcea Pitesti Bukurest) = 418) úplnost obecně není úplný (nekonečný prostor, cykly) optimálnost není optimální časová složitost O(b m ), hodně záleží na h prostorová složitost O(b m ), každý uzel v paměti Úvod do umělé inteligence 4/12 8 / 25
19 Informované prohledávání stavového prostoru Hledání nejlepší cesty algoritmus A* Hledání nejlepší cesty algoritmus A* některé zdroje označují tuto variantu jako Best-first Search ohodnocovací funkce kombinace g(n) a h(n): f(n) = g(n)+h(n) g(n) je cena cesty do n h(n) je odhad ceny cesty z n do cíle f(n) je odhad ceny nejlevnější cesty, která vede přes n Úvod do umělé inteligence 4/12 9 / 25
20 Informované prohledávání stavového prostoru Hledání nejlepší cesty algoritmus A* Hledání nejlepší cesty algoritmus A* některé zdroje označují tuto variantu jako Best-first Search ohodnocovací funkce kombinace g(n) a h(n): f(n) = g(n)+h(n) g(n) je cena cesty do n h(n) je odhad ceny cesty z n do cíle f(n) je odhad ceny nejlevnější cesty, která vede přes n A* algoritmus vyžaduje tzv. přípustnou (admissible) heuristiku: 0 h(n) h (n), kde h (n) je skutečná cena cesty z n do cíle tj. odhad se voĺı vždycky kratší nebo roven ceně libovolné možné cesty do cíle Např. přímá vzdálenost h vzd Buk nikdy není delší než (jakákoliv) cesta Úvod do umělé inteligence 4/12 9 / 25
21 Informované prohledávání stavového prostoru Hledání nejlepší cesty algoritmus A* Heuristické hledání A* příklad Hledání cesty z města Arad do města Bukurest ohodnocovací funkce f(n) = g(n)+h(n) = g(n)+h vzd Buk (n) Arad 366=0+366 Sibiu Timisoara Zerind Arad Fagaras Oradea Rimnicu Vilcea Sibiu Bukurest Craiova Pitesti Sibiu Bukurest Craiova Rimnicu Vilcea Úvod do umělé inteligence 4/12 10 / 25
22 Informované prohledávání stavového prostoru Hledání nejlepší cesty algoritmus A* Heuristické hledání A* příklad Hledání cesty z města Arad do města Bukurest ohodnocovací funkce f(n) = g(n)+h(n) = g(n)+h vzd Buk (n) Arad Sibiu Timisoara Zerind 393= = = Arad Fagaras Oradea Rimnicu Vilcea Sibiu Bukurest Craiova Pitesti Sibiu Bukurest Craiova Rimnicu Vilcea Úvod do umělé inteligence 4/12 10 / 25
23 Informované prohledávání stavového prostoru Hledání nejlepší cesty algoritmus A* Heuristické hledání A* příklad Hledání cesty z města Arad do města Bukurest ohodnocovací funkce f(n) = g(n)+h(n) = g(n)+h vzd Buk (n) Arad Sibiu Timisoara Zerind 447= = Arad Fagaras Oradea Rimnicu Vilcea 646= = = = Sibiu Bukurest Craiova Pitesti Sibiu Bukurest Craiova Rimnicu Vilcea Úvod do umělé inteligence 4/12 10 / 25
24 Informované prohledávání stavového prostoru Hledání nejlepší cesty algoritmus A* Heuristické hledání A* příklad Hledání cesty z města Arad do města Bukurest ohodnocovací funkce f(n) = g(n)+h(n) = g(n)+h vzd Buk (n) Arad Sibiu Arad Fagaras Oradea 646= = = Timisoara Zerind 447= = Rimnicu Vilcea Sibiu Bukurest Craiova Pitesti Sibiu 526= = = Bukurest Craiova Rimnicu Vilcea Úvod do umělé inteligence 4/12 10 / 25
25 Informované prohledávání stavového prostoru Hledání nejlepší cesty algoritmus A* Heuristické hledání A* příklad Hledání cesty z města Arad do města Bukurest ohodnocovací funkce f(n) = g(n)+h(n) = g(n)+h vzd Buk (n) Arad Arad 646= Fagaras Sibiu Oradea 671= Timisoara Zerind 447= = Rimnicu Vilcea Sibiu Bukurest 591= =450+0 Craiova Pitesti Sibiu 526= = = Bukurest Craiova Rimnicu Vilcea Úvod do umělé inteligence 4/12 10 / 25
26 Informované prohledávání stavového prostoru Hledání nejlepší cesty algoritmus A* Heuristické hledání A* příklad Hledání cesty z města Arad do města Bukurest ohodnocovací funkce f(n) = g(n)+h(n) = g(n)+h vzd Buk (n) Arad Arad 646= Fagaras Sibiu Oradea 671= Timisoara Zerind 447= = Rimnicu Vilcea Sibiu Bukurest Craiova Pitesti Sibiu 591= = = = Bukurest Craiova Rimnicu Vilcea 418= = = Úvod do umělé inteligence 4/12 10 / 25
27 Informované prohledávání stavového prostoru Hledání nejlepší cesty algoritmus A* Hledání nejlepší cesty A* vlastnosti expanduje uzly podle f(n) = g(n)+h(n) A* expanduje všechny uzly s f(n) < C A* expanduje některé uzly s f(n) = C A* neexpanduje žádné uzly s f(n) > C úplnost optimálnost časová složitost prostorová složitost Úvod do umělé inteligence 4/12 11 / 25
28 Informované prohledávání stavového prostoru Hledání nejlepší cesty algoritmus A* Hledání nejlepší cesty A* vlastnosti expanduje uzly podle f(n) = g(n)+h(n) A* expanduje všechny uzly s f(n) < C A* expanduje některé uzly s f(n) = C A* neexpanduje žádné uzly s f(n) > C úplnost je úplný (pokud [počet uzlů s f < C ], tedy cena ǫ a b konečné) optimálnost časová složitost prostorová složitost Úvod do umělé inteligence 4/12 11 / 25
29 Informované prohledávání stavového prostoru Hledání nejlepší cesty algoritmus A* Hledání nejlepší cesty A* vlastnosti expanduje uzly podle f(n) = g(n)+h(n) A* expanduje všechny uzly s f(n) < C A* expanduje některé uzly s f(n) = C A* neexpanduje žádné uzly s f(n) > C úplnost je úplný (pokud [počet uzlů s f < C ], tedy cena ǫ a b konečné) optimálnost je optimální časová složitost prostorová složitost Úvod do umělé inteligence 4/12 11 / 25
30 Informované prohledávání stavového prostoru Hledání nejlepší cesty algoritmus A* Hledání nejlepší cesty A* vlastnosti expanduje uzly podle f(n) = g(n)+h(n) A* expanduje všechny uzly s f(n) < C A* expanduje některé uzly s f(n) = C A* neexpanduje žádné uzly s f(n) > C úplnost je úplný (pokud [počet uzlů s f < C ], tedy cena ǫ a b konečné) optimálnost je optimální časová složitost prostorová složitost O ( (b ) d), exponenciální v délce řešení d b... tzv. efektivní faktor větvení, viz dále Úvod do umělé inteligence 4/12 11 / 25
31 Informované prohledávání stavového prostoru Hledání nejlepší cesty algoritmus A* Hledání nejlepší cesty A* vlastnosti expanduje uzly podle f(n) = g(n)+h(n) A* expanduje všechny uzly s f(n) < C A* expanduje některé uzly s f(n) = C A* neexpanduje žádné uzly s f(n) > C úplnost je úplný (pokud [počet uzlů s f < C ], tedy cena ǫ a b konečné) optimálnost je optimální časová složitost O ( (b ) d), exponenciální v délce řešení d b... tzv. efektivní faktor větvení, viz dále prostorová složitost O ( (b ) d), každý uzel v paměti Úvod do umělé inteligence 4/12 11 / 25
32 Informované prohledávání stavového prostoru Hledání nejlepší cesty algoritmus A* Hledání nejlepší cesty A* vlastnosti expanduje uzly podle f(n) = g(n)+h(n) A* expanduje všechny uzly s f(n) < C A* expanduje některé uzly s f(n) = C A* neexpanduje žádné uzly s f(n) > C úplnost je úplný (pokud [počet uzlů s f < C ], tedy cena ǫ a b konečné) optimálnost je optimální časová složitost O ( (b ) d), exponenciální v délce řešení d b... tzv. efektivní faktor větvení, viz dále prostorová složitost O ( (b ) d), každý uzel v paměti Problém s prostorovou složitostí řeší algoritmy jako IDA*, RBFS Úvod do umělé inteligence 4/12 11 / 25
33 Informované prohledávání stavového prostoru Hledání nejlepší cesty algoritmus A* Důkaz optimálnosti algoritmu A* předpokládejme, že byl vygenerován nějaký suboptimální cíl G 2 a je uložen ve frontě. dále necht n je neexpandovaný uzel na nejkratší cestě k optimálnímu cíli G 1 (tj. chybně neexpandovaný uzel ve správném řešení) n Start G1 G2 Úvod do umělé inteligence 4/12 12 / 25
34 Informované prohledávání stavového prostoru Hledání nejlepší cesty algoritmus A* Důkaz optimálnosti algoritmu A* Pak předpokládejme, že byl vygenerován nějaký suboptimální cíl G 2 a je uložen ve frontě. dále necht n je neexpandovaný uzel na nejkratší cestě k optimálnímu cíli G 1 (tj. chybně neexpandovaný uzel ve správném řešení) f(g 2 ) = g(g 2 ) protože h(g 2 ) = 0 n Start G1 G2 Úvod do umělé inteligence 4/12 12 / 25
35 Informované prohledávání stavového prostoru Hledání nejlepší cesty algoritmus A* Důkaz optimálnosti algoritmu A* Pak předpokládejme, že byl vygenerován nějaký suboptimální cíl G 2 a je uložen ve frontě. dále necht n je neexpandovaný uzel na nejkratší cestě k optimálnímu cíli G 1 (tj. chybně neexpandovaný uzel ve správném řešení) n Start G1 G2 f(g 2 ) = g(g 2 ) protože h(g 2 ) = 0 > g(g 1 ) protože G 2 je suboptimální Úvod do umělé inteligence 4/12 12 / 25
36 Informované prohledávání stavového prostoru Hledání nejlepší cesty algoritmus A* Důkaz optimálnosti algoritmu A* Pak předpokládejme, že byl vygenerován nějaký suboptimální cíl G 2 a je uložen ve frontě. dále necht n je neexpandovaný uzel na nejkratší cestě k optimálnímu cíli G 1 (tj. chybně neexpandovaný uzel ve správném řešení) n Start G1 G2 f(g 2 ) = g(g 2 ) protože h(g 2 ) = 0 > g(g 1 ) protože G 2 je suboptimální f(n) protože h je přípustná Úvod do umělé inteligence 4/12 12 / 25
37 Informované prohledávání stavového prostoru Hledání nejlepší cesty algoritmus A* Důkaz optimálnosti algoritmu A* Pak předpokládejme, že byl vygenerován nějaký suboptimální cíl G 2 a je uložen ve frontě. dále necht n je neexpandovaný uzel na nejkratší cestě k optimálnímu cíli G 1 (tj. chybně neexpandovaný uzel ve správném řešení) n Start G1 G2 f(g 2 ) = g(g 2 ) protože h(g 2 ) = 0 > g(g 1 ) protože G 2 je suboptimální f(n) protože h je přípustná tedy f(g 2 ) > f(n) A nikdy nevybere G 2 pro expanzi dřív než expanduje n spor s předpokladem, že n je neexpandovaný uzel Úvod do umělé inteligence 4/12 12 / 25
38 Informované prohledávání stavového prostoru Hledání nejlepší cesty algoritmus A* Hledání nejlepší cesty algoritmus A* reprezentace uzlů: Prolog: l(n,f/g)... Python: trojice (n, f, g)... listový uzel N, F = f(n) = G+h(N), G = g(n) Prolog: t(n,f/g,subs)...python: čtveřice (n, f, g, subs)... podstrom s kořenem N, Subs podstromy seřazené podle f, G = g(n) a F = f-hodnota nejnadějnějšího následníka N Úvod do umělé inteligence 4/12 13 / 25
39 Informované prohledávání stavového prostoru Hledání nejlepší cesty algoritmus A* Hledání nejlepší cesty algoritmus A* reprezentace uzlů: Prolog: l(n,f/g)... Python: trojice (n, f, g)... listový uzel N, F = f(n) = G+h(N), G = g(n) Prolog: t(n,f/g,subs)...python: čtveřice (n, f, g, subs)... podstrom s kořenem N, Subs podstromy seřazené podle f, G = g(n) a F = f-hodnota nejnadějnějšího následníka N # horní závora pro cenu nejlepší cesty biggest = 9999 def best search(start): for, solved, sol in expand(nil, (start, 0, 0), biggest): if solved == yes : yield sol # pokrač. Úvod do umělé inteligence 4/12 13 / 25
40 Informované prohledávání stavového prostoru Hledání nejlepší cesty algoritmus A* Hledání nejlepší cesty algoritmus A* reprezentace uzlů: Prolog: l(n,f/g)... Python: trojice (n, f, g)... listový uzel N, F = f(n) = G+h(N), G = g(n) Prolog: t(n,f/g,subs)...python: čtveřice (n, f, g, subs)... podstrom s kořenem N, Subs podstromy seřazené podle f, G = g(n) a F = f-hodnota nejnadějnějšího následníka N # horní závora pro cenu nejlepší cesty biggest = 9999 def best search(start): for, solved, sol in expand(nil, (start, 0, 0), biggest): if solved == yes : yield sol # pokrač. expand(path,tree,bound) (tree1, solved, sol) path cesta mezi kořenem a tree tree prohledávaný podstrom bound f-limita pro expandování Tr vrací trojici: tree1 tree expandovaný až po bound solved yes, no, never sol cesta z kořene do cílového uzlu Úvod do umělé inteligence 4/12 13 / 25
41 Informované prohledávání stavového prostoru Hledání nejlepší cesty algoritmus A* Hledání nejlepší cesty algoritmus A* reprezentace uzlů: Prolog: l(n,f/g)... Python: trojice (n, f, g)... listový uzel N, F = f(n) = G+h(N), G = g(n) Prolog: t(n,f/g,subs)...python: čtveřice (n, f, g, subs)... podstrom s kořenem N, Subs podstromy seřazené podle f, G = g(n) a F = f-hodnota nejnadějnějšího následníka N # horní závora pro cenu nejlepší cesty biggest = 9999 def best search(start): for, solved, sol in expand(nil, (start, 0, 0), biggest): if solved == yes : yield sol # pokrač. expand(path,tree,bound) (tree1, solved, sol) path cesta mezi kořenem a tree tree prohledávaný podstrom bound f-limita pro expandování Tr vrací trojici: tree1 tree expandovaný až po bound solved yes, no, never sol cesta z kořene do cílového uzlu odpovídá return pro generátorovou funkci Úvod do umělé inteligence 4/12 13 / 25
42 Informované prohledávání stavového prostoru Hledání nejlepší cesty algoritmus A* Hledání nejlepší cesty algoritmus A* pokrač. def expand(path, tree, bound): if len(tree) == 3: # listový uzel node, f, g = tree if is goal(node): yield (None, yes, (f, Cons(node, path))) if f <= bound: succ = Nil for m, c in move anyyc(node): if not member(m, path): succ = Cons((m, c), succ) if succ == Nil: yield (None, never, None) else: trees = succlist(g, succ) f1 = bestf(trees) for tree1, solved, sol in expand(path, (node, f1, g, trees), bound): yield (tree1, solved, sol) elif f > bound: yield (tree, no, None) else: # stromový uzel node, f, g, trees = tree if trees == Nil: yield (None, never, None) else: if f <= bound: bound1 = min(bound, bestf(trees.tail)) for t1, solved1, sol1 in expand(cons(node, path), trees.head, bound1): for tree1, solved, sol in continue (path, (node, f, g, Cons(t1, trees.tail)), bound, solved1, sol1): yield (tree1, solved, sol) elif f > bound: yield (tree, no, None) # pokrač. Úvod do umělé inteligence 4/12 14 / 25
43 Informované prohledávání stavového prostoru Hledání nejlepší cesty algoritmus A* Hledání nejlepší cesty algoritmus A* pokrač. def expand(path, tree, bound): if len(tree) == 3: # listový uzel vrací trojici: (tree1, solved, sol) node, f, g = tree if is goal(node): yield (None, yes, (f, Cons(node, path))) if f <= bound: succ = Nil for m, c in move anyyc(node): if not member(m, path): succ = Cons((m, c), succ) if succ == Nil: yield (None, never, None) else: trees = succlist(g, succ) f1 = bestf(trees) for tree1, solved, sol in expand(path, (node, f1, g, trees), bound): yield (tree1, solved, sol) elif f > bound: yield (tree, no, None) else: # stromový uzel node, f, g, trees = tree if trees == Nil: yield (None, never, None) else: if f <= bound: bound1 = min(bound, bestf(trees.tail)) for t1, solved1, sol1 in expand(cons(node, path), trees.head, bound1): for tree1, solved, sol in continue (path, (node, f, g, Cons(t1, trees.tail)), bound, solved1, sol1): yield (tree1, solved, sol) elif f > bound: yield (tree, no, None) # pokrač. Úvod do umělé inteligence 4/12 14 / 25
44 Informované prohledávání stavového prostoru Hledání nejlepší cesty algoritmus A* Hledání nejlepší cesty algoritmus A* pokrač. def expand(path, tree, bound): if len(tree) == 3: # listový uzel vrací trojici: (tree1, solved, sol) node, f, g = tree if is goal(node): yield (None, yes, (f, Cons(node, path))) if f <= bound: succ = Nil for m, c in move anyyc(node): if not member(m, path): succ = Cons((m, c), succ) if succ == Nil: yield (None, never, None) else: succlist setřídí seznam listů podle f-hodnot trees = succlist(g, succ) f1 = bestf(trees) for tree1, solved, sol in expand(path, (node, f1, g, trees), bound): yield (tree1, solved, sol) elif f > bound: yield (tree, no, None) else: # stromový uzel node, f, g, trees = tree if trees == Nil: yield (None, never, None) else: if f <= bound: bound1 = min(bound, bestf(trees.tail)) for t1, solved1, sol1 in expand(cons(node, path), trees.head, bound1): for tree1, solved, sol in continue (path, (node, f, g, Cons(t1, trees.tail)), bound, solved1, sol1): yield (tree1, solved, sol) elif f > bound: yield (tree, no, None) # pokrač. Úvod do umělé inteligence 4/12 14 / 25
45 Informované prohledávání stavového prostoru Hledání nejlepší cesty algoritmus A* Hledání nejlepší cesty algoritmus A* pokrač. def expand(path, tree, bound): if len(tree) == 3: # listový uzel vrací trojici: (tree1, solved, sol) node, f, g = tree if is goal(node): yield (None, yes, (f, Cons(node, path))) if f <= bound: succ = Nil for m, c in move anyyc(node): if not member(m, path): succ = Cons((m, c), succ) if succ == Nil: yield (None, never, None) else: succlist setřídí seznam listů podle f-hodnot trees = succlist(g, succ) f1 = bestf(trees) for tree1, solved, sol in expand(path, (node, f1, g, trees), bound): yield (tree1, solved, sol) elif f > bound: yield (tree, no, None) else: # stromový uzel node, f, g, trees = tree if trees == Nil: yield (None, never, None) # pokrač. else: continue volba způsobu pokračování podle výsledků expand if f <= bound: bound1 = min(bound, bestf(trees.tail)) for t1, solved1, sol1 in expand(cons(node, path), trees.head, bound1): for tree1, solved, sol in continue (path, (node, f, g, Cons(t1, trees.tail)), bound, solved1, sol1): yield (tree1, solved, sol) elif f > bound: yield (tree, no, None) Úvod do umělé inteligence 4/12 14 / 25
46 Informované prohledávání stavového prostoru Hledání nejlepší cesty algoritmus A* Hledání nejlepší cesty algoritmus A* pokrač. def continue (path, tree, bound, subtr solved, sol): node,, g, trees = tree if subtr solved == yes : yield (None, yes, sol) elif subtr solved == no : nts = insert(trees.head, trees.tail) f1 = bestf(nts) for tree1, solved, sol in expand(path, (node, f1, g, nts), bound): yield (tree1, solved, sol) elif subtr solved == never : f1 = bestf(trees.tail) for tree1, solved, sol in expand(path, (node, f1, g, trees.tail), bound): yield (tree1, solved, sol) # pokrač. Úvod do umělé inteligence 4/12 15 / 25
47 Informované prohledávání stavového prostoru Hledání nejlepší cesty algoritmus A* Hledání nejlepší cesty algoritmus A* pokrač. def continue (path, tree, bound, subtr solved, sol): node,, g, trees = tree if subtr solved == yes : yield (None, yes, sol) elif subtr solved == no : nts = insert(trees.head, trees.tail) f1 = bestf(nts) for tree1, solved, sol in expand(path, (node, f1, g, nts), bound): yield (tree1, solved, sol) elif subtr solved == never : f1 = bestf(trees.tail) # pokrač. continue volba způsobu pokračování podle výsledků expand for tree1, solved, sol in expand(path, (node, f1, g, trees.tail), yield (tree1, solved, sol) bound): Úvod do umělé inteligence 4/12 15 / 25
48 Informované prohledávání stavového prostoru Hledání nejlepší cesty algoritmus A* Hledání nejlepší cesty algoritmus A* pokrač. def succlist(g0, succ): if succ == Nil: return Nil n, c = succ.head g = g0 + c f = g + h(n) ts1 = succlist(g0, succ.tail) ts = insert((n, f, g), ts1) return ts def f(tree): if len(tree) == 3: # listový uzel, f, = tree else: # stromový uzel, f,, = tree return f def bestf(trees): if trees == Nil: return biggest return f(trees.head) def insert(t, ts): if f(t) <= bestf(ts): return Cons(t, ts) return Cons(ts.head, insert(t, ts.tail)) Úvod do umělé inteligence 4/12 16 / 25
49 Informované prohledávání stavového prostoru Hledání nejlepší cesty algoritmus A* Hledání nejlepší cesty algoritmus A* pokrač. def succlist(g0, succ): succlist(g0, succ) setřídí seznam listů podle f-hodnot if succ == Nil: return Nil vrací setříděný seznam n, c = succ.head g = g0 + c f = g + h(n) ts1 = succlist(g0, succ.tail) ts = insert((n, f, g), ts1) return ts def f(tree): if len(tree) == 3: # listový uzel, f, = tree else: # stromový uzel, f,, = tree return f def bestf(trees): if trees == Nil: return biggest return f(trees.head) def insert(t, ts): if f(t) <= bestf(ts): return Cons(t, ts) return Cons(ts.head, insert(t, ts.tail)) Úvod do umělé inteligence 4/12 16 / 25
50 Informované prohledávání stavového prostoru Hledání nejlepší cesty algoritmus A* Hledání nejlepší cesty algoritmus A* pokrač. def succlist(g0, succ): succlist(g0, succ) setřídí seznam listů podle f-hodnot if succ == Nil: return Nil vrací setříděný seznam n, c = succ.head g = g0 + c f = g + h(n) ts1 = succlist(g0, succ.tail) ts = insert((n, f, g), ts1) return ts vytáhne f ze struktury def f(tree): if len(tree) == 3: # listový uzel, f, = tree else: # stromový uzel, f,, = tree return f def bestf(trees): if trees == Nil: return biggest return f(trees.head) def insert(t, ts): if f(t) <= bestf(ts): return Cons(t, ts) return Cons(ts.head, insert(t, ts.tail)) Úvod do umělé inteligence 4/12 16 / 25
51 Informované prohledávání stavového prostoru Hledání nejlepší cesty algoritmus A* Hledání nejlepší cesty algoritmus A* pokrač. def succlist(g0, succ): succlist(g0, succ) setřídí seznam listů podle f-hodnot if succ == Nil: return Nil vrací setříděný seznam n, c = succ.head g = g0 + c f = g + h(n) ts1 = succlist(g0, succ.tail) ts = insert((n, f, g), ts1) return ts vytáhne f ze struktury def f(tree): if len(tree) == 3: # listový uzel, f, = tree else: # stromový uzel, f,, = tree return f def bestf(trees): if trees == Nil: return biggest return f(trees.head) nejlepší f-hodnota ze seznamu stromů def insert(t, ts): if f(t) <= bestf(ts): return Cons(t, ts) return Cons(ts.head, insert(t, ts.tail)) Úvod do umělé inteligence 4/12 16 / 25
52 Informované prohledávání stavového prostoru Hledání nejlepší cesty algoritmus A* Hledání nejlepší cesty algoritmus A* pokrač. def succlist(g0, succ): succlist(g0, succ) setřídí seznam listů podle f-hodnot if succ == Nil: return Nil vrací setříděný seznam n, c = succ.head g = g0 + c f = g + h(n) ts1 = succlist(g0, succ.tail) ts = insert((n, f, g), ts1) return ts vytáhne f ze struktury def f(tree): if len(tree) == 3: # listový uzel, f, = tree else: # stromový uzel, f,, = tree return f def bestf(trees): if trees == Nil: return biggest return f(trees.head) nejlepší f-hodnota ze seznamu stromů vloží t do seznamu stromů ts podle f def insert(t, ts): if f(t) <= bestf(ts): return Cons(t, ts) return Cons(ts.head, insert(t, ts.tail)) Úvod do umělé inteligence 4/12 16 / 25
53 Informované prohledávání stavového prostoru Hledání nejlepší cesty algoritmus A* Hledání nejlepší cesty algoritmus A* heapq řešení pomocí modulu heapq implementace prioritní fronty import heapq def best search(start): heap = [(0, 0, start, Nil)] while True: try: f, g, node, path = heapq.heappop(heap) except IndexError: # fronta je prázdná break path1 = Cons(node, path) if is goal(node): yield (f, path1) if f <= biggest: for m, c in move anyyc(node): if not member(m, path1): heapq.heappush(heap, (g+c+h(m), g+c, m, path1)) Úvod do umělé inteligence 4/12 17 / 25
54 Informované prohledávání stavového prostoru Příklad řešení posunovačky Příklad řešení posunovačky konfigurace = seznam souřadnic X/Y: [pozice díry, pozice kámen č.1,...] start([2/2, 3/1, 2/3, 2/1, 3/3, 1/2, 3/2, 1/3, 1/1]). goal([1/3, 2/3, 3/3, 1/2, 2/2, 3/2, 1/1, 2/1, 3/1]). Úvod do umělé inteligence 4/12 18 / 25
55 Informované prohledávání stavového prostoru Příklad řešení posunovačky Příklad řešení posunovačky konfigurace = seznam souřadnic X/Y: [pozice díry, pozice kámen č.1,...] start([2/2, 3/1, 2/3, 2/1, 3/3, 1/2, 3/2, 1/3, 1/1]). goal([1/3, 2/3, 3/3, 1/2, 2/2, 3/2, 1/1, 2/1, 3/1]). move(+uzel, -NaslUzel,-Cena) pomocí pohybů mezery (cena vždy 1) move([xb/yb Numbers], [XL/YB NewNumbers], 1) :- % doleva XB>1, XL is XB 1, replace(xl/yb, XB/YB, Numbers, NewNumbers). move([xb/yb Numbers], [XR/YB NewNumbers], 1) :- % doprava XB<3, XR is XB + 1, replace(xr/yb, XB/YB, Numbers, NewNumbers). move([xb/yb Numbers], [XB/YD NewNumbers], 1) :- % dolu YB>1, YD is YB 1, replace(xb/yd, XB/YB, Numbers, NewNumbers). move([xb/yb Numbers], [XB/YU NewNumbers], 1) :- % nahoru YB<3, YU is YB + 1, replace(xb/yu, XB/YB, Numbers, NewNumbers). % replace(+co, +Cim, +Seznam, NovySeznam) replace(co,cim,[co T],[Cim T]):-!. replace(co,cim,[h T1],[H T2]) :- replace(co,cim,t1,t2). Úvod do umělé inteligence 4/12 18 / 25
56 Informované prohledávání stavového prostoru Příklad řešení posunovačky Příklad řešení posunovačky pokrač. Volba přípustné heuristické funkce h: h 1 (n) = počet dlaždiček, které nejsou na svém místě h 1 (S) = 8 Úvod do umělé inteligence 4/12 19 / 25
57 Informované prohledávání stavového prostoru Příklad řešení posunovačky Příklad řešení posunovačky pokrač. Volba přípustné heuristické funkce h: h 1 (n) = počet dlaždiček, které nejsou na svém místě h 1 (S) = 8 h 2 (n) = součet manhattanských vzdáleností dlaždic od svých správných pozic h 2 (S) = = 18 Úvod do umělé inteligence 4/12 19 / 25
58 Informované prohledávání stavového prostoru Příklad řešení posunovačky Příklad řešení posunovačky pokrač. Volba přípustné heuristické funkce h: h 1 (n) = počet dlaždiček, které nejsou na svém místě h 1 (S) = 8 h 2 (n) = součet manhattanských vzdáleností dlaždic od svých správných pozic h 2 (S) = = 18 h 1 i h 2 jsou přípustné... h (S) = 26 Úvod do umělé inteligence 4/12 19 / 25
59 Informované prohledávání stavového prostoru Příklad řešení posunovačky Příklad řešení posunovačky pokrač. Volba přípustné heuristické funkce h: h 1 (n) = počet dlaždiček, které nejsou na svém místě h 1 (S) = 8 h 2 (n) = součet manhattanských vzdáleností dlaždic od svých správných pozic h 2 (S) = = 18 h 1 i h 2 jsou přípustné... h (S) = 26 :- start (Start), bestsearch(start, Solution), reverse (Solution, RSolution), writelist (RSolution). 1: [2/2, 3/1, 2/3, 2/1, 3/3, 1/2, 3/2, 1/3, 1/1] 2: [1/2, 3/1, 2/3, 2/1, 3/3, 2/2, 3/2, 1/3, 1/1]... 26: [1/2, 2/3, 3/3, 1/3, 2/2, 3/2, 1/1, 2/1, 3/1] 27: [1/3, 2/3, 3/3, 1/2, 2/2, 3/2, 1/1, 2/1, 3/1] Úvod do umělé inteligence 4/12 19 / 25
60 Jak najít dobrou heuristiku? Jak najít přípustnou heuristickou funkci? Jak najít přípustnou heuristickou funkci? je možné najít obecné pravidlo, jak objevit heuristiku h 1 nebo h 2? Úvod do umělé inteligence 4/12 20 / 25
61 Jak najít dobrou heuristiku? Jak najít přípustnou heuristickou funkci? Jak najít přípustnou heuristickou funkci? je možné najít obecné pravidlo, jak objevit heuristiku h 1 nebo h 2? h 1 i h 2 jsou délky cest pro zjednodušené verze problému Posunovačka: při přenášení dlaždice kamkoliv h 1 =počet kroků nejkratšího řešení při posouvání dlaždice kamkoliv o 1 pole (i na plné) h 2 =počet kroků nejkratšího řešení Úvod do umělé inteligence 4/12 20 / 25
62 Jak najít dobrou heuristiku? Jak najít přípustnou heuristickou funkci? Jak najít přípustnou heuristickou funkci? je možné najít obecné pravidlo, jak objevit heuristiku h 1 nebo h 2? h 1 i h 2 jsou délky cest pro zjednodušené verze problému Posunovačka: při přenášení dlaždice kamkoliv h 1 =počet kroků nejkratšího řešení při posouvání dlaždice kamkoliv o 1 pole (i na plné) h 2 =počet kroků nejkratšího řešení relaxovaný problém méně omezení na akce než původní problém Cena optimálního řešení relaxovaného problému je přípustná heuristika pro původní problém. optimální řešení původního problému = řešení relaxovaného problému Úvod do umělé inteligence 4/12 20 / 25
63 Jak najít dobrou heuristiku? Jak najít přípustnou heuristickou funkci? Jak najít přípustnou heuristickou funkci? je možné najít obecné pravidlo, jak objevit heuristiku h 1 nebo h 2? h 1 i h 2 jsou délky cest pro zjednodušené verze problému Posunovačka: při přenášení dlaždice kamkoliv h 1 =počet kroků nejkratšího řešení při posouvání dlaždice kamkoliv o 1 pole (i na plné) h 2 =počet kroků nejkratšího řešení relaxovaný problém méně omezení na akce než původní problém Cena optimálního řešení relaxovaného problému je přípustná heuristika pro původní problém. optimální řešení původního problému = řešení relaxovaného problému Posunovačka a relaxovaná posunovačka: dlaždice se může přesunout z A na B A sousedí s B B je prázdná Úvod do umělé inteligence 4/12 20 / 25
64 Jak najít dobrou heuristiku? Jak najít přípustnou heuristickou funkci? Jak najít přípustnou heuristickou funkci? je možné najít obecné pravidlo, jak objevit heuristiku h 1 nebo h 2? h 1 i h 2 jsou délky cest pro zjednodušené verze problému Posunovačka: při přenášení dlaždice kamkoliv h 1 =počet kroků nejkratšího řešení při posouvání dlaždice kamkoliv o 1 pole (i na plné) h 2 =počet kroků nejkratšího řešení relaxovaný problém méně omezení na akce než původní problém Cena optimálního řešení relaxovaného problému je přípustná heuristika pro původní problém. optimální řešení původního problému = řešení relaxovaného problému Posunovačka a relaxovaná posunovačka: dlaždice se může přesunout z A na B A sousedí s B B je prázdná (a) dlaždice se může přesunout z A na B A sousedí s B (b) dlaždice se může přesunout z A na B B je prázdná (c) dlaždice se může přesunout z A na B Úvod do umělé inteligence 4/12 20 / 25
65 Jak najít dobrou heuristiku? Jak najít přípustnou heuristickou funkci? Jak najít přípustnou heuristickou funkci? je možné najít obecné pravidlo, jak objevit heuristiku h 1 nebo h 2? h 1 i h 2 jsou délky cest pro zjednodušené verze problému Posunovačka: při přenášení dlaždice kamkoliv h 1 =počet kroků nejkratšího řešení při posouvání dlaždice kamkoliv o 1 pole (i na plné) h 2 =počet kroků nejkratšího řešení relaxovaný problém méně omezení na akce než původní problém Cena optimálního řešení relaxovaného problému je přípustná heuristika pro původní problém. optimální řešení původního problému = řešení relaxovaného problému Posunovačka a relaxovaná posunovačka: dlaždice se může přesunout z A na B A sousedí s B B je prázdná (a) dlaždice se může přesunout z A na B A sousedí s B.. h 2 (b) dlaždice se může přesunout z A na B B je prázdná (c) dlaždice se může přesunout z A na B Úvod do umělé inteligence 4/12 20 / 25
66 Jak najít dobrou heuristiku? Jak najít přípustnou heuristickou funkci? Jak najít přípustnou heuristickou funkci? je možné najít obecné pravidlo, jak objevit heuristiku h 1 nebo h 2? h 1 i h 2 jsou délky cest pro zjednodušené verze problému Posunovačka: při přenášení dlaždice kamkoliv h 1 =počet kroků nejkratšího řešení při posouvání dlaždice kamkoliv o 1 pole (i na plné) h 2 =počet kroků nejkratšího řešení relaxovaný problém méně omezení na akce než původní problém Cena optimálního řešení relaxovaného problému je přípustná heuristika pro původní problém. optimální řešení původního problému = řešení relaxovaného problému Posunovačka a relaxovaná posunovačka: dlaždice se může přesunout z A na B A sousedí s B B je prázdná (a) dlaždice se může přesunout z A na B A sousedí s B.. h 2 (b) dlaždice se může přesunout z A na B B je prázdná (c) dlaždice se může přesunout z A na B... h 1 Úvod do umělé inteligence 4/12 20 / 25
67 Jak najít dobrou heuristiku? Jak najít přípustnou heuristickou funkci? Jak najít přípustnou heuristickou funkci? je možné najít obecné pravidlo, jak objevit heuristiku h 1 nebo h 2? h 1 i h 2 jsou délky cest pro zjednodušené verze problému Posunovačka: při přenášení dlaždice kamkoliv h 1 =počet kroků nejkratšího řešení při posouvání dlaždice kamkoliv o 1 pole (i na plné) h 2 =počet kroků nejkratšího řešení relaxovaný problém méně omezení na akce než původní problém Cena optimálního řešení relaxovaného problému je přípustná heuristika pro původní problém. optimální řešení původního problému = řešení relaxovaného problému Posunovačka a relaxovaná posunovačka: dlaždice se může přesunout z A na B A sousedí s B B je prázdná (a) dlaždice se může přesunout z A na B A sousedí s B.. h 2 (b) dlaždice se může přesunout z A na B B je prázdná... Gaschnigova h. (c) dlaždice se může přesunout z A na B... h 1 Úvod do umělé inteligence 4/12 20 / 25
68 Jak najít dobrou heuristiku? Určení kvality heuristiky Určení kvality heuristiky efektivní faktor větvení b N...počet vygenerovaných uzlů, d...hloubka řešení, idealizovaný strom s N +1 uzly má faktor větvení b (reálné číslo): N +1 = 1+b +(b ) 2 + +(b ) d např.: když A najde řešení po 52 uzlech v hloubce 5... b = 1.92 heuristika je tím lepší, čím bĺıže je b hodnotě 1. Úvod do umělé inteligence 4/12 21 / 25
69 Jak najít dobrou heuristiku? Určení kvality heuristiky Určení kvality heuristiky efektivní faktor větvení b N...počet vygenerovaných uzlů, d...hloubka řešení, idealizovaný strom s N +1 uzly má faktor větvení b (reálné číslo): N +1 = 1+b +(b ) 2 + +(b ) d např.: když A najde řešení po 52 uzlech v hloubce 5... b = 1.92 heuristika je tím lepší, čím bĺıže je b hodnotě 1. měření b na množině testovacích sad dobrá představa o přínosu heuristiky 8-posunovačka Průměrný počet uzlů Efektivní faktor větvení b d IDS A (h 1 ) A (h 2 ) IDS A (h 1 ) A (h 2 ) Úvod do umělé inteligence 4/12 21 / 25
70 Jak najít dobrou heuristiku? Určení kvality heuristiky Určení kvality heuristiky efektivní faktor větvení b N...počet vygenerovaných uzlů, d...hloubka řešení, idealizovaný strom s N +1 uzly má faktor větvení b (reálné číslo): N +1 = 1+b +(b ) 2 + +(b ) d např.: když A najde řešení po 52 uzlech v hloubce 5... b = 1.92 heuristika je tím lepší, čím bĺıže je b hodnotě 1. měření b na množině testovacích sad dobrá představa o přínosu heuristiky 8-posunovačka Průměrný počet uzlů Efektivní faktor větvení b d IDS A (h 1 ) A (h 2 ) IDS A (h 1 ) A (h 2 ) h 2 dominuje h 1 ( n : h2 (n) h 1 (n) )... h 2 je lepší (nebo stejná) než h 1 ve všech případech Úvod do umělé inteligence 4/12 21 / 25
71 Jak najít dobrou heuristiku? Příklad rozvrh práce procesorů Příklad rozvrh práce procesorů úlohy t i s potřebným časem na zpracování D i (např.: i = 1,...,7) m procesorů (např.: m = 3) relace precedence mezi úlohami které úlohy mohou začít až po skončení dané úlohy t 1 /D 1 = 4 t 2 /D 2 = 2 t 3 /D 3 = 2 t 4 /D 4 = 20 t 5 /D 5 = 20 t 6 /D 6 = 11 t 7 /D 7 = 11 Úvod do umělé inteligence 4/12 22 / 25
72 Jak najít dobrou heuristiku? Příklad rozvrh práce procesorů Příklad rozvrh práce procesorů úlohy t i s potřebným časem na zpracování D i (např.: i = 1,...,7) m procesorů (např.: m = 3) relace precedence mezi úlohami které úlohy mohou začít až po skončení dané úlohy t 1 /D 1 = 4 t 2 /D 2 = 2 t 3 /D 3 = 2 t 4 /D 4 = 20 t 5 /D 5 = 20 t 6 /D 6 = 11 t 7 /D 7 = 11 problém: najít rozvrh práce pro každý procesor s minimalizací celkového času CPU 1 t 3 = t 6 = = t 5 = CPU 2 t 2 = t 7 =... CPU 3 t 1 = t 4 =... Úvod do umělé inteligence 4/12 22 / 25
73 Jak najít dobrou heuristiku? Příklad rozvrh práce procesorů Příklad rozvrh práce procesorů úlohy t i s potřebným časem na zpracování D i (např.: i = 1,...,7) m procesorů (např.: m = 3) relace precedence mezi úlohami které úlohy mohou začít až po skončení dané úlohy t 1 /D 1 = 4 t 2 /D 2 = 2 t 3 /D 3 = 2 t 4 /D 4 = 20 t 5 /D 5 = 20 t 6 /D 6 = 11 t 7 /D 7 = 11 problém: najít rozvrh práce pro každý procesor s minimalizací celkového času CPU 1 t 3 = t 6 = = t 5 = CPU 2 t 2 = t 7 =... CPU 3 t 1 = t 4 = CPU 1 t 3 = t 6 = = t 7 =... CPU 2 t 2. = t 5 =... CPU 3 t 1 = t 4 =... Úvod do umělé inteligence 4/12 22 / 25
74 Jak najít dobrou heuristiku? Příklad rozvrh práce procesorů Příklad rozvrh práce procesorů pokrač. stavy: nezařazené úlohy*běžící úlohy*čas ukončení např.: [WaitingT1/D1,WaitingT2/D2,...]*[Task1/F1,Task2/F2,Task3/F3]*FinTime běžící úlohy udržujeme setříděné F1 F2 F3 Úvod do umělé inteligence 4/12 23 / 25
75 Jak najít dobrou heuristiku? Příklad rozvrh práce procesorů Příklad rozvrh práce procesorů pokrač. stavy: nezařazené úlohy*běžící úlohy*čas ukončení např.: [WaitingT1/D1,WaitingT2/D2,...]*[Task1/F1,Task2/F2,Task3/F3]*FinTime běžící úlohy udržujeme setříděné F1 F2 F3 přechodová funkce move(+uzel, -NaslUzel, -Cena): Úvod do umělé inteligence 4/12 23 / 25
76 Jak najít dobrou heuristiku? Příklad rozvrh práce procesorů Příklad rozvrh práce procesorů pokrač. stavy: nezařazené úlohy*běžící úlohy*čas ukončení např.: [WaitingT1/D1,WaitingT2/D2,...]*[Task1/F1,Task2/F2,Task3/F3]*FinTime běžící úlohy udržujeme setříděné F1 F2 F3 přechodová funkce move(+uzel, -NaslUzel, -Cena): move(tasks1 [ /F Active1] Fin1, Tasks2 Active2 Fin2, Cost) :- del1(task/d,tasks1,tasks2), \+ (member(t/,tasks2),before(t,task)), % kontrola predence v čekajících \+ (member(t1/f1,active1),f<f1,before(t1,task)), % a v zařazených úlohách Time is F+D, insert(task/time,active1,active2,fin1,fin2), Cost is Fin2 Fin1. move(tasks [ /F Active1] Fin,Tasks Active2 Fin,0) :- insertidle(f,active1,active2). before(t1,t2) :- precedence(t1,t2). before(t1,t2) :- precedence(t,t2),before(t1,t). insert(s/a,[t/b L],[S/A,T/B L],F,F) :- A=<B,!. insert(s/a,[t/b L],[T/B L1],F1,F2) :- insert(s/a,l,l1,f1,f2). insert(s/a,[],[s/a],,a). insertidle(a,[t/b L],[idle/B,T/B L]) :- A<B,!. insertidle(a,[t/b L],[T/B L1]) :- insertidle(a,l,l1). goal([] ). Úvod do umělé inteligence 4/12 23 / 25
77 Jak najít dobrou heuristiku? Příklad rozvrh práce procesorů Příklad rozvrh práce procesorů pokrač. stavy: nezařazené úlohy*běžící úlohy*čas ukončení např.: [WaitingT1/D1,WaitingT2/D2,...]*[Task1/F1,Task2/F2,Task3/F3]*FinTime běžící úlohy udržujeme setříděné F1 F2 F3 přechodová funkce move(+uzel, -NaslUzel, -Cena): move(tasks1 [ /F Active1] Fin1, Tasks2 Active2 Fin2, Cost) :- del1(task/d,tasks1,tasks2), \+ (member(t/,tasks2),before(t,task)), % kontrola predence v čekajících \+ (member(t1/f1,active1),f<f1,before(t1,task)), % a v zařazených úlohách Time is F+D, insert(task/time,active1,active2,fin1,fin2), Cost is Fin2 Fin1. move(tasks [ /F Active1] Fin,Tasks Active2 Fin,0) :- insertidle(f,active1,active2). before(t1,t2) :- precedence(t1,t2). before(t1,t2) :- precedence(t,t2),before(t1,t). insert(s/a,[t/b L],[S/A,T/B L],F,F) :- A=<B,!. insert(s/a,[t/b L],[T/B L1],F1,F2) :- insert(s/a,l,l1,f1,f2). insert(s/a,[],[s/a],,a). insertidle(a,[t/b L],[idle/B,T/B L]) :- A<B,!. insertidle(a,[t/b L],[T/B L1]) :- insertidle(a,l,l1). goal([] ). before( +Task1, +Task2) tranzitivní obal relace precedence Úvod do umělé inteligence 4/12 23 / 25
78 Jak najít dobrou heuristiku? Příklad rozvrh práce procesorů Příklad rozvrh práce procesorů pokrač. počáteční uzel: start([t1/4, t2/2, t3/2, t4/20, t5/20, t6/11, t7/11]*[idle/0, idle/0, idle/0]*0). Úvod do umělé inteligence 4/12 24 / 25
79 Jak najít dobrou heuristiku? Příklad rozvrh práce procesorů Příklad rozvrh práce procesorů pokrač. počáteční uzel: start([t1/4, t2/2, t3/2, t4/20, t5/20, t6/11, t7/11]*[idle/0, idle/0, idle/0]*0). heuristika optimální (nedosažitelný) čas: i Finall = D i + j F j m skutečný čas výpočtu: Fin = max(f j ) heuristická funkce h: Finall Fin, H = když Finall > Fin 0, jinak Úvod do umělé inteligence 4/12 24 / 25 h(tasks Processors Fin, H) :- totaltime(tasks, Tottime), sumnum(processors, Ftime, N), Finall is (Tottime + Ftime)/N, (Finall > Fin,!, H is Finall Fin ; H = 0). totaltime([], 0). totaltime([ /D Tasks], T) :- totaltime(tasks, T1), T is T1 + D. sumnum([], 0, 0). sumnum([ /T Procs], FT, N) :- sumnum(procs, FT1, N1), N is N1 + 1, FT is FT1 + T. precedence(t1, t4). precedence(t1, t5)....
80 Jak najít dobrou heuristiku? Příklad rozvrh práce procesorů Příklad rozvrh práce procesorů pokrač. :- start(start), write( Pocatecni stav: ), write(start), nl, bestsearch(start, Solution), write( Nalezene reseni: ), nl, reverse(solution,rsolution), writelist(rsolution). Pocatecni stav: [t1/4,t2/2,t3/2,t4/20,t5/20,t6/11,t7/11]*[idle/0,idle/0,idle/0]*0 Nalezene reseni: 1: [t1/4,t2/2,t3/2,t4/20,t5/20,t6/11,t7/11]*[idle/0,idle/0,idle/0]*0 2: [t1/4,t2/2,t4/20,t5/20,t6/11,t7/11]*[idle/0,idle/0,t3/2]*2 3: [t1/4,t4/20,t5/20,t6/11,t7/11]*[idle/0,t2/2,t3/2]*2 4: [t4/20,t5/20,t6/11,t7/11]*[t2/2,t3/2,t1/4]*4 5: [t4/20,t5/20,t6/11]*[t3/2,t1/4,t7/13]*13 6: [t4/20,t5/20,t6/11]*[idle/4,t1/4,t7/13]*13 7: [t5/20,t6/11]*[t1/4,t7/13,t4/24]*24 8: [t6/11]*[t7/13,t5/24,t4/24]*24 9: []*[t6/24,t5/24,t4/24]*24 Úvod do umělé inteligence 4/12 25 / 25
Heuristiky, best-first search, A* search
Heuristiky, best-first search, A* search Aleš Horák E-mail: hales@fi.muni.cz http://nlp.fi.muni.cz/uui/ Obsah: Informované prohledávání stavového prostoru Jak najít dobrou heuristiku? Úvod do umělé inteligence
Heuristiky, best-first search, A* search
Heuristiky, best-first search, A* search Aleš Horák E-mail: hales@fi.muni.cz http://nlp.fi.muni.cz/uui/ Obsah: Informované prohledávání stavového prostoru Jak najít dobrou heuristiku? Úvod do umělé inteligence
Heuristiky, best-first search, A* search
Heuristiky, best-first search, A* search Najdi cestu z města do města Aleš Horák E-mail: hales@fi.muni.cz http://nlp.fi.muni.cz/uui/ Obsah: 71 140 118 111 70 Dobreta Neamt 87 151 Iasi 92 99 Fagaras Vaslui
Heuristiky, best-first search, A* search
Informované prohledávání stavového prostoru Heuristiky, best-first search, A* search Obsah: Aleš Horák E-mail: hales@fi.muni.cz http://nlp.fi.muni.cz/uui/ Informované prohledávání stavového prostoru Neinformované
Heuristiky, best-first search, A* search.
Úvod do umělé inteligence Heuristiky, best-first search, A* search E-mail: hales@fi.muni.cz http://nlp.fi.muni.cz/uui/ Obsah: Informované prohledávání stavového prostoru Heuristické hledání nejlepší cesty
Heuristiky, best-first search, A* search.
Úvod do umělé inteligence Heuristiky, best-first search, A* search E-mail: hales@fi.muni.cz http://nlp.fi.muni.cz/uui/ Obsah: Informované prohledávání stavového prostoru Heuristické hledání nejlepší cesty
Heuristiky, best-first search, A* search.
Úvod do umělé inteligence Heuristiky, best-first search, A* search E-mail: hales@fi.muni.cz http://nlp.fi.muni.cz/uui/ Obsah: Informované prohledávání stavového prostoru Heuristické hledání nejlepší cesty
"Agent Hledač" (3. přednáška)
"Agent Hledač" (3. přednáška) Přehled 3. přednášky v této přednášce se budeme zabývat "goal-based" agenty Přehled 3. přednášky v této přednášce se budeme zabývat "goal-based" agenty připomeňme, že "goal-based"
Umělá inteligence I. Roman Barták, KTIML.
Umělá inteligence I Roman Barták, KTIML roman.bartak@mff.cuni.cz http://ktiml.mff.cuni.cz/~bartak Na úvod Neinformované (slepé) prohledávání umí najít (optimální) řešení problému, ale ve většině případů
Neinformované metody prohledávání stavového prostoru Michal Pěchouček, Milan Rollo. Department of Cybernetics Czech Technical University in Prague
Neinformované metody prohledávání stavového prostoru Michal Pěchouček, Milan Rollo Department of Cybernetics Czech Technical University in Prague http://cw.felk.cvut.cz/doku.php/courses/a3b33kui/start
Obsah: Problém osmi dam
Prohledávání stavového prostoru leš Horák E-mail: hales@fi.muni.cz http://nlp.fi.muni.cz/uui/ Obsah: Problém osmi dam Prohledávání stavového prostoru Neinformované prohledávání Úvod do umělé inteligence
1. Prohledávání stavového prostoru
Obsah 1. Prohledávání stavového prostoru... 2 1.1. Základní informace... 2 1.2. Výstupy z učení... 2 1.3. Úvod... 2 1.4. Definice stavového prostoru... 3 1.1.1. Reprezentace stavového prostoru... 3 1.1.2.
Úloha ve stavovém prostoru SP je <s 0, C>, kde s 0 je počáteční stav C je množina požadovaných cílových stavů
Stavový prostor a jeho prohledávání SP = formalismus k obecnějšímu uchopení a vymezení problému, který spočívá v nalezení posloupnosti akcí vedoucích od počátečního stavu úlohy (zadání) k požadovanému
1. Prohledávání stavového prostoru
Obsah 1. Prohledávání stavového prostoru... 2 1.1. Základní informace... 2 1.2. Výstupy z učení... 2 1.3. Úvod... 2 1.4. Definice stavového prostoru... 2 1.1.1. Reprezentace stavového prostoru... 3 1.1.2.
PROBLÉM OSMI DAM II. Problém osmi dam. Obsah:
Úvod do umělé inteligence RÉ S úkol: Rozestavte po šachovnici 8 dam tak, aby se žádné dvě vzájemně neohrožovaly. -mail: hales@fi.muni.cz http://nlp.fi.muni.cz/uui/ bsah: rohledávání do hloubky rohledávání
State Space Search Step Run Editace úloh Task1 Task2 Init Clear Node Goal Add Shift Remove Add Node Goal Node Shift Remove, Add Node
State Space Search Po spuštění appletu se na pracovní ploše zobrazí stavový prostor první předpřipravené úlohy: - Zeleným kroužkem je označen počáteční stav úlohy, který nemůže být změněn. - Červeným kroužkem
Dekompozice problému, AND/OR grafy
Dekompozice problému, AND/OR grafy Aleš Horák E-mail: hales@fi.muni.cz http://nlp.fi.muni.cz/uui/ Obsah: Připomínka průběžná písemka AND/OR grafy Prohledávání AND/OR grafů Úvod do umělé inteligence 5/12
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
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í
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
Umělá inteligence. UI (AI) - součást informatiky s průniky mimo obor Stručná historie UI. Letošní cena nadace Vize 2000 - Joseph Weizenbaum
Umělá inteligence UI (AI) - součást informatiky s průniky mimo obor Stručná historie UI 1943-56 začátky (modelování neuronů a sítí na počítači) 1952-69 velká očekávání (GPS, Lisp, microworlds) 1966-74
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í
Základy umělé inteligence
Základy umělé inteligence Automatické řešení úloh Základy umělé inteligence - prohledávání. Vlasta Radová, ZČU, katedra kybernetiky 1 Formalizace úlohy UI chápe řešení úloh jako proces hledání řešení v
Seminář z umělé inteligence. Otakar Trunda
Seminář z umělé inteligence Otakar Trunda Plánování Vstup: Satisficing task: počáteční stav, cílové stavy, přípustné akce Optimization task: počáteční stav, cílové stavy, přípustné akce, ceny akcí Výstup:
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
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
Hry a UI historie. von Neumann, 1944 algoritmy perfektní hry Zuse, Wiener, Shannon, přibližné vyhodnocování
Hry a UI historie Hry vs. Prohledávání stavového prostoru Hry a UI historie Babbage, 1846 počítač porovnává přínos různých herních tahů von Neumann, 1944 algoritmy perfektní hry Zuse, Wiener, Shannon,
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
Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 21.
Vyhledávání doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Prezentace ke dni 21. září 2018 Jiří Dvorský (VŠB TUO) Vyhledávání 242 / 433 Osnova přednášky
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
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
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),
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í
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
Umělá inteligence I. Roman Barták, KTIML. roman.bartak@mff.cuni.cz http://ktiml.mff.cuni.cz/~bartak
Umělá inteligence I Roman Barták, KTIML roman.bartak@mff.cuni.cz http://ktiml.mff.cuni.cz/~bartak Na úvod Agent s reflexy pouze převádí současný vjem na jednu akci. Agent s cílem umí plánovat několik akcí
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ší
Počítačové šachy. Otakar Trunda
Počítačové šachy Otakar Trunda Hraní her obecně Hra je definovaná pomocí: Počáteční situace Funkce vracející množinu přípustných tahů v každé situaci Ohodnocení koncových stavů Našim cílem je najít strategii
Neinformované metody prohledávání stavového prostoru. Gerstner Laboratory Agent Technology Group, Czech Technical University in Prague
Neinformované metody prohledávání stavového prostoru Michal Pěchouček Gerstner Laboratory Agent Technology Group, Czech Technical University in Prague http://labe.felk.cvut.cz/~ tkrajnik/kui2/data/k333/1.pdf
u odpovědí typu A, B, C, D, E: Obsah: jako 0) CLP Constraint Logic Programming
Průběžná písemná práce Průběžná písemná práce Obsah: Průběžná písemná práce Aleš Horák E-mail: hales@fi.muni.cz http://nlp.fi.muni.cz/uui/ délka pro vypracování: 25 minut nejsou povoleny žádné materiály
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ší
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ší
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á
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
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ří
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í
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í
Ř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
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
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
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
Obousměrné prohledávání. Tomáš Hřebejk
Obousměrné prohledávání Tomáš Hřebejk Motivační úlohy Jak řešit úlohy typu: Nalezení nejkratší trasy (po silnici, po železnici ) z Prahy do Vídně. Najít nejkratší řešení Loydovy patnáctky. Pomocí prohledávání!
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
Prohledávání stavového prostoru
Prohledávání stavového prostoru State space search Jan Kybic http://cmp.felk.cvut.cz/~kybic kybic@fel.cvut.cz 2016 2017 1 / 45 Stavový prostor Prohledávání do hloubky Prohledávání do šířky Informované
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
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é
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
Ú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í
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)
Konečný automat. Jan Kybic.
Konečný automat Jan Kybic http://cmp.felk.cvut.cz/~kybic kybic@fel.cvut.cz 2016 2017 1 / 33 Konečný automat finite state machine Konečný automat = výpočetní model, primitivní počítač Řídící jednotka s
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
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é
Jan Březina. Technical University of Liberec. 30. dubna 2013
TGH11 - Maximální párování a související problémy Jan Březina Technical University of Liberec 30. dubna 2013 Bipartitní grafy Bipartitní graf - je obarvitelný dvěma barvami. Tj. V lze rozělit na disjunktní
Státnice odborné č. 20
Státnice odborné č. 20 Shlukování dat Shlukování dat. Metoda k-středů, hierarchické (aglomerativní) shlukování, Kohonenova mapa SOM Shlukování dat Shluková analýza je snaha o seskupení objektů do skupin
Spojový seznam. Jan Kybic.
Spojový seznam Jan Kybic http://cmp.felk.cvut.cz/~kybic kybic@fel.cvut.cz 2016 2017 1 / 25 Složitost operací u lineárních datových struktur v Pythonu operace zásob. fronta pole pole řetězce přidej na začátek
Prohledávání do šířky a do hloubky. Jan Hnilica Počítačové modelování 15
Prohledávání do šířky a do hloubky Jan Hnilica Počítačové modelování 15 1 Prohledávací algoritmy Úkol postupně systematicky prohledat vymezený stavový prostor Stavový prostor (SP) možné stavy a varianty
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é 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
Dynamické 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,
STROMOVE ALGORITMY Prohledavani do sirky (level-order) Po vodorovnejch carach fronta
STROMOVE ALGORITMY Prohledavani do sirky (level-order) Po vodorovnejch carach vlož do fronty kořen opakuj, dokud není fronta prázdná 1. vyber uzel z fronty a zpracuj jej 2. vlož do fronty levého následníka
Rekurzivní algoritmy
Rekurzivní algoritmy 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) ZS
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é
IB108 Sada 1, Příklad 1 Vypracovali: Tomáš Krajča (255676), Martin Milata (256615)
IB108 Sada 1, Příklad 1 ( ) Složitost třídícího algoritmu 1/-Sort je v O n log O (n.71 ). Necht n = j i (velikost pole, které je vstupním parametrem funkce 1/-Sort). Lehce spočítáme, že velikost pole předávaná
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
Obsah: CLP Constraint Logic Programming. u odpovědí typu A, B, C, D, E: jako 0)
Aleš Horák E-mail: hales@fi.muni.cz http://nlp.fi.muni.cz/uui/ Obsah: Průběžná písemná práce Úvod do umělé inteligence 6/12 1 / 17 Průběžná písemná práce Průběžná písemná práce délka pro vypracování: 25
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
Hanojská věž. T2: prohledávání stavového prostoru. zadání [1 1 1] řešení [3 3 3] dva možné první tahy: [1 1 2] [1 1 3]
Hanojská věž zadání [1 1 1] řešení [3 3 3] dva možné první tahy: [1 1 2] [1 1 3] který tah je lepší? (co je lepší tah?) P. Berka, 2012 1/21 Stavový prostor 1. množina stavů S = {s} 2. množina přechodů
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é
Stromy. Jan Kybic.
Stromy Jan Kybic http://cmp.felk.cvut.cz/~kybic kybic@fel.cvut.cz 2016 1 / 44 Stromy Binární vyhledávací stromy Množiny a mapy 2 / 44 Strom (Tree) Strom skládá se s uzlů (nodes) spojených hranami (edges).
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
8. Rekurze. doc. Ing. Jiří Vokřínek, Ph.D. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze
Jiří Vokřínek, 2016 B6B36ZAL - Přednáška 8 1 Základy algoritmizace 8. Rekurze doc. Ing. Jiří Vokřínek, Ph.D. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Jiří Vokřínek,
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
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í
TGH08 - Optimální kostry
TGH08 - Optimální kostry Jan Březina Technical University of Liberec 14. dubna 2015 Problém profesora Borůvky řešil elektrifikaci Moravy Jak propojit N obcí vedením s minimální celkovou délkou. Vedení
= 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,
Slepé prohledávání do šířky Algoritmus prohledávání do šířky Při tomto způsobu prohledávání máme jistotu, že vždy nalezneme koncový stav, musíme ale p
Hanojská věž Stavový prostor 1. množina stavů S = {s} 2. množina přechodů mezi stavy (operátorů) Φ = {φ} s k = φ ki (s i ) zadání [1 1 1] řešení [3 3 3] dva možné první tahy: [1 1 2] [1 1 3] který tah
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
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
Č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á
Obsah: Hry vs. Prohledávání stavového prostoru Algoritmus Minimax. Nedeterministické hry Hry s nepřesnými znalostmi
Hry a základní herní strategie Aleš Horák E-mail: hales@fi.muni.cz http://nlp.fi.muni.cz/uui/ Obsah: Hry vs. Prohledávání stavového prostoru Algoritmus Minimax Algoritmus Alfa-Beta prořezávání Nedeterministické
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
Adresní vyhledávání (přímý přístup, zřetězené a otevřené rozptylování, rozptylovací funkce)
13. Metody vyhledávání. Adresní vyhledávání (přímý přístup, zřetězené a otevřené rozptylování, rozptylovací funkce). Asociativní vyhledávání (sekvenční, binárním půlením, interpolační, binární vyhledávací
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
STROMY A KOSTRY. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze. BI-GRA, LS 2010/2011, Lekce 6
STROMY A KOSTRY Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze BI-GRA, LS 010/011, Lekce 6 Evropský sociální fond Praha & EU: Investujeme do vaší
Operace na datových strukturách
Operace na datových strukturách Aleš Horák E-mail: hales@fi.muni.cz http://nlp.fi.muni.cz/uui/ Obsah: Operace na datových strukturách Binární stromy Reprezentace grafů Úvod do umělé inteligence 2/12 1
prohled av an ı graf u Karel Hor ak, Petr Ryˇsav y 16. bˇrezna 2016 Katedra poˇ c ıtaˇ c u, FEL, ˇ CVUT
prohledávání grafů Karel Horák, Petr Ryšavý 16. března 2016 Katedra počítačů, FEL, ČVUT Příklad 1 Nad frontou (queue) byly provedeny následující operace: push(1) push(2) print(poll()) print(peek()) print(peek())
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ší
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í
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
Test prvočíselnosti. Úkol: otestovat dané číslo N, zda je prvočíslem
Test prvočíselnosti Úkol: otestovat dané číslo N, zda je prvočíslem 1. zkusit všechny dělitele od 2 do N-1 časová složitost O(N) cca N testů 2. stačí zkoušet všechny dělitele od 2 do N/2 (větší dělitel
A4B33ZUI Základy umělé inteligence
LS 2014 Jméno: A4B33ZUI Základy umělé inteligence 11. 6. 2014 O1 O2 O3 O4 O5 Total (50) Instrukce: Na vypracování máte 150 min, můžete použít vlastní poznámky v podobě ručně popsaného listu A4. Použití