Heurystyczne przeszukiwanie przestrzeni stanów

Podobne dokumenty
Heurystyczne przeszukiwanie przestrzeni stanów

Heurystyczne przeszukiwanie przestrzeni stanów

Heurystyczne przeszukiwanie grafów w gier dwuosobowych

Heurystyczne przeszukiwanie grafów gier dwuosobowych

Wprowadzenie do Sztucznej Inteligencji

Wprowadzenie do Sztucznej Inteligencji

Wprowadzenie do Sztucznej Inteligencji

Heurystyki. Strategie poszukiwań

Sztuczna Inteligencja i Systemy Doradcze

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

Heurystyczne metody przeszukiwania

Metody przeszukiwania

Rozwiązywanie problemów metodą przeszukiwania

Metody teorii gier. ALP520 - Wykład z Algorytmów Probabilistycznych p.2

Wyznaczanie strategii w grach

SZTUCZNA INTELIGENCJA

Sortowanie topologiczne skierowanych grafów acyklicznych

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

Wybrane podstawowe rodzaje algorytmów

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

Wstęp do Sztucznej Inteligencji

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

Sztuczna Inteligencja i Systemy Doradcze

Podstawy sztucznej inteligencji

Algorytmy i str ruktury danych. Metody algorytmiczne. Bartman Jacek

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

Mechanizm wyboru następnego wierzchołka w grafie

Ogólne wiadomości o grafach

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

Porządek symetryczny: right(x)

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

Działanie algorytmu oparte jest na minimalizacji funkcji celu jako suma funkcji kosztu ( ) oraz funkcji heurystycznej ( ).

Algorytmy dla gier dwuosobowych

Optymalizacja. Wybrane algorytmy

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

Tworzenie gier na urządzenia mobilne

Algorytmy i struktury danych

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

TEORETYCZNE PODSTAWY INFORMATYKI

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

Algorytmy i Struktury Danych.

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

Programowanie w VB Proste algorytmy sortowania

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

Zadanie 1: Piętnastka

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

Algorytmy i Struktury Danych

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

Podstawy sztucznej inteligencji

Wstęp do Programowania potok funkcyjny

Planowanie drogi robota, algorytm A*

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

Drzewa spinające MST dla grafów ważonych Maksymalne drzewo spinające Drzewo Steinera. Wykład 6. Drzewa cz. II

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

Poprawność semantyczna

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

Algorytmy przeszukiwania grafów i drzew dla gier i łamigłówek

Algorytmiczna teoria grafów

Luty 2001 Algorytmy (4) 2000/2001

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

Analiza algorytmów zadania podstawowe

Znajdowanie wyjścia z labiryntu

Podstawy Informatyki. Sprawność algorytmów

Matematyczne Podstawy Informatyki

Algorytmy mrówkowe. H. Bednarz. Wydział Informatyki Zachodniopomorski Uniwersytet Technologiczny w Szczecinie Inteligentne systemy informatyczne

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

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

Metody numeryczne I Równania nieliniowe

Techniki optymalizacji

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

Indukowane Reguły Decyzyjne I. Wykład 3

Kolorowanie wierzchołków grafu

Algorytmy Równoległe i Rozproszone Część V - Model PRAM II

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

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

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

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

Algorytmy i struktury danych. wykład 5

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

Algorytmiczna teoria grafów Przepływy w sieciach.

Teoria gier. Teoria gier. Odróżniać losowość od wiedzy graczy o stanie!

Teoria gier. Wykład7,31III2010,str.1. Gry dzielimy

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

Zaawansowane programowanie

Algorytmy równoległe. Rafał Walkowiak Politechnika Poznańska Studia inżynierskie Informatyka 2010

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

Metody Kompilacji Wykład 3

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

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

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

Drzewa podstawowe poj

Wnioskowanie jako przeszukiwanie przestrzeni stanów

TEORETYCZNE PODSTAWY INFORMATYKI

Za pierwszy niebanalny algorytm uważa się algorytm Euklidesa wyszukiwanie NWD dwóch liczb (400 a 300 rok przed narodzeniem Chrystusa).

OSTASZEWSKI Paweł (55566) PAWLICKI Piotr (55567) Algorytmy i Struktury Danych PIŁA

Indukcja. Materiały pomocnicze do wykładu. wykładowca: dr Magdalena Kacprzak

Podstawy Sztucznej Inteligencji (PSZT)

Matematyka dyskretna - wykład - część Podstawowe algorytmy kombinatoryczne

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

Transkrypt:

Heurystyczne przeszukiwanie przestrzeni stanów Wykład Studia Inżynierskie Realizacja przeszukiwania heurystycznego Systemy eksperckie Gdy problem nie posiada dokładnego rozwiązania zania ze względu na swoją charakterystykę: * niejednoznaczność zadania (jaki jest cel, który mamy osiągn gnąć?) * nieprecyzyjne lub niepewne dane (błę łędy w danych) * brak wszystkich niezbędnych danych (niepełne ne dane) Algorytmy przeszukiwania z numeryczną funkcją oceny stanu Gdy istnieją dokładne rozwiązania, zania, ale wymagania zasobowe (pamięć ęć,, czas) sąs zbyt duże e (kombinatoryczna eksplozja stanów w w problemach rzeczywistych!)

Podstawowe pojęcia teorii grafów przeszukiwania Korzeń grafu Stan, od którego zaczynamy przeszukiwanie grafu (drzewa) początkowy stan problemu (instancja problemu) Wierzchołek ek końcowy (terminalny) Stan, który ma określon loną wartość oceny z punktu widzenia wyniku danego zadania (np. porażka, zwycięstwo, remis w grze) Liść Dowolny stan w grafie, w którym zatrzymujemy proces przeszukiwania i przypisujemy mu ocenę heurystyczną Wierzchołek ek wewnętrzny Każdy inny stan, którego wartość oceny zależy y od jego poprzedników w lub następnik pników Podstawowe pojęcia teorii grafów przeszukiwania c.d. Głębokość przeszukiwania (aktualna) Liczba przejść stanów w (ruchów) od korzenia grafu do stanu aktualnego Branching factor Średnia liczba następnik pników w stanu (śr.(. liczba ruchów w w stanie) Drzewa przeszukiwania/dag Większo kszość grafów w przeszukiwania to DAG (acykliczne grafy skierowane), część z nich to drzewa

Generowanie następnik pników Podstawowe pojęcia Korzeń Branching factor Wierzchołek ek wewnętrzny Stan Głębokość przeszukiwania Stan końcowy Ocena heurystyczna (liść ść) Heurystyczne przeszukiwanie Połą łączenie wiedzy przedmiotowej dotyczącej cej danego zadania i metod przeszukiwania dla efektywnego poszukiwania rozwiązania zania Stosowane w celu ograniczenie kombinatorycznej eksplozji stanów w w grafie przeszukiwania Nie gwarantuje znalezienia rozwiązania, zania, pozwala jednak wybierać lub odrzucać pewne stany, określaj lając c tym samym dalsze kierunki przeszukiwania

Rola heurystyki w przeszukiwaniu Zwiększa niepewność otrzymania wyniku w procesie konstrukcji rozwiązania zania ze względu na wykorzystywanie nieformalnej wiedzy przedmiotowej (zasady, reguły, intuicje itp.), której słuszność/użyteczno yteczność nie do końca jest znana Pozwala w naturalny sposób b wykorzystywać informacje niepewne i nieprecyzyjne, które często towarzyszą przetwarzaniu danych pochodzących cych ze świata rzeczywistego Poprawia efektywność algorytmu poszukiwania rozwiązania zania danego problemu bezpośrednio (przez wskazywanie najlepszych kierunków w przeszukiwania) lub pośrednio (przez eliminowanie najmniej obiecujących cych kierunków) Gdzie stosujemy przeszukiwanie heurystyczne? Problemy jednoosobowe (np.zagadki logiczne: arytmografy, labirynty, itp.) Problemy optymalizacji (np. nawigacja robota - znajdowanie najkrótszej ścieżki, szeregowanie itd.) Gry dwuosobowe Systemy dowodzenia twierdzeń

Przykład zastosowania heurystyki Ruch najlepszy wg heurystyki Rozmiary przestrzeni: Pełna - 9! Symetria i powtórzenia - 7! Heurystyka -. 9 Algorytmy przeszukiwania heurystycznego Problemy jednoosobowe Algorytm wspinaczkowy Algorytm Best-first first-searchsearch Algorytm A * Algorytm IDA * Gry dwuosobowe Algorytm min- Algorytm alfa-beta

Składowe algorytmów w przeszukiwania heurystycznego Reprezentacja stanu przestrzeni (silnie zależna od zastosowania) Stany startowe (początkowe, inicjujące) ce) Stany końcowe (terminalne) Generator następnik pników w stanu (zbiór r dopuszczalnych operatorów/akcji/ruch w/akcji/ruchów) w) Procedura przeszukiwania Mechanizm wyboru następnego wierzchołka w grafie Mechanizm nawrotów Mechanizmy wykrywania cykli Funkcja heurystycznej oceny stanu Algorytm wspinaczkowy (ang. hill climbing) procedure hill_climbing(initial_state initial_state) begin current_node = initial_state; next = []; if current_node = goal then return(success); while true do begin generate all children of current_node; if any of children is a goal state then return(success); assign heuristic value to each child state; set next to a lowest-valued child of current_node; if value of next > value of current_node then return(success); % stop! - no improvements set current_node to next; end; % while end.

Algorytm wspinaczkowy - przykład A- B- C- D- E F G H I J K L M N O P Q R S T U Algorytm wspinaczkowy - przykład A- B- C- D- E- F- G H I J K L M N O P Q R S T U 7

Algorytm wspinaczkowy - przykład A- B- C- D- E- F- G H I J K- L- M N O P Q R S T U Algorytm wspinaczkowy - przykład A- B- C- D- E- F- G H I J K- L- M N O P Q R S T- U 8

Algorytm wspinaczkowy - przykład A- B- C- D- E- F- G H I J K- L- M N O P Q R S T- U koniec! Algorytm wspinaczkowy: charakterystyka Cechy szczególne Ocena heurystyczna stanu z reguły y traktowana jako koszt Małe e wymagania pamięciowe (brak historii!) Brak mechanizmu nawrotów Nieoptymalny? Wady Lokalne ekstrema funkcji Plateaux - brak postępu pu w przeszukiwaniu Grzbiety funkcji powolny postęp p w przeszukiwaniu 9

Algorytm wspinaczkowy: metody poprawy Nawroty do poprzednich stanów w i próba wykorzystania innych, niemal równie r dobrych, następnik pników w jak ten pierwotnie wybrany (trzeba zarezerwować dodatkową pamięć ęć!) Wykonywanie "dużych skoków" tzn. wybieranie operatorów, które wprowadzają ogromne zmiany stanu problemu lub, jeśli brak takowych, wykonywanie kilku drobnych kroków w "pod rząd" w jednym wybranym kierunku przestrzeni stanów Wykonywanie kilku kroków w w różnych r kierunkach, ale bez sprawdzania wartości osiąganych stanów Różne punkty startowe (stany początkowe) algorytmu Algorytm best-first first-searchsearch (zachłanny) anny) procedure best_first_search( _first_search(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; assign heuristic value to the child state; add the child state to open; re-order states on open according to heuristic merit (lower( values first); end end. 0

Algorytm Best-first search - przykład A B C D E F G H I J K L M N O P Q R Open Closed B- Ocena stanu S T U Algorytm Best-first search - przykład A B- C- D- E F G H I J K L M N O P Q R Open Closed B- Ocena stanu S T U

Algorytm Best-first search - przykład A B- C- D- E- F- G H I J K L M N O P Q R Open Closed B- Ocena stanu S T U Algorytm Best-first search - przykład A B- C- D- E- F- G H I J K- L- M N O P Q R Open Closed B- Ocena stanu S T U

Algorytm Best-first search - przykład A B- C- D- E- F- G H I J K- L- M N O P Q R Open Closed B- Ocena stanu S T- U Algorytm Best-first search - przykład A B- C- D- E- F- G H I J K- L- M N O P Q R Open Closed B- Ocena stanu S T- U

Algorytm Best-first search - przykład A B- C- D- E- F- G H I J K- L- M- N O P Q R Open Closed B- Ocena stanu S T- U Algorytm Best-first search - przykład A B- C- D- E- F- G H I J K- L- M- N O P Q R Open Closed B- Ocena stanu S T- U

Algorytm Best-first search - przykład A B- C- D- E- F- G- H- I J K- L- M- N O P Q R Open Closed B- Ocena stanu S T- U Algorytm Best-first search - przykład A B- C- D- E- F- G- H- I J K- L- M- N O- P- Q R Open Closed B- Ocena stanu S T- U

Algorytm Best-first search - przykład A B- C- D- E- F- G- H- I J K- L- M- N O- P- Q R Open Closed B- Ocena stanu S T- U Algorytm Best-first search - przykład A B- C- D- E- F- G- H- I J K- L- M- N O- P- Q R Open Closed B- Ocena stanu S T- U-

Algorytm Best-first first-search: : charakterystyka Cechy szczególne Mechanizm nawrotów lista OPEN Historia ruchów wykrywanie cykli lista OPEN i CLOSED Wielokierunkowe przeszukiwanie przestrzeni Im lepsza ocena heurystyczna stanów, tym mniejszy obszar przeszukiwania Wady Duże e wymagania pamięciowe (złożono oność pamięciowa O(b d ), b branching factor, d głębokość przeszukiwania) Nieoptymalny (w ogólnym przypadku, ale...) Algorytm Best-fist fist-searchsearch - przykład 8 7 8 7 8 7 8 7 Ocena heurystyczna: : liczba płytek (elementów) poza swoim położeniem docelowym 8 7 8 7 8 7 8 7 8 7 8 7 8 7 8 7 8 7 8 7 8 7 8 7 8 7 8 7 8 7 8 7 8 7 8 7 8 7 8 7 8 7 8 7 8 7 7 8 8 7 8 7 8 7 8 7 7 8 8 7 8 7 8 7 8 7 8 7 8 7 8 7 8 7 8 7 8 7 8 7 8 7 7 8 8 cel 7 7

Ocena heurystyczna jaka? 8 7 7 8 7 8 7 Proponowana heurystyczna ocena 0 0 0 Próba : Liczba płytek p poza pozycjami docelowymi Wada: Nie uwzględnia jak daleko jest każda płytka od miejsca docelowego Próba : Suma odległości wszystkich płytek p od miejsca docelowego Wada: Ignoruje fakt (podobnie jak poprzednia heurystyka), że e prosta zamiana miejscami dwóch płytek to więcej niż dwa ruchy Próba : Liczba odwróconych par płytek p pomnożona ona przez mały y współczynnik (np. ) Wada: Nie uwzględnia sekwencji ruchów Funkcja oceny heurystycznej - definicja Funkcją oceny heurystycznej nazywamy funkcję rzeczywistą określon loną na zbiorze wierzchołków w grafu przestrzeni stanów postaci: f(n) ) = g(n) ) + h(n), gdzie: g(n) jest aktualną długość ścieżki od stanu n do stanu początkowego, h(n) jest heurystycznym oszacowaniem odległości od stanu n do celu. 8

Przykład zastosowania funkcji oceny heurystycznej OPEN CLOSED 8 7 Stan b f(b) ) = 8 7 8 7 Stan a f(a) ) = Stan c f(c) ) = 8 7 Stan d f(d) ) = g(n) = 0 g(n) = 8 7 Stan e f(e) ) = 8 7 Stan f f(f) ) = 8 7 Stan g f(g) ) = g(n) = 8 7 Stan h f(h) ) = 8 7 Stan i f(i) ) =7 8 7 Stan j f(j) ) = 8 7 Stan k f(k) ) =7 g(n) = f(n) ) = g(n) ) + h(n), gdzie: g(n) ) rzeczywista odległość od startu do stanu n, h(n) ) liczba płytek p (elementów) poza swoim położeniem docelowym cel 8 7 Stan m f(m) ) = 8 7 Stan l f(l) ) = 7 8 Stan n f(n) ) =7 g(n) = g(n) = Funkcja oceny heurystycznej a algorytm Best-first first-searchsearch Niech dany będzie b algorytm Best-first first-searchsearch z oceną heurystyczną postaci: f(n) ) = g(n) ) + h(n), jeżeli eli dla każdego stanu g(n) ) = 0 to otrzymujemy tzw. przeszukiwanie zachłanne anne (brak gwarancji znalezienia optymalnego rozwiązania) zania) jeżeli eli dla każdego stanu h(n) ) = 0 i g(n) ) = depth(n) to mamy przeszukiwanie wszerz (możliwe znalezienie optymalnego rozwiązania) zania) 9

Algorytm A - definicja Rozważmy funkcję oceny: f(n) ) = g(n) ) + h(n) gdzie: n jest dowolnym stanem odwiedzonym w czasie przeszukiwania, g(n) 0 jest kosztem osiągni gnięcia stanu n od początku przeszukiwania, h(n) 0 jest heurystycznym oszacowaniem kosztu przejścia od stanu n do celu. Jeżeli eli ta ocena (w pełnej postaci) jest realizowana łącznie z algorytmem best-first first-search,, to rezultat nazywa się algorytmem A. A Algorytm ten ze względu na warunki wyjaśnione dalej nie jest w praktyce stosowany. Algorytm BFS z ogóln lną funkcją () procedure Astar_search(initial_state) begin open = [initial_state]; closed = []; while open [] do begin remove the next state from open,, call it X; if X is a goal state then return(solution path that led to X); process X,, generating all its children; for each child of X do case the child is not already on open nor closed:... the child is already on open:... the child is already on closed:... end; %case put X on closed; re-order states on open according to heuristic merit (lower( values first); end; % while return(failure); % open is exhausted end. 0

...... Algorytm BFS z ogóln lną funkcją () case the child is not already on open or closed: begin assign heuristic value to the child state; add the child state to open; end; the child is already on open: begin if the child was reached along shorter path than the state currently on open then give the state on open this shorter path value; end; the child is already on closed: begin if the child was reached along shorter path than the state currently on closed then begin give the state on closed this shorter path value; move the state from closed to open; end end; end; %case Algorytm A - przykład A B- C- D- E- F- G- H- I- J- K- L- M- N- O- P- Q- R- S- T- U-0 7 Open Closed koszt operacji B- Ocena stanu

Algorytm A - przykład A B- 0 C- 0 D- E- F- G- H- I- J- K- L- M- N- O- P- Q- R- S- T- U-0 7 0 Open Closed koszt operacji B- Ocena stanu Algorytm A - przykład A B- C-0 D- E- F- G- H- I- J- K- L- M- N- O- P- Q- R- S- T- U-0 7 0 Open Closed koszt operacji B- Ocena stanu

Algorytm A - przykład A B- C- D- E- F- G- H- I- J- K- L- M- N- O- P- Q- R- S- T- U-0 7 Open Closed koszt operacji B- Ocena stanu Algorytm A - przykład A B- C- D- E- F- G- H- I- J- K- L- M- N- O- P- Q- R- S- T- U-0 7 Open Closed koszt operacji B- Ocena stanu

Algorytm A - przykład A B- C- D- E- F- G- H- I-7 J- K- L- M- N- O- P- Q- R- S- T- U-0 7 7 Open Closed koszt operacji B- Ocena stanu Algorytm A - przykład A B- C- D- E- F- G- H- I-7 J- K- L- M- N- O- P- Q- R- S- T- U-0 7 7 Open Closed koszt operacji B- Ocena stanu

Algorytm A - przykład A B- C- D- E- F- G- H- I-7 J- K- 7 L- M- N- O- P- Q- R- S- T- U-0 7 7 Open Closed koszt operacji B- Ocena stanu Algorytm A - przykład A B- C- D- E- F- G- H- I-7 J- K- 7 L- M- N- O- P- Q- R- S- T- U-0 7 7 Open Closed koszt operacji B- Ocena stanu

Algorytm A - przykład S- A B- C- D- E- F- G- H- I-7 J- K- 7 L- M- T- 7 N- O- P- Q- R- U-0 7 Open Closed koszt operacji B- Ocena stanu Algorytm A - przykład A B- C- D- E- F- G- H- I-7 J- K- 7 L- M- N- O- P- Q- R- S- T- U-0 7 7 Open Closed koszt operacji B- Ocena stanu

Algorytm A - przykład A B- C- D- E- F- G- H- I-7 J- K-7 L- M- N-7 O- P- Q- R- S- T- U-0 7 7 7 7 Open Closed koszt operacji B- Ocena stanu Algorytm A - przykład S- A B- C- D- E- F- G- H- I-7 J- K-7 L- M- T- 7 7 7 N-7 O- P- Q- R- U-0 7 prawie koniec ;-); Open Closed koszt operacji B- Ocena stanu 7

Teoretyczne własnow asności heurystyk a problemy przeszukiwania Czy algorytm znajduje najkrótsz tszą ścieżkę do celu? Dopuszczalność heurystyki (ang. admissibility) Czy każdy stan w przestrzeni jest osiągany przy najniższym koszcie? Monotoniczność heurystyki (ang. monotonicity) Czy można szybciej znaleźć rozwiązanie zanie przy pomocy innej (lepszej) heurystyki? Informatywność heurystyki (ang. informedness) Teoretyczne własnow asności heurystyk: idealna funkcja oceny heurystycznej Przyjmijmy następuj pujące oznaczenia: g * (n) koszt najkrótszej ścieżki od stanu początkowego do stanu n, h * (n) jest rzeczywistym kosztem przejścia najkrótsz tszą ścieżką od stanu n do celu, f * (n) rzeczywisty koszt optymalnej ścieżki prowadzącej od stanu początkowego przez stan n do celu (tj. f * (n)= g * (n)+ h * (n)), Funkcja f * (n) to idealna wyrocznia - jej istnienie eliminowałoby oby potrzebę przeszukiwania! W trakcie przeszukiwania z reguły g(n) g * (n),, dopóki nie odkryjemy najkrótszej ścieżki do n,, wtedy g(n) ) = g * (n). Nie jesteśmy w stanie podać wartości h * (n) przed zakończeniem przeszukiwania, dlatego stosujemy jego oszacowanie, czyli h(n). 8

Dopuszczalność (ang. admissibility) Definicja Algorytm przeszukiwania jest dopuszczalny,, jeżeli eli dla dowolnego grafu zawsze kończy się na optymalnej ścieżce ce do rozwiązania, zania, o ile taka ścieżka istnieje. Przykład Algorytm przeszukiwania wszerz Algorytm A * Definicja Jeżeli eli algorytm A wykorzystuje funkcję oceny taką, że h(n) ) jest mniejsze lub równe r kosztowi minimalnej ścieżki od wierzchołka n do celu (tj. h(n) h * (n)), to otrzymany w ten sposób b algorytm nazywa się algorytmem A *. Twierdzenie Wszystkie algorytmy A * są dopuszczalne. 9

Niedoszacowanie wartości oceny heurystycznej A f = (h ( + g) n g(n)= depth(n) B (+) (+) C D (+) E (+) G F (+) (+) Zaniżenie wartości, tzn. h < h * H (+) X goal Przeszacowanie wartości oceny heurystycznej A f = (h ( + g) n g(n)= depth(n) B (+) (+) C D (+) E (+) F (+) G (0+) X goal Zawyżenie wartości, tzn. h > h * 0

Monotoniczność (ang. monotonicity) Funkcja oceny heurystycznej f jest monotoniczna,, gdy: dla dowolnych stanów s i oraz s j, gdzie s j jest następnikiem s i zachodzi: h(s i ) - h(s j ) cost(s i, s j ) gdzie cost(s i, s j ) jest rzeczywistym kosztem (w liczbie ruchów) przejścia od stanu s i do s j, i oszacowanie heurystyczne stanu docelowego jest równe r zero h(goal) ) = 0 Monotoniczność ść,, czyli spójno jność heurystyki Monotoniczność to tzw. lokalna dopuszczalność ść,, która oznacza, iżi każdy stan (a nie tylko stany docelowe) osiągany jest po najkrótszej ścieżce. ce. Monotoniczność oznacza równier wnież, że e heurystyka jest spójna w całej przeszukiwanej przestrzeni. s i h(s i ) s i cost(s i, s j ) s j h(s j ) h(s i ) - h(s j ) cost(s i, s j ) h(s i ) cost(s i, s j ) + h(s j ) goal goal

Monotoniczność ść,, czyli spójno jność heurystyki Heurystyka jest monotoniczna (inaczej: lokalnie dopuszczalna) jeżeli eli dla każdego stanu s i, każdy jego następnik s j generowany przez akcję a,, która spełnia warunek: h(s i ) cost(s i, a, s j ) + h(s j ) h(s i ) s i goal cost(s i,a,s j ) s j h(s j ) Nierówno wność trójk jkątów!!! Jeśli h jest monotoniczna, to: f (s j ) = g(s j ) + h(s j ) = g(s i ) + cost(s i,a,s j ) + h(s j ) g(s i ) + h(s i ) = f(s i ) f (s j ) f(s i ) tzn. f(s i ) nigdy nie maleje podczas przeszukiwania! Czy monotoniczny to równier wnież dopuszczalny? Rozważmy dowolną ścieżkę w przestrzeni stanów s, s,..., s g, prowadzącą od stanu początkowego s do stanu końcowego s g. Dla dowolnego ciągu ruchów w na tej ścieżce ce zachodzi: od s do s h(s ) - h(s ) cost(s, s ) od s do s h(s ) - h(s ) cost(s, s ) od s do s h(s ) - h(s ) cost(s, s )...... od s g- do s g h(s g- ) - h(s g ) cost(s g-, s g ) dodając c obustronnie stronami otrzymujemy: ścieżka od s do s g h(s ) - h(s g ) cost(s, s g ). Na podstawie własnow asności monotoniczności ci wiemy, że h(s g ) = 0,, więc: h(s ) cost(s, s g ). Ponieważ cost(s, s g ) = h * (s ), to h(s ) h * (s ), czyli heurystyka monotoniczna jest dopuszczalna.

Jak uzyskać monotoniczność ść? Jeżeli eli funkcja oceny heurystycznej f nie jest monotoniczna,, ale jest dopuszczalna, zawsze możliwe jest zapewnienie monotoniczności ci za pomocą tzw. reguły y PATHMAX. Reguła a PATHMAX Jeśli dla dowolnych stanów s i oraz s j, gdzie s j jest następnikiem s i zachodzi: f(s i ) > f(s j ), to nową wartość funkcji oceny dla s j należy y wyznaczyć według zależno ności: f(s j ) = ( f(s i ), g(s j ) + h(s j ) ) Co nam daje monotoniczność ść? procedure MonotonicBFS(initial_state) begin open = [initial_state]; closed = []; while open [] do begin remove the next state from open,, not already on closed,c,call it X; if X is a goal state then return(solution path that led to X); process X,, generating all its children; for each child of X do begin assign heuristic value to the child state; add the child state to open;!!! end; put X on closed; re-order states on open according to monotonic heuristic merit (lower values first); end; % while return(failure); % open is exhausted end.

Informatywność (ang. informedness) Dla dwóch heurystyk h i h typu A *, jeżeli eli h (n) h (n),, dla dowolnego stanu n w przeszukiwanej przestrzeni, to o h mówi się, że e zawiera więcej informacji niż h (jest lepiej poinformowana). Jeżeli eli heurystyka h jest lepiej poinformowana niż h, to zbiór r stanów w odwiedzanych przez h jest podzbiorem stanów odwiedzanych przez h. h h h h h * Najważniejsze twierdzenia dot. algorytmu A * Jeżeli eli oszacowanie h(n) ) jest dopuszczalne,, to algorytm A* jest optymalny dla drzew przeszukiwania Jeżeli eli oszacowanie h(n) ) jest monotoniczne,, to algorytm A* jest optymalny dla dowolnych grafów przeszukiwania Jeżeli eli heurystyka jest monotoniczna,, to jest równier wnież dopuszczalna Jeżeli eli oszacowanie h(n) ) jest monotoniczne,, to wartości f(n) ) w trakcie przeszukiwania nigdy nie maleją

Funkcje heurystyczne - jak definiować? Uproszczenie oryginalnego zadania poprzez rozluźnienie ograniczeń nałożonych onych na definicję operatorów w ruchu (generację następnika) Koszt optymalnego rozwiązania zania dla tak uproszczonego problemu jest dopuszczalną heurystyką zadania oryginalnego! Przykłady dla układanki 8-polowej8. Jeżeli eli założymy, że e można dokonywać przesunięć płytkami na dowolne miejsce (a nie tylko puste), to znajdziemy najkrótsze rozwiązanie zanie - taka heurystyka jest dopuszczalna.. Jeżeli eli założymy, że e można dokonywać przesunięć płytkami na dowolne ortogonalnie sąsiednie s siednie pole (a nie tylko puste), to znajdziemy najkrótsze rozwiązanie zanie - tak heurystyka jest równier wnież dopuszczalna. IDA * - algorytm A * z iteracyjnym pogłę łębianiem Przeszukiwanie z ograniczoną zajęto tością pamięci Schemat iteracyjnego pogłę łębiania Limit dopuszczalnej głęg łębokości zastąpiony przez limit wartości funkcji oceny heurystycznej

Algorytm IDA * - cz. procedure IDA * -Search( Search(initial_state) begin f_limit f(initial_state initial_state); while true do begin (solution, f_limit ) DFS-Contour( Contour(initial_state, f_limit); if solution null then return(solution solution); if f_limit = then return(failure failure); f_limit f_limit ; end; end. Algorytm IDA * - cz. function DFS-Contour( Contour(current_state, f_limit) begin next_f ; if f(current_state) ) > f_limit then return(null, f(current_state)); if current_state is a goal then return(current_state current_state, f_limit); while current_state has unexamined children do begin child := next unexamined child of current_state; (solution, new_f) DFS-Contour( Contour(child, f_limit); if solution null then return(current_state current_state+solution, f_limit); next_f min(next_f next_f, new_f ); end return(null, next_f); end.

A-0 f_limit=? A-0 f_limit=0 B- 0 7

A-0 f_limit=0 E- B- 0 A-0 f_limit=0 B- 0 E- F- 8

A-0 B- 0 C- 0 f_limit=0 E- F- A-0 B- 0 C- 0 f_limit=0 E- F- G- 9

A-0 B- 0 C- 0 f_limit=0 E- F- G- H- A-0 B- 0 C- 0 D- f_limit=0 E- F- G- H- 0

A-0 0 f_limit= A-0 f_limit= B- 0

A-0 f_limit= E- B- 0 A-0 f_limit= B- 0 E- F-

A-0 B- 0 C- 0 f_limit= E- F- A-0 B- 0 C- 0 f_limit= E- F- G-

A-0 B- 0 C- 0 f_limit= E- F- G- H- A-0 B- 0 C- 0 f_limit= E- F- G- H- O-

A-0 B- 0 C- 0 f_limit= E- F- G- H- O- P- A-0 B- 0 C- 0 D- f_limit= E- F- G- H- O- P-

A-0 0 f_limit= A-0 f_limit= B- 0

A-0 f_limit= E- B- 0 A-0 f_limit= B- 0 E- F- 7

A-0 B- 0 C- 0 f_limit= E- F- A-0 B- 0 C- 0 f_limit= E- F- G- 8

A-0 B- 0 C- 0 f_limit= E- F- G- H- A-0 B- 0 C- 0 f_limit= E- F- G- H- O- 9

A-0 B- 0 C- 0 f_limit= E- F- G- H- O- P- A-0 B- 0 C- 0 D- f_limit= E- F- G- H- O- P- 0

A-0 B- 0 C- 0 D- f_limit= E- F- G- H- I- O- P- 7 A-0 B- 0 C- 0 D- 7 f_limit= E- F- G- H- I-7 J- O- P- 7 7

A-0 0 f_limit= A-0 f_limit= B- 0

A-0 f_limit= E- B- 0 A-0 f_limit= K- 7 E- B- 0

A-0 f_limit= E- K-7L- B- 7 0 A-0 f_limit= K-7L- B- E- F- 7 0

A-0 f_limit= K- 7 L- B- E- F- 0 A-0 f_limit= K- 7 L- T- B- E- F- 0

A-0 f_limit= B- E- F- 0 K-7L- M- 7 T- A-0 B- 0 C- 0 f_limit= E- F- K-7L- M- 7 T-

A-0 B- 0 C- 0 f_limit= E- F- G- K-7L- M- 7 T- A-0 B- 0 C- 0 f_limit= E- F- G- K-7L- M- 7 T- N- 7 7

A-0 B- 0 C- 0 f_limit= E- F- G- H- K-7L- M- 7 T- N- 7 A-0 B- 0 C- 0 f_limit= E- F- G- H- K-7L- M- 7 T- N- 7 O- 8

A-0 B- 0 C- 0 f_limit= E- F- G- H- K-7L- M- 7 T- N- 7 O- P- A-0 B- 0 C- 0 f_limit= E- F- G- H- K-7L- M- 7 N- 7 O- P- T- U-0 9

A-0 B- 0 C- 0 D- f_limit= E- F- G- H- K-7L- M- 7 N- 7 O- P- T- U-0 A-0 B- 0 C- 0 D- f_limit= E- F- G- H- I- K-7L- M- 7 N- 7 O- P- 7 T- U-0 0

A-0 B- 0 C- 0 D- 7 f_limit= E- F- G- H- I-7 J- K-7L- M- 7 N- 7 O- P- 7 7 T- U-0 A-0 0 f_limit=

A-0 f_limit= B- 0 A-0 f_limit= E- B- 0

A-0 f_limit= K- 7 E- B- 0 A-0 f_limit= E- K-7L- B- 7 0

A-0 f_limit= E- K-7L- B- 7 T- 0 A-0 f_limit= K-7L- B- E- F- 7 T- 0

A-0 f_limit= K- 7 L- T- B- E- F- 0 A-0 f_limit= K- 7 L- T- B- E- F- 0

A-0 f_limit= B- E- F- 0 K-7L- M- 7 T- A-0 B- 0 C- 0 f_limit= E- F- K-7L- M- 7 T-

A-0 B- 0 C- 0 f_limit= E- F- G- K-7L- M- 7 T- A-0 B- 0 C- 0 f_limit= E- F- G- K-7L- M- 7 T- N- 7 7

A-0 B- 0 C- 0 f_limit= E- F- G- H- K-7L- M- 7 T- N- 7 A-0 B- 0 C- 0 f_limit= E- F- G- H- K-7L- M- 7 T- N- 7 O- 8

A-0 B- 0 C- 0 f_limit= E- F- G- H- K-7L- M- 7 T- N- 7 O- P- A-0 B- 0 C- 0 f_limit= E- F- G- H- K-7L- M- 7 N- 7 O- P- T- U-0 9

A-0 B- 0 C- 0 f_limit= E- F- G- H- K-7L- M- 7 N- 7 O- P- T- U-0 koniec! Algorytm IDA * : charakterystyka Cechy szczególne Brak historii nie ma list OPEN i CLOSED Niższe wymagania pamięciowe niż A * - proporcjonalne do najdłuższej badanej ścieżki - O(bd bd) Limit wartości f w następnej iteracji jest najmniejszą wartości cią spośród d wszystkich tych ocen, które przekroczyły y aktualny limit sukcesywnie powiększany obszar przeszukiwania Żadna ścieżka w trakcie przeszukiwania nie może e mieć kosztu o wartości, która byłaby między dwoma kolejnymi limitami na wartość f Optymalny i pełny dla tych samych warunków w co algorytm A * Wady W grafach DAG wielokrotnie może e docierać do tego samego stanu różnymi r ścieżkami Słabe wykorzystanie pamięci: kiedy ocena heurystyczna dla każdego stanu jest inna, to liczba nowych stanów, którego zostaną objęte przeszukiwaniem w kolejnej iteracji wynosi dokładnie (dla N różnych r stanów w konieczne będzie b wykonanie N iteracji!!!) 70

Heurystyczne przeszukiwanie grafów w gier dwuosobowych Wykład Informatyka Studia Inżynierskie Teoria gier w dziedzinie SI Liczba graczy jednoosobowe, dwuosobowe oraz wieloosobowe Suma wypłat gry o sumie zerowej (zyski i straty uczestników bilansują się) gry o sumie niezerowej (wygrane i przegrane nie muszą się bilansować) Dostępna wiedza gry z pełną informacją (precyzyjna wiedza o sytuacji i celach przeciwnika) gry z niepełną informacją (brak wiedzy na temat przeciwnika, czynnik losowy źródłem niepewności) 7

Gry dwuosobowe - przeszukiwanie heurystyczne Dwóch przeciwników w posiadających pełną informację o stanie gry i wszystkich możliwych ruchach Jeden gracz nosi nazwę Max,, bo: maksymalizuje rezultat końcowy każdy wzrost wartości oznacza poprawę dla tego gracza i równowar wnoważną stratę dla przeciwnika Drugi gracz nosi nazwę Min,, bo: minimalizuje rezultat końcowy każdy spadek wartości oznacza poprawę dla tego gracza i równowar wnoważną stratę dla przeciwnika Zasada min- 8 8 7 min 8 9 9 8 7 7 8 9 9 8 7 7

Min- wynik! 8 8 7 min 8 9 9 8 7 7 8 9 9 8 7 Algorytm min- wywołanie: result = MinMax(s,, MAXDEPTH, MAX) int MinMax(state s, int depth, int type) { if( is_terminal_node(s) ) depth==0 ) return(eval(s)); if( type == MAX ){ best = - ; for(child=; child<=numofsucc(s); child++) { val = MinMax(Succ(s,child), depth-, MIN); if( val > best ) best = val; } //endfor } else { // type == MIN best = ; for(child=; child<=numofsucc(s); child++) { val = MinMax(Succ(s,child), depth-, MAX); if( val < best ) best = val; } //endfor } return best; } 7

Przykład min- - gra NIM - korzeń MAX 7 - - - - - - - -- -- - -- -- - MAX MIN MAX --- - --- --- Ocena: mniejsza wartość ---- ---- - bo wygrał wygrana MIN MIN większa wartość bo wygrał wygrana MAX ----- MAX MIN MAX MIN Przykład min- - gra NIM - korzeń MIN 7 MIN - - - -- - -- - -- -- MAX MIN --- - - --- --- Ocena: mniejsza wartość ---- - ---- bo wygrał wygrana MIN MAX większa wartość bo wygrał wygrana MAX ----- - MIN MAX MIN MAX 7

Zasada nega 8 8 7-8 - -7-8 -9 - -9-8 -7 8 9 9 8 7 (y) y = -min min = (x) x = - (z) 7 8 9 9 8 7 z Algorytm neg- wywołanie: result = NegMax(s,, MAXDEPTH) int NegMax(state s, int depth) { if( is_terminal_node(s) ) depth==0 ) return(eval(s,depth Eval(s,depth)); ); best = - ; for(child=; child<=numofsucc(s); child++) { val = -NegMax(Succ(s,child), depth-); if( val > best ) best = val; } //endfor return best; } Funkcja heurystycznej oceny stanu musi uwzględnia dniać,, kto wykonywałby ruch w ocenianym stanie. Jeżeli eli gracz MAX to ocena jest w postaci prostej, jeśli gracz MIN - w postaci zanegowanej. 7

Przykład nega- - gra NIM - ruch MIN 7 - -MIN - - - -- -- - -- - -- MAX -MIN Ocena: MIN wartość zanegowana MAX wartość prosta --- - --- --- - - ---- przegrał MIN ---- wartość zaneg. przegrał MAX ----- - wartość prosta MAX -MIN MAX Przykład nega- - gra NIM - ruch MAX 7 - MAX - - - -- -- - -- - -- -MIN MAX Ocena: MIN wartość zanegowana MAX wartość prosta --- - --- --- - - ---- przegrał MAX ---- wartość prosta przegrał MIN ----- - wartość zanegowana -MIN MAX -MIN 7

Kółko i krzyżyk yk - heurystyka Funkcja oceny heurystycznej stanu gry - różnica liczby możliwych wygranych gracza X i gracza O Gracz X ma możliwych wygranych Gracz O ma możliwych wygranych E(n) = - = Gracz X ma możliwych wygranych Gracz O ma możliwych wygranych E(n) = - = - Gracz X ma możliwych wygranych Gracz O ma możliwych wygranych E(n) = - = Kółko i krzyżyk yk - przykład gry() - Ruch MAXa - -= -=0=0 -= -=0=0 -= =- -= -=. głęg łębokość= -= =- -=0=0 -= =- -=0=0 -= =- 77

. głęg łębokość= Kółko i krzyżyk yk - przykład gry() -= -= -= -= -= -= 0 Ruch MAXa -= -=0=0 -= -=0=0 -= -= 0 -= -= -= -= -= -= -= -= -=0=0 Kółko i krzyżyk yk - przykład gry() - Ruch MAXa -= -= -= -= - -= -= -= - - - - -= -=0=0 -= - -= -= -=. głęg łębokość= - -=0=0 -=0=0 -= 78

Algorytm min- (lub nega) Przyjmując c określony branching factor (b)) oraz stałą głębokość przeszukiwania (d)( Złożoność pamięciowa O(bd) Złożoność czasowa O(b d ) Czy można ten wynik poprawić? Tak! Branch&bound Ograniczenie dolne - odcięciecie... 7 9 odcięcie cie...min Analiza lewego poddrzewa pokazała, a, że e MAX ma ruch o wartości. Po sprawdzeniu lewego liścia środkowego poddrzewa widać, że e wartość drugiego ruchu będzie b mniejsza lub równa r (w stanie tym decyduje MIN!). Analiza pozostałych ruchów MINa nie ma zatem sensu, gdyż decyzja MAXa w korzeniu grafu nie może e już ulec zmianie niezależnie od ich wartości. 79

Ograniczenie górne g - odcięciecie...min 9 odcięcie cie... 9 Analiza lewego poddrzewa pokazała, a, że e MIN ma ruch o wartości. Po sprawdzeniu lewego liścia środkowego poddrzewa widać, że e wartość drugiego ruchu MINa będzie większa lub równa r 9 (w stanie tym decyduje MAX!). Analiza pozostałych ruchów MAXa nie ma zatem sensu, gdyż decyzja MINa w korzeniu grafu nie może e już ulec zmianie niezależnie od ich wartości. Odcięcia cia - : : przykład min 7 8 9 9 8 7 80

Odcięcia cia - 7 min 7 8 9 9 8 7 Odcięcia cia - 7 8 min 7 8 9 9 8 7 8

Odcięcia cia - 7 8 8 min 7 8 9 9 8 7 Odcięcia cia - 7 8 8 9 min 7 8 9 9 8 7 8

Odcięcia cia - 8 7 9 8 9 min 7 8 9 9 8 7 Odcięcia cia - 8 8 7 9 8 9 min 7 8 9 9 8 7 8

Odcięcia cia - 8 8 8 7 9 8 9 min 7 8 9 9 8 7 8 8 7 9 8 9 Odcięcia cia - 8 min 7 8 9 9 8 7 8

8 8 7 9 8 9 Odcięcia cia - 8 min 7 8 9 9 8 7 Odcięcia cia - 8 8 8 7 9 8 9 min 7 8 9 9 8 7 8

Odcięcia cia - 8 8 8 7 9 8 9 min 7 8 9 9 8 7 Odcięcia cia - 8 8 8 7 9 8 9 min 7 8 9 9 8 7 8

Odcięcia cia - 8 8 8 7 9 8 9 min 7 8 9 9 8 7 Odcięcia cia - 8 8 8 7 9 8 9 8 min 7 8 9 9 8 7 87

Odcięcia cia - 8 8 8 7 9 8 8 9 8 min 7 8 9 9 8 7 Odcięcia cia - 8 8 8 7 9 8 8 9 8 8 min 7 8 9 9 8 7 88

Odcięcia cia - 8 8 8 7 9 8 8 9 8 8 min 7 8 9 9 8 7 Odcięcia cia - 8 7 8 8 8 9 8 9 8 8 8 min 7 8 9 9 8 7 89

Odcięcia cia - 8 8 7 8 8 8 9 8 9 8 8 8 min 7 8 9 9 8 7 Mechanizm odcięć alfa-beta Dwa ograniczenia: dolne ograniczenie dla wierzchołków Max (najwyższa wartość jaką dotychczas osiągn gnął gracz Max) górne ograniczenie dla wierzchołków Min (najniższa wartość jaką dotychczas osiągn gnął gracz Min) Wartość ograniczenia ustalana jest w wierzchołku Max,, a wartość ograniczenia - w wierzchołku Min Odcięcie cie wykonywane jest w wierzchołku Min, a odcięcie cie - w wierzchołku Max Kiedy tylko zachodzi warunek, nie ma potrzeby analizowania dalszych następnik pników w danego stanu 90

Algorytm AlfaBeta (zapis min-) ) wywołanie: result = AlphaBeta(s, MAXDEPTH, -,, MAX) int AlphaBeta(state s,int depth,int alpha,int beta,int type) { if( is_terminal_node(s) depth == 0 ) return(eval(s)); if( type == MAX){ for(child=; child<=numofsucc(s); child++) { val = AlphaBeta(Succ(s,child),depth-,,alpha,beta,,beta,MIN); alpha = (val val,, alpha); if( alpha >= beta ) return beta; //cutoff } //endfor return alpha; } else { // type == MIN for(child=; child<=numofsucc(s); child++) { val = AlphaBeta(Succ(s,child),depth-,alpha,,alpha,beta,MAX); beta = min(val val,, beta); if( alpha >= beta ) return alpha; //cutoff } //endfor return beta; } } Odcięcia cia - C = = = 0 A D 0 E 0 = 0 = B 0 min 9 0 7 A ma próg = (A nie będzie b większe niż ) B odcięcie cie dla,, bo > C ma próg = (C nie będzie b mniejsze niż ) D odcięcie cie dla,, bo 0 < E odcięcie cie dla,, bo < C ma wartość 9

Sformułowanie owanie neg- dla AlfaBeta Sformułowanie owanie min- wymaga przemiennych wywołań rekurencyjnych dwóch graczy (raz dla gracza MAX, dwa dla gracza MIN, itd.) Sformułowanie owanie neg- opiera się tylko na graczu MAX (jedna funkcja rekurencyjna) Przy wyjściu z rekurencji negujemy zwracaną wartość Czy to wystarczy? Nie! Przy zagnieżdżeniu eniu rekurencyjnym w wersji neg- negujemy ograniczenia i zamieniamy miejscami Algorytm AlfaBeta (zapis neg-) wywołanie: result = AlphaBeta(s, MAXDEPTH, -, ) int AlphaBeta(state s, int depth, int alpha, int beta) { if( is_terminal terminal_node(s) depth==0 ) return(eval Eval(s, (s,depth)); for(child=; child<=numofsucc(s); child++) { val = -AlphaBeta(Succ(s,child),depth-,,-beta,-alpha); } if( val > alpha ) alpha = val; if( alpha >= beta ) return beta; // cutoff } //endfor return alpha; // alpha=(val,alpha); 9

Cechy algorytmu AlfaBeta Ścieżka krytyczna (ang. principal variation) ścieżka w grafie przeszukiwania od korzenia do najlepszego liścia Wartości zwracane: w wersji min: : ze względu na gracza w korzeniu w wersji neg- : : ze względu na tego czyj jest ruch w liściu Bardzo zawikłany any kod ewentualny błęb łędy pozostają długo ukryte (problemy można zauważyć tylko wtedy, gdy niepoprawne wartości zostaną przepropagowane do korzenia grafu) Efektywność algorytmu zależy y w ogromnym stopniu od kolejności następnik pników w i występowania odcięć Analiza algorytmu AlfaBeta Sytuacja idealna jeśli odcięcie cie ma się pojawić,, to powinno wystąpi pić jak najszybciej, czyli najlepiej zaraz po sprawdzeniu pierwszego następnika 7 9 odcięcie cie 9 7 9? zmieniona kolejność 9

Odcięcia cia - (mniej odcięć ęć!) 8 8 = 8 7 = 8 8 8 = 8 8 9 = 9 9 =? 8 = 9 = = 8 9 8 8 8 min? 7 8 9 9 8 7 zmieniona kolejność Złożoność algorytmu AlfaBeta Dla danej głęg łębokości (d)( ) i stałego braching factor (b) Najlepszy przypadek: O(b d/ ) Najgorszy przypadek: brak odcięć (czyli jak MinMax) Średni przypadek: O(( ((b/log b) b d ) 9

Słabości algorytmu AlfaBeta Efekt horyzontu (ang. horizont effect) Niewidoczny spadek wartości stanu tuż za wyznaczoną głębokością przeszukiwania Występuje we wszystkich odmianach algorytmu Wykrywanie stanów w narażonych na wystąpienie efektu horyzontu i prowadzenia przeszukiwania za tym stanami - problem otwarty Rozszerzenia algorytmu AlfaBeta Doskonalenie funkcji oceny stanu (funkcji heurystycznej) Modyfikacje sposobu przeszukiwania grafu zastosowanie pamięci (np. tablica przejść ść) porządkowanie następnik pników manipulowanie zakresem - zmienna głęg łębokość przeszukiwania przeszukiwanie eksploracyjne Rozwiązania zania sprzętowe (np. obliczenia równolegr wnoległe) e) 9