SlideShare a Scribd company logo
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
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
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
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
Wprowadzenie          Przeszukiwanie wgłab
                                         ˛   Przeszukiwanie wszerz   Heurystyki   Gry   Postscriptum




Przykład – klocki




Aleksander Pohl                                                                              WSZiB
                                 ˛ ´
Przeszukiwanie przestrzeni rozwiazan
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Wprowadzenie          Przeszukiwanie wgłab
                                         ˛   Przeszukiwanie wszerz   Heurystyki   Gry   Postscriptum




Grafy i/lub – przykład (1)




Aleksander Pohl                                                                              WSZiB
                                 ˛ ´
Przeszukiwanie przestrzeni rozwiazan
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
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
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
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
Wprowadzenie          Przeszukiwanie wgłab
                                         ˛   Przeszukiwanie wszerz   Heurystyki   Gry   Postscriptum




Mini-max – przykład




Aleksander Pohl                                                                              WSZiB
                                 ˛ ´
Przeszukiwanie przestrzeni rozwiazan
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
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
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
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
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
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
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
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
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
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
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
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

More Related Content

More from Aleksander Pohl

Sztuczna Inteligencja - Prolog 3
Sztuczna Inteligencja - Prolog 3Sztuczna Inteligencja - Prolog 3
Sztuczna Inteligencja - Prolog 3Aleksander Pohl
 
Rachunek predykatów pierwszego rzędu
Rachunek predykatów pierwszego rzęduRachunek predykatów pierwszego rzędu
Rachunek predykatów pierwszego rzęduAleksander Pohl
 
Sztuczna Inteligencja - Prolog 1
Sztuczna Inteligencja - Prolog 1Sztuczna Inteligencja - Prolog 1
Sztuczna Inteligencja - Prolog 1Aleksander Pohl
 
Sztuczna Intelignecja - Prolog 2
Sztuczna Intelignecja - Prolog 2Sztuczna Intelignecja - Prolog 2
Sztuczna Intelignecja - Prolog 2Aleksander Pohl
 
Sztuczna Inteligencja i Systemy Ekspertowe - wprowadzenie
Sztuczna Inteligencja i Systemy Ekspertowe - wprowadzenieSztuczna Inteligencja i Systemy Ekspertowe - wprowadzenie
Sztuczna Inteligencja i Systemy Ekspertowe - wprowadzenieAleksander Pohl
 
Jena – A Semantic Web Framework for Java
Jena – A Semantic Web Framework for JavaJena – A Semantic Web Framework for Java
Jena – A Semantic Web Framework for JavaAleksander Pohl
 

More from Aleksander Pohl (9)

Metody probabilistyczne
Metody probabilistyczneMetody probabilistyczne
Metody probabilistyczne
 
Systemy ekspertowe 1
Systemy ekspertowe 1Systemy ekspertowe 1
Systemy ekspertowe 1
 
Reprezentacja wiedzy
Reprezentacja wiedzyReprezentacja wiedzy
Reprezentacja wiedzy
 
Sztuczna Inteligencja - Prolog 3
Sztuczna Inteligencja - Prolog 3Sztuczna Inteligencja - Prolog 3
Sztuczna Inteligencja - Prolog 3
 
Rachunek predykatów pierwszego rzędu
Rachunek predykatów pierwszego rzęduRachunek predykatów pierwszego rzędu
Rachunek predykatów pierwszego rzędu
 
Sztuczna Inteligencja - Prolog 1
Sztuczna Inteligencja - Prolog 1Sztuczna Inteligencja - Prolog 1
Sztuczna Inteligencja - Prolog 1
 
Sztuczna Intelignecja - Prolog 2
Sztuczna Intelignecja - Prolog 2Sztuczna Intelignecja - Prolog 2
Sztuczna Intelignecja - Prolog 2
 
Sztuczna Inteligencja i Systemy Ekspertowe - wprowadzenie
Sztuczna Inteligencja i Systemy Ekspertowe - wprowadzenieSztuczna Inteligencja i Systemy Ekspertowe - wprowadzenie
Sztuczna Inteligencja i Systemy Ekspertowe - wprowadzenie
 
Jena – A Semantic Web Framework for Java
Jena – A Semantic Web Framework for JavaJena – A Semantic Web Framework for Java
Jena – A Semantic Web Framework for Java
 

Przeszukiwanie przestrzeni rozwiązań

  • 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