Wprowadzenie do Sztucznej Inteligencji

Podobne dokumenty
Wprowadzenie do Sztucznej Inteligencji

Wprowadzenie do Sztucznej Inteligencji

Przeszukiwanie przestrzeni stanów. Wprowadzenie do Sztucznej Inteligencji. Podstawowe problemy teorii przeszukiwania przestrzeni stanów

Sztuczna Inteligencja i Systemy Doradcze

Rozwiązywanie problemów metodą przeszukiwania

Wstęp do Sztucznej Inteligencji

Uniwersytet Zielonogórski Wydział Elektrotechniki, Informatyki i Telekomunikacji Instytut Sterowania i Systemów Informatycznych

Heurystyki. Strategie poszukiwań

Heurystyczne przeszukiwanie przestrzeni stanów

Heurystyczne przeszukiwanie przestrzeni stanów

ĆWICZENIE 1: Przeszukiwanie grafów cz. 1 strategie ślepe

Marcel Stankowski Wrocław, 23 czerwca 2009 INFORMATYKA SYSTEMÓW AUTONOMICZNYCH

Wykład2,24II2010,str.1 Przeszukiwanie przestrzeni stanów powtórka

Sztuczna Inteligencja i Systemy Doradcze

Heurystyczne metody przeszukiwania

prowadzący dr ADRIAN HORZYK /~horzyk tel.: Konsultacje paw. D-13/325

Podstawy Sztucznej Inteligencji (PSZT)

LABORATORIUM 2: Przeszukiwanie grafów cz. 2 strategie heurystyczne

Sortowanie topologiczne skierowanych grafów acyklicznych

Wstęp do programowania. Listy. Piotr Chrząstowski-Wachtel

Heurystyczne przeszukiwanie przestrzeni stanów

WPROWADZENIE DO SZTUCZNEJ INTELIGENCJI

Algorytmy grafowe. Wykład 2 Przeszukiwanie grafów. Tomasz Tyksiński CDV

Elementy kognitywistyki II:

SZTUCZNA INTELIGENCJA

Matematyczne Podstawy Informatyki

Porównanie algorytmów wyszukiwania najkrótszych ścieżek międz. grafu. Daniel Golubiewski. 22 listopada Instytut Informatyki

Przeszukiwanie przestrzeni rozwiązań, szukanie na ślepo, wszerz, wgłąb

Wstęp do Programowania potok funkcyjny

Grafem nazywamy strukturę G = (V, E): V zbiór węzłów lub wierzchołków, Grafy dzielimy na grafy skierowane i nieskierowane:

Podstawy sztucznej inteligencji

Przykłady grafów. Graf prosty, to graf bez pętli i bez krawędzi wielokrotnych.

Ogólne wiadomości o grafach

Optymalizacja. Wybrane algorytmy

Sortowanie. Kolejki priorytetowe i algorytm Heapsort Dynamiczny problem sortowania:

Metody przeszukiwania

Elementy kognitywistyki II: Sztuczna inteligencja. WYKŁAD III: Problemy agenta

Krzysztof Jakubczyk. Zadanie 2

Podstawy sztucznej inteligencji

SZTUCZNA INTELIGENCJA

Algorytmiczna teoria grafów

Struktury danych i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott

Heurystyczne przeszukiwanie grafów gier dwuosobowych

Algorytmy i Struktury Danych.

1. Algorytmy przeszukiwania. Przeszukiwanie wszerz i w głąb.

ĆWICZENIE 1: Przeszukiwanie grafów strategie heurystyczne

Wstęp do Programowania potok funkcyjny

Zastosowania algorytmów heurystycznych do sterowania systemami autonomicznymi

Struktury danych i złożoność obliczeniowa Wykład 7. Prof. dr hab. inż. Jan Magott

Wybrane podstawowe rodzaje algorytmów

Algorytmy i struktury danych. Drzewa: BST, kopce. Letnie Warsztaty Matematyczno-Informatyczne

Programowanie obiektowe

Temat: Struktury danych do reprezentacji grafów. Wybrane algorytmy grafowe.

Algorytmy i struktury danych

Problem straŝaka w drzewach. Agnieszka Skorupka Matematyka Stosowana FTiMS

Wykład 8. Drzewo rozpinające (minimum spanning tree)

Zaawansowane algorytmy i struktury danych

Wstęp do programowania. Drzewa. Piotr Chrząstowski-Wachtel

Badania operacyjne: Wykład Zastosowanie kolorowania grafów w planowaniu produkcji typu no-idle

WPROWADZENIE DO SZTUCZNEJ INTELIGENCJI

Optymalizacja. Przeszukiwanie lokalne

Programowanie obiektowe

Elementy kognitywistyki II: Sztuczna inteligencja. WYKŁAD V: Agent wciąż szuka rozwiązania (choć już nie na ślepo)

Zadanie 1: Piętnastka

Wstęp do programowania. Zastosowania stosów i kolejek. Piotr Chrząstowski-Wachtel

ALHE Jarosław Arabas. Przeszukiwanie przestrzeni ścieżek w grafie. Algorytm A*

Algorytmy i struktury danych. wykład 5

Rekurencje. Jeśli algorytm zawiera wywołanie samego siebie, jego czas działania moŝe być określony rekurencją. Przykład: sortowanie przez scalanie:

Podstawy programowania 2. Temat: Drzewa binarne. Przygotował: mgr inż. Tomasz Michno

Literatura. 1) Pojęcia: złożoność czasowa, rząd funkcji. Aby wyznaczyć pesymistyczną złożoność czasową algorytmu należy:

Wysokość drzewa Głębokość węzła

Wykład 10 Grafy, algorytmy grafowe

Uniwersytet w Białymstoku Wydział Ekonomiczno-Informatyczny w Wilnie SYLLABUS na rok akademicki 2012/2013

KARTA PRZEDMIOTU. Algorytmy i struktury danych, C4

ANALIZA ALGORYTMÓW. Analiza algorytmów polega między innymi na odpowiedzi na pytania:

Struktury danych i złozoność obliczeniowa. Prof. dr hab. inż. Jan Magott

1) Grafy eulerowskie własnoci algorytmy. 2) Problem chiskiego listonosza

Złożoność obliczeniowa klasycznych problemów grafowych

Digraf. 13 maja 2017

Porządek symetryczny: right(x)

Dynamiczne struktury danych

Metody Kompilacji Wykład 3

Programowanie w VB Proste algorytmy sortowania

Systemy eksperowe. Agnieszka Nowak Brzezińska Wykład I

Katedra Informatyki Stosowanej. Algorytmy ewolucyjne. Inteligencja obliczeniowa

Algorytmy i str ruktury danych. Metody algorytmiczne. Bartman Jacek

Wykład 3. Złożoność i realizowalność algorytmów Elementarne struktury danych: stosy, kolejki, listy

Systemy ekspertowe. Wnioskowanie w systemach regułowych. Część piąta. Autor Roman Simiński.

Algorytm genetyczny (genetic algorithm)-

Struktury danych i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott

Zadanie 1 Przygotuj algorytm programu - sortowanie przez wstawianie.

Przeszukiwanie z nawrotami. Wykład 8. Przeszukiwanie z nawrotami. J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 238 / 279

Kolejkowanie. Graf sekwencyjny. Graf sekwencyjny: biegunowy, acykliczny Graf acykliczny to graf nie zawierający cykli G(V,E)

Algorytmy i struktury danych

Zofia Kruczkiewicz, Algorytmu i struktury danych, Wykład 14, 1

Detekcja zakleszczenia (1)

KARTA PRZEDMIOTU. 1. Informacje ogólne. 2. Ogólna charakterystyka przedmiotu. Algorytmy i struktury danych, C3

KARTA KURSU. Algorytmy, struktury danych i techniki programowania. Algorithms, Data Structures and Programming Techniques

Indukowane Reguły Decyzyjne I. Wykład 3

Transkrypt:

Wprowadzenie do Sztucznej Inteligencji Wykład Informatyka 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 odpowiadających stanom w procesie rozwiązywania problemu jest zbiorem krawędzi, odpowiadających krokom w procesie rozwią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ących w przeszukiwaniu przez podanie własności ścieŝki tworzonej podczas przeszukiwania ŚcieŜką rozwią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? Czy algorytm zakończy się w kaŝdym przypadku, czy moŝe wpaść w pętlę nieskończoną? Czy jeśli rozwiązanie zostanie znalezione, to mamy gwarancję, Ŝe będzie to rozwiązanie optymalne? Jaka jest czasowa i pamięciowa ("przestrzenna") złoŝoność obliczeniowa procesu przeszukiwania? Czy i w jaki sposób moŝna zredukować złoŝoność obliczeniową? Sformułowanie zadania dla algorytmów przeszukiwania Definicja stanu przestrzeni Stan początkowy problemu (ang. initial state) Zbiór dopuszczalnych operatorów/akcji (ang. operator/action action set) lub funkcja następnika (ang. successor function) Zbiór stanów docelowych (ang. goal states) ) lub funkcja weryfikacji celu (ang. goal test) Funkcja kosztu ścieŝki (ang. path cost) - z reguły głębokość przeszukiwania 2

Problemy występujące w reprezentacji grafowej Powtarzające się stany (cykle) Identyfikacja grafu przestrzeni stanów: drzewa przeszukiwania, acykliczne grafy skierowane Rozmiar przestrzeni stanó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

Powtarzające się stany: opis problemu Konieczne ze względu na efektywność przeszukiwania Nieuniknione w niektórych zadaniach (np. z odwracalnymi operatorami) - warunek zatrzymania Uwaga! Kompromis między kosztami przeszukiwania a kosztami wykrywania powtórzeń stanów Powtarzające się stany: metody przeciwdziałania Zakaz powrotu do bezpośrednio poprzedzającego stanu Wykrywanie cykli w ścieŝce - zakaz generowania jakiegokolwiek stanu poprzedzającego (pośrednio) Wykrywanie dowolnego powtarzającego się stanu w całym grafie przeszukiwania (duŝ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 (ang. forward chaining) Przeszukiwanie w tył (ang. backward chaining) Przeszukiwanie dwukierunkowe (ang. bidirectional search) Przeszukiwanie w przód Start Cel

Przeszukiwanie w tył Start Cel Branching factor - co to takiego? 2 2 2 7

Kiedy przeszukiwanie w przód? Wszystkie lub większość danych zawarta jest w początkowym sformułowaniu problemu - np. interpretacja i analiza duŝych zbiorów danych Występuje duŝa liczba potencjalnych celów, ale jest tylko kilka moŝliwości zastosowania faktów i informacji wejściowych dla konkretnej instancji problemu Trudno sformułować hipotezę docelową - np. określanie struktury związków chemicznych Przeszukiwanie w przód wykorzystuje wiedzę i ograniczenia zawarte e 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 problemu albo moŝna ją j łatwo sformułować np. dowodzenie twierdzeń matematycznych, systemy diagnostyczne Liczba reguł moŝliwych do zastosowania rośnie szybko i powoduje, Ŝe liczba odwiedzanych stanów jest bardzo duŝa; wczesna sekcja celów moŝe wyeliminować większość gałęzi tak, Ŝe przeszukiwanie będzie bardziej efektywne np. dowodzenie twierdzeń Dane o problemie nie są znane explicite,, tylko muszą być pozyskane przez rozwiązującego; przeszukiwanie w tył moŝe 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. 8

Przeszukiwanie dwukierunkowe Start Cel Przeszukiwanie dwukierunkowe Jednoczesne przeszukiwanie w przód i w tył Ograniczenie złoŝoności czasowej Problem generowania poprzedników stanu Problem wielu stanó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 odpowiedniej strategii przeszukiwania w kaŝdym kierunku 9

Praktyczna realizacja przeszukiwania - mechanizm nawrotów Start Cel Strategie przeszukiwania przestrzeni stanów 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 kosztu (ang. uniform-cost search) 10

lgorytm przeszukiwania w 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łąb - przykład 11

Przeszukiwanie w głąb - przykład Przeszukiwanie w głąb - przykład 12

Przeszukiwanie w głąb - przykład Przeszukiwanie w głąb - przykład itd. 1

lgorytm przeszukiwania w 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łąb - przykład 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 - przykład 1

Przeszukiwanie wszerz - przykład Przeszukiwanie wszerz - przykład 1

Przeszukiwanie wszerz - przykład Przeszukiwanie wszerz - przykład 17

Przeszukiwanie wszerz - przykład itd. Przeszukiwanie wszerz - przykład 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 18

lgorytm przeszukiwania z iteracyjnym pogłębianiem (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łębianiem (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. 19

Iteracyjne pogłębianie - przykład depth=0 Iteracyjne pogłębianie - przykład depth=1 20

Iteracyjne pogłębianie - przykład depth=1 Iteracyjne pogłębianie - przykład depth=1 21

Iteracyjne pogłębianie - przykład depth=1 Iteracyjne pogłębianie - przykład depth=2 22

Iteracyjne pogłębianie - przykład depth=2 Iteracyjne pogłębianie - przykład depth=2 2

Iteracyjne pogłębianie - przykład depth=2 Iteracyjne pogłębianie - przykład depth=2 2

Iteracyjne pogłębianie - przykład depth=2 Iteracyjne pogłębianie - przykład depth=2 2

Iteracyjne pogłębianie - przykład depth=2 Iteracyjne pogłębianie - przykład depth=2 2

Iteracyjne pogłębianie - przykład depth=2 Iteracyjne pogłębianie - przykład depth= 27

Iteracyjne pogłębianie - przykład depth= Iteracyjne pogłębianie - przykład depth= 28

Iteracyjne pogłębianie - przykład depth= Iteracyjne pogłębianie - przykład depth= 29

Iteracyjne pogłębianie - przykład 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. 0

lgorytm UCS - przykład(1) -0 B- C- D- koszt operacji lgorytm UCS - przykład(2) -0 B- C- D- koszt operacji 1

lgorytm UCS - przykład() -0 B- C- D- E-9 F-9 G H I J koszt operacji lgorytm UCS - przykład() -0 B- C- D- E-9 F-9 G-9 H-8 I J koszt operacji 2

lgorytm UCS - przykład() -0 B- C- D- 7 E-9 F-9 G-9 H-8 I-12 J-1 koszt operacji lgorytm UCS - przykład() -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 - przykład(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 lgorytm UCS - przykład(8) -0 B- C- D- 7 E-9 F-9 G-9 H-8 I-12 J-1 2 K-1 L-12 M-1 N O-10 P-11 Q R koszt operacji

lgorytm UCS - przykład(9) -0 B- C- D- 7 E-9 F-9 G-9 H-8 I-12 J-1 2 K-1 L-12 M-1 N-1 O-10 P-11 Q R koszt operacji lgorytm UCS - przykład(10) -0 B- C- D- 7 E-9 F-9 G-9 H-8 I-12 J-1 2 K-1 L-12 M-1 N-1 O-10 P-11 Q R koszt operacji

lgorytm UCS - przykład(11) -0 B- C- D- 7 E-9 F-9 G-9 H-8 I-12 J-1 2 K-1 L-12 M-1N-11 O-10 P-11 Q R 1 koszt operacji -12 itd. lgorytm UCS: charakterystyka Cechy szczególne Ocena heurystyczna 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łębokość na jakiej leŝy stan Optymalny (gwarantuje znalezienie najkrótszego rozwiązania)!!! Wady DuŜe wymagania czasowe i pamięciowe (rosnące wykładniczo!)

Porównanie strategii przeszukiwania W głąb Iteracyjne Dwukie- Kryterium Wszerz Uniformcost z nawrotami pogłębianie 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 problemu jako ścieŝki od stanu początkowego do stanu docelowego. 2. Przeglądanie systematyczne wszystkich ścieŝek w poszukiwaniu celu.. Powró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ące utrzymywanie w sposób jawny danych o aktualnie analizowanych stanach: lista open,, pozwalająca na powrót do nie odwiedzonych jeszcze stanów, lista closed stanów juŝ odwiedzonych, pozwalająca na wykrywanie pętli i uniknięcie powtarzania bezowocnych ścieŝek.. Zastosowanie stosu w algorytmie przeszukiwania w głąb i kolejki jednokierunkowej w przeszukiwaniu wszerz. 7