Przeszukiwanie przestrzeni stanów Wprowadzenie do Sztucznej Inteligencji Wykład Informatyka Studia Inynierskie Przestrze stanów jest to czwórka uporzdkowana [N,, S, GD], gdzie: N jest zbiorem wierzchołków odpowiadajcych stanom w procesie rozwizywania problemu jest zbiorem krawdzi, odpowiadajcych krokom w procesie rozwizywania problemu S jest niepustym podzbiorem N, zawierajcym stany pocztkowe problemu GD jest niepustym podzbiorem N, zawierajcym stany docelowe problemu. Stany GD s opisane: przez podanie własnoci stanów wystpujcych w przeszukiwaniu przez podanie własnoci cieki tworzonej podczas przeszukiwania ciek rozwizania nazywamy ciek wiodc przez ten graf z wierzchołka nalecego do S do wierzchołka nalecego do GD. Podstawowe problemy teorii przeszukiwania przestrzeni stanów Sformułowanie zadania dla algorytmów przeszukiwania Czy metoda gwarantuje znalezienie rozwizania? Czy algorytm zakoczy si w kadym przypadku, czy moe wpa w ptl nieskoczon? Czy jeli rozwizanie zostanie znalezione, to mamy gwarancj, e bdzie to rozwizanie optymalne? Jaka jest czasowa i pamiciowa ("przestrzenna") złoono obliczeniowa procesu przeszukiwania? Czy i w jaki sposób mona zredukowa złoono obliczeniow? Definicja stanu przestrzeni Stan pocztkowy problemu (ang. initial state) Zbiór dopuszczalnych operatorów/akcji (ang. operator/action set) lub funkcja nastpnika (ang. successor function) Zbiór stanów docelowych (ang. goal states) lub funkcja weryfikacji celu (ang. goal test) Funkcja u cieki (ang. path cost) - z reguły jest to głboko przeszukiwania 1
Istotne cechy przestrzeni stanów w reprezentacji grafowej Powtarzajce si stany: efektywno przeszukiwania Powtarzajce si stany (cykle) Identyfikacja typu grafu reprezentujcego przestrze przeszukiwania: drzewa, acykliczne grafy skierowane (DG) Rozmiar przestrzeni stanów (ograniczanie złoonoci) B C D C B C C B C Przestrze stanów Graf przeszukiwania przestrzeni Powtarzajce si stany: charakterystyka Powtarzajce si stany: metody przeciwdziałania Konieczno wykrywania ze wzgldu na efektywno przeszukiwania Nieuniknione w niektórych zadaniach (np. z odwracalnymi operatorami) - warunek zatrzymania Uwaga! Kompromis midzy ami przeszukiwania a ami wykrywania powtórze stanów Zakaz powrotu do bezporednio poprzedzajcego stanu Wykrywanie cykli w ciece - zakaz generowania jakiegokolwiek stanu poprzedzajcego (porednio) Wykrywanie dowolnego powtarzajcego si stanu w całym grafie przeszukiwania (due wymagania pamiciowe!)
Przykład przeszukiwania przestrzeni stanów: problem komiwojaera E 7 1 0 100 100 1 D 7 B 1 0 100 CDBE = 0 C Przykład przeszukiwania przestrzeni stanów: problem komiwojaera B 10 17 C D E 7 0 7 D E C E 00 00 00 E D E C 7 7 100 B 1 17 C D 100 7 0 E D E Kierunki przeszukiwania przestrzeni stanów Przeszukiwanie w przód Fakty Przeszukiwanie w przód (ang. forward chaining) Przeszukiwanie w tył (ang. backward chaining) Przeszukiwanie dwukierunkowe (ang. bidirectional search) Cel
Przeszukiwanie w tył Branching factor - co to takiego? Fakty Cel Kiedy przeszukiwanie w przód? Kiedy przeszukiwanie w tył? Wszystkie lub wikszo danych zawarta jest w pocztkowym sformułowaniu problemu - np. interpretacja i analiza duych zbiorów danych Wystpuje dua liczba potencjalnych celów, ale jest tylko kilka moliwoci zastosowania faktów i informacji wejciowych dla konkretnej instancji problemu Trudno sformułowa hipotez docelow - np. okrelanie struktury zwizków chemicznych Przeszukiwanie w przód wykorzystuje wiedz i ograniczenia zawarte w danych i opisie stanu pocztkowego problemu, aby pokierowa przeszukiwaniem zgodnie z zasadami opisanymi przez operatory zmiany stanów. Cel lub hipoteza jest dana w sformułowaniu problemu albo mona j łatwo sformułowa np. dowodzenie twierdze matematycznych, systemy diagnostyczne Liczba reguł moliwych do zastosowania ronie szybko i powoduje, e liczba odwiedzanych stanów jest bardzo dua; wczesna sekcja celów moe wyeliminowa wikszo gałzi tak, e przeszukiwanie bdzie bardziej efektywne np. dowodzenie twierdze Dane o problemie nie s znane explicite, tylko musz by pozyskane przez rozwizujcego; przeszukiwanie w tył moe pomóc ukierunkowa proces pozyskiwania danych - np. diagnostyka medyczna Przeszukiwanie wstecz wykorzystuje informacje o danym celu i kieruje procesem przeszukiwania poprzez dobór odpowiednich operatorów zmiany stanów oraz eliminacj pewnych gałzi z przestrzeni stanów.
Przeszukiwanie dwukierunkowe Przeszukiwanie dwukierunkowe Fakty Cel Jednoczesne przeszukiwanie w przód i w tył Ograniczenie złoonoci czasowej Problem generowania poprzedników stanu Problem wielu stanów docelowych (np. stany poprzedzajce mata w szachach) Efektywna metoda sprawdzania wystpowania stanu w grafie przeszukiwania przeciwnego kierunku (problem wyminicia!) Dobór odpowiedniej strategii przeszukiwania w kadym kierunku Praktyczna realizacja przeszukiwania - mechanizm nawrotów Fakty Strategie przeszukiwania przestrzeni stanów Cel Nawroty gwarantuj realizacj przeszukiwania wszystkich cieek w sposób systematyczny. Przeszukiwanie wszerz (ang. breadth-first search) Przeszukiwanie w głb (ang. depth-first search) Przeszukiwanie w głb z nawrotami (ang. depth-first search with backtracking) Przeszukiwanie z iteracyjnym pogłbianiem (ang. iterative deepening search) Przeszukiwanie metod jednolitego (równomiernego) u (ang. uniform-cost search)
lgorytm przeszukiwania w głb Przeszukiwanie w głb - przykład procedure depth_first_search(initial_state) open = [initial_state]; closed = []; while open [] do remove the leftmost state from open, call it X; if X is goal state then return(success); generate all children of X; put X on closed; eliminate any children of X already on either open or closed, as this will cause loops in the search; put the remaining descendants, in order of discovery, on the LEFT end of open; end end. Przeszukiwanie w głb - przykład Przeszukiwanie w głb - przykład
Przeszukiwanie w głb - przykład Przeszukiwanie w głb - przykład Przeszukiwanie w głb - przykład Przeszukiwanie w głb - przykład itd. 7
lgorytm przeszukiwania w głb (rekurencja) function depth_first_search(current_state) if current_state is a goal then return(success) else add current_state to closed; while current_state has unexamined children do child := next unexamined child of current_state end end; return(fail) end. if child is not a member of closed then if depth_first_search(child) = success then return(success) {check for loops} Przeszukiwanie w głb - przykład 1 1 7 19 1 7 1 7 0 9 7 1 7 1 1 7 7 1 1 1 7 1 7 1 7 1 7 9 1 1 1 0 1 7 7 1 7 1 1 7 1 7 7 1 7 1 1 7 1 7 cel 7 10 11 1 1 1 17 7 1 lgorytm przeszukiwania wszerz Przeszukiwanie wszerz - przykład procedure breadth_first_search(initial_state) open = [initial_state]; closed = []; while open [] do remove the leftmost state from open, call it X; if X is goal state then return(success); generate all children of X; put X on closed; eliminate any children of X already on either open or closed, as this will cause loops in the search; put the remaining descendants, in order of discovery, on the RIGHT end of open; end end.
Przeszukiwanie wszerz - przykład Przeszukiwanie wszerz - przykład Przeszukiwanie wszerz - przykład Przeszukiwanie wszerz - przykład 9
Przeszukiwanie wszerz - przykład Przeszukiwanie wszerz - przykład Przeszukiwanie wszerz - przykład Przeszukiwanie wszerz - przykład 1 1 7 1 1 7 7 1 7 7 9 1 7 1 7 1 7 1 7 10 11 1 1 1 1 1 17 1 19 1 7 7 1 1 7 1 7 1 7 1 7 1 7 1 7 itd. 0 1 7 9 7 1 1 7 7 1 1 7 7 1 1 7 7 1 1 7 1 7 1 7 1 7 1 7 7 1 1 7 7 1 1 7 1 7 1 7 0 1 1 7 cel 7 9 0 1 7 10
lgorytm przeszukiwania z iteracyjnym pogłbianiem (1) procedure iterative_deepening_search(initial_state) for depth 0 to do if depth_limited_search(initial_state, depth) = success then return(its result); end; return(failure); end. lgorytm przeszukiwania z iteracyjnym pogłbianiem () function depth_limited_search(current_state, depth) if current_state is a goal then return(success) else if depth = 0 then return(failure) else add current_state to closed; while current_state has unexamined children do child := next unexamined child of current_state end end; return(failure) end. if child is not a member of closed then if depth_limited_search(child, depth-1) = success then return(success) {check for loops} depth=0 depth=1 11
depth=1 depth=1 depth=1 depth=1 1
depth= depth= depth= depth= 1
depth= depth= depth= depth= 1
depth= depth= depth= depth= 1
depth= depth= depth= depth= 1
depth= depth= itd. lgorytm Uniform-cost search procedure uniform_cost_search(initial_state) open = [initial_state]; closed = []; while open [] do remove the first state from open, not already on closed, call it X; if X is a goal state then return(solution path that led to X); generate all children of X; put X on closed; for each child of X do assign path cost to the child state; add the child state to the open; end; re-order states on open according to path cost value (lower values first) end end. lgorytm UCS - przykład(1) -0 B- C- D- 17
lgorytm UCS - przykład() lgorytm UCS - przykład() -0 B- C- D- -0 B- C- D- E-9 F-9 G H I J lgorytm UCS - przykład() lgorytm UCS - przykład() -0-0 B- C- D- E-9 F-9 G-9 H- I J B- C- D- 7 E-9 F-9 G-9 H- I-1 J-1 1
lgorytm UCS - przykład() lgorytm UCS - przykład(7) -0 B- C- D- 7 E-9 F-9 G-9 H- I-1 J-1 K L M N O-10 P-11 Q R -0 B- C- D- 7 E-9 F-9 G-9 H- I-1 J-1 K-1 L-1 M N O-10 P-11 Q R lgorytm UCS - przykład() lgorytm UCS - przykład(9) -0 B- C- D- 7 E-9 F-9 G-9 H- I-1 J-1 K-1 L-1/11 M-1 N O-10 P-11 Q R -0 B- C- D- 7 E-9 F-9 G-9 H- I-1 J-1 K-1 L-1/11 M-1 N-1 O-10 P-11 Q R 19
lgorytm UCS - przykład(10) lgorytm UCS - przykład(11) -0 B- C- D- 7 E-9 F-9 G-9 H- I-1 J-1 K-1 L-1/11M-1 N-1 O-10 P-11 Q R -0 B- C- D- 7 E-9 F-9 G-9 H- I-1 J-1 K-1 L-1/11M-1 N-1 O-10 P-11 Q R S T-1 U lgorytm UCS - przykład(1) lgorytm UCS: charakterystyka -0 B- C- D- 7 E-9 F-9 G-9 H- I-1 J-1 K-1L-1/11M-1N-1 O-10 P-11 Q R 1 S T-1 U-1 itd. Cechy szczególne Ocena stanu to dojcia do tego stanu ( pokonanej cieki od stanu pocztkowego) - przejcia z dowolnego stanu do jego stanu potomnego musi by zawsze 0 Stanowi uogólnienie algorytmu przeszukiwania wszerz - w algorytmie przesz. wszerz, to głboko na jakiej ley stan Optymalny (gwarantuje znalezienie najkrótszego rozwizania) Wady Due wymagania czasowe i pamiciowe (rosnce wykładniczo!)!!! 0
Porównanie strategii przeszukiwania Zasady implementacji algorytmów przeszukiwania przestrzeni stanów W głb Iteracyjne Dwukierunkowe Kryterium Wszerz Uniformcost z nawrotami pogłbianie ( jeli moliwe) Czas B d B d B n B d B d/ Pami B d B d Bn Bd B d/ Optymalny? Tak Tak Nie Tak Tak Zupełny? Tak Tak Tak Tak Tak B - rednia liczba nastpników kadego stanu (ang. branching factor) n - maksymalna głboko przeszukiwania d - głboko rozwizania 1. Reprezentacja rozwizania problemu jako cieki od stanu pocztkowego do stanu docelowego.. Przegldanie systematyczne wszystkich cieek w poszukiwaniu celu.. Powrót do poprzedniego stanu pozwalajcy na wznowienie przeszukiwania w sytuacji, gdy dotychczasowa cieka nie prowadzi do celu - mechanizm nawrotów.. Struktury listowe umoliwiajce utrzymywanie w sposób jawny danych o aktualnie analizowanych stanach: lista open, pozwalajca na powrót do nie odwiedzonych jeszcze stanów, lista closed stanów ju odwiedzonych, pozwalajca na wykrywanie ptli i uniknicie powtarzania bezowocnych cieek.. Zastosowanie stosu w algorytmie przeszukiwania w głb i kolejki jednokierunkowej w przeszukiwaniu wszerz. 1