Dekompozice problému, AND/OR grafy

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.

Základy umělé inteligence

Prolog PROgramming in LOGic část predikátové logiky prvního řádu rozvoj začíná po roce 1970 Robert Kowalski teoretické základy Alain Colmerauer, David

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

Heuristiky, best-first search, A* search

Algoritmizace prostorových úloh

Heuristiky, best-first search, A* search

Heuristiky, best-first search, A* search

Základy umělé inteligence

Heuristiky, best-first search, A* search

Obsah: Problém osmi dam

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

Varianty Monte Carlo Tree Search

Operace na datových strukturách

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

Operace na datových strukturách

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

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

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

07 Základní pojmy teorie grafů

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

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

Úvod do teorie grafů

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

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

2016, Brno Teorie Her

Martin Milata, Pokud je alespoň jeden rozměr čokolády sudý (s výjimkou tabulky velikosti 1x2, která už je od

HRY A UI HISTORIE. Hry vs. Prohledávání stavového prostoru. Obsah:

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

ADT STROM Lukáš Foldýna

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

ALGORITMY A DATOVÉ STRUKTURY


H {{u, v} : u,v U u v }

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

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

= 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

Grafové algoritmy. Programovací techniky

A4B33ZUI Základy umělé inteligence

Grafové algoritmy. Programovací techniky

Matice sousednosti NG

Vzdálenost uzlů v neorientovaném grafu

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

Stromy, haldy, prioritní fronty

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]

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

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

1 Hledání řešení. 1.1 Klasické problémy. 1.2 Problém rezervace letenek

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

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

Optimalizace & soft omezení: algoritmy

1. Převeďte dané číslo do dvojkové, osmičkové a šestnáctkové soustavy: a) b)

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

Algoritmy pro hraní tahových her

ORIENTOVANÉ GRAFY, REPREZENTACE GRAFŮ

Použití dalších heuristik

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

Umělá inteligence a rozpoznávání

Anotace. Středník II!! programování her.

Datové struktury Úvod

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

Diskrétní matematika. DiM /01, zimní semestr 2018/2019

Algoritmus Minimax. Tomáš Kühr. Projektový seminář 1

5 Rekurze a zásobník. Rekurzivní volání metody

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.

Úvod do teorie her

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

1 REZOLUČNÍ FORMÁLNÍ DŮKAZY


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

a4b33zui Základy umělé inteligence

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

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



č č č č č č č č č č č č č č č č č č

Operační výzkum. Síťová analýza. Metoda CPM.

Informační systémy plánování výroby - pokročilé rozvrhování

Algoritmy pro práci s neúplnou informací

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

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

Teorie her a ekonomické rozhodování. 7. Hry s neúplnou informací

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

Logické programování I

Konvexní obal a množina

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

zejména Dijkstrův algoritmus pro hledání minimální cesty a hladový algoritmus pro hledání minimální kostry.

Dokumentace programu piskvorek

řádově různě rostoucí rostou řádově stejně rychle dvě funkce faktor izomorfismus neorientovaných grafů souvislý graf souvislost komponenta

4EK311 Operační výzkum. 5. Teorie grafů

ALGORITMIZACE 2010/03 STROMY, BINÁRNÍ STROMY VZTAH STROMŮ A REKURZE ZÁSOBNÍK IMPLEMENTUJE REKURZI PROHLEDÁVÁNÍ S NÁVRATEM (BACKTRACK)

Algoritmy a datové struktury

Uvažujeme jen hry s nulovým součtem, tj. zisk jednoho. Střídá se náš tah, kde maximalizujeme svůj zisk, s tahem

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

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

Stromové rozklady. Definice 1. Stromový rozklad grafu G je dvojice (T, β) taková, že T je strom,

Téma 48 (dříve 47) Martin Staviař, 16. srpna 2006

Transkript:

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 1 / 26

Připomínka průběžná písemka Připomínka průběžná písemka termín příští přednášku, 25. října, 10:00, A217, na začátku přednášky náhradní termín: není příklady (formou testu odpovědi A, B, C, D, E, z látky probrané na prvních pěti přednáškách, včetně dnešní): uveden příklad v Prologu, otázka Co řeší tento program? uveden příklad v Prologu a cíl, otázka Co je (návratová) hodnota výsledku? upravte (doplňte/zmeňte řádek) uvedený program tak, aby... uvedeno několik tvrzení, potvrd te jejich pravdivost/nepravdivost porovnání vlastností několika algoritmů rozsah: 4 příklady hodnocení: max. 32 bodů za správnou odpověd 8 bodů, za žádnou odpověd 0 bodů, za špatnou odpověd -3 body. Úvod do umělé inteligence 5/12 2 / 26

AND/OR grafy Příklad Hanoiské věže Příklad Hanoiské věže máme tři tyče: A, B a C. na tyči A je (podle velikosti) n kotoučů. A B C úkol: přeskládat z A pomocí C na tyč B (zaps. n(a,b,c)) bez porušení uspořádání 1 2 3 Můžeme rozložit na fáze: 1. přeskládat n 1 kotoučů z A pomocí B na C. A B C 2. přeložit 1 kotouč z A na B A B C 3. přeskládat n 1 kotoučů z C pomocí A na B A B C Úvod do umělé inteligence 5/12 3 / 26

AND/OR grafy Příklad Hanoiské věže Příklad Hanoiské věže pokrač. schéma celého řešení pro n = 3: n = 3(A,B,C) n 1 = 2(A,C,B) 1(A,B,C) n 1 = 2(C,B,A) n 2 = 1(A,B,C) n 2 = 1(B,C,A) n 2 = 1(C,A,B) n 2 = 1(A,B,C) 1(A,C,B) 1(C,B,A) Úvod do umělé inteligence 5/12 4 / 26

AND/OR grafy Příklad Hanoiské věže Příklad Hanoiské věže pokrač.? op(100,xfx,to), dynamic(hanoi/5). op(+priorita, +Typ, +Jméno) Priorita číslo 0..1200 Typ jedno z xf, yf, xfx, xfy, yfx, yfy, fy nebo fx Jméno funktor nebo symbol hanoi(1,a,b,c,[a to B]). hanoi(n,a,b,c,moves) :- N>1, N1 is N 1, lemma(hanoi(n1,a,c,b,ms1)), hanoi(n1,c,b,a,ms2), append(ms1,[a to B Ms2],Moves). lemma(p) :- P,asserta((P :-!)).? hanoi(3,a,b,c,m). M = [a to b, a to c, b to c, a to b, c to a, c to b, a to b] ; No Úvod do umělé inteligence 5/12 5 / 26

AND/OR grafy Cesta mezi městy pomocí AND/OR grafů Cesta mezi městy pomocí AND/OR grafů města: a,..., e... ve státě S l a k... hraniční přechody u,..., z... ve státě T hledáme cestu z a do z: cesta z a do hraničního přechodu cesta z hraničního přechodu do z S. c l v a e u z b k y d x T. Úvod do umělé inteligence 5/12 6 / 26

AND/OR grafy Cesta mezi městy pomocí AND/OR grafů Cesta mezi městy pomocí AND/OR grafů pokrač. schéma řešení pomocí rozkladu na podproblémy = AND/OR graf a z OR uzel via k AND uzly via l a k k z a l l z........................ Celkové řešení = podgraf AND/OR grafu, který nevynechává žádného následníka AND-uzlu. Úvod do umělé inteligence 5/12 7 / 26

AND/OR grafy AND/OR graf a strom řešení AND/OR graf a strom řešení AND/OR graf = graf s 2 typy vnitřních uzlů AND uzly a OR uzly AND uzel jako součást řešení vyžaduje průchod všech svých poduzlů OR uzel se chová jako bežný uzel klasického grafu a b c d e f g h i Úvod do umělé inteligence 5/12 8 / 26

AND/OR grafy AND/OR graf a strom řešení AND/OR graf a strom řešení strom řešení T problému P s AND/OR grafem G: problém P je kořen stromu T jestliže P je OR uzel grafu G právě jeden z jeho následníků se svým stromem řešení je v T jestliže P je AND uzel grafu G všichni jeho následníci se svými stromy řešení jsou v T každý list stromu řešení T je cílovým uzlem v G a a b c b d e f g d e h i h Úvod do umělé inteligence 5/12 9 / 26

AND/OR grafy Příklad výherní strategie Příklad výherní strategie Hra 2 hráčů s perfektními znalostmi, 2 výstupy { výhra prohra Výherní strategii je možné formulovat jako AND/OR graf: počáteční stav P typu já-jsem-na-tahu moje tahy vedou do stavů Q 1,Q 2,... typu soupeř-je-na-tahu následně soupeřovy tahy vedou do stavů R 11,R 12,... já-jsem-na-tahu cíl stav, který je výhra podle pravidel (prohra je neřešitelný problém) stav P já-jsem-na-tahu je výherní některý z Q i je výherní, OR stav Q i soupeř-je-na-tahu je výherní všechny R ij jsou výherní, AND výherní strategie = řešení AND/OR grafu P Q 1 Q 2 Q 3 R 11 R 12... R 21 R 22... R 31 R 32... Úvod do umělé inteligence 5/12 10 / 26

AND/OR grafy Příklad výherní strategie Příklad výherní strategie x x o x x x o x x x o x x x o o x x x o x x o x o x o x x o x x o x o o x x x o o x x x o o x x x x o x x x o x o x o x x x o x x x o x o o x x x x o x o x x x o Úvod do umělé inteligence 5/12 11 / 26

AND/OR grafy Reprezentace AND/OR grafu Reprezentace AND/OR grafu přímý zápis AND/OR grafu v Prologu: OR uzel v s následníky u1, u2,..., un: v :- u1. v :- u2.... v :- un. AND uzel x s následníky y1, y2,..., ym: x :- y1, y2,...,ym. cílový uzel g ( = elementární problém): g. kořenový uzel root:? root. Úvod do umělé inteligence 5/12 12 / 26

AND/OR grafy Reprezentace AND/OR grafu Triviální prohledávání AND/OR grafu v Prologu d b e a f c g a :- b. a :- c. b :- d, e. e :- h. c :- f, g. f :- h, i. d. g. h. h i? a. Yes Úvod do umělé inteligence 5/12 13 / 26

AND/OR grafy Reprezentace AND/OR grafu Reprezentace AND/OR grafu v Prologu zavedeme operátory > a :? op(700, xfx, >).? op(500, xfx, :). AND/OR graf budeme zapisovat a > or:[b, c]. b > and:[d, e]. d b e h a f c i g a > or:[b,c]. b > and:[d,e]. c > and:[f,g]. e > or:[h]. f > and:[h,i]. goal(d). goal(g). goal(h). Úvod do umělé inteligence 5/12 14 / 26

Prohledávání AND/OR grafů Prohledávání AND/OR grafu do hloubky Prohledávání AND/OR grafu do hloubky % solve(+node, SolutionTree) solve(node,node) :- goal(node). solve(node,node > Tree) :- Node > or:nodes, member(node1,nodes), solve(node1,tree). solve(node,node > and:trees) :- Node > and:nodes, solveall(nodes,trees). % solveall([node1,node2,...], [SolutionTree1,SolutionTree2,...]) solveall([],[]). solveall([node Nodes],[Tree Trees]) :- solve(node,tree), solveall(nodes,trees).? solve(a,tree). Tree = a > (b >and:[d, e >h]) ; No Úvod do umělé inteligence 5/12 15 / 26

Prohledávání AND/OR grafů Prohledávání AND/OR grafu do hloubky Heuristické prohledávání AND/OR grafu (AO*) doplnění reprezentace o cenu přechodové hrany (=míra složitosti podproblému): Uzel > AndOr:[NaslUzel1/Cena1, NaslUzel2/Cena2,...,NaslUzelN/CenaN]. definujeme cenu uzlu jako cenu optimálního řešení jeho podstromu pro každý uzel N máme daný odhad jeho ceny: h(n) = heuristický odhad ceny optimálního podgrafu s kořenem N pro každý uzel N, jeho následníky N 1,...,N b a jeho předchůdce M definujeme: h(n), pro ještě neexpandovaný uzel N 0, pro cílový uzel (elementární problém) F(N) = cena(m,n)+ min i (F(N i )), pro OR-uzel N i F(N i), pro AND-uzel N Pro optimální strom řešení S je tedy F(S) právě cena tohoto řešení (=suma hran z S). Úvod do umělé inteligence 5/12 16 / 26

Prohledávání AND/OR grafů Prohledávání AND/OR grafu do hloubky Heuristické prohledávání AND/OR grafu příklad setříděný seznam částečně expandovaných grafů = [Nevyřešený 1, Nevyřešený 2,..., Vyřešený 1,...] F Nevyřešený1 F Nevyřešený2... 1 a 9 3 d b 1 1 1 e 6 h a 2 3 2 f c 3 i 1 g d b 9 1 1 e 1 7 6 h 2 f 7 2 3 i c 11 1 g 1 6/2 3 Úvod do umělé inteligence 5/12 17 / 26

Prohledávání AND/OR grafů Prohledávání AND/OR grafu do hloubky Reprezentace AND/OR grafu při heuristickém prohledávání list AND/OR grafu... struktura leaf(n,f,c). F = C+h(N) F... příslušná heuristická F-hodnota uzlu N C... cena hrany do uzlu N N... identifikátor uzlu OR uzel AND/OR grafu... struktura tree(n,f,c,or:[t1,t2,t3,...]) F = C+min i F i AND uzel AND/OR grafu... struktura tree(n,f,c,and:[t1,t2,t3,...]) F = C+ i F i vyřešený list AND/OR grafu... struktura solvedleaf(n,f) F = C vyřešený OR uzel AND/OR grafu... struktura solvedtree(n,f,t) F = C+F 1 vyřešený AND uzel AND/OR grafu... solvedtree(n,f,and:[t1,t2,...]) F = C+ i F i Úvod do umělé inteligence 5/12 18 / 26

Prohledávání AND/OR grafů Heuristické prohledávání AND/OR grafu Heuristické prohledávání AND/OR grafu (AO*) andor(node,solutiontree) :- biggest(bound),expand(leaf(node,0,0),bound,solutiontree,yes). % 1: limit Bound překročen (ve všech dalších klauzuĺıch platí F =< Bound) expand(tree,bound,tree,no) :- f(tree,f),f>bound,!. % 2: nalezen cíl expand(leaf(node,f,c),,solvedleaf(node,f),yes) :- goal(node),!. % 3: expanze listu expand(leaf(node,f,c),bound,newtree,solved) :- expandnode(node,c,tree1),!, (expand(tree1,bound,newtree,solved);solved=never,!). % 4: expanze stromu expand(tree(node,f,c,subtrees),bound,newtree,solved) :- Bound1 is Bound C, expandlist(subtrees,bound1,newsubs,solved1), continue(solved1,node,c,newsubs,bound,newtree,solved). expandlist(trees,bound,newtrees,solved) :- selecttree(trees,tree,othertrees,bound,bound1), expand(tree,bound1,newtree,solved1), combine(othertrees,newtree,solved1,newtrees,solved). continue(yes,node,c,subtrees,,solvedtree(node,f,subtrees),yes) :- bestf(subtrees,h), F is C+H,!. continue určuje, jak pokračovat continue(never,,,,,,never) :-!. po expanzi seznamu grafů continue(no,node,c,subtrees,bound,newtree,solved) :- bestf(subtrees,h), F is C+H,!,expand(tree(Node,F,C,SubTrees),Bound,NewTree,Solved). Úvod do umělé inteligence 5/12 19 / 26 expand(+tree, +Bound, -NewTree,?Solved) expanduje Tree po Bound. Výsledek je NewTree se stavem Solved expandlist expanduje všechny grafy v seznamu Trees se závorou Bound. Výsledek je v seznamu NewTrees a celkový stav v Solved

Prohledávání AND/OR grafů Heuristické prohledávání AND/OR grafu Heuristické prohledávání AND/OR grafu (AO*) pokrač. combine(othertrees,newtree,solved1,newtrees,solved) kombinuje výsledky expanze stromu a seznamu stromů combine(or:,tree,yes,tree,yes) :-!. combine(or:trees,tree,no,or:newtrees,no) :- insert(tree,trees,newtrees),!. combine(or:[],,never,,never) :-!. combine(or:trees,,never,or:trees,no) :-!. combine(and:trees,tree,yes,and:[tree Trees],yes) :- allsolved(trees),!. combine(and:,,never,,never) :-!. combine(and:trees,tree,yesno,and:newtrees,no) :- insert(tree,trees,newtrees),!. expandnode(node,c,tree(node,f,c,op:subtrees)) :- expandnode převede uzel z Node >AndOr:Succ do tree(node,f,c,subtr) Node > Op:Successors, expandsucc(successors,subtrees),bestf(op:subtrees,h),f is C+H. expandsucc([],[]). expandsucc([node/c NodesCosts],Trees) :- h(node,h),f is C+H, expandsucc(nodescosts,trees1), insert(leaf(node,f,c),trees1,trees). allsolved([]). allsolved([tree Trees]) solved(solvedtree(,, )). solved(solvedleaf(, )). :- solved(tree),allsolved(trees). allsolved zkontroluje, jestli všechny stromy v seznamu jsou vyřešené Úvod do umělé inteligence 5/12 20 / 26

Prohledávání AND/OR grafů Heuristické prohledávání AND/OR grafu Heuristické prohledávání AND/OR grafu (AO*) pokrač. f(tree,f) :- arg(2,tree,f),!. insert(t,[],[t]) :-!. insert(t,[t1 Ts],[T,T1 Ts]) :- solved(t1),!. insert(t,[t1 Ts],[T1 Ts1]) :- solved(t),insert(t,ts,ts1),!. insert(t,[t1 Ts],[T,T1 Ts]) :- f(t,f),f(t1,f1),f=<f1,!. insert(t,[t1 Ts],[T1 Ts1]) :- insert(t,ts,ts1). % první následovník v OR uzlu je nejlepší bestf(or:[tree ],F) :- f(tree,f),!. bestf(and:[],0) :-!. bestf(and:[tree1 Trees],F) :- f(tree1,f1),bestf(and:trees,f2),f is F1+F2,!. bestf(tree,f) :- f(tree,f). selecttree(op:[tree],tree,op:[],bound,bound) :-!. % jediný kandidát selecttree(op:[tree Trees],Tree,Op:Trees,Bound,Bound1) :- bestf(op:trees,f), (Op=or,!,min(Bound,F,Bound1);Op=and,Bound1 is Bound F). min(a,b,a) :- A<B,!. min(a,b,b). insert vkládá strom do seznamu stromů se zachováním třídění bestf vyhledá uloženou F-hodnotu AND/OR stromu/uzlu selecttree( +Trees, -BestTree, -OtherTrees, +Bound, -Bound1) vybere BestTree z Trees, zbytek je v OtherTrees. Bound je závora pro Trees, Bound1 pro BestTree Úvod do umělé inteligence 5/12 21 / 26

Prohledávání AND/OR grafů Cesta mezi městy heuristickým AND/OR hledáním Cesta mezi městy heuristickým AND/OR hledáním cesta mezi Mesto1 a Mesto2 predikát move(mesto1,mesto2,vzdal). kĺıčové postavení města Mesto3 predikát key(mesto1 Mesto2,Mesto3). 3 S. c l v a e u z 2 1 2 b k y 2 3 2 d x T. 4 2 1 1 3 3 5 3 2 3 move(a,b,2). move(a,c,3). move(b,e,3). move(b,d,2). move(c,e,1). move(c,l,2). move(e,k,4). move(e,l,2). move(k,u,2). move(k,x,3). move(u,v,5). move(x,y,3). move(y,z,3). move(v,z,3). move(l,u,1). move(d,k,1). move(u,y,2). states(a). states(b). states(c). states(d). states(e). statet(u). statet(v). statet(x). statet(y). statet(z). border(l). border(k). key(m1 M2,M3) :- states(m1), statet(m2), border(m3). city(x) :- (states(x);statet(x);border(x)). Úvod do umělé inteligence 5/12 22 / 26

Prohledávání AND/OR grafů Cesta mezi městy heuristickým AND/OR hledáním Cesta mezi městy heuristickým AND/OR hledáním vlastní hledání cesty: 1. Y1, Y2,... kĺıčové body mezi městy A a Z. Hledej jednu z cest: cestu z A do Z přes Y1 cestu z A do Z přes Y2... 2. Není-li mezi městy A a Z kĺıčové město hledej souseda Y města A takového, že existuje cesta z Y do Z. Úvod do umělé inteligence 5/12 23 / 26

Prohledávání AND/OR grafů Cesta mezi městy heuristickým AND/OR hledáním Cesta mezi městy heuristickým AND/OR hledáním Konstrukce příslušného AND/OR grafu: pravidlová definice grafu:? op(560,xfx,via). % operátory X Z a X Z via Y % a z > or:[a z via k/0,a z via l/0] % a v > or:[a v via k/0,a v via l/0] %... X Z ---> or:problemlist :- city(x),city(z), bagof((x Z via Y)/0, key(x Z,Y), Problemlist),!. % a l > or:[c l/3,b l/2] % b l > or:[e l/3,d l/2] %... X Z ---> or:problemlist :- city(x),city(z), bagof((y Z)/D, move(x,y,d), Problemlist). % a z via l > and:[a l/0,l z/0] % a v via l > and:[a l/0,l v/0] %... X Z via Y ---> and:[(x Y)/0,(Y Z)/0]:- city(x),city(z),key(x Z,Y). % goal(a a). goal(b b).... goal(x X). Úvod do umělé inteligence 5/12 24 / 26

Prohledávání AND/OR grafů Cesta mezi městy heuristickým AND/OR hledáním Cesta mezi městy heuristickým AND/OR hledáním pokrač. jednoduchá heuristika h(x Z X Z viay): stejné město: h = 0 (cíl, elementární problém) hrana mezi X a Y move(x,y,c): h = C jinak, stejný stát: h = 1 jinak, různý stát: h = 2 jiná možnost vzdušná vzdálenost Když n : h(n) h (n), kde h je minimální cena řešení uzlu n najdeme vždy optimální řešení Úvod do umělé inteligence 5/12 25 / 26

Prohledávání AND/OR grafů Cesta mezi městy heuristickým AND/OR hledáním Cesta mezi městy heuristickým AND/OR hledáním pokrač. :- andor(a z,solutiontree), write(solutiontree). solvedtree(a z,11, solvedtree(a z via l,11, and:[ solvedtree(l z,6,solvedtree(u z,6,solvedtree(y z,5,solvedleaf(z z,3)))), solvedtree(a l,5,solvedtree(c l,5,solvedleaf(l l,2)))])) 3 S. c l v a e u z 2 1 2 b k y 2 3 2 d x T. 4 2 1 1 3 3 5 3 2 Úvod do umělé inteligence 5/12 26 / 26 3