Wstęp do Sztucznej Inteligencji Rozwiązywanie problemów-i Joanna Kołodziej Politechnika Krakowska Wydział Fizyki, Matematyki i Informatyki
Rozwiązywanie problemów Podstawowe fazy: Sformułowanie celu - zbiór stanów świata spełniających cel. Sformułowanie problemu - wybór rozważanych akcji i stanów. Znalezienie rozwiązania - ciąg akcji do wykonania. Wykonanie.
Definiowanie problemów Problemy z pełną / niepełną informacją o stanie początkowym. Stan początkowy / zbiór stanów początkowych, zbiór akcji (operatorów), funkcja celu (pozwala stwierdzić, czy dany stan jest stanem końcowym), funkcja kosztu (mierzy efektywność rozwiązania).
Podstawowe pojęcia Przestrzeń stanów problemu: Zbiór wszystkich stanów osiągalnych ze zbioru stanów początkowych w wyniku wykonywania wszystkich możliwych ciągów akcji. Zasada abstrakcji: Problem powinien być opisany na właściwym poziomie abstrakcji. Należy unikać zarówno zbyt szczegółowego, jak i zbyt ogólnego opisu.
Stany Stanem nazywamy reprezentację elementów w przestrzeni wszystkich możliwych rozwiązań problemu w danym momencie. Problem jest definiowany przez te elementy i relacje zachodzące pomiędzy nimi. W każdym rozważanym problemie, elementy mają swoje deskryptory i relacje; deskryptory informują o tym jak dokonywana jest selekcja elementów podczas rozwiązywania problemu. Dwa podstawowe stany: stan początkowy- punkt startowy stan końcowy- cel
Przestrzeń stanów Przestrzeń stanów zawiera wszystkie stany wygenerowane przez zastosowanie dowolnej kombinacji operatorów lub obiektów. Inaczej jest to zbiór wszystkich stanów osiągalnych ze stanu początkowego poprzez ciąg akcji W Przestrzeni Stanów, Ścieżka jest sekwencją stanów wygenerowana poprzez ciąg akcji Rozwiązanie problemu jest procesem, który polega na znalezieniu optymalnej ścieżki w Przestrzeni Stanów zgodnie z przyjętymi ograniczeniami i kryteriami.
Reprezentacja przestrzeni stanów Przestrzeń Stanów może być reprezentowana za pomocą grafów skierowanych, gdzie wierzchołki reprezentują stany a krawędzie i ścieżki reprezentują operatory określone dla transformacji stanów
Przeszukiwanie przestrzeni stanów Przeszukiwanie jest to proces eksploracji Przestrzeni Stanów poprzez zastosowanie specjalnych reguł powiązanych ze zdefiniowanymi dla problemu strategiami kontrolnymi, aż do momentu wygenerowania ścieżki ze stanu początkowego do stanu końcowego. Przeszukiwanie (Search) to fundamentalna metoda rozwiazywania problemów. Przeszukiwanie może być używane w przypadku, gdy konwencjonalne metody rozwiązywania problemu i znane szablony nie mogą być używane lub w ogóle zdefiniowane.
Drzewo przeszukiwań
Strategie przeszukiwania Kryteria oceny strategii: Pełność czy zawsze znajduje rozwiązanie, o ile istnieje. Złożoność czasowa. Złożoność pamięciowa. Optymalność czy znalezione rozwiązanie jest rozwiązaniem optymalnym (w sensie funkcji kosztu). Istnieją dwa typy strategii: strategie ogólne i strategie heurystyczne.
Strategie przeszukiwania-taksonomia
Ogólne strategie przeszukiwania Przeszukiwanie wszerz (breadth-first) Wierzchołki o głębokości d konstruowane są zawsze przed wierzchołkami o głębokości d+1. Zalety przeszukiwania wszerz: Pełność. Optymalne rozwiązanie, o ile funkcja kosztu zwiększa się wraz z długością drogi.
Ogólne strategie przeszukiwania Wady przeszukiwania wszerz: Bardzo duża złożoność pamięciowa. Jeśli współczynnik rozgałęzienia drzewa wynosi b, a rozwiązanie problemu wymaga drogi o długości d, to maksymalna liczba skonstruowanych wierzchołków wynosi 1+b+b 2 + +b d Dla b = 10
Ogólne strategie przeszukiwania Przeszukiwanie w głąb (depth-first search) Rozszerza zawsze wierzchołek o największej głębokości. Zalety: Bardzo mała złożoność pamięciowa. Wady: Strategia niepełna.
Przeszukiwanie dwukierunkowe Pomysł: Idziemy do przodu począwszy od stanu początkowego i do tyłu począwszy od stanu końcowego. Kończymy kiedy obie drogi spotkają się.
Dlaczego to ma sens? Dla b = 10 i d = 6, strategia wszerz wymaga wygenerowania 1 111 111 wierzchołków, podczas gdy strategia dwukierunkowa tylko 2 222. Problemy Co to znaczy iść od stanu końcowego w tył? Dla niektórych problemów znalezienie poprzedników może być bardzo trudne. Co zrobić, jeśli istnieje wiele stanów końcowych, które nie są explicite dane? Musimy umieć efektywnie stwierdzić, że obie drogi przeszukiwania spotkały się.
Przykłady problemów