Sztuczna Inteligencja i Systemy Doradcze

Podobne dokumenty
Sztuczna Inteligencja i Systemy Doradcze

Heurystyki. Strategie poszukiwań

SID Wykład 1 Wprowadzenie

WPROWADZENIE DO SZTUCZNEJ INTELIGENCJI

Podstawy sztucznej inteligencji

Wprowadzenie do Sztucznej Inteligencji

SID Wykład 2 Przeszukiwanie

Wprowadzenie do Sztucznej Inteligencji

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

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

Wprowadzenie do Sztucznej Inteligencji

Metody przeszukiwania

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

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

Podstawy sztucznej inteligencji

Sztuczna Inteligencja i Systemy Doradcze

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

Elementy kognitywistyki II:

Wstęp do Sztucznej Inteligencji

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

Heurystyczne metody przeszukiwania

SZTUCZNA INTELIGENCJA

SZTUCZNA INTELIGENCJA

Rozwiązywanie problemów przez przeszukiwanie. w oparciu o: S. Russel, P. Norvig. Artificial Intelligence. A Modern Approach

Rozwiązywanie problemów metodą przeszukiwania

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

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

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

Wstęp do Programowania potok funkcyjny

Kolejka priorytetowa. Często rozważa się kolejki priorytetowe, w których poszukuje się elementu minimalnego zamiast maksymalnego.

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

Porządek symetryczny: right(x)

Struktury danych: stos, kolejka, lista, drzewo

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

Wykład 7 i 8. Przeszukiwanie z adwersarzem. w oparciu o: S. Russel, P. Norvig. Artificial Intelligence. A Modern Approach

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

Algorytmy i Struktury Danych

Algorytmy i str ruktury danych. Metody algorytmiczne. Bartman Jacek

Sztuczna Inteligencja i Systemy Doradcze

Ogólne wiadomości o grafach

Podstawy Sztucznej Inteligencji (PSZT)

Wstęp do Programowania potok funkcyjny

Twój wynik: 4 punktów na 6 możliwych do uzyskania (66,67 %).

SID Wykład 4 Gry Wydział Matematyki, Informatyki i Mechaniki UW

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

Strategie przeszukiwania ślepe i heurystyczne

Planowanie drogi robota, algorytm A*

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

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

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

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


wykład 2 Inteligentny agent i jego otoczenie Przeszukiwanie dla problem-solving dr inż. Joanna Kołodziejczyk Zakład Sztucznej Inteligencji ISZiMM

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

Sortowanie. Kolejki priorytetowe i algorytm Heapsort Dynamiczny problem sortowania:

Struktury danych (I): kolejka, stos itp.

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

Algorytmy i Struktury Danych. Co dziś? Drzewo decyzyjne. Wykład IV Sortowania cd. Elementarne struktury danych

dr inż. Paweł Myszkowski Wykład nr 11 ( )

Stos LIFO Last In First Out

Drzewa poszukiwań binarnych

Zadanie 1 Przygotuj algorytm programu - sortowanie przez wstawianie.

Postawienie problemu. Implementacja: stany vs. wezly. Implementacja: przeszukiwanie drzewa stanow. Przeszukiwanie drzewa stanow

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

Teoretyczne podstawy informatyki

Wstęp do programowania

Matematyczne Podstawy Informatyki

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

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

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

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

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

Drzewa podstawowe poj

Algorytmy i Struktury Danych

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

ZŁOŻONOŚĆ OBLICZENIOWA ALGORYTMÓW

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

Wykład 10 Grafy, algorytmy grafowe

Grafy i ich reprezentacja

Algorytmy i struktury danych. wykład 5

Wykład 6. Drzewa poszukiwań binarnych (BST)

Algorytmy i Struktury Danych.

Drzewo. Drzewo uporządkowane ma ponumerowanych (oznaczonych) następników. Drzewo uporządkowane składa się z węzłów, które zawierają następujące pola:

Algorytmy i struktury danych. Co dziś? Tytułem przypomnienia metoda dziel i zwyciężaj. Wykład VIII Elementarne techniki algorytmiczne

Algorytmy dla gier dwuosobowych

Listy, kolejki, stosy

Dynamiczne struktury danych

Struktury Danych i Złożoność Obliczeniowa

Algorytmiczna teoria grafów

Sztuczna inteligencja w programowaniu gier

Sortowanie topologiczne skierowanych grafów acyklicznych

Abstrakcyjne struktury danych - stos, lista, drzewo

Zadanie 1: Piętnastka

INFORMATYKA DANE.

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

ALGORYTMY I STRUKTURY DANYCH

Teoretyczne podstawy informatyki

Algorytmy i Struktury Danych

Algorytmy i. Wykład 5: Drzewa. Dr inż. Paweł Kasprowski

Programowanie obiektowe

Transkrypt:

Sztuczna Inteligencja i Systemy Doradcze Przeszukiwanie przestrzeni stanów algorytmy ślepe Przeszukiwanie przestrzeni stanów algorytmy ślepe 1

Strategie slepe Strategie ślepe korzystają z informacji dostępnej jedynie w definicji problemu: Przeszukiwanie wszerz Strategia jednolitego kosztu Przeszukiwanie wgłąb Przeszukiwanie ograniczone wgłąb Przeszukiwanie iteracyjnie pogłębiane Przeszukiwanie dwukierunkowe Przeszukiwanie przestrzeni stanów algorytmy ślepe 2

Przeszukiwanie wszerz Wykonuje ekspansję najpłytszego węzła spośród tych, ktore nie były jeszcze rozszerzone Implementacja: fringe jest kolejką FIFO, tzn. nowe następniki dodawane są na koniec kolejki function Tree-Search(problem,fringe) returns a solution, or failure fringe Insert(Make-Node(Initial-State[problem]), fringe) loop do if fringe is empty then return failure node Remove-Front(fringe) if Goal-Test[problem] applied to State(node) succeeds return node fringe Insertll(Expand(node, problem), fringe) Przeszukiwanie przestrzeni stanów algorytmy ślepe 3

Przeszukiwanie wszerz Wykonuje ekspansję najpłytszego węzła spośród tych, ktore nie były jeszcze rozszerzone Implementacja: fringe jest kolejką FIFO, tzn. nowe następniki dodawane są na koniec kolejki Przeszukiwanie przestrzeni stanów algorytmy ślepe 4

Przeszukiwanie wszerz Wykonuje ekspansję najpłytszego węzła spośród tych, ktore nie były jeszcze rozszerzone Implementacja: fringe jest kolejką FIFO, tzn. nowe następniki dodawane są na koniec kolejki Przeszukiwanie przestrzeni stanów algorytmy ślepe 5

Przeszukiwanie wszerz Wykonuje ekspansję najpłytszego węzła spośród tych, ktore nie były jeszcze rozszerzone Implementacja: fringe jest kolejką FIFO, tzn. nowe następniki dodawane są na koniec kolejki Przeszukiwanie przestrzeni stanów algorytmy ślepe 6

Przeszukiwanie wszerz Wykonuje ekspansję najpłytszego węzła spośród tych, ktore nie były jeszcze rozszerzone Implementacja: fringe jest kolejką FIFO, tzn. nowe następniki dodawane są na koniec kolejki Przeszukiwanie przestrzeni stanów algorytmy ślepe 7

Zupełność?? Przeszukiwania wszerz: wlasnosci Przeszukiwanie przestrzeni stanów algorytmy ślepe 8

Przeszukiwania wszerz: wlasnosci Zupełność?? Tak (jeśli b jest skończone) Złożoność czasowa?? Przeszukiwanie przestrzeni stanów algorytmy ślepe 9

Przeszukiwania wszerz: wlasnosci Zupełność?? Tak (jeśli b jest skończone) Złożoność czasowa?? 1 + b + b 2 + b 3 +... + b d + b(b d 1) = O(b d+1 ) tzn. wykładnicza względem d Złożoność pamięciowa?? Przeszukiwanie przestrzeni stanów algorytmy ślepe 10

Przeszukiwania wszerz: wlasnosci Zupełność?? Tak (jeśli b jest skończone) Złożoność czasowa?? 1 + b + b 2 + b 3 +... + b d + b(b d 1) = O(b d+1 ) tzn. wykładnicza względem d Złożoność pamięciowa?? O(b d+1 ) (przechowuje każdy węzeł w pamięci) Optymalność?? Przeszukiwanie przestrzeni stanów algorytmy ślepe 11

Przeszukiwania wszerz: wlasnosci Zupełność?? Tak (jeśli b jest skończone) Złożoność czasowa?? 1 + b + b 2 + b 3 +... + b d + b(b d 1) = O(b d+1 ) tzn. wykładnicza względem d Złożoność pamięciowa?? O(b d+1 ) (przechowuje każdy węzeł w pamięci) Optymalność?? Tak (jeśli koszt każdego kroku = 1); w ogólności nieoptymalny Przeszukiwanie przestrzeni stanów algorytmy ślepe 12

Przeszukiwania wszerz: wlasnosci Zupełność?? Tak (jeśli b jest skończone) Złożoność czasowa?? 1 + b + b 2 + b 3 +... + b d + b(b d 1) = O(b d+1 ) tzn. wykładnicza względem d Złożoność pamięciowa?? O(b d+1 ) (przechowuje każdy węzeł w pamięci) Optymalność?? Tak (jeśli koszt każdego kroku = 1); w ogólności nieoptymalny Złożoność pamięciowa jest dużym problemem; można łatwo generować węzły z szybkością 10M/sek czyli 24godz = 860G. Przeszukiwanie przestrzeni stanów algorytmy ślepe 13

Strategia jednolitego kosztu Wykonuje ekspansję węzła o najmniejszym koszcie spośród tych, ktore nie były jeszcze rozszerzone Implementacja: fringe = kolejka priorytetowa porządkująca węzły według kosztu ścieżki od korzenia function Tree-Search(problem,fringe) returns a solution, or failure fringe Insert(Make-Node(Initial-State[problem]), fringe) loop do if fringe is empty then return failure node Remove-Front(fringe) if Goal-Test[problem] applied to State(node) succeeds return node fringe Insertll(Expand(node, problem), fringe) Odpowiada przeszukiwaniu wszerz jeśli koszt wszystkich pojedynczych akcji jest ten sam Przeszukiwanie przestrzeni stanów algorytmy ślepe 14

Strategia jednolitego kosztu Wykonuje ekspansję węzła o najmniejszym koszcie spośród tych, ktore nie były jeszcze rozszerzone Implementacja: fringe = kolejka priorytetowa porządkująca węzły według kosztu ścieżki od korzenia rad Przeszukiwanie przestrzeni stanów algorytmy ślepe 15

Strategia jednolitego kosztu Wykonuje ekspansję węzła o najmniejszym koszcie spośród tych, ktore nie były jeszcze rozszerzone Implementacja: fringe = kolejka priorytetowa porządkująca węzły według kosztu ścieżki od korzenia rad 75 140 118 Zerind Sibiu Timisoara Przeszukiwanie przestrzeni stanów algorytmy ślepe 16

Strategia jednolitego kosztu Wykonuje ekspansję węzła o najmniejszym koszcie spośród tych, ktore nie były jeszcze rozszerzone Implementacja: fringe = kolejka priorytetowa porządkująca węzły według kosztu ścieżki od korzenia rad 75 140 118 Zerind Sibiu Timisoara 75 71 rad Oradea Przeszukiwanie przestrzeni stanów algorytmy ślepe 17

Strategia jednolitego kosztu Wykonuje ekspansję węzła o najmniejszym koszcie spośród tych, ktore nie były jeszcze rozszerzone Implementacja: fringe = kolejka priorytetowa porządkująca węzły według kosztu ścieżki od korzenia rad 75 140 118 Zerind Sibiu Timisoara 75 71 118 111 rad Oradea rad Lugoj Przeszukiwanie przestrzeni stanów algorytmy ślepe 18

Strategia jednolitego kosztu: wlasnosci Zupełność?? Tak, jeśli koszt wszystkich akcji ɛ, dla pewnego ɛ > 0 Złożoność czasowa?? Liczba węzłów, dla których g koszt optymalnego rozwiązania O(b /ɛ ), gdzie jest kosztem optymalnego rozwiązania Złożoność pamięciowa?? Liczba węzłów, dla których g koszt optymalnego rozwiązania O(b /ɛ ) Optymalność?? Tak węzły są uporządkowane rosnąco względem g(n) Przeszukiwanie przestrzeni stanów algorytmy ślepe 19

Przeszukiwanie wglab Wykonuje ekspansję najgłebszego węzła spośród tych, ktore nie były jeszcze rozszerzone Implementacja: fringe jest kolejką LIFO, tzn. nowe następniki dodawane są na początek kolejki function Tree-Search(problem,fringe) returns a solution, or failure fringe Insert(Make-Node(Initial-State[problem]), fringe) loop do if fringe is empty then return failure node Remove-Front(fringe) if Goal-Test[problem] applied to State(node) succeeds return node fringe Insertll(Expand(node, problem), fringe) Przeszukiwanie przestrzeni stanów algorytmy ślepe 20

Przeszukiwanie wglab Wykonuje ekspansję najgłebszego węzła spośród tych, ktore nie były jeszcze rozszerzone Implementacja: fringe jest kolejką LIFO, tzn. nowe następniki dodawane są na początek kolejki H I J K L M N O Przeszukiwanie przestrzeni stanów algorytmy ślepe 21

Przeszukiwanie wglab Wykonuje ekspansję najgłebszego węzła spośród tych, ktore nie były jeszcze rozszerzone Implementacja: fringe jest kolejką LIFO, tzn. nowe następniki dodawane są na początek kolejki H I J K L M N O Przeszukiwanie przestrzeni stanów algorytmy ślepe 22

Przeszukiwanie wglab Wykonuje ekspansję najgłebszego węzła spośród tych, ktore nie były jeszcze rozszerzone Implementacja: fringe jest kolejką LIFO, tzn. nowe następniki dodawane są na początek kolejki H I J K L M N O Przeszukiwanie przestrzeni stanów algorytmy ślepe 23

Przeszukiwanie wglab Wykonuje ekspansję najgłebszego węzła spośród tych, ktore nie były jeszcze rozszerzone Implementacja: fringe jest kolejką LIFO, tzn. nowe następniki dodawane są na początek kolejki H I J K L M N O Przeszukiwanie przestrzeni stanów algorytmy ślepe 24

Przeszukiwanie wglab Wykonuje ekspansję najgłebszego węzła spośród tych, ktore nie były jeszcze rozszerzone Implementacja: fringe jest kolejką LIFO, tzn. nowe następniki dodawane są na początek kolejki H I J K L M N O Przeszukiwanie przestrzeni stanów algorytmy ślepe 25

Przeszukiwanie wglab Wykonuje ekspansję najgłebszego węzła spośród tych, ktore nie były jeszcze rozszerzone Implementacja: fringe jest kolejką LIFO, tzn. nowe następniki dodawane są na początek kolejki H I J K L M N O Przeszukiwanie przestrzeni stanów algorytmy ślepe 26

Przeszukiwanie wglab Wykonuje ekspansję najgłebszego węzła spośród tych, ktore nie były jeszcze rozszerzone Implementacja: fringe jest kolejką LIFO, tzn. nowe następniki dodawane są na początek kolejki H I J K L M N O Przeszukiwanie przestrzeni stanów algorytmy ślepe 27

Przeszukiwanie wglab Wykonuje ekspansję najgłebszego węzła spośród tych, ktore nie były jeszcze rozszerzone Implementacja: fringe jest kolejką LIFO, tzn. nowe następniki dodawane są na początek kolejki H I J K L M N O Przeszukiwanie przestrzeni stanów algorytmy ślepe 28

Przeszukiwanie wglab Wykonuje ekspansję najgłebszego węzła spośród tych, ktore nie były jeszcze rozszerzone Implementacja: fringe jest kolejką LIFO, tzn. nowe następniki dodawane są na początek kolejki H I J K L M N O Przeszukiwanie przestrzeni stanów algorytmy ślepe 29

Przeszukiwanie wglab Wykonuje ekspansję najgłebszego węzła spośród tych, ktore nie były jeszcze rozszerzone Implementacja: fringe jest kolejką LIFO, tzn. nowe następniki dodawane są na początek kolejki H I J K L M N O Przeszukiwanie przestrzeni stanów algorytmy ślepe 30

Przeszukiwanie wglab Wykonuje ekspansję najgłebszego węzła spośród tych, ktore nie były jeszcze rozszerzone Implementacja: fringe jest kolejką LIFO, tzn. nowe następniki dodawane są na początek kolejki H I J K L M N O Przeszukiwanie przestrzeni stanów algorytmy ślepe 31

Przeszukiwanie wglab Wykonuje ekspansję najgłebszego węzła spośród tych, ktore nie były jeszcze rozszerzone Implementacja: fringe jest kolejką LIFO, tzn. nowe następniki dodawane są na początek kolejki H I J K L M N O Przeszukiwanie przestrzeni stanów algorytmy ślepe 32

Zupełność?? Przeszukiwanie wglab: wlasnosci Przeszukiwanie przestrzeni stanów algorytmy ślepe 33

Przeszukiwanie wglab: wlasnosci Zupełność?? rak, zawodzi w przestrzeniach o nieskończonej głębokości oraz w przestrzeniach z pętlami Po dodaniu eliminacji stanów powtarzających się wzdłuż ścieżki zupełność w przestrzeniach skończonych Złożoność czasowa?? Przeszukiwanie przestrzeni stanów algorytmy ślepe 34

Przeszukiwanie wglab: wlasnosci Zupełność?? rak, zawodzi w przestrzeniach o nieskończonej głębokości oraz w przestrzeniach z pętlami Po dodaniu eliminacji stanów powtarzających się wzdłuż ścieżki zupełność w przestrzeniach skończonych Złożoność czasowa?? O(b m ): okropne jeśli m jest dużo większe niż d jeśli rozwiązania są gęste, może być szybsze niż przeszukiwanie wszerz Złożoność pamięciowa?? Przeszukiwanie przestrzeni stanów algorytmy ślepe 35

Przeszukiwanie wglab: wlasnosci Zupełność?? rak, zawodzi w przestrzeniach o nieskończonej głębokości oraz w przestrzeniach z pętlami Po dodaniu eliminacji stanów powtarzających się wzdłuż ścieżki zupełność w przestrzeniach skończonych Złożoność czasowa?? O(b m ): okropne jeśli m jest dużo większe niż d jeśli rozwiązania są gęste, może być szybsze niż przeszukiwanie wszerz Złożoność pamięciowa?? O(bm), tzn. pamięć liniowa! Optymalność?? Przeszukiwanie przestrzeni stanów algorytmy ślepe 36

Przeszukiwanie wglab: wlasnosci Zupełność?? rak, zawodzi w przestrzeniach o nieskończonej głębokości oraz w przestrzeniach z pętlami Po dodaniu eliminacji stanów powtarzających się wzdłuż ścieżki zupełność w przestrzeniach skończonych Złożoność czasowa?? O(b m ): okropne jeśli m jest dużo większe niż d jeśli rozwiązania są gęste, może być szybsze niż przeszukiwanie wszerz Złożoność pamięciowa?? O(bm), tzn. pamięć liniowa! Optymalność?? rak Przeszukiwanie przestrzeni stanów algorytmy ślepe 37

Przeszukiwanie ograniczone wglab Przeszukiwanie wgłąb z ograniczeniem na głębokość l, tzn. węzły na głębokości l nie mają następników Implementacja rekurencyjna: function Depth-Limited-Search( problem, limit) returns soln/fail/cutoff Recursive-DLS(Make-Node(Initial-State[problem]), problem, limit) function Recursive-DLS(node, problem, limit) returns soln/fail/cutoff cutoff-occurred? false if Goal-Test[problem](State[node]) then return node else if Depth[node] = limit then return cutoff else for each successor in Expand(node, problem) do result Recursive-DLS(successor, problem, limit) if result = cutoff then cutoff-occurred? true else if result failure then return result if cutoff-occurred? then return cutoff else return failure Przeszukiwanie przestrzeni stanów algorytmy ślepe 38

Przeszukiwanie iteracyjnie poglebiane Powtarza przeszukiwanie ograniczone wgłąb z rosnącym ograniczeniem na głębokość przeszukiwania function Iterative-Deepening-Search( problem) returns a solution inputs: problem, a problem for depth 0 to do result Depth-Limited-Search( problem, depth) if result cutoff then return result end Przeszukiwanie przestrzeni stanów algorytmy ślepe 39

Przeszukiwanie iteracyjnie poglebiane l = 0 Powtarza przeszukiwanie ograniczone wgłąb z rosnącym ograniczeniem na głębokość przeszukiwania Limit = 0 Przeszukiwanie przestrzeni stanów algorytmy ślepe 40

Przeszukiwanie iteracyjnie poglebiane l = 1 Powtarza przeszukiwanie ograniczone wgłąb z rosnącym ograniczeniem na głębokość przeszukiwania Limit = 1 Przeszukiwanie przestrzeni stanów algorytmy ślepe 41

Przeszukiwanie iteracyjnie poglebiane l = 2 Powtarza przeszukiwanie ograniczone wgłąb z rosnącym ograniczeniem na głębokość przeszukiwania Limit = 2 Przeszukiwanie przestrzeni stanów algorytmy ślepe 42

Przeszukiwanie iteracyjnie poglebiane l = 3 Powtarza przeszukiwanie ograniczone wgłąb z rosnącym ograniczeniem na głębokość przeszukiwania Limit = 3 H I J K L M N O H I J K L M N O H I J K L M N O H I J K L M N O H I J K L M N O H I J K L M N O H I J K L M N O H I J K L M N O H I J K L M N O H I J K L M N O H I J K L M N O H I J K L M N O Przeszukiwanie przestrzeni stanów algorytmy ślepe 43

Przeszukiwanie iteracyjnie poglebiane: wlasnosci Zupełność?? Przeszukiwanie przestrzeni stanów algorytmy ślepe 44

Przeszukiwanie iteracyjnie poglebiane: wlasnosci Zupełność?? Tak Złożoność czasowa?? Przeszukiwanie przestrzeni stanów algorytmy ślepe 45

Przeszukiwanie iteracyjnie poglebiane: wlasnosci Zupełność?? Tak Złożoność czasowa?? (d + 1)b 0 + db 1 + (d 1)b 2 +... + b d = O(b d ) Złożoność pamięciowa?? Przeszukiwanie przestrzeni stanów algorytmy ślepe 46

Przeszukiwanie iteracyjnie poglebiane: wlasnosci Zupełność?? Tak Złożoność czasowa?? (d + 1)b 0 + db 1 + (d 1)b 2 +... + b d = O(b d ) Złożoność pamięciowa?? O(bd) Optymalność?? Przeszukiwanie przestrzeni stanów algorytmy ślepe 47

Przeszukiwanie iteracyjnie poglebiane: wlasnosci Zupełność?? Tak Złożoność czasowa?? (d + 1)b 0 + db 1 + (d 1)b 2 +... + b d = O(b d ) Złożoność pamięciowa?? O(bd) Optymalność?? Tak, jeśli koszt wszystkich akcji jest taki sam Można zmodyfikować tak, żeby przeszukiwać drzewo jednolitego kosztu Przeszukiwanie przestrzeni stanów algorytmy ślepe 48

Przeszukiwanie iteracyjnie poglebiane: wlasnosci Zupełność?? Tak Złożoność czasowa?? (d + 1)b 0 + db 1 + (d 1)b 2 +... + b d = O(b d ) Złożoność pamięciowa?? O(bd) Optymalność?? Tak, jeśli koszt wszystkich akcji jest taki sam Można zmodyfikować tak, żeby przeszukiwać drzewo jednolitego kosztu Numeryczne porównanie czasu wykonania dla współcz. rozgałęzienia b = 10 przy założeniu, że rozwiązanie w drzewie przeszukiwań ma głębokość d = 5 i znajduje się w skrajnie prawym węźle drzewa przeszukiwań: N(IDS) = 50 + 400 + 3, 000 + 20, 000 + 100, 000 = 123, 450 N(FS) = 10 + 100 + 1, 000 + 10, 000 + 100, 000 + 999, 990 = 1, 111, 100 Przeszukiwanie przestrzeni stanów algorytmy ślepe 49

Przeszukiwanie dwukierunkowe Wykonuje równolegle dwa przeszukiwania: 1) przeszukiwanie wprzód od stanu początkowego 2) przeszukiwanie w tył od stanu końcowego Start Goal Przeszukiwanie przestrzeni stanów algorytmy ślepe 50

Przeszukiwanie dwukierunkowe: wlasnosci Zupełność?? Tak, jeśli oba przeszukiwania wykonywane są wszerz Złożoność czasowa?? O(b d/2 ) To główna motywacja Złożoność pamięciowa?? O(b d/2 ) ena płacona za oszczędność czasu Optymalność?? Tak, jeśli oba przeszukiwania wykonywane są wszerz ( w grafie z takim samym kosztem wszystkich akcji) lub jeśli oba przeszukiwania używają strategii jednolitego kosztu (w grafie z różnym kosztem akcji) Przeszukiwanie przestrzeni stanów algorytmy ślepe 51

Podsumowanie algorytmow b maksymalne rozgałęzienie d głębokość optymalnego rozwiązania m maksymalna głębokość drzewa przeszukiwań (może być ) Kryterium Wszerz Jednolity Wgłąb Ograniczone Iter. Dwukie- Koszt Wgłąb Pogłęb. runkowe Zupełne? Tak a Tak a,b Nie Tak, dla l d Tak a Tak a,d zas b d+1 b /ɛ b m b l b d b d/2 Pamięć b d+1 b /ɛ bm bl bd b d/2 Optymalne? Tak c Tak Nie Nie Tak c Tak d a) zupełne, jeśli b jest skończone b) zupełne, jeśli koszt akcji ɛ, dla pewnego ɛ > 0 c) optymalne, jeśli koszt wszystkich akcji jest taki sam d) zupełne i optymalne, jeśli oba przeszukiwania wszerz lub wg jednol. kosztu Przeszukiwanie przestrzeni stanów algorytmy ślepe 52

Podsumowanie algorytmow b maksymalne rozgałęzienie d głębokość optymalnego rozwiązania m maksymalna głębokość drzewa przeszukiwań (może być ) Kryterium Wszerz Jednolity Wgłąb Ograniczone Iter. Dwukie- Koszt Wgłąb Pogłęb. runkowe Zupełne? Tak a Tak a,b Nie Tak, dla l d Tak a Tak a,d zas b d+1 b /ɛ b m b l b d b d/2 Pamięć b d+1 b /ɛ bm bl bd b d/2 Optymalne? Tak c Tak Nie Nie Tak c Tak d a) zupełne, jeśli b jest skończone b) zupełne, jeśli koszt akcji ɛ, dla pewnego ɛ > 0 c) optymalne, jeśli koszt wszystkich akcji jest taki sam d) zupełne i optymalne, jeśli oba przeszukiwania wszerz lub wg jednol. kosztu Podsumowanie: Iteracyjne pogłębianie używa tylko liniowej pamięci i czasu porównywalnego z innymi algorytmami Przeszukiwanie przestrzeni stanów algorytmy ślepe 53

Wykrywanie stanow odwiedzonych Niepełna eliminacja powtarzających się stanów może zamienić problem liniowy w wykładniczy! D Funkcja sprawdzania, czy stan był już odwiedzony, może działać szybko, jeśli zbiór stanów odwiedzonych jest pamiętany i zaimplementowany przy pomocy efektywnej struktury danych, np. kolejki priorytetowej lub tablicy haszującej. Przeszukiwanie przestrzeni stanów algorytmy ślepe 54

Przeszukiwanie grafu Jesli algorytm przeszukiwania przestrzeni stanów wykrywa i eliminuje z przeszukiwania stany wcześniej odwiedzone, to taki algorytm jest dobry również do przeszukiwania grafu Zmienna closed pamięta wszystkie wcześniej odwiedzone stany function Graph-Search(problem,fringe) returns a solution, or failure closed an empty set fringe Insert(Make-Node(Initial-State[problem]), fringe) loop do if fringe is empty then return failure node Remove-Front(fringe) if Goal-Test[problem](State[node]) then return node if State[node] is not in closed then add State[node] to closed fringe Insertll(Expand(node, problem), fringe) end Przeszukiwanie przestrzeni stanów algorytmy ślepe 55

Przeszukiwanie grafu: wlasnosci Zupełność?? Tak, jeśli graf skończony Złożoność czasowa?? liczba wierzchołków grafu koszt wyszukania stanu Złożoność pamięciowa?? liczba wierzchołków grafu Optymalność?? optymalne przy przeszukiwaniu drzewa Przeszukiwanie przestrzeni stanów algorytmy ślepe 56