Wprowadzenie do Sztucznej Inteligencji Wykład Studia Inżynierskie Przeszukiwanie przestrzeni stanów Przestrzeń stanów jest to czwórka uporządkowana [N,[, S, GD], gdzie: N jest zbiorem wierzchołków w odpowiadających stanom w procesie rozwiązywania zywania problemu jest zbiorem krawędzi, odpowiadających krokom w procesie rozwiązywania zywania problemu S jest niepustym podzbiorem N,, zawierającym stany początkowe problemu GD jest niepustym podzbiorem N,, zawierającym stany docelowe problemu. Stany GD są opisane: przez podanie własności stanów występuj pujących w przeszukiwaniu przez podanie własności ścieżki tworzonej podczas przeszukiwania Ścieżką rozwiązania zania nazywamy ścieżkę wiodącą przez ten graf z wierzchołka należą żącego do S do wierzchołka należą żącego do GD. 1
Podstawowe problemy teorii przeszukiwania przestrzeni stanów Czy metoda gwarantuje znalezienie rozwiązania zania? Czy algorytm zakończy się w każdym przypadku, czy może e wpaść w pętlę nieskończon czoną? Czy jeśli rozwiązanie zanie zostanie znalezione, to mamy gwarancję, że e będzie b to rozwiązanie zanie optymalne? Jaka jest czasowa i pamięciowa ("przestrzenna") złożoność obliczeniowa procesu przeszukiwania? Czy i w jaki sposób b można zredukować złożoność obliczeniową? Sformułowanie owanie zadania dla algorytmów przeszukiwania Definicja stanu przestrzeni Stan początkowy problemu (ang. initial state) Zbiór r dopuszczalnych operatorów/akcji (ang. operator/action action set) lub funkcja następnika (ang. successor function) Zbiór stanów w docelowych (ang. goal states) ) lub funkcja weryfikacji celu (ang. goal test) Funkcja kosztu ścieżki (ang. path cost) - z reguły jest to głęg łębokość przeszukiwania 2
Istotne cechy przestrzeni stanów w reprezentacji grafowej Powtarzające się stany (cykle) Identyfikacja typu grafu reprezentującego przestrzeń przeszukiwania: drzewa, acykliczne grafy skierowane (DG) Rozmiar przestrzeni stanów w (ograniczanie złożoności) Powtarzające się stany: efektywność przeszukiwania B B B C C C C C D Przestrzeń stanów Graf przeszukiwania przestrzeni
Powtarzające się stany: charakterystyka Konieczność wykrywania ze względu na efektywność przeszukiwania Nieuniknione w niektórych zadaniach (np. z odwracalnymi operatorami) cykle (zapewnienie warunku stopu) Uwaga! Kompromis między kosztami przeszukiwania a kosztami wykrywania powtórze rzeń stanów Powtarzające się stany: metody przeciwdziałania ania Zakaz powrotu do bezpośrednio poprzedzającego stanu Wykrywanie cykli w ścieżce ce - zakaz generowania jakiegokolwiek stanu poprzedzającego (pośrednio) Wykrywanie dowolnego powtarzającego się stanu w całym grafie przeszukiwania (duże e wymagania pamięciowe!)
Przykład przeszukiwania przestrzeni stanów: problem komiwojażera 100 B E 7 12 0 100 12 D 7 12 0 100 C CDBE = 0 Przykład przeszukiwania przestrzeni stanów: problem komiwojażera 20 D 00 E 7 C E 2 D 2 C E C 100 B 10 22 17 D E 27 27 00 E 7 22 00 2 B 12 17 100 7 C D 22 20 D E E
Kierunki przeszukiwania przestrzeni stanów Przeszukiwanie w przód d (ang. forward chaining) Przeszukiwanie w tył (ang. backward chaining) Przeszukiwanie dwukierunkowe (ang. bidirectional search) Przeszukiwanie w przód Fakty Cel
Przeszukiwanie w tył Fakty Cel Branching factor - co to takiego? 2 2 2 7
Kiedy przeszukiwanie w przód? Wszystkie lub większo kszość danych zawarta jest w początkowym sformułowaniu owaniu problemu - np. interpretacja i analiza dużych zbiorów danych Występuje duża a liczba potencjalnych celów, ale jest tylko kilka możliwo liwości zastosowania faktów w i informacji wejściowych dla konkretnej instancji problemu Trudno sformułowa ować hipotezę docelową - np. określanie struktury związk zków w chemicznych Przeszukiwanie w przód d wykorzystuje wiedzę i ograniczenia zawarte w danych i opisie stanu początkowego problemu, aby pokierować przeszukiwaniem zgodnie z zasadami opisanymi przez operatory zmiany stanów. Kiedy przeszukiwanie w tył? Cel lub hipoteza jest dana w sformułowaniu owaniu problemu albo można jąj łatwo sformułowa ować np. dowodzenie twierdzeń matematycznych, systemy diagnostyczne Liczba reguł możliwych do zastosowania rośnie szybko i powoduje, że e liczba odwiedzanych stanów w jest bardzo duża; wczesna sekcja celów w może e wyeliminować większo kszość gałę łęzi tak, że e przeszukiwanie będzie bardziej efektywne np. dowodzenie twierdzeń Dane o problemie nie sąs znane explicite,, tylko muszą być pozyskane przez rozwiązuj zującego; przeszukiwanie w tył może e pomóc ukierunkować proces pozyskiwania danych - np. diagnostyka medyczna Przeszukiwanie wstecz wykorzystuje informacje o żądanym celu i kieruje procesem przeszukiwania poprzez dobór r odpowiednich operatorów w zmiany stanów w oraz eliminację pewnych gałę łęzi z przestrzeni stanów. 8
Przeszukiwanie dwukierunkowe Fakty Cel Przeszukiwanie dwukierunkowe Jednoczesne przeszukiwanie w przód d i w tył Ograniczenie złożonoz oności czasowej Problem generowania poprzedników w stanu Problem wielu stanów w docelowych (np. stany poprzedzające mata w szachach) Efektywna metoda sprawdzania występowania stanu w grafie przeszukiwania przeciwnego kierunku (problem wyminięcia!) Dobór r odpowiedniej strategii przeszukiwania w każdym kierunku 9
Mechanizm nawrotów: w: praktyczna realizacja przeszukiwania Fakty Cel Nawroty gwarantują realizację przeszukiwania wszystkich ścieżek ek w sposób systematyczny. Strategie przeszukiwania przestrzeni stanów Przeszukiwanie wszerz (ang. breadth-first search) Przeszukiwanie w głąg łąb b (ang. depth-first search) Przeszukiwanie w głąg łąb b z nawrotami (ang. depth-first search with backtracking) Przeszukiwanie z iteracyjnym pogłę m (ang. iterative deepening search) Przeszukiwanie metodą jednolitego (równomiernego) kosztu (ang. uniform-cost search) 10
lgorytm przeszukiwania w głąg łąb procedure depth_first_search(initial_state initial_state) begin open = [initial_state[ initial_state]; closed = []; while open [] do begin 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łąg łąb 11
Przeszukiwanie w głąg łąb Przeszukiwanie w głąg łąb 12
Przeszukiwanie w głąg łąb Przeszukiwanie w głąg łąb 1
Przeszukiwanie w głąg łąb Przeszukiwanie w głąg łąb itd. 1
lgorytm przeszukiwania w głąg łąb (rekurencja) function depth_first_search(current_state current_state) begin if current_state is a goal then return(success) else begin add current_state to closed; while current_state has unexamined children do begin child := next unexamined child of current_state if child is not a member of closed then {check for loops} if depth_first_search(child child) ) = success then return(success) end end; return(fail) end. 8 2 1 7 Przeszukiwanie w głąg łąb 8 2 1 7 2 8 1 7 1 7 2 18 1 7 19 28 1 7 1 7 8 2 1 7 7 1 1 7 8 20 2 29 7 1 8 2 1 7 7 1 1 1 7 1 7 2 1 8 7 2 1 8 7 9 12 1 21 2 0 1 2 8 7 8 2 1 7 8 2 1 7 2 8 1 7 2 8 1 7 1 7 1 7 7 1 7 1 8 2 1 7 8 1 2 7 7 1 7 1 1 2 7 8 1 2 8 7 cel 7 10 11 1 1 1 17 22 2 2 27 1 2 1
lgorytm przeszukiwania wszerz procedure breadth_first_search(initial_state initial_state) begin open = [initial_state[ initial_state]; closed = []; while open [] do begin 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 1
Przeszukiwanie wszerz Przeszukiwanie wszerz 17
Przeszukiwanie wszerz Przeszukiwanie wszerz 18
Przeszukiwanie wszerz Przeszukiwanie wszerz 19
Przeszukiwanie wszerz itd. Przeszukiwanie wszerz 1 1 7 2 1 7 1 7 1 7 8 2 1 7 7 2 8 9 1 7 1 7 1 8 7 1 7 1 7 10 11 12 1 1 1 1 17 18 19 8 2 1 7 2 8 1 7 1 7 1 7 8 2 1 7 7 1 7 1 8 2 1 7 7 1 2 1 8 7 1 2 8 7 2 1 8 7 2 1 8 7 1 7 2 1 7 1 7 20 21 22 2 2 2 2 27 28 29 8 1 7 1 7 1 7 1 7 2 1 8 7 1 7 2 1 7 0 1 2 8 8 2 1 7 8 2 1 7 2 8 1 7 2 8 1 7 1 7 1 7 7 1 7 1 8 2 1 7 8 1 2 7 7 1 7 1 1 2 7 8 1 2 8 7 cel 7 8 9 0 1 2 7 20
lgorytm przeszukiwania z iteracyjnym pogłę m (1) procedure iterative_deepening_search(initial_state initial_state) begin for depth 0 to do begin if depth_limited_search(initial_state initial_state, depth) = success then return(its result); end; return(failure); end. lgorytm przeszukiwania z iteracyjnym pogłę m (2) function depth_limited_search(current_state current_state, depth) begin if current_state is a goal then return(success) else if depth = 0 then return(failure) else begin add current_state to closed; while current_state has unexamined children do begin child := next unexamined child of current_state if child is not a member of closed then {check for loops} if depth_limited_search(child child, depth-1) = success then return(success) end end; return(failure) end. 21
depth=0 depth=1 22
depth=1 depth=1 2
depth=1 depth=1 2
depth=2 depth=2 2
depth=2 depth=2 2
depth=2 depth=2 27
depth=2 depth=2 28
depth=2 depth=2 29
depth=2 depth= 0
depth= depth= 1
depth= depth= 2
depth= depth= itd.
lgorytm Uniform-cost search procedure uniform_cost_search(initial_state initial_state) begin open = [initial_state[ initial_state]; closed = []; while open [] do begin 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 (1) -0 B- C- D- koszt operacji
lgorytm UCS (2) -0 B- C- D- koszt operacji lgorytm UCS () -0 B- C- D- E-9 F-9 G H I J koszt operacji
lgorytm UCS () -0 B- C- D- E-9 F-9 G-9 H-8 I J koszt operacji lgorytm UCS () -0 B- C- D- 7 E-9 F-9 G-9 H-8 I-12 J-1 koszt operacji
lgorytm UCS () -0 B- C- D- 7 E-9 F-9 G-9 H-8 I-12 J-1 2 K L M N O-10 P-11 Q R koszt operacji lgorytm UCS (7) -0 B- C- D- 7 E-9 F-9 G-9 H-8 I-12 J-1 2 K-1 L-12 M N O-10 P-11 Q R koszt operacji 7
lgorytm UCS (8) -0 B- C- D- 7 E-9 F-9 G-9 H-8 I-12 J-1 2 2 K-1 L-12/11 M-1 N O-10 P-11 Q R koszt operacji lgorytm UCS (9) -0 B- C- D- 7 E-9 F-9 G-9 H-8 I-12 J-1 2 2 K-1 L-12/11 M-1 N-1 O-10 P-11 Q R koszt operacji 8
lgorytm UCS (10) -0 B- C- D- 7 E-9 F-9 G-9 H-8 I-12 J-1 2 2 K-1 L-12/11 M-1 N-1 O-10 P-11 Q R koszt operacji lgorytm UCS (11) -0 B- C- D- 7 E-9 F-9 G-9 H-8 I-12 J-1 2 2 K-1 L-12/11 M-1 N-1 O-10 P-11 Q R 2 S T-1 U koszt operacji 9
lgorytm UCS (12) -0 B- C- D- 7 E-9 F-9 G-9 H-8 I-12 J-1 2 2 K-1 L-12/11 M-1N-11 O-10 P-11 Q R 1 2 S T-1 U-12 itd. koszt operacji lgorytm UCS: charakterystyka Cechy szczególne Ocena stanu to koszt dojścia do tego stanu (koszt pokonanej ścieżki od stanu początkowego) - koszt przejścia z dowolnego stanu do jego stanu potomnego musi być zawsze 0 Stanowi uogólnienie algorytmu przeszukiwania wszerz - w algorytmie przesz. wszerz koszt, to głęg łębokość na jakiej leży y stan Optymalny (gwarantuje znalezienie najkrótszego rozwiązania) zania)!!! Wady Duże e wymagania czasowe i pamięciowe (rosnące wykładniczo! adniczo!) 0
Porównanie strategii przeszukiwania W głąb Iteracyjne Dwukie- Kryterium Wszerz Uniformcost z nawrotami pog runkowe ( jeśli możliwe) Czas B d B d B n B d B d/2 Pamięć B d B d Bn Bd B d/2 Optymalny? Tak Tak Nie Tak Tak Zupełny? Tak Tak Tak Tak Tak B - średnia liczba następników każdego stanu (ang. branching factor) n - maksymalna głębokość przeszukiwania d - głębokość rozwiązania Zasady implementacji algorytmów przeszukiwania przestrzeni stanów 1. Reprezentacja rozwiązania zania problemu jako ścieżki od stanu początkowego do stanu docelowego. 2. Przeglądanie systematyczne wszystkich ścieżek ek w poszukiwaniu celu.. Powrót t do poprzedniego stanu pozwalający na wznowienie przeszukiwania w sytuacji, gdy dotychczasowa ścieżka nie prowadzi do celu - mechanizm nawrotów.. Struktury listowe umożliwiaj liwiające utrzymywanie w sposób b jawny danych o aktualnie analizowanych stanach: lista open,, pozwalająca na powrót t do nie odwiedzonych jeszcze stanów, lista closed stanów w już odwiedzonych, pozwalająca na wykrywanie pętli p i uniknięcie powtarzania bezowocnych ścieżek. ek.. Zastosowanie stosu w algorytmie przeszukiwania w głąg łąb b i kolejki jednokierunkowej w przeszukiwaniu wszerz. 1