Your SlideShare is downloading. ×
Przeszukiwanie przestrzeni rozwiązań
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Przeszukiwanie przestrzeni rozwiązań

1,956

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,956
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
20
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Wprowadzenie Przeszukiwanie wgłab ˛ Przeszukiwanie wszerz Heurystyki Gry Postscriptum Sztuczna Inteligencja i Systemy Ekspertowe ˛ ´ Przeszukiwanie przestrzeni rozwiazan Aleksander Pohl http://apohllo.pl/dydaktyka/ai Wy˙ sza Szkoła Zarzadzania i Bankowo´ ci z ˛ s 26 maja 2009 Aleksander Pohl WSZiB ˛ ´ Przeszukiwanie przestrzeni rozwiazan
  • 2. Wprowadzenie Przeszukiwanie wgłab ˛ Przeszukiwanie wszerz Heurystyki Gry Postscriptum Plan prezentacji Wprowadzenie Przeszukiwanie wgłab ˛ Przeszukiwanie wszerz Heurystyki Gry Postscriptum Aleksander Pohl WSZiB ˛ ´ Przeszukiwanie przestrzeni rozwiazan
  • 3. Wprowadzenie Przeszukiwanie wgłab ˛ Przeszukiwanie wszerz Heurystyki Gry Postscriptum Plan prezentacji Wprowadzenie Przeszukiwanie wgłab ˛ Przeszukiwanie wszerz Heurystyki Gry Postscriptum Aleksander Pohl WSZiB ˛ ´ Przeszukiwanie przestrzeni rozwiazan
  • 4. Wprowadzenie Przeszukiwanie wgłab ˛ Przeszukiwanie wszerz Heurystyki Gry Postscriptum ´ Przestrzen stanów ◮ Graf o wezłach opisujacych sytuacje dla danego problemu ˛ ˛ ◮ ˛ ˛ ´ z Rozwiazanie sprowadza sie do znalezienia scie˙ ki w grafie ◮ Wie˙ e hanoi z ◮ Problem „wilka, kozy i kapusty” ◮ Problem komiwoja˙ era (TSP) z ◮ Problem okre´ lony jest przez: s ◮ ´ Przestrzen stanów ◮ W˛ezeł poczatkowy ˛ ◮ W˛ezeł/W˛ ´ ezły koncowy/e ◮ s´ ew. koszty przej´ c ◮ s(X,Y) ◮ s(X,Y,Cost) Aleksander Pohl WSZiB ˛ ´ Przeszukiwanie przestrzeni rozwiazan
  • 5. Wprowadzenie Przeszukiwanie wgłab ˛ Przeszukiwanie wszerz Heurystyki Gry Postscriptum Przykład – klocki Aleksander Pohl WSZiB ˛ ´ Przeszukiwanie przestrzeni rozwiazan
  • 6. Wprowadzenie Przeszukiwanie wgłab ˛ Przeszukiwanie wszerz Heurystyki Gry Postscriptum Metody poszukiwania rozwiazania ˛ ◮ przeszukiwanie wgłab ˛ ◮ z limitem głeboko´ ci ˛ s ◮ z powiekszanym limitem głeboko´ ci (iterative deepening) ˛ ˛ s ◮ przeszukiwanie wszerz ◮ przeszukiwanie heurystyczne ◮ A* ◮ IDA* ◮ RBFS ◮ BEAM Aleksander Pohl WSZiB ˛ ´ Przeszukiwanie przestrzeni rozwiazan
  • 7. Wprowadzenie Przeszukiwanie wgłab ˛ Przeszukiwanie wszerz Heurystyki Gry Postscriptum Plan prezentacji Wprowadzenie Przeszukiwanie wgłab ˛ Przeszukiwanie wszerz Heurystyki Gry Postscriptum Aleksander Pohl WSZiB ˛ ´ Przeszukiwanie przestrzeni rozwiazan
  • 8. Wprowadzenie Przeszukiwanie wgłab ˛ Przeszukiwanie wszerz Heurystyki Gry Postscriptum Przeszukiwanie wgłab – implementacja ˛ ◮ solve(N,[N]) :- goal(N). ◮ solve(N,[N|Sol1]):- s(N,N1),solve(N1,Sol1). ◮ [a] , [a,b], [a,b,d], [a,b,e], .. Aleksander Pohl WSZiB ˛ ´ Przeszukiwanie przestrzeni rozwiazan
  • 9. Wprowadzenie Przeszukiwanie wgłab ˛ Przeszukiwanie wszerz Heurystyki Gry Postscriptum Wykrywanie cykli ◮ solve( Node, Solution) :- depthfirst( [], Node, Solution). ◮ depthfirst( Path, Node, [Node | Path] ) :- goal( Node). ◮ depthfirst( Path, Node, Sol) :- s( Node, Node1), not member( Node1, Path), depthfirst( [Node | Path], Node1, Sol). Aleksander Pohl WSZiB ˛ ´ Przeszukiwanie przestrzeni rozwiazan
  • 10. Wprowadzenie Przeszukiwanie wgłab ˛ Przeszukiwanie wszerz Heurystyki Gry Postscriptum Ograniczenie głeboko´ ci ˛ s ◮ depthfirst2( Node, [Node], _) :- goal( Node). ◮ depthfirst2( Node, [Node | Sol], Maxdepth) :- Maxdepth > 0, s( Node, Node1), Max1 is Maxdepth - 1, depthfirst2( Node1, Sol, Max1). Aleksander Pohl WSZiB ˛ ´ Przeszukiwanie przestrzeni rozwiazan
  • 11. Wprowadzenie Przeszukiwanie wgłab ˛ Przeszukiwanie wszerz Heurystyki Gry Postscriptum Warianty ◮ iteratywne zwiekszanie głeboko´ ci – iterative deepening ˛ ˛ s ◮ małe wymagania pamieciowe – pamietana jest tylko ˛ ˛ ´ cie˙ ka od stanu wyj´ ciowego do stanu aktualna s z s aktualnego Aleksander Pohl WSZiB ˛ ´ Przeszukiwanie przestrzeni rozwiazan
  • 12. Wprowadzenie Przeszukiwanie wgłab ˛ Przeszukiwanie wszerz Heurystyki Gry Postscriptum Plan prezentacji Wprowadzenie Przeszukiwanie wgłab ˛ Przeszukiwanie wszerz Heurystyki Gry Postscriptum Aleksander Pohl WSZiB ˛ ´ Przeszukiwanie przestrzeni rozwiazan
  • 13. Wprowadzenie Przeszukiwanie wgłab ˛ Przeszukiwanie wszerz Heurystyki Gry Postscriptum Przeszukiwanie wszerz ◮ ´ z ´ z Je´ li głowa pierwszej scie˙ ki jest celem, to ta scie˙ ka jest s rozwiazaniem ˛ ◮ ´ ˛´ z e Usun pierwsza scie˙ k˛ z listy kandydatów, wytwórz s´ wszystkie jej rozszerzenia o jeden krok, umie´ c je na ´ koncu listy kandydatów, przeszukaj wgłab ta liste ˛ ˛ ˛ ◮ [a], [a,b], [a,c], [a,b,d] .... Aleksander Pohl WSZiB ˛ ´ Przeszukiwanie przestrzeni rozwiazan
  • 14. Wprowadzenie Przeszukiwanie wgłab ˛ Przeszukiwanie wszerz Heurystyki Gry Postscriptum Implementacja (1) ◮ solve(Start, Solution) :- breadthfirst([[Start]], Solution). ◮ breadthfirst([[Node|Path] | _], [Node|Path]) :- goal(Node). ◮ breadthfirst([Path | Paths], Solution) :- extend(Path, NewPaths), conc(Paths, NewPaths, Paths1), breadthfirst(Paths1, Solution). Aleksander Pohl WSZiB ˛ ´ Przeszukiwanie przestrzeni rozwiazan
  • 15. Wprowadzenie Przeszukiwanie wgłab ˛ Przeszukiwanie wszerz Heurystyki Gry Postscriptum Implementacja (2) ◮ extend( [Node | Path], NewPaths) :- bagof([NewNode, Node | Path], (s( Node, NewNode), not member( NewNode, [Node | Path] ) ), NewPaths),!. ◮ extend( Path, [] ). Aleksander Pohl WSZiB ˛ ´ Przeszukiwanie przestrzeni rozwiazan
  • 16. Wprowadzenie Przeszukiwanie wgłab ˛ Przeszukiwanie wszerz Heurystyki Gry Postscriptum Implementacja z wykorzystaniem list ró˙ nicowych z ◮ solve( Start, Solution) :- breadthfirst( [ [Start] | Z] - Z, Solution). ◮ breadthfirst([[Node | Path] | _] - _ , [Node | Path]) :- goal( Node). ◮ breadthfirst( [Path | Paths] - Z, Solution) :- extend( Path, NewPaths), conc( NewPaths, Z1, Z), Paths ¯ Z1, = breadthfirst( Paths - Z1, Solution). Aleksander Pohl WSZiB ˛ ´ Przeszukiwanie przestrzeni rozwiazan
  • 17. Wprowadzenie Przeszukiwanie wgłab ˛ Przeszukiwanie wszerz Heurystyki Gry Postscriptum Podsumowanie Metoda Czas Pamie´ ˛c ´ z Najkrótsza scie˙ ka Wszerz bd b d Tak Wgłab˛ b dmax dmax Nie Iteracyjne pogł. bd d Tak Dwukierunkowy b (d/2) b (d/2) Tak ◮ b – czynnik rozgałezienia, ˛ ◮ s´ d – długo´ c najkrótszego rozwiazania, ˛ ◮ dmax – ograniczenie głeboko´ ci przeszukania ˛ s Aleksander Pohl WSZiB ˛ ´ Przeszukiwanie przestrzeni rozwiazan
  • 18. Wprowadzenie Przeszukiwanie wgłab ˛ Przeszukiwanie wszerz Heurystyki Gry Postscriptum Plan prezentacji Wprowadzenie Przeszukiwanie wgłab ˛ Przeszukiwanie wszerz Heurystyki Gry Postscriptum Aleksander Pohl WSZiB ˛ ´ Przeszukiwanie przestrzeni rozwiazan
  • 19. Wprowadzenie Przeszukiwanie wgłab ˛ Przeszukiwanie wszerz Heurystyki Gry Postscriptum ´ Najpierw najlepszy (najtanszy) w˛ ezeł ◮ f (n) - „trudno´ c” dla wezła n s´ ˛ ◮ najlepszy: f (T ) = mini f (Si ) ◮ ´ z Scie˙ ka od s do t: ◮ g(n) – koszt s → n ◮ h(n) – koszt n → t ◮ f (n) = g(n) + h(n) – A* Aleksander Pohl WSZiB ˛ ´ Przeszukiwanie przestrzeni rozwiazan
  • 20. Wprowadzenie Przeszukiwanie wgłab ˛ Przeszukiwanie wszerz Heurystyki Gry Postscriptum A* ◮ Redukcja czynnika rozgałezienia b na b ′ b ′ << b ˛ ◮ ˛ s´ Zajeto´ c pamieci znaczna ˛ ◮ z s´ Zło˙ ono´ c obliczeniowa bardziej tolerowalna ni˙ z pamieciowa ˛ ◮ Je´ li heurystyczny koszt jest nie mniejszy od s rzeczywistego – algorytm wykrywa rozwiazania optymalne ˛ Aleksander Pohl WSZiB ˛ ´ Przeszukiwanie przestrzeni rozwiazan
  • 21. Wprowadzenie Przeszukiwanie wgłab ˛ Przeszukiwanie wszerz Heurystyki Gry Postscriptum A* – implementacja, pseudokod function A* (start,goal) var closed := the empty set var q := make_queue(path(start)) while q is not empty var p := remove_first(q) var x := the last node of p if x in closed : continue if x = goal : return p add x to closed foreach y in successors(p) # sortowane po f(x) = g(x)+h(x) enqueue(q, y) return failure Aleksander Pohl WSZiB ˛ ´ Przeszukiwanie przestrzeni rozwiazan
  • 22. Wprowadzenie Przeszukiwanie wgłab ˛ Przeszukiwanie wszerz Heurystyki Gry Postscriptum A* – implementacja (1) ◮ expand(P,Tree,Bound,Tree1, Solved,Solution) ◮ Tree – obecne poddrzewo ◮ ´ z P – scie˙ ka od poczatku do Tree ˛ ◮ s´ Bound – obecnie najlepsza warto´ c ◮ Tree1 – Tree poszerzone tak by zachowa´ Bound c ◮ Solved – „yes”, „no”, „never” ◮ ´ z Solution – scie˙ ka od startu Aleksander Pohl WSZiB ˛ ´ Przeszukiwanie przestrzeni rozwiazan
  • 23. Wprowadzenie Przeszukiwanie wgłab ˛ Przeszukiwanie wszerz Heurystyki Gry Postscriptum A* – implementacja (2) ◮ s´ I(N, F/G) – Li´ c grafu: ◮ N – stan ◮ G – koszt z doj´ cia z Start do N, s ◮ F – G + h(N) (h – heurystyka) ◮ t(N, F/G, Subs) – poddrzewo grafu ◮ N – Korzen ´ ◮ Subs – lista pod-drzew ◮ F/G - j.w. (F – najwy˙ sze spo´ ród nastepników N) z s ˛ Aleksander Pohl WSZiB ˛ ´ Przeszukiwanie przestrzeni rozwiazan
  • 24. Wprowadzenie Przeszukiwanie wgłab ˛ Przeszukiwanie wszerz Heurystyki Gry Postscriptum Implementacja (3) ◮ bestfirst( Start, Solution) :- expand([], l(Start, 0/0), 9999, _, yes, Solution). ◮ expand(P, l(N, _), _, _, yes, [N|P]) :- goal(N). ◮ expand(P, l(N,F/G), Bound, Tree1, Solved, Sol) :- F =< Bound, (bagof(M/C, (s(N,M,C), not member(M,P) ), Succ), !, succlist(G, Succ, Ts), bestf(Ts, F1), expand(P, t(N,F1/G,Ts), Bound, Tree1, Solved, Sol) ; Solved = never). Aleksander Pohl WSZiB ˛ ´ Przeszukiwanie przestrzeni rozwiazan
  • 25. Wprowadzenie Przeszukiwanie wgłab ˛ Przeszukiwanie wszerz Heurystyki Gry Postscriptum Implementacja (4) ◮ 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, _) :- !. Aleksander Pohl WSZiB ˛ ´ Przeszukiwanie przestrzeni rozwiazan
  • 26. Wprowadzenie Przeszukiwanie wgłab ˛ Przeszukiwanie wszerz Heurystyki Gry Postscriptum Implementacja (5) ◮ expand(_, Tree, Bound, Tree, no, _) :- f(Tree, F), F > Bound. ◮ continue(_, _, _, _, yes, yes, Sol). ◮ continue(P, t(N,F/G,[T1|Ts]), Bound, Tree1, no, Solved, Sol) :- insert(T1, Ts, NTs), bestf(NTs, F1), expand(P, t(N,F1/G,NTs), Bound, Tree1, Solved, Sol). Aleksander Pohl WSZiB ˛ ´ Przeszukiwanie przestrzeni rozwiazan
  • 27. Wprowadzenie Przeszukiwanie wgłab ˛ Przeszukiwanie wszerz Heurystyki Gry Postscriptum Implementacja (6) ◮ 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([], 9999). ◮ min(X, Y, X) :- X =< Y, !. ◮ min(X, Y, Y). Aleksander Pohl WSZiB ˛ ´ Przeszukiwanie przestrzeni rozwiazan
  • 28. Wprowadzenie Przeszukiwanie wgłab ˛ Przeszukiwanie wszerz Heurystyki Gry Postscriptum Implementacja (7) ◮ 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). Aleksander Pohl WSZiB ˛ ´ Przeszukiwanie przestrzeni rozwiazan
  • 29. Wprowadzenie Przeszukiwanie wgłab ˛ Przeszukiwanie wszerz Heurystyki Gry Postscriptum IDA* – iterative deepening A* ◮ Bound=f(Start) ◮ Repeat ◮ Dokonaj szukania wgłab uwzgledniajac takie w˛ ˛ ˛ ˛ ˙ ezły N ze f(N)<=Bound ◮ „if” cel osiagniety – koniec ˛ ˛ ◮ „else”: ◮ NewBound = min{ f(N) | N wygenerowany , f(N)>Bound} ◮ Bound=NewBound ◮ Until znaleziono rozwiaznie ˛ Aleksander Pohl WSZiB ˛ ´ Przeszukiwanie przestrzeni rozwiazan
  • 30. Wprowadzenie Przeszukiwanie wgłab ˛ Przeszukiwanie wszerz Heurystyki Gry Postscriptum Inne rozwiazania ˛ ◮ RBFS – recursive best-first search ◮ A* – zapamietuje wszystkie w˛ ˛ ezły ◮ RBFS – odrzuca te gałezie które nie sa optymalne ˛ ˛ ◮ BEAM search ◮ z ´ z na ka˙ dym poziomie rozwijamy tylko m najlepszych scie˙ ek (m – beam) ◮ niekoniecznie znajduje rozwiazanie ˛ Aleksander Pohl WSZiB ˛ ´ Przeszukiwanie przestrzeni rozwiazan
  • 31. Wprowadzenie Przeszukiwanie wgłab ˛ Przeszukiwanie wszerz Heurystyki Gry Postscriptum Plan prezentacji Wprowadzenie Przeszukiwanie wgłab ˛ Przeszukiwanie wszerz Heurystyki Gry Postscriptum Aleksander Pohl WSZiB ˛ ´ Przeszukiwanie przestrzeni rozwiazan
  • 32. Wprowadzenie Przeszukiwanie wgłab ˛ Przeszukiwanie wszerz Heurystyki Gry Postscriptum Grafy i/lub – przykład (1) Aleksander Pohl WSZiB ˛ ´ Przeszukiwanie przestrzeni rozwiazan
  • 33. Wprowadzenie Przeszukiwanie wgłab ˛ Przeszukiwanie wszerz Heurystyki Gry Postscriptum Grafy i/lub – przykład (2) ´ z Szukanie scie˙ ki – rozło˙ enie na podproblemy z ◮ W grafie a-z istnieja dwa „mosty” - f,g ˛ ◮ Dwa mo˙ liwe rozwiazania – a-z przez f bad´ a-z przez g z ˛ ˛ z ◮ z´ z e Znajd´ scie˙ k˛ a-f i f-z ◮ lub ◮ z´ z e Znajd´ scie˙ k˛ a-g i g-z Aleksander Pohl WSZiB ˛ ´ Przeszukiwanie przestrzeni rozwiazan
  • 34. Wprowadzenie Przeszukiwanie wgłab ˛ Przeszukiwanie wszerz Heurystyki Gry Postscriptum Grafy i/lub – charakterystyka (1) ◮ Dzieli problem na podproblemy ◮ W˛ ezły w grafie sa problemami, krawedzie relacjami ˛ ˛ ◮ Dla wezła „LUB” (ma tylko wychodzace krawedzie ˛ ˛ ˛ połaczone relacja „lub”) jeden z nastepników musi da´ ˛ ˛ ˛ c rozwiazanie ˛ ◮ Dla wezła „I” (ma tylko wychodzace krawedzie połaczone ˛ ˛ ˛ ˛ relacja „I”) ka˙ dy z nastepników musi da´ rozwiazanie ˛ z ˛ c ˛ Aleksander Pohl WSZiB ˛ ´ Przeszukiwanie przestrzeni rozwiazan
  • 35. Wprowadzenie Przeszukiwanie wgłab ˛ Przeszukiwanie wszerz Heurystyki Gry Postscriptum Grafy i/lub – charakterystyka (2) ◮ Okre´ lamy problem przez wezeł startowy, warunki s ˛ osiagniecia celu ˛ ˛ ◮ W˛ ezły celu odpowiadaja „trywialnym” rozwiazaniom ˛ ˛ ◮ Rozwiazanie reprezentowane jest przez drzewo ˛ ◮ ´ Cała przestrzen posiada tylko wezły LUB ˛ ◮ W˛ezły I odpowiadaja podproblemom, połaczenie ˛ ˛ ˛ ´ rozwiazan podproblemów winno da´ globalne rozwiazanie c ˛ ◮ W teorii gier – „moje ruchy” – wezły LUB, ˛ „jego ruchy” - wezły I ˛ Aleksander Pohl WSZiB ˛ ´ Przeszukiwanie przestrzeni rozwiazan
  • 36. Wprowadzenie Przeszukiwanie wgłab ˛ Przeszukiwanie wszerz Heurystyki Gry Postscriptum Zasada mini-max ◮ Dla gier dwuosobowych: ◮ Okre´ lamy heurystyczna funkcje celu s ˛ ˛ ◮ Im wieksza tym wieksza szansa zwyciestwa ˛ ˛ ˛ ◮ W kolejnych krokach na zmiane bierzmy minimum i ˛ maximum tej funkcji ◮ Po okre´ lonej głeboko´ ci wybieramy cel maksymalizujacy s ˛ s ˛ funkcje docelowa ˛ ˛ ◮ ´ Efekt „horyzontu zdarzen” Aleksander Pohl WSZiB ˛ ´ Przeszukiwanie przestrzeni rozwiazan
  • 37. Wprowadzenie Przeszukiwanie wgłab ˛ Przeszukiwanie wszerz Heurystyki Gry Postscriptum Mini-max – przykład Aleksander Pohl WSZiB ˛ ´ Przeszukiwanie przestrzeni rozwiazan
  • 38. Wprowadzenie Przeszukiwanie wgłab ˛ Przeszukiwanie wszerz Heurystyki Gry Postscriptum Mini-max – pseudokod function minimax(node, depth) if node is a terminal node or depth = 0 return the heuristic value of node if the adversary is to play at node let α := +∞ foreach child of node α := min(α, minimax(child, depth-1)) else we are to play at node let α := −∞ foreach child of node α := max(α, minimax(child, depth-1)) return α Aleksander Pohl WSZiB ˛ ´ Przeszukiwanie przestrzeni rozwiazan
  • 39. Wprowadzenie Przeszukiwanie wgłab ˛ Przeszukiwanie wszerz Heurystyki Gry Postscriptum Mini-max – implementacja (1) ◮ minimax(Pos, BestSucc, Val) :- moves(Pos, PosList), !, best(PosList, BestSucc, Val) ; staticval(Pos, Val). ◮ best([ Pos], Pos, Val) :- minimax(Pos, _, Val), !. ◮ best([Pos1 | PosList], BestPos, BestVal) :- minimax(Pos1, _, Val1), best(PosList, Pos2, Val2), betterof(Pos1, Val1, Pos2, Val2, BestPos, BestVal). Aleksander Pohl WSZiB ˛ ´ Przeszukiwanie przestrzeni rozwiazan
  • 40. Wprowadzenie Przeszukiwanie wgłab ˛ Przeszukiwanie wszerz Heurystyki Gry Postscriptum Mini-max – implementacja (2) ◮ betterof(Pos0, Val0, Pos1, Val1, Pos0, Val0) :- min_to_move(Pos0), %nastepny ruch jego Val0 > Val1, ! ; max_to_move(Pos0), % nastepny ruch moj Val0 < Val1, !. ◮ betterof(Pos0, Val0, Pos1, Val1, Pos1, Val1). Aleksander Pohl WSZiB ˛ ´ Przeszukiwanie przestrzeni rozwiazan
  • 41. Wprowadzenie Przeszukiwanie wgłab ˛ Przeszukiwanie wszerz Heurystyki Gry Postscriptum Mini-max – szachy ◮ 80 półruchów, 40 ruchów ∼ 100040 pozycji ◮ MinMax – szukamy Min w ruchu przeciwnika, Max w naszym Aleksander Pohl WSZiB ˛ ´ Przeszukiwanie przestrzeni rozwiazan
  • 42. Wprowadzenie Przeszukiwanie wgłab ˛ Przeszukiwanie wszerz Heurystyki Gry Postscriptum Algorytm alfa-beta ◮ Nie rozpatrujemy wszystkich wezłów ˛ ◮ ˙ s´ Gwarantujemy ze warto´ c MAX jest nie mniejsza ni˙ Alfa z ◮ ˙ s´ Gwarantujemy ze warto´ c MIN jest nie wieksza ni˙ Beta ˛ z ◮ Z ka˙ dym krokiem zwe˙ amy przedział o nowo znalezione z ˛z warto´ ci s Aleksander Pohl WSZiB ˛ ´ Przeszukiwanie przestrzeni rozwiazan
  • 43. Wprowadzenie Przeszukiwanie wgłab ˛ Przeszukiwanie wszerz Heurystyki Gry Postscriptum Alfa-beta – pseudokod function minimax(node, depth) return alphabeta(node, depth, -∞, +∞) function alphabeta(node, depth, α, β) if node is a terminal node or depth = 0 return the heuristic value of node foreach child of node α := max(α, -alphabeta(child, depth-1, -β, -α)) if α ≥ β return β return α Aleksander Pohl WSZiB ˛ ´ Przeszukiwanie przestrzeni rozwiazan
  • 44. Wprowadzenie Przeszukiwanie wgłab ˛ Przeszukiwanie wszerz Heurystyki Gry Postscriptum Alfa-beta – implementacja (1) ◮ alphabeta(Pos, Alpha, Beta, GoodPos, Val) :- moves(Pos, PosList), !, boundedbest(PosList, Alpha, Beta, GoodPos, Val); staticval(Pos, Val). ◮ boundedbest([Pos | PosList], Alpha, Beta, GoodPos, GoodVal) :- alphabeta(Pos, Alpha, Beta, _, Val), goodenough(PosList, Alpha, Beta, Pos, Val, GoodPos, GoodVal). Aleksander Pohl WSZiB ˛ ´ Przeszukiwanie przestrzeni rozwiazan
  • 45. Wprowadzenie Przeszukiwanie wgłab ˛ Przeszukiwanie wszerz Heurystyki Gry Postscriptum Alfa-beta – implementacja (2) ◮ goodenough([], _, _, Pos, Val, Pos, Val) :- !. ◮ goodenough(_, Alpha, Beta, Pos, Val, Pos, Val) :- min_to_move(Pos), Val > Beta, ! ; max_to_move(Pos), Val < Alpha, !. ◮ goodenough(PosList, Alpha, Beta, Pos, Val, GoodPos, GoodVal) :- newbounds(Alpha, Beta, Pos, Val, NewAlpha, NewBeta), boundedbest(PosList, NewAlpha, NewBeta, Pos1, Val1), betterof(Pos, Val, Pos1, Val1, GoodPos, GoodVal). Aleksander Pohl WSZiB ˛ ´ Przeszukiwanie przestrzeni rozwiazan
  • 46. Wprowadzenie Przeszukiwanie wgłab ˛ Przeszukiwanie wszerz Heurystyki Gry Postscriptum Alfa-beta – implementacja (3) ◮ newbounds(Alpha, Beta, Pos, Val, Val, Beta) :- min_to_move(Pos), Val > Alpha, !. ◮ newbounds(Alpha, Beta, Pos, Val, Alpha, Val) :- max_to_move(Pos), Val < Beta, !. ◮ newbounds(Alpha, Beta, _, _, Alpha, Beta). ◮ betterof(Pos, Val, Pos1, Val1, Pos, Val) :- min_to_move(Pos), Val > Val1, ! ; max_to_move(Pos), Val < Val1, !. ◮ betterof(_, _, Pos1, Val1, Pos1, Val1). Aleksander Pohl WSZiB ˛ ´ Przeszukiwanie przestrzeni rozwiazan
  • 47. Wprowadzenie Przeszukiwanie wgłab ˛ Przeszukiwanie wszerz Heurystyki Gry Postscriptum Alfa-beta – podsumowanie ◮ sqrt(b) – redukcja czynnika rozgałezienia przy best-first ˛ (szachy: 30 -> 6) ◮ Ulepszenia: ◮ „heuristic pruning” - usuwanie mało obiecujacyh gałezi ˛ ˛ ◮ „progressive deepening” ◮ ograniczenia czasowe ◮ zapamietywanie ruchów po´ rednich ˛ s Aleksander Pohl WSZiB ˛ ´ Przeszukiwanie przestrzeni rozwiazan
  • 48. Wprowadzenie Przeszukiwanie wgłab ˛ Przeszukiwanie wszerz Heurystyki Gry Postscriptum Plan prezentacji Wprowadzenie Przeszukiwanie wgłab ˛ Przeszukiwanie wszerz Heurystyki Gry Postscriptum Aleksander Pohl WSZiB ˛ ´ Przeszukiwanie przestrzeni rozwiazan
  • 49. Wprowadzenie Przeszukiwanie wgłab ˛ Przeszukiwanie wszerz Heurystyki Gry Postscriptum Materiały zródłowe ´ ◮ L.Sterling, E.Shapiro - „The Art Of Prolog” ◮ Ivan Bratko - „Prolog – Programming For Artificial Intelligence” ◮ Slajdy zostały przygotowane za zgoda˛ dr. Michała Korzyckiego na podstawie jego wykładu. Aleksander Pohl WSZiB ˛ ´ Przeszukiwanie przestrzeni rozwiazan

×