Heuristiky, best-first search, A* search

Podobné dokumenty
Heuristiky, best-first search, A* search.

Heuristiky, best-first search, A* search.

Heuristiky, best-first search, A* search.

Heuristiky, best-first search, A* search

Heuristiky, best-first search, A* search

Heuristiky, best-first search, A* search

Heuristiky, best-first search, A* search

Umělá inteligence I. Roman Barták, KTIML.

"Agent Hledač" (3. přednáška)

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

Obsah: Problém osmi dam

Neinformované metody prohledávání stavového prostoru Michal Pěchouček, Milan Rollo. Department of Cybernetics Czech Technical University in Prague

Dekompozice problému, AND/OR grafy

1. Prohledávání stavového prostoru

Algoritmizace prostorových úloh

State Space Search Step Run Editace úloh Task1 Task2 Init Clear Node Goal Add Shift Remove Add Node Goal Node Shift Remove, Add Node

PROBLÉM OSMI DAM II. Problém osmi dam. Obsah:

Základy umělé inteligence

1. Prohledávání stavového prostoru

TGH05 - aplikace DFS, průchod do šířky

Seminář z umělé inteligence. Otakar Trunda

TGH05 - aplikace DFS, průchod do šířky

Hry a UI historie. von Neumann, 1944 algoritmy perfektní hry Zuse, Wiener, Shannon, přibližné vyhodnocování

Grafové algoritmy. Programovací techniky

Grafové algoritmy. Programovací techniky

Obsah prezentace. Základní pojmy v teorii o grafech Úlohy a prohledávání grafů Hledání nejkratších cest

Hledáme efektivní řešení úloh na grafu

07 Základní pojmy teorie grafů

Umělá inteligence I. Roman Barták, KTIML.

Neinformované metody prohledávání stavového prostoru. Gerstner Laboratory Agent Technology Group, Czech Technical University in Prague

Algoritmy a datové struktury

u odpovědí typu A, B, C, D, E: Obsah: jako 0) CLP Constraint Logic Programming

Umělá inteligence. UI (AI) - součást informatiky s průniky mimo obor Stručná historie UI. Letošní cena nadace Vize Joseph Weizenbaum

Grafy. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 13.

Úvod do teorie grafů

Státnice odborné č. 20

Obousměrné prohledávání. Tomáš Hřebejk

TGH06 - Hledání nejkratší cesty

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.

Obsah: Hry vs. Prohledávání stavového prostoru Algoritmus Minimax. Nedeterministické hry Hry s nepřesnými znalostmi

Počítačové šachy. Otakar Trunda

Vzdálenost uzlů v neorientovaném grafu

Řešení: PŘENESVĚŽ (N, A, B, C) = přenes N disků z A na B pomocí C

Adresní vyhledávání (přímý přístup, zřetězené a otevřené rozptylování, rozptylovací funkce)

STROMOVE ALGORITMY Prohledavani do sirky (level-order) Po vodorovnejch carach fronta

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

Binární vyhledávací stromy pokročilé partie

Použití dalších heuristik

TECHNOLOGIE DOPRAVY A LOGISTIKA

ORIENTOVANÉ GRAFY, REPREZENTACE GRAFŮ

Datové struktury Úvod

Prohledávání do šířky a do hloubky. Jan Hnilica Počítačové modelování 15

= 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

Stromy, haldy, prioritní fronty

Algoritmy na ohodnoceném grafu

Metody návrhu algoritmů, příklady. IB111 Programování a algoritmizace

bfs, dfs, fronta, zásobník, prioritní fronta, halda

PROHLEDÁVÁNÍ GRAFŮ. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze

ALGORITMY A DATOVÉ STRUKTURY

Matice sousednosti NG

Dynamické programování

TECHNOLOGIE DOPRAVY A LOGISTIKA - CVIČENÍ 5

Obsah: Hry vs. Prohledávání stavového prostoru Algoritmus Minimax. Nedeterministické hry Hry s nepřesnými znalostmi

prohled av an ı graf u Karel Hor ak, Petr Ryˇsav y 16. bˇrezna 2016 Katedra poˇ c ıtaˇ c u, FEL, ˇ CVUT

Dijkstrův algoritmus

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

Dynamické programování


UNIVERZITA PARDUBICE

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY

Plánování úloh na jednom stroji

Obsah: CLP Constraint Logic Programming. u odpovědí typu A, B, C, D, E: jako 0)

1 Úvod do celočíselné lineární optimalizace

TGH06 - Hledání nejkratší cesty

Základy informatiky. 07 Teorie grafů. Kačmařík/Szturcová/Děrgel/Rapant

Návrh Designu: Radek Mařík

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

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

Náplň. v Jednoduché příklady na práci s poli v C - Vlastnosti třídění - Způsoby (algoritmy) třídění

bfs, dfs, fronta, zásobník, prioritní fronta, halda

Jan Březina. Technical University of Liberec. 21. dubna 2015

Základy informatiky. Teorie grafů. Zpracoval: Pavel Děrgel Úprava: Daniela Szturcová

popel, glum & nepil 16/28

Přijímací zkouška - matematika

Cvičení předmětu MI-PAR P. Tvrdík, I. Šimeček, M. Šoch

Obsah: Hry Prohledávání stavového prostoru. Algoritmus Minimax. Nedeterministické hry Hry s nepřesnými znalostmi

Stromové struktury v relační databázi

A4B33ZUI Základy umělé inteligence

Hry a UI historie. agent musí brát v úvahu akce jiných agentů jak ovlivní jeho. vliv ostatních agentů prvek náhody. Hry: Obsah:

10. Složitost a výkon

ŘEŠITEL HRY GRIDDLERS

63. ročník Matematické olympiády 2013/2014

Vyvažování a rotace v BVS, všude se předpokládá AVL strom

Rozdělování dat do trénovacích a testovacích množin

Umělá inteligence I. Roman Barták, KTIML.

NEJKRATŠÍ CESTY I. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze

Operace na datových strukturách

Distribuované systémy a výpočty

Operace na datových strukturách

Automaty a gramatiky(bi-aag) Formální překlady. 5. Překladové konečné automaty. h(ε) = ε, h(xa) = h(x)h(a), x, x T, a T.

Transkript:

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é 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 1 / 18 Informované prohledávání stavového prostoru Heuristické hledání nejlepší cesty Heuristické hledání nejlepší cesty Úvod do umělé inteligence 4/12 2 / 18 Informované prohledávání stavového prostoru Příklad schéma rumunských měst Příklad schéma rumunských měst 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 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) 71 75 140 118 111 70 75 Dobreta Neamt 87 151 Iasi 92 99 Fagaras Vaslui 80 142 211 Pitesti Lugoj 97 98 146 Hirsova Mehadia 101 85 Urziceni 138 86 120 90 Craiova Eforie Giurgiu 366 0 Craiova 160 Dobreta 242 Eforie 161 Fagaras 178 Giurgiu 77 Hirsova 151 Iasi 226 Lugoj 244 Mehadia 241 Neamt 234 380 Pitesti 98 193 253 329 Urziceni 80 Vilcea 199 374 Úvod do umělé inteligence 4/12 3 / 18 Úvod do umělé inteligence 4/12 4 / 18

Hladové heuristické hledání Informované prohledávání stavového prostoru Hladové heuristické hledání Hladové heuristické hledání příklad Hledání cesty z města do města ohodnocovací funkce f(n) = h(n) = h vzd Buk (n), přímá vzdálenost z n do i 366 Fagaras 253 0 329 380 193 Hladové heuristické hledání vlastnosti expanduje vždy uzel, který se zdá nejbĺıže k cíli cesta nalezená v příkladu (g( Fagaras ) = 450) je sice úspěšná, ale není optimální (g( RimnicuVilcea Pitesti ) = 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 5 / 18 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 6 / 18 Heuristické hledání A* příklad Hledání cesty z města do města ohodnocovací funkce f(n) = g(n)+h(n) = g(n)+h vzd Buk (n) 646=280+366 Fagaras 671=291+380 591=338+253 450=450+0 Craiova 526=366+160 Pitesti 447=118+329 449=75+374 553=300+253 Craiova 418=418+0 615=455+60 607=414+193 Úvod do umělé inteligence 4/12 7 / 18 Úvod do umělé inteligence 4/12 8 / 18

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 ] ) optimálnost časová složitost je optimální 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 9 / 18 Hledání nejlepší cesty algoritmus A* reprezentace uzlů: l(n,f/g)... listový uzel N, F = f(n) = G+h(N), G = g(n) t(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 biggest(-big) horní závora pro cenu nejlepší cesty např. biggest(9999). bestsearch(start,solution) :- biggest(big), expand([],l(start,0/0),big,,yes,solution). expand(p,l(n, ),,,yes,[n P]) :- goal(n). % cíl Bnd f-limita pro expandování Tr % list generuj následníky a expanduj je v rámci BoundTr1 Tr expandovaný až po Bnd Solved yes, no, never expand(p,l(n,f/g),bound,tree1,solved,sol) :- F=<Bound, Sol cesta z kořene do cílového uzlu (bagof(m/c,(move(n,m,c),\+ member(m,p)),succ),!,succlist(g,succ,ts), bestf(ts,f1), expand(p,t(n,f1/g,ts),bound,tree1,solved,sol);solved=never). % nelist, f<bound expanduj nejslibnější podstrom, pokračuj dle výsledku expand(p,t(n,f/g,[t Ts]),Bound,Tree1,Solved,Sol) :- F=<Bound, bestf(ts,bf), min(bound,bf,bound1),expand([n P],T,Bound1,T1,Solved1,Sol), continue(p,t(n,f/g,[t1 Ts]),Bound,Tree1,Solved1,Solved,Sol). expand(,t(,,[]),,,never, ) :-!. % nejsou další následovníci expand(,tree,bound,tree,no, ) :- f(tree,f), F>Bound. % limit % pokrač. Úvod do umělé inteligence 4/12 11 / 18 expand(+path,+tr,+bnd,-tr1,?solved,-sol) Path cesta mezi kořenem a Tr Tr prohledávaný podstrom 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í) Pak 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 10 / 18 Hledání nejlepší cesty algoritmus A* pokrač. continue(,,,,yes,yes,sol). continue(p,t(n,f/g,[t1 Ts]),Bound,Tree1,Solved1,Solved,Sol) :- (Solved1=no,insert(T1,Ts,NTs);Solved1=never,NTs=Ts), bestf(nts,f1),expand(p,t(n,f1/g,nts),bound,tree1,solved,sol). succlist(,[],[]). succlist(g0,[n/c NCs],Ts) :- G is G0+C,h(N,H),F is G+H, succlist(g0,ncs,ts1), insert(l(n,f/g),ts1,ts). insert(t,ts,[t Ts]) :- f(t,f),bestf(ts,f1),f=<f1,!. insert(t,[t1 Ts],[T1 Ts1]) :- insert(t,ts,ts1). f(l(,f/ ),F). f(t(,f/, ),F). bestf([t ],F) :- f(t,f). bestf([],big) :- biggest(big). min(x,y,x) :- X=<Y,!. min(x,y,y). continue( +Path, +Tree, +Bound, -NewTree, +SubtrSolved,?TreeSolved,?Solution) volba způsobu pokračování podle výsledků expand succlist( +G0, [+Node1/+Cost1,...], [l(-bestnode,-bestf/-g),...]) setřídění seznamu listů podle f-hodnot vytáhne F ze struktury Úvod do umělé inteligence 4/12 12 / 18 vloží T do seznamu stromů Ts podle f nejlepší f-hodnota ze seznamu stromů

Příklad řešení posunovačky Jak najít přípustnou heuristickou funkci? Příklad řešení posunovačky konfigurace = seznam dvojic X/Y (sloupec/řádek) = [pozice díry, pozice kámen č.1,...] goal([1/3, 2/3, 3/3, 1/2, 2/2, 3/2, 1/1, 2/1, 3/1]). 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) = 3 7 +1 2 +2 4 +2 5 +3 6 +2 8 +2 3 +3 1 = 18 h 1 i h 2 jsou přípustné... h (S) = 26 Úvod do umělé inteligence 4/12 13 / 18 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 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 ) 2 10 6 6 2.45 1.79 1.79 6 680 20 18 2.73 1.34 1.30 10 47127 93 39 2.79 1.38 1.22 12 3644035 227 73 2.78 1.42 1.24 18 3056 363 1.46 1.26 24 39135 1641 1.48 1.26 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 15 / 18 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 14 / 18 ú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 02 4 13 24 33 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 16 / 18 02 4 13 24 33 CPU 1 t 3 = t 6 = = t 7 =... CPU 2 t 2. = t 5 =... CPU 3 t 1 = t 4 =...

pokrač. stavy: nezařazené úlohy*zařazené úlohy*čas ukončení např.: [WaitingTask1/D1,WaitingTask2/D2,...]*[Task1/F1,Task2/F2,...]*FinTime udržujeme 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)), \+ (member(t1/f1,active1),f<f1,before(t1,task)), 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 17 / 18 move( +Uzel, -NaslUzel, -Cena) Uzel aktuální stav NaslUzel nový stav Cena cena přechodu before( +Task1, +Task2) tranzitivní obal relace precedence 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 18 / 18 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)....