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/