• Nie Znaleziono Wyników

Uniwersytet Zielonogórski Wydział Elektrotechniki, Informatyki i Telekomunikacji Instytut Sterowania i Systemów Informatycznych ELEMENTY SZTUCZNEJ INTELIGENCJI Laboratorium nr 9 PRZESZUKIWANIE GRAFÓW Z WYKORZYSTANIEM METODY WSZERZ Prowadzący: ………………………………

N/A
N/A
Protected

Academic year: 2021

Share "Uniwersytet Zielonogórski Wydział Elektrotechniki, Informatyki i Telekomunikacji Instytut Sterowania i Systemów Informatycznych ELEMENTY SZTUCZNEJ INTELIGENCJI Laboratorium nr 9 PRZESZUKIWANIE GRAFÓW Z WYKORZYSTANIEM METODY WSZERZ Prowadzący: ………………………………"

Copied!
6
0
0

Pełen tekst

(1)

Uniwersytet Zielonogórski Wydział Elektrotechniki, Informatyki i

Telekomunikacji

Instytut Sterowania i Systemów Informatycznych ELEMENTY SZTUCZNEJ INTELIGENCJI

Laboratorium nr 9

PRZESZUKIWANIE GRAFÓW Z WYKORZYSTANIEM METODY WSZERZ

Prowadzący: ………..

Zakres ćwiczeń:

1. Idea metody przeszukiwania wszerz

2. Implementacja metody przeszukiwania wszerz

3. Złożoność obliczeniowa metody przeszukiwania wszerz

Wstęp teoretyczny

Jedną z metod automatycznego rozwiązywania zadań, problemów np. przez komputery jest podejście opierające się na przeszukiwaniu możliwych stanów w jakich może znaleźć się zadanie w celu znalezienia stanu odpowiadającego rozwiązaniu problemu. Aby możliwa była implementacja wspominanych metod konieczne jest sprowadzenie zadania do odpowiedniej formy, dla której wymaga się zdefiniowania dla danego problemu lub zadania następujących pojęć:

• stan początkowy, opisujący stan, z którego rozpoczynamy poszukiwania rozwiązania

• przestrzeń stanów czyli zbiór stanów osiągalnych ze stanu początkowego w wyniku wykonania dozwolonych sekwencji akcji

• sekwencje operacji prowadzącą z jednego stanu do innego nazwać będziemy ścieżką

• akcje są zbiorem operacji jakie można wykonać na zadaniu, problemie aby przejść ze stanu bieżącego do innych dozwolonych stanów

• test dotarcia do celu określa czy zadanie lub problem reprezentowane przez odpowiedni stan zostało już rozwiązane

• rozwiązanie problemu lub zadania reprezentowane jest przez odpowiednią ścieżkę od stanu początkowego do znalezionego stanu docelowego.

Ogólną procedurę przeszukiwania przestrzeni stanów w poszukiwaniu docelowego stanu można przedstawić w postaci następującej sekwencji operacji:

a) sprawdzenie czy bieżący stan jest stanem poszukiwanym

b) rozwinięcie bieżącego stanu czyli wygenerowanie nowych stanów, które są osiągalne w wyniku wykonania dozwolonych akcji na stanie bieżącym

c) wybór jednego stanu ze zbioru stanów dozwolonych

d) uczynienie stanu bieżącego ze stanu wybranego w punkcie c

(2)

Cała procedura jest powtarzana aż do znalezienia rozwiązania albo do braku możliwości rozwijania nowych stanów. W wyniku generowania kolejnych stanów tworzony jest graf zawierający węzły reprezentujące rozwijane stany (Rys.1).

Rys. 1. Przykładowy graf

W przypadku grafu każdy ze stanów może być osiągnięty przez różne ścieżki co w praktycznych zagadnieniach może prowadzić do wielu problemów. Z tego względu często definiuje się dozwolone akcje rozwijające bieżący stan na nowe stany tak aby w wyniku tej operacji powstawało drzewo czyli acykliczny graf skierowany. Drzewo charakteryzuje się tym, że dowolna para stanów posiada dokładnie jedną ścieżkę, która je łączy co jest z punktu widzenia implementacji algorytmów przeszukiwania drzew bardzo istotną zaletą.

Przykładowa struktura drzewa oraz elementy składowe drzewa przedstawiono na rys. 2.

Należy zauważyć, że podstawowym elementem drzewa jest węzeł, który przechowuje informacje o stanie i dodatkowe informacje typu dowiązania do rodzica, dowiązania do potomków, itp.

Rys. 2. Elementy drzewa

Zbiór wszystkich liści w drzewie w danym momencie przeszukiwania nazywamy krawędzią (Rys. 3). Większość algorytmów przeszukiwania drzewa wymaga aby węzły drzewa, które tworzą krawędź były przetrzymywane w pamięci komputera ponieważ spośród elementów krawędzi wybierany jest jeden węzeł, który jest rozwijany w celu dalszych poszukiwań.

(3)

Rys.3 Węzły oznaczone na biało tworzą krawędź drzewa

Poszczególne metody przeszukiwania drzew różnią się strategią wybierania węzła z krawędzi drzewa w celu dalszych poszukiwań. Poszczególne strategie ocenia się pod względem następujących właściwości:

• kompletności poszukiwań (czy algorytm zapewnia znalezienie rozwiązania jeżeli rozwiązanie istnieje)

• optymalności strategii (czy znaleziona ścieżka do celu jest najkrótszą z możliwych)

• złożoności pamięciowej (jak rośnie zapotrzebowanie na pamięć wraz ze złożonością rozwiązywanego problemu)

• złożoności czasowej (jak rośnie liczba analizowanych węzłów wraz ze wzrostem złożoności problemu )

Istnieje wiele różnych metod i ich odmian nieinformowanego przeszukiwania drzew:

• metoda wszerz (breadth-first search)

• metoda w głąb (depth first search)

• metoda w głąb z limitem zagłębiania (depth-limited search)

• metoda dwukierunkowa (bidirectional search)

• metoda iteracyjnego zagłębiania (iterative deepening search)

• metoda stałych kosztów (uniform cost search)

W trakcie laboratorium analizie i implementacji poddane zostaną dwie najbardziej podstawowe strategie wszerz oraz w głąb.

Strategia poszukiwań wszerz

Strategia wszerz, bada kolejno poziomy grafu o jednakowej głębokości, przyznaje wyższy priorytet węzłom o mniejszej głębokości. Algorytm wyznacza węzeł celu o najmniejszej głębokości (w porównaniu z innymi węzłami celu). Główna operacją strategii wszerz jest ekspansja węzłów. Strategia ta daje gwarancję, że dla lokalnie skończonych grafów (czyli każdy węzeł ma skończoną liczbę potomków) osiągnie się węzeł celu, jeżeli istnieje. Tak więc strategia wszerz ma bardzo pożądaną cechę zbieżności. Dodatkowo, jako pierwsze wyznacza rozwiązanie optymalne pod względem długości ścieżki rozwiązania. Strategia wszerz ma jednak poważne wady. Analizowane są wszystkie węzły o głębokości mniejszej od głębokości wyznaczonego węzła celu. Zamiast jednej ścieżki w pamięci są przechowywane wszystkie węzły o danej głębokości przed wygenerowaniem jakiegokolwiek węzła o głębokości o jeden większej. Tak więc w strategii tej występują duże wymagania dotyczące pamięci. W każdym kroku strategii następują powroty do węzłów wygenerowanych i przechowywanych w pamięci od wielu kroków.

Implementacja metody wszerz wymaga 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

(4)

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 pierwszy 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. 4). 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. 4. 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=B(A),C(A),D(A) closed=A(-)

c) Rozwinięcie węzła B:

open=C(A),D(A),E(B),F(B) closed=A(-),B(A)

d) Rozwinięcie węzła C:

open=D(A),E(B),F(B),G(C),H(C) closed=A(-),B(A),C(A)

e) Rozwinięcie węzła D:

open=E(B),F(B),G(C),H(C),I(D),J(D) closed=A(-),B(A),C(A),D(A)

f) Rozwinięcie węzła E:

open=F(B),G(C),H(C),I(D),J(D) closed=A(-),B(A),C(A),D(A),E(B)

(5)

g) Rozwinięcie węzła F:

open= G(C),H(C),I(D),J(D)

closed=A(-),B(A),C(A),D(A),E(B),F(B)

h) Rozwinięcie węzła G (znaleziono cel):

open=H(C),I(D),J(D)

closed=A(-),B(A),C(A),D(A),E(B),F(B),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 wszerz:

 złożoność czasowa O(bd+1)

 złożoność pamięciowa O(bd+1)

 algorytm jest kompletny jeśli graf jest skończony

 algorytm jest optymalny

gdzie b to współczynnik rozwijania a d głębokość, na której znajduje się węzeł docelowy

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

(6)

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 wszerz. 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,

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/

Cytaty

Powiązane dokumenty

Przygotuj system ekspertowy w oparciu o wnioskowanie wstecz do zadania diagnostyki uszkodzenia zasilania elektrycznego dla mieszkania (szczegóły problemu

Parametry algorytmu: liczebność populacji, współczynnik modyfikacji, pułapka ewolucyjna, współczynnik degeneracji, liczba epok oraz współrzędne punktu alokacji

Dokonać operacji odwrotnej (plik ZAD1B.m), otrzymaną liczbę w zapisie dwójkowym przekonwertować na liczbę dziesiętną?. Czy otrzymana w ten sposób liczba jest

Do klasy Osoba oraz Adres musisz dodać właściwości przy pomocy, których będzie można uzyskać dostęp do pól klasy. Zabezpiecz program tak, aby nie można było utworzyć

Twoim zadaniem jest zaimplementowanie i przetestowanie hierarchii składającej się z następujących klas: Osoba, Student, Wykładowca oraz Stypendysta. Poszczególne

Twoim zadanie jest utworzenie programu, który wczytywałby dany zestaw, analizował go, a następnie generował raport w postaci pliku tekstowego, który

Serializacja (ang. Serialization) jest procesem konwersji stanu obiektu do postaci, która może być zachowana na dysku lub przesłana przez sieć komputerową.. Proces

Obciąż zaprojektowaną sieć sztucznym ruchem sieciowym wygenerowanym za pomocą oprogramowania dostarczonego przez prowadzącego zajęcia.. Sprawdź czy