ESI 10 - Instytut Sterowania i Systemów Informatycznych

Transkrypt

ESI 10 - Instytut Sterowania i Systemów Informatycznych
Uniwersytet Zielonogórski
Wydział Elektrotechniki, Informatyki i
Telekomunikacji
Instytut Sterowania i Systemów Informatycznych
ELEMENTY SZTUCZNEJ INTELIGENCJI
Laboratorium nr 10
PRZESZUKIWANIE GRAFÓW Z WYKORZYSTANIEM METODY W GŁĄB
Prowadzący: …………………………………………………..
Zakres ćwiczeń:
1. Idea metody przeszukiwania w głąb
2. Implementacja metody przeszukiwania w głąb
3. Złożoność obliczeniowa metody przeszukiwania w głąb
Wstęp teoretyczny
Przeszukiwanie w głąb zaczyna się od korzenia i porusza się w dół do samego końca gałęzi, po czym
wraca się o jeden poziom wyżej aby testować kolejne gałęzi. Przeszukiwanie zawsze jest
prowadzone od ostatnio sprawdzanego węzła, którego nie wszystkie gałęzie były jeszcze
rozwijane. Główna operacją strategii w głąb jest ekspansja węzłów, tzn. generowanie
wszystkich ich potomków. Strategia w głąb może być nieskuteczna, gdy zostanie
zastosowana dla grafów o dużej głębokości. W tym przypadku wybieranie węzłów o coraz
większej głębokości mogłoby być nieskuteczne nawet w przypadku, gdyby węzeł celu miał
głębokość skończoną. Z tego powodu omawiana strategia jest zazwyczaj uzupełniania
mechanizmem kontroli ograniczenia głębokości. Najważniejszą cechą strategii w głąb jest
badanie kolejnych węzłów wzdłuż jednej ścieżki. Z tego powodu strategia ta jest naturalna
dla tych problemów i grafów, w których ocena właściwości węzłów zależy ściśle od oceny
właściwości ich rodziców. W strategii w głąb stosunkowo łatwo można oszacować
wymagania pamięciowe. W pamięci są przechowywane tylko węzły z aktualnie badanej
ścieżki grafu. Oszacowane koszty obliczeniowe strategii w głąb nie są zazwyczaj osiągane w
rzeczywistości.
Implementacja metody w głąb wymaga podobnie jak dla strategii wszerz zdefiniowania
dwóch list open oraz closed, na których przechowywane są węzły drzewa. Na liście open
przechowywane są węzły będące krawędzią drzewa a na liście closed węzły, które były już
wcześniej przeglądane. W kolejnych krokach wybierany jest ostatnio dodany węzeł na liście
open i stosowna jest dla niego ogólna procedura tzn. wybrany węzeł testowany jest czy
przechowuje stan docelowy, jeśli tak to koniec poszukiwań a jeśli nie to generowane są stany
potomne, które dopisywane są na koniec listy open a węzeł macierzysty przenoszony jest na
listę closed. Prześledźmy zachowanie się algorytmu oraz zawartości list open oraz closed w
kolejnych krokach dla przykładowego drzewa (Rys. 5). Inicjalizacja algorytmu wymaga
umieszczenia węzła korzenia na liście open. Każdy węzeł przechowywany na listach powinien
zawierać informację na temat swojego rodzica tak aby po znalezieniu stanu docelowego
możliwe było odtworzenie ścieżki będącej rozwiązaniem problemu.
Rys. 5. Przeszukiwanie wszerz (liczby określają kolejność przeglądania węzłów, węzeł G
przechowuje stan docelowy)
Kolejne stany list open i closed dla kolejnych kroków algorytmu (w nawiasach podawane są
węzły macierzyste):
a) Inicjalizacja:
open=A(-)
closed= pusta
b) Rozwinięcie węzła A:
open= D(A),C(A),B(A),
closed=A(-)
c) Rozwinięcie węzła B:
open= D(A),C(A),F(B),E(B)
closed=A(-),B(A)
d) Rozwinięcie węzła E:
open= D(A),C(A),F(B)
closed=A(-),B(A),E(B)
e) Rozwinięcie węzła F:
open= D(A),C(A)
closed=A(-),B(A),E(B), F(B)
f) Rozwinięcie węzła C:
open= D(A),C(A),H(C),G(C)
closed=A(-),B(A),E(B), F(B),C(A)
g) Rozwinięcie węzła G (znaleziono cel):
open= D(A),C(A),H(C)
closed=A(-),B(A),E(B), F(B),C(A),G(C)
Po znalezieniu węzła docelowego następuje odtworzenie ścieżki, która doprowadziła
do rozwiązania na podstawie listy closed oraz informacji o rodzicach węzłów.
Właściwości strategii w głąb:
złożoność czasowa O(bm)
złożoność pamięciowa O(bm)
algorytm nie jest kompletny
algorytm nie jest optymalny
gdzie b to współczynnik rozwijania a m to maksymalna głębokość grafu.
Zadania:
1. Zapoznaj się z problemem 8 elementowych puzli. Zadanie ułożenia puzzli sprowadza
się do wykonywania dozwolonych ruchów za pomocą poszczególnych elementów
puzzli tak aby osiągnąć zadany stan docelowy (rys. 6). Stan początkowy może być
generowany losowo.
Rys 6. Stan początkowy i stan docelowy
W celu uproszczenia rozważań oraz implementacji problemu należy pustą przestrzeń
w strukturze puzzli oznaczyć liczbą 0 i kolejne ruchy rozważać jako ruchy elementu 0.
Należy również zwrócić szczególną uwagę na stan początkowy, z którego rozpoczyna
się układanie puzzli ponieważ nie każdy stan końcowy może być osiągnięty z
wybranego stanu początkowego. Tylko połowa wszystkich możliwych stanów (czyli
rozkładów puzzli) może być osiągnięta z dowolnego stanu początkowego za pomocą
dozwolonych ruchów. W przypadku problemu układania puzzli przy użyciu metody
wszerz lub w głąb należy zwrócić uwagę na możliwość wystąpienia cykli w grafie, w
którym będzie poszukiwany stan docelowy (powtarzanie się tych samych ułożeń
puzzli). Implementowany algorytm musi śledzić ponowne wystąpienia stanów, które
wcześniej były już analizowane i odrzucać je co pozwoli uniknąć utykania algorytmu w
cyklach. Implementacja strategii wszerz oraz w głąb dla przedstawionego problemu
puzzli wymaga określenia struktury danych pozwalającej przechowywać pojedynczy
stan puzzli (np. tablica 3x3) oraz implementację list open i closed w postaci list
dynamicznych jednokierunkowych lub dwukierunkowych, na których będą
przechowywane węzły, które przechowują między innymi informację o stanie puzzli.
Poszczególne operacje na elementach list dynamicznych powinny zostać rozbite na
elementarne funkcje co znacząco ułatwia analizę algorytmu przeszukiwania oraz
przyśpiesza znajdowanie ewentualnych błędów.
2. Utwórz program do gry w puzzle gdzie decyzję o kolejnych ruchach będzie
podejmował komputer wykorzystując strategię przeszukiwania w głąb. Na wstępie
program powinien wylosować stan startowy a następnie po wyznaczeniu stanu
końcowego przedstawić sekwencje ruchów prowadzącą do stanu ułożenia.
3. Porównaj wyniki osiągnięte dla problemu układania puzli z wykorzystaniem strategii
wszerz i w głąb
Literatura:
1. Rutkowska D.,Piliński M., Rutkowski L.: Sieci neuronowe. Algorytmy genetyczne i
systemy rozmyte, PWN, Warszawa, 1997.
2. Mulawka J. J. Systemy ekspertowe, WNT, Warszawa 1996.
3. Brandys Cz, Fujarewicz K, Gałuszka A., Simek K., Świrniak K., Wojciechowski K. :
Metody sztucznej Inteligencji – Laboratorium, Wydawnictwo Politechniki Ślaskiej,
Gliwice 1998.
4. Rich E.: Artificial intelligence. McGraw-Hill, New York 1983.
5. http://aima.cs.berkeley.edu/