SZTUCZNA INTELIGENCJA

Podobne dokumenty
Wstęp do Sztucznej Inteligencji

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

Rozwiązywanie problemów metodą przeszukiwania

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

Sztuczna Inteligencja i Systemy Doradcze

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

WPROWADZENIE DO SZTUCZNEJ INTELIGENCJI

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

Heurystyki. Strategie poszukiwań

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

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

Ogólne wiadomości o grafach

SZTUCZNA INTELIGENCJA

Metody przeszukiwania

Podstawy Sztucznej Inteligencji (PSZT)

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

Programowanie obiektowe

Adam Meissner. SZTUCZNA INTELIGENCJA Gry dwuosobowe

Heurystyczne metody przeszukiwania

Elementy kognitywistyki II:

Podstawy sztucznej inteligencji

Adam Meissner SZTUCZNA INTELIGENCJA

Algorytmiczna teoria grafów

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

Programowanie obiektowe

Wprowadzenie do Sztucznej Inteligencji

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

Wprowadzenie do Sztucznej Inteligencji

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

PRZEWODNIK PO PRZEDMIOCIE

a) 7 b) 19 c) 21 d) 34

ĆWICZENIE 1: Przeszukiwanie grafów strategie heurystyczne

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

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

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

Wstęp do programowania

Matematyka dyskretna - 7.Drzewa

Adam Meissner SZTUCZNA INTELIGENCJA Problem spełnialności (SAT)

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

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

Metoda tabel semantycznych. Dedukcja drogi Watsonie, dedukcja... Definicja logicznej konsekwencji. Logika obliczeniowa.

Wprowadzenie do Sztucznej Inteligencji

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

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

WSTĘP DO INFORMATYKI. Drzewa i struktury drzewiaste

Grafy (3): drzewa. Wykłady z matematyki dyskretnej dla informatyków i teleinformatyków. UTP Bydgoszcz

Planowanie drogi robota, algorytm A*

Podstawy sztucznej inteligencji

Wstęp do Programowania potok funkcyjny

Algorytmy i str ruktury danych. Metody algorytmiczne. Bartman Jacek

Algorytmy i Struktury Danych

Metoda Tablic Semantycznych

Algorytmy i struktury danych

ALGORYTMY I STRUKTURY DANYCH

Kilka zagadnień dotyczących Sztucznej inteligencji.

7. Teoria drzew - spinanie i przeszukiwanie

Jak logik przewozi kozę przez rzekę?

Tadeusz Pankowski

Indukowane Reguły Decyzyjne I. Wykład 3

ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 2014/2015. Drzewa BST c.d., równoważenie drzew, kopce.

Metody Programowania

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

Drzewa. Jeżeli graf G jest lasem, który ma n wierzchołków i k składowych, to G ma n k krawędzi. Własności drzew

Zadanie 1: Piętnastka

Struktury Danych i Złożoność Obliczeniowa

Instrukcje dla zawodników

< K (2) = ( Adams, John ), P (2) = adres bloku 2 > < K (1) = ( Aaron, Ed ), P (1) = adres bloku 1 >

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

TEORIA GRAFÓW I SIECI

Metody Kompilacji Wykład 3

Elementy kognitywistyki II: Sztuczna inteligencja

Abstrakcyjne struktury danych - stos, lista, drzewo

Teoretyczne podstawy informatyki

Elementy kognitywistyki III: Modele i architektury poznawcze

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

Sztuczna Inteligencja i Systemy Doradcze

Instytut Automatyki i Inżynierii Informatycznej Politechniki Poznańskiej. Adam Meissner. Elementy uczenia maszynowego

Egzaminy i inne zadania. Semestr II.

Sztuczna inteligencja w programowaniu gier

Instytut Automatyki i Inżynierii Informatycznej Politechniki Poznańskiej. Adam Meissner. Elementy uczenia maszynowego

Adam Meissner SZTUCZNA INTELIGANCJA

Metody numeryczne równań różniczkowych zwyczajnych

Algorytm Dijkstry znajdowania najkrótszej ścieżki w grafie

Teoria grafów podstawy. Materiały pomocnicze do wykładu. wykładowca: dr Magdalena Kacprzak

Algorytmy zachłanne. dr inż. Urszula Gałązka

TEORETYCZNE PODSTAWY INFORMATYKI

Efektywność algorytmów

Drzewa poszukiwań binarnych

Matematyczne Podstawy Informatyki

Drzewa binarne. Drzewo binarne to dowolny obiekt powstały zgodnie z regułami: jest drzewem binarnym Jeśli T 0. jest drzewem binarnym Np.

Modelowanie motywów łańcuchami Markowa wyższego rzędu

Wstęp do Programowania potok funkcyjny

PLAN WYKŁADU BAZY DANYCH INDEKSY - DEFINICJE. Indeksy jednopoziomowe Indeksy wielopoziomowe Indeksy z użyciem B-drzew i B + -drzew

Digraf o V wierzchołkach posiada V 2 krawędzi, zatem liczba różnych digrafów o V wierzchołkach wynosi 2 VxV

Tworzenie gier na urządzenia mobilne

Programowanie sieciowe. Tadeusz Trzaskalik

Digraf. 13 maja 2017

Przypomnij sobie krótki wstęp do teorii grafów przedstawiony na początku semestru.

Teoria Informacji i Metody Kompresji Danych

Transkrypt:

Instytut Automatyki, Robotyki i Informatyki Politechniki Poznańskiej Adam Meissner Adam.Meissner@put.poznan.pl http://www.man.poznan.pl/~ameis Literatura SZTUCZNA INTELIGENCJA Modelowanie problemów za pomocą grafu stanów [1] Russell S.J., Norvig P., Artificial Intelligence: A Modern Approach, Third Edition, Prentice Hall, 2010.

Wprowadzenie ogólny charakter prezentowanego modelu (odniesienia do systemu GPS) warunki stosowalności: reprezentacja problemu w postaci zbioru obiektów każdy obiekt ma atrybuty (cechy), którym nadaje się wartości na obiektach wykonuje się działania powodujące zmianę wartości cech problem ma określone warunki początkowe oraz warunki docelowe, które można reprezentować przez wartości cech obiektów modelujących rozwiązanie problemu ma postać ciągu działań przeprowadzających obiekty od warunków początkowych do warunków końcowych przykłady zastosowań: niektóre gry, jak gry planszowe (np. szachy, reversi, go) łamigłówki (np. 15-tka, kostka Rubika, wilk-koza-kapusta) planowanie tras, np. nawigacja robotów konstruowanie układów VLSI synteza białek

Model problemu (1) Założenia ogólne model problemu ma postać grafu G = (V, E), którego wierzchołki reprezentują stany problemu, a krawędzie odpowiadają przejściom między stanami dowolny stan problemu s S jest krotką (c 1,..., c n ), której każdy element jest wartością pewnej cechy c i kolejnego obiektu modelującego dla i = 1, n wyróżnia się stan początkowy s 0 odpowiadający warunkom początkowym wyróżnia się zbiór R stanów końcowych, z których każdy spełnia warunki docelowe problemu; zbiór R może być dany explicite lub przez podanie relacji przynależności p, takiej że dla każdego stanu s S formuła p(s) jest prawdziwa wtedy i tylko wtedy, gdy s jest stanem końcowym

Założenia ogólne (cd.) Model problemu (2) dowolne dwa stany s oraz s' sąsiadują ze sobą (tj, są połączone krawędzią) wtedy i tylko wtedy, gdy istnieje działanie na jakimś obiekcie modelującym, w wyniku którego stan problemu s zmienia się na s' wszystkie działania na obiektach reprezentuje funkcja przejścia f: S 2 S na zbiorze krawędzi E definiuje się funkcję kosztu v: E, przez domysł wartość funkcji v wynosi 1 funkcję kosztu określa się także na ścieżkach czyli ciągach krawędzi, wartość tej funkcji jest wypadkową (zwykle średnią ważoną) kosztów krawędzi składowych rozwiązaniem problemu jest dowolna ścieżka prowadząca od stanu początkowego s 0 do jednego ze stanów końcowych s R; niekiedy rozpatruje się także poszukiwanie rozwiązania o minimalnym koszcie

Model problemu (3) Przykład (łamigłówka wilk-koza-kapusta, IX w.) Znaleźć sposób przeprawienia wilka, kozy i kapusty z lewego brzegu rzeki na prawy przy następujących założeniach. 1. Przewoźnik ma łódź, w której jest miejsce dla co najwyżej jednego z wymienionych obiektów. 2. Przewoźnik nie może zostawić na tym samym brzegu, bez osobistego dozoru, ani wilka z kozą ani kozy z kapustą. Problem ma następujący model: wyróżnia się 4 obiekty, tj. przewoźnika (F), wilka (W) kozę (K) oraz kapustę (C) każdy obiekt ma 1 cechę - położenie na lewym brzegu rzeki (wartość l) albo na brzegu prawym (wartość r) każdy stan problemu jest czwórką (F, W, K, C), której elementami są wartości cech odpowiednich obiektów, przykładowo w stanie (l, r, l, r) przewoźnik i koza znajdują się na lewym brzegu rzeki, a wilk z kapustą na brzegu prawym

Przykład (cd.) Model problemu (4) stan początkowy s 0 = (l, l, l, l), zbiór stanów końcowych R = {(r, r, r, r)} w definicji funkcji f używa się funkcji pomocniczych, tj. op oraz us op(l) r op(r) l us((f, W, K, C)) true (W = K F W) (K = C F K) us((f, W, K, C)) false (W K F = W) (K C F = K) f((x, W, K, C)) (Y, W, K, C) op(x) = Y ~ us((y, W, K, C)) f((x, X, K, C)) (Y, Y, K, C) op(x) = Y ~ us((y, Y, K, C)) f((x, W, X, C)) (Y, W, Y, C) op(x) = Y ~ us((y, W, Y, C)) f((x, W, K, X)) (Y, W, K, Y) op(x) = Y ~ us((y, W, K, Y)) Należy zauważyć, że dla niektórych stanów wartością funkcji przejścia może być zbiór stanów o mocy > 1, przykładowo f((l, l, r, l)) = {(r, l, r, l), (r, r, r, l), (r, l, r, r)}.

Rozwiązywanie problemu problem o rozpatrywanym modelu rozwiązuje się przez przeszukiwanie grafu stanów; do tego celu można stosować wiele metod i ujęć, zależnych m.in. od dodatkowych warunków formułowanych w ramach problemu, np. dotyczących kosztów poszukiwanego rozwiązania w celu uporządkowania dalszych rozważań przyjmuje się, że graf stanów G jest wstępnie przekształcany w drzewo T = Expand(s 0, G), które podlega dalszemu przeszukiwaniu. funkcja Expand(v, G) wejście: wierzchołek v V, graf G = (V, E) wyjście: drzewo T = (V, E T ) o korzeniu v 1. Utworzyć (multi)zbiory V' = {v' (v, v') E} oraz E' = {(v, v') v' V} 2. Utworzyć zbiór drzew T = {T' T' = Expand(v', G) v' V'} 3. Utworzyć drzewo T = (V, E T ), gdzie E T = E' {E'' T'' = (V'', E'') T'' T } jeżeli G jest multigrafem to liczba wierzchołków w drzewie T może przyrosnąć wykładniczo jeżeli graf G zawiera cykle to drzewo T jest nieskończone przyjmuje się, że drzewo T jest przeszukiwane za pomocą prostych strategii siłowych takich jak: przeszukiwanie wszerz (ang. Breadth-First Search) przeszukiwanie w głąb (ang. Depth-First Search) przeszukiwanie w głąb z iteracyjnym pogłębianiem (ang. Depth-First Iterative Deepening Search) przeszukiwanie dwukierunkowe (ang. Bidirectional Search)

Strategie przeszukiwania drzew (1) Strategia BFS funkcja BFS(T, p) wejście: drzewo T = (V, E), relacja p przynależności do zbioru wierzchołków poszukiwanych wyjście: poszukiwany wierzchołek drzewa T 1. L {r T } 2. Powtarzać kroki 3 5 dopóty, dopóki L 3. L' 4. Dla każdego elementu v L: jeżeli p(v) to zwróć(v), jeżeli nie to L' L' {v' (v, v') E} 5. L L' Strategia DFS funkcja DFS(v, T, p) wejście: wierzchołek v drzewa T, drzewo T, relacja p przynależności do zbioru wierzchołków poszukiwanych wyjście: poszukiwany wierzchołek drzewa T 1. Jeżeli p(v) to zwróć(v) 2. Dla każdego, kolejnego, nieodwiedzonego potomka v' wierzchołka v w drzewie T: jeżeli DFS(v',T,p) nil to zwróć(dfs(v',t,p)) 3. Zwróć(nil) W celu przeszukania całego drzewa T należy wywołać funkcję DFS(r,T,p), gdzie r jest korzeniem drzewa.

Strategie przeszukiwania drzew (2) Strategia DFIDS funkcja DFIDS(r, T, p, h 0, ) wejście: korzeń r drzewa T, drzewo T, relacja p, głębokość początkowa h 0, funkcja przyrostu głębokości wyjście: poszukiwany wierzchołek drzewa T 1. h h 0 2. Powtarzać kroki 3 4 3. Jeżeli RDFS(r, T, p, h) nil to zwróć(rdfs(r, T, p, h)) 4. h (h) funkcja RDFS(r, T, p, h) wejście: wierzchołek v drzewa T, drzewo T, relacja p, głębokość h, wyjście: poszukiwany wierzchołek drzewa T 1. Jeżeli h = 0 to zwróć(nil) 2. Jeżeli p(v) to zwróć(v) 3. Dla każdego, kolejnego, nieodwiedzonego potomka v' wierzchołka v w drzewie T: jeżeli RDFS(v', T, p, h-1) nil to zwróć(rdfs(v', T, p, h-1)) 4. zwróć(nil)

Strategie przeszukiwania drzew (3) Złożoność obliczeniowa przypomnienie podstaw złożoność obliczeniowa czasowa i pamięciowa rząd złożoności obliczeniowej O(g(n)) wszystkie rozpatrywane niżej funkcje działają ze zbioru na zbiór + funkcja f jest (co najwyżej) rzędu g, co zapisuje się jako f(n) = O(g(n)), wtedy i tylko wtedy gdy ( c )( n 0 )( n )(n n 0 f(n) c*g(n) rząd iloczynu stałej i dowolnej funkcji jest równy rzędowi tej funkcji rząd sumy jest równy największemu z rzędów wszystkich składników złożoność obliczeniowa strategii przeszukiwania drzew zależy w ogólności od następujących czynników: wysokość drzewa (m) współczynnik rozgałęzienia drzewa (b) odległość od korzenia poszukiwanego wierzchołka, najbliższego korzeniowi (d)

Strategie przeszukiwania drzew (4) Zestawienie Kryterium BFS DFS DFIDS BS Pełność tak nie tak tak* Optymalność tak nie tak* tak* Złoż. obl. czasowa O(b d+1 ) O(b m ) O(b d ) O(b d/2 ) Złoż. obl. pamięciowa O(b d+1 ) O(bm) O(bd) O(b d/2 ) * Pod pewnymi warunkami dodatkowymi.

Założenia Implementacja przykładu przykład implementuje się w języku Prolog stan (F, W, K, C) jest reprezentowany przez listę [F,W,K,C], przykładowo lista [l,r,l,r] odpowiada stanowi (l, r, l, r) rozwiązanie reprezentuje lista postaci [[l,l,l,l],..., [r,r,r,r]] zapytanie o rozwiązanie:?- solve(). Program solve(b,e,p):- path(b,e,[b],p1), reverse(p1,p). path(e,e,w,w). path(b,e,wp,w):- f(b,b1), not(member(b1,wp)), path(b1,e,[b1 Wp],W). f(s,s1):- possible(s,s1), not(unsafe(s1)). possible([x,w,g,c],[y,w,g,c]):- opposite(x,y). possible([x,x,g,c],[y,y,g,c]):- opposite(x,y). possible([x,w,x,c],[y,w,y,c]):- opposite(x,y). possible([x,w,g,x],[y,w,g,y]):- opposite(x,y). unsafe([f,x,x,_]):- opposite(f,x). unsafe([f,_,x,x]):- opposite(f,x). opposite(l,r). opposite(r,l)