Marcel Stankowski Wrocław, 23 czerwca 2009

Transkrypt

Marcel Stankowski Wrocław, 23 czerwca 2009
Marcel Stankowski
Wrocław, 23 czerwca 2009
INFORMATYKA SYSTEMÓW AUTONOMICZNYCH
Przeszukiwanie przestrzeni rozwiązań, szukanie na ślepo, wszerz, w głąb .
Spis treści:
1. Wprowadzenie
3. str.
1.1 Krótki Wstęp
3. str.
1.2 Etapy formułowania problemu
3. str.
1.3 Metody przeszukiwania
3. str.
2. Przeszukiwanie na ślepo
5. str.
2.1 Przeszukiwanie wszerz
5. str.
2.2 Przeszukiwanie w głąb
6. str.
2.3 Przeszukiwanie ograniczone w głąb
6. str.
2.4 Przeszukiwanie dwukierunkowe
7. str.
3. Zastosowania
7. str.
4. Literatura
8. str.
1. Wprowadzenie
1.1 Krótki wstęp
Wiele problemów z jakimi spotykamy się na co dzień jest zbyt złożona byśmy mogli je
objąć w całości. Ilość możliwych kombinacji jest bardzo duża lub nieskończona, a my musimy
uzyskać jak najlepszy wynik, który pozwoli nam zaoszczędzić czas lub cenne dla nas środki.
W tym wypadku sięgamy bo naszą intuicję czy inteligencję i wybieramy rozwiązanie, które
wydaje się być ,,najrozsądniejsze”. Nie musi być ono optymalne, ale jest wystarczające dla naszych
potrzeb. Czasem jednak znalezienie rozwiązania optymalnego jest konieczne, bądź decyzja o
wybraniu określonego rozwiązania musi posiadać uzasadnienie. W tej sytuacji, w celu rozwiązania
problemu należy się zwrócić ku metodom formalnym.
1.2 Etapy formułowania problemu
Świat rzeczywisty jest zbyt złożony i zróżnicowany aby odwzorowywać go w sposób jak
najbardziej zbliżony do rzeczywistości. Dlatego jednym z podstawowych zadań w trakcie opisu
problemu jest sporządzenie modelu świata opisującego najważniejsze aspekty świata i
zachodzących w nich procesów. Należy w tym momencie zdecydować które elementy świata
rzeczywistego mają znaczenie w kontekście rozwiązywanego problemu, a które są w naszym opisie
zbędne i nie muszą być brane pod uwagę.
W kolejnym kroku należy dokładnie sformułować problem w sposób możliwie abstrakcyjny.
Im bardziej ogólny i niezależny będzie opis, tym lepsze rozwiązanie otrzymamy (lepsze, tzn mające
więcej zastosowań).
Gdy po etapach określenia reprezentacji problemu i jego sformułowaniu,
wybrana zostanie metoda rozwiązania, nim przystąpi się do jej implementacji warto się jeszcze
zastanowić nad wyborem reprezentacji danych. Jest to etap zależny od narzędzia którym się
posłużymy (dla informatyka będzie to komputer i kompilator wybranego języka programowania).
Wybór ten może być bardzo istotny i wpłynąć na czas i jakość rozwiązania.
1.3 Metody przeszukiwania
Istnieje wiele strategii przeszukiwania przestrzeni rozwiązań, a różnice
pomiędzy nimi są związane z kolejnością ekspansji stanów i kierunkiem poruszania się
po drzewie rozwiązań. Kolejny podział na podgrupy metod przeszukiwania można
przeprowadzić ze względu na rodzaj informacji wykorzystywanych przez daną metodę
w celu znalezienia rozwiązania. Strategie wykorzystujące informacje zawarte tylko w
definicji problemu nazywane są ślepymi i zostaną szczegółowo opisane w tym
opracowaniu. Do strategii ślepych zaliczają się:
• Przeszukiwanie wszerz
• Strategia jednolitego kosztu
• Przeszukiwanie wgłąb
• Przeszukiwanie ograniczone wgłąb
• Przeszukiwanie iteracyjne pogłębiane
• Przeszukiwanie dwukierunkowe
Strategie wykorzystujące dodatkowe informacje dotyczące problemu i jego
rozwiązania, jak oszacowania kosztu rozwiązania od stanu bieżącego do celu, czyli
próby określenia trafności wyboru przyjętego kierunku poszukiwań, zaliczają się do
metod heurystycznych. Przykładami tych metod są:
• Algorytmy genetyczne
• Symulowane wyżarzanie
• Tabu search
• Przeszukiwanie zachłanne
• i wiele innych...
W celu określenia wad i zalet poszczególnych metod przeszukiwania i dokonania
oceny dostarczanych przez nich rozwiązań, wykorzystuje się następujące kryteria:
• Zupełność – czy dana metoda zawsze znajduje rozwiązanie, w sytuacji
gdy ono istnieje?
• Złożoność czasowa – dotyczy całkowitej liczby wygenerowanych
węzłów, co przekłada się na czas potrzebny na te operacje.
• Złożoność pamięciowa – maksymalna liczba węzłów przechowywanych
w jednej chwili w pamięci.
• Optymalność – czy metoda pozwala znaleźć rozwiązanie optymalne
(o minimalnym, bądź maksymalnym koszcie)
W opisach powyższych kryteriów występują
symbole:
|V| - liczba węzłów
|E| - liczba krawędzi
2. Przeszukiwanie na ślepo
Metody przeszukiwania na ślepo charakteryzują się wykorzystaniem tylko
informacji zawartych w definicji problemu. Można tu wyróżnić strategię przeszukiwania wszerz
(warstwowo), w głąb, oraz połączenie obu metod.
2.1
Przeszukiwanie wszerz
Przeszukiwanie wszerz jest strategią warstwową. Rozpoczyna swoje działanie
od węzła korzenia i wykonuje ekspansję najpłytszego węzła, ze zbioru węzłów do tej
pory nie rozszerzonych.
Rys. 1. Przeszukiwanie wszerz
Zaletą tej metody jest to że zawsze dostarcza rozwiązanie i do tego optymalne. Złożoność
czasowa jest opisana wzorem:
O(|V| + |E|)
W pamięci przechowywany jest każdy odwiedzony do tej pory węzeł, stąd złożoność
pamięciowa również jest opisana wzorem: O(|V| + |E|).
Algorytm przeszukiwania wszerz jest prosty i dostarcza optymalnego rozwiązania (gdy
koszty akcji są jednakowe), lecz jego złożoność czasowa i pamięciowa w zasadzie eliminują go
jako metodę przeszukiwania dużych przestrzeni rozwiązań.
2.2
Przeszukiwanie wgłąb
Przeszukiwanie zaczyna się od korzenia i porusza się w dół do samego końca gałęzi, po
czym wraca się o jeden poziom i próbuje kolejne gałęzie itd.
Rys. 3. Przeszukiwanie w głąb
Złożoność pamięciowa przeszukiwania w głąb w przypadku drzewa jest o wiele mniejsza
niż przeszukiwania wszerz, gdyż algorytm w każdym momencie wymaga zapamiętania tylko
ścieżki od korzenia do bieżącego węzła, podczas gdy przeszukiwanie wszerz wymaga
zapamiętywania wszystkich węzłów w danej odległości od korzenia, co zwykle rośnie wykładniczo
w funkcji długości ścieżki.
Strategia ta zawodzi w sytuacji, gdy przeszukiwana przestrzeń rozwiązań ma
nieskończoną głębokość lub zawierających pętle.
Złożoność czasowa obu algorytmów jest proporcjonalna do sumy liczby wierzchołków i
liczby krawędzi w przeszukiwanym grafie. Mimo to algorytm przeszukiwania w głąb wydaje się
być bardziej przydatny i łatwiejszy w implementacji (rekurencja aż się prosi o zastosowanie).
2.3 Przeszukiwanie ograniczone wgłąb
Jest modyfikacją strategii przeszukiwania wgłąb. Wprowadza ograniczenie co do
maksymalnej głębokości zagłębiania się w graf rozwiązań. Jeżeli odległość do rozwiązania jest
mniejsza niż wprowadzona maksymalna głębokość to zostanie ono znalezione. W przeciwnym
wypadku znalezione zostanie rozwiązanie przybliżone (najlepsze wśród sprawdzonych węzłów).
Zaletą tej metody jest ,,uodpornienie” klasycznego algorytmu na pętle w grafie. Ma on
ciekawe zastosowania opisane w dalszej części pracy.
2.4 Przeszukiwanie dwukierunkowe
Strategia ta może wykorzystywać dowolną z opisanych metod. Wykonuje ona
równolegle dwa przeszukiwania: wprzód od stanu początkowego i w tył od stanu
końcowego. Najczęściej jest to przeszukiwanie wszerz. Pozwala ona skrócić średni czas znalezienia
rozwiązani o połowę.
Główną wadą wszystkich przedstawionych metod jest duża złożoność czasowa.
Przeszukiwanie grafu zawsze musi sprowadzić się do sprawdzenia wszystkich wierzchołków i
połączeń między nimi.
Szybsze wyniki można otrzymać metodami heurystycznymi, które jednak nie dają pewności
wyniku optymalnego. Ze względu na swoje podobieństwo do zachowań ludzkich świetnie nadają
się do modelowania sztucznej inteligencji.
3. Zastosowanie
Algorytmy przeszukiwania przestrzeni rozwiązań są ważną dziedziną współczesnej
informatyki.
Jednym z głównych zastosowań jest sztuczna inteligencja w grach komputerowych. Gry
takie jak kółko i krzyżyk, szachy, warcaby, GO mogą być sterowane prostymi algorytmami
przeszukiwania grafów. Także bardziej zaawansowane strategie w rozbudowanych algorytmach
sprowadzają się do znalezienia odpowiedniego rozwiązania z (bardzo) dużej przestrzenie
możliwości.
Innym aspektem związanym z przeszukiwaniem przestrzeni rozwiązań jest wyszukiwanie
najkrótszej ścieżki w grafie lub na planszy (mapie). Problem ten tyczy tylko jednego aspektu całej
gry (np. strategicznej), jest jednak niezmiernie ważny dla jakości rozgrywki z komputerowym
graczem. Ilość stanów w przypadku tego problemu może być ogromna, więc prawie zawsze
przeszukiwanie całej przestrzeni rozwiązań nie wchodzi w rachubę. Dodatkowo teren na mapie
może być zróżnicowany, więc przejścia między poszczególnymi stanami mogą się
charakteryzować różnymi kosztami. Natomiast zastosowanie metody przeszukiwania z ograniczoną
głębokością, nie tylko przyspieszy reakcje przeciwnika, lecz również za symuluje ograniczoną
widoczność na mapie, co wyrówna szanse gracza i komputera oraz pozytywnie wpłynie na realizm
rozgrywki.
Oprócz dziedziny gier komputerowych podane algorytmy mogą mieć wiele innych
zastosowań natury technicznej i/lub czysto teoretycznej.
Problem wyszukiwania najkrótszej ścieżki w grafie jest abstrakcyjnym modelem dla wielu
rzeczywistych problemów, od budowy topologicznej sieci strukturalnych po odnajdywanie ścieżek
krytycznych w procesie produkcyjnym przedsiębiorstwa. Może posłużyć do wyznaczania trasy w
nawigacjach GPS jak i do projektowania drukowanych płytek krzemowych.
Oczywiście to tylko niewielka część wszystkich możliwości. Dzięki takim problemom my,
informatycy wciąż mamy sporo pracy.
4. LITERATURA:
1. Robin J. Wilson, Wprowadzenie do teorii grafów.
2. Piotr Wróblewski, Algorytmy struktury danych i techniki programowania.
3. http://pl.wikipedia.org/