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

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

Wyznaczanie optymalnej trasy problem komiwojażera

Metody przeszukiwania

Wybrane podstawowe rodzaje algorytmów

Modele i narzędzia optymalizacji w systemach informatycznych zarządzania

Algorytm Dijkstry znajdowania najkrótszej ścieżki w grafie

Heurystyczne metody przeszukiwania

Algorytmy wyznaczania centralności w sieci Szymon Szylko

Ćwiczenie 1 Planowanie trasy robota mobilnego w siatce kwadratów pól - Algorytm A

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

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

Algorytmika Problemów Trudnych

TEORETYCZNE PODSTAWY INFORMATYKI

Matematyczne Podstawy Informatyki

5c. Sieci i przepływy

Planowanie drogi robota, algorytm A*

1. Algorytmy przeszukiwania. Przeszukiwanie wszerz i w głąb.

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

Badania operacyjne: Wykład Zastosowanie kolorowania grafów w planowaniu produkcji typu no-idle

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

ĆWICZENIE 1: Przeszukiwanie grafów strategie heurystyczne

Algorytmy mrówkowe (optymalizacja kolonii mrówek, Ant Colony optimisation)

Temat 9. Zabłocone miasto Minimalne drzewa rozpinające

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

Wykorzystanie algorytmów mrówkowych w dynamicznym problem

Rozwiązywanie problemów metodą przeszukiwania

Algorytmy i str ruktury danych. Metody algorytmiczne. Bartman Jacek

Metoda podziału i ograniczeń

Programowanie dynamiczne i algorytmy zachłanne

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

SZTUCZNA INTELIGENCJA

Heurystyki. Strategie poszukiwań

Podstawy sztucznej inteligencji

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

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

Programowanie sieciowe. Tadeusz Trzaskalik

Informatyka w szkole - algorytm Dijkstry dla każdego. Krzysztof Diks Instytut Informatyki, Uniwersytet Warszawski

Wstęp do programowania

Algorytm chińskiego listonosza Katarzyna Ignaszewska SPI51. Temat: Problem chińskiego listonosza, czyli jak obejść miasto najmniejszym nakładem sił.

Zad. 1 Zad. 2 Zad. 3 Zad. 4 Zad. 5 SUMA

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

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

Elementy teorii grafów Elementy teorii grafów

Programowanie liniowe

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

Materiały dla finalistów

Algorytmiczna teoria grafów

Minimalne drzewa rozpinające

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

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

Programowanie celowe #1

ALGORYTMY I STRUKTURY DANYCH

Wykład 3. Złożoność i realizowalność algorytmów Elementarne struktury danych: stosy, kolejki, listy

Digraf. 13 maja 2017

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

mgr Anna Bernaciak Wyższa Szkoła Logistyki Badania operacyjne II Zagadnienie komiwojażera Zadanie 1 Rozwiązanie zadania 1. Krok i to minimalny

Problemy z ograniczeniami

Wykład 10 Grafy, algorytmy grafowe

Politechnika Gdańska Wydział Elektrotechniki i Automatyki Katedra Inżynierii Systemów Sterowania

MODELE SIECIOWE 1. Drzewo rozpinające 2. Najkrótsza droga 3. Zagadnienie maksymalnego przepływu źródłem ujściem

B.B. 2. Sumowanie rozpoczynamy od ostatniej kolumny. Sumujemy cyfry w kolumnie zgodnie z podaną tabelką zapisując wynik pod kreską:

Tabele przestawne tabelą przestawną. Sprzedawcy, Kwartały, Wartości. Dane/Raport tabeli przestawnej i wykresu przestawnego.

Maciej Piotr Jankowski

Klasyczne zagadnienie przydziału

EGZAMIN - Wersja A. ALGORYTMY I STRUKTURY DANYCH Lisek89 opracowanie kartki od Pani dr E. Koszelew

Rys Wykres kosztów skrócenia pojedynczej czynności. k 2. Δk 2. k 1 pp. Δk 1 T M T B T A

Problem skoczka szachowego i inne cykle Hamiltona na szachownicy n x n

MATEMATYKA DYSKRETNA - MATERIAŁY DO WYKŁADU GRAFY

PRACA DYPLOMOWA MAGISTERSKA

Złożoność obliczeniowa zadania, zestaw 2

LABORATORIUM 7: Problem komiwojażera (TSP) cz. 2

Lista 4. Kamil Matuszewski 22 marca 2016

ZAGADNIENIE TRANSPORTOWE

Algorytm genetyczny (genetic algorithm)-

Matematyka dyskretna. Andrzej Łachwa, UJ, /10

Matematyka Dyskretna - zadania

Algorytmy Mrówkowe. Daniel Błaszkiewicz. 11 maja Instytut Informatyki Uniwersytetu Wrocławskiego

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

Algorytmy genetyczne

Znajdowanie wyjścia z labiryntu

Podstawy Sztucznej Inteligencji (PSZT)

Ogólne wiadomości o grafach

Wykład 4. Droga i cykl Eulera i Hamiltona

Analiza wielokryterialna wstęp do zagadnienia

Teoria grafów dla małolatów. Andrzej Przemysław Urbański Instytut Informatyki Politechnika Poznańska

Sortowanie. Bartman Jacek Algorytmy i struktury

Czy kwadrat da się podzielić na nieparzystą liczbę trójkątów o równych polach? Michał Kieza

OPTYMALIZACJA W LOGISTYCE

3. MINIMAX. Rysunek 1: Drzewo obrazujące przebieg gry.

Kolorowanie wierzchołków grafu

Modele całkowitoliczbowe zagadnienia komiwojażera (TSP)

Rozwiązaniem jest zbiór (, ] (5, )

Metody uporządkowania

Rozwiązania prac domowych - Kurs Pochodnej. x 2 4. (x 2 4) 2. + kπ, gdzie k Z

znalezienia elementu w zbiorze, gdy w nim jest; dołączenia nowego elementu w odpowiednie miejsce, aby zbiór pozostał nadal uporządkowany.

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

Graf. Definicja marca / 1

METODY ROZWIĄZYWANIA RÓWNAŃ NIELINIOWYCH

Rozwiązanie zadania 1. Krok Tym razem naszym celem jest, nie tak, jak w przypadku typowego zadania transportowego

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

Transkrypt:

Algorytm A* Opracowanie: Joanna Raczyńska 1.Wstęp Algorytm A* jest heurystycznym algorytmem służącym do znajdowania najkrótszej ścieżki w grafie. Jest to algorytm zupełny i optymalny, co oznacza, że zawsze zostanie znalezione najlepsze rozwiązanie. W metodzie tej istnieje zorganizowany model pamięciowy, który gwarantuje że każdy punkt może zostać odwiedzony. A* jest przykładem metody najpierw najlepszy. Algorytm A* działa najlepiej, gdy przestrzeń przeszukiwań jest przestrzenią drzewiastą. 2. Działanie algorytmu Działanie algorytmu oparte jest na minimalizacji funkcji celu jako suma funkcji kosztu ( ) oraz funkcji heurystycznej ( )., zdefiniowanej W każdym kroku algorytm A* przedłuża już utworzoną ścieżkę o kolejny wierzchołek grafu, wybierając taki, w którym wartość funkcji będzie najmniejsza. Funkcja określa rzeczywisty koszt dojścia do punktu (suma wag krawędzi które należą już do ścieżki oraz wagi krawędzi łączącej aktualny węzeł z ). Funkcja jest to funkcja zwana funkcją heurystyczną. Oszacowuje ona (zawsze optymistycznie) koszt dotarcia od punktu do wierzchołka docelowego. Prawidłowa funkcja heurystyczna musi spełniać dwa warunki: Warunek dopuszczalności: Warunek monotoniczności: gdzie, a oznacza punkt końcowy

Warunek dopuszczalności to wymieniony już wcześniej nadmierny optymizm. Funkcja heurystyczna to taka dobra wróżka, która niedoszacowuje gdy minimalizujemy koszt, a przeszacowuje gdy maksymalizujemy zysk. Warunek monotoniczności mówi o tym, że im bardziej przybliżamy się do rozwiązania, tym oszacowanie musi być coraz mniej optymistyczne. 3. Przykład najkrótsza droga z Gdańska do Krakowa Aby lepiej zobrazować działanie algorytmu, rozważmy przykład poszukiwania najkrótszej drogi prowadzącej z Gdańska do Krakowa. Poniższy graf przedstawia dozwolone połączenia między miastami oraz odległości między nimi. Kolorem granatowym oznaczono odległości (w linii prostej) od danego miasta do Krakowa.

Taki graf wydaje się intuicyjny i czytelny. Jeśli jednak zechcemy zbudować graf problemu z punktu widzenia algorytmu A*, będzie on wyglądał zupełnie inaczej. Przestrzenią przeszukiwań algorytmu jest bowiem przestrzeń niepełnych ścieżek rozpoczynających się w Gdańsku, nie zaś, jak mogłoby się w pierwszej chwili wydawać, graf miast. Poniższy graf przedstawia fragment przestrzeni przeszukiwań algorytmu. Czerwone liczby oznaczają rzeczywiste długości opisywanych ścieżek. Obliczamy je korzystając z pierwszego grafu. I tak na przykład, obliczając długość ścieżki z Gdańska do Warszawy przez Bydgoszcz sumujemy odległości: z Gdańska do Bydgoszczy (165) oraz z Bydgoszczy do Warszawy (270) i otrzymujemy liczbę 435. Oznacza to tyle, że jadąc z Gdańska do Warszawy przez Bydgoszcz dozwoloną trasą, pokonamy dokładnie 435km. Czerwone liczby oznaczają więc naszą funkcję kosztu. Liczby granatowe, podobnie jak na pierwszym rysunku, oznaczają odległość w linii prostej z miasta kończącego ścieżkę do Krakowa. Jak wszyscy wiemy, między dwoma punktami nie można wyznaczyć krótszej drogi niż linia prosta. Oznacza to tyle, że np. znajdując się w węźle GdWaKi, po pokonaniu dokładnie 555 km (z Gdańska przez Warszawę do Kielc) do Krakowa mamy jeszcze minimum 115km, co stanowi dolne oszacowanie odległości koniecznej do osiągnięcia celu. Granatowe liczby opisują więc naszą dobrą wróżkę - funkcję heurystyczną. Liczby zielone określają dla każdego węzła wartość sumaryczną funkcji kosztu i funkcji heurystycznej czyli naszą funkcję celu którą będziemy minimalizować -.

Zasymulujmy teraz działanie algorytmu A* dla danego grafu (przy założeniu że pominięte w grafie węzły mają gorsze wartości funkcji celu). Rozpoczynamy w Gdańsku, a następnie w każdym kolejnym kroku dodajemy do ścieżki jedno miasto, przyjmując za kryterium jak najmniejszą wartość funkcji celu. W pierwszym kroku mamy więc do wyboru: pojechać z Gdańska do Bydgoszczy ( ) lub z Gdańska do Warszawy ( ) (dla uproszczenia pominęliśmy ścieżki z Gdańska do Olsztyna i Szczecina). Wybieramy więc ścieżkę GdBy ( ). Następnie rozwijamy węzeł GdBy, co oznacza obliczenie wartości funkcji celu dla węzłów GdByL i GdByWa. Pozwala nam to wybrać optymalny węzeł GdByL( ). Po jego rozwinięciu otrzymujemy wartość optymalną przedłużonej ścieżki GdByLKa ( ).

I tutaj następuje krok algorytmu, na który należy zwrócić uwagę. W aktualnej ścieżce, optymalna wartość ostatniego nierozwiniętego węzła to. Należy jednak pamiętać, że węzeł który nie został rozwinięty na samym początku algorytmu (GdWa) ma mniejszą wartość funkcji celu ( ). Dlatego w podanej sytuacji algorytm wykona nawrót, a następnym rozwiniętym węzłem nie będzie GdByLKa a GdWa. Jak się okazuje po rozwinięciu tego węzła, wszystkie wartości jego potomków mają większą wartość funkcji celu niż ścieżka GdByLKa ( ), więc nastąpi powrót do ścieżki GdByLKa, jednakże aby uniknąć lokalności i zachłanności w działaniu algorytmu, konieczne jest branie pod uwagę wszystkich nierozwiniętych węzłów. Ostatecznie rozwijając węzeł GdByLKa dochodzimy do optymalnego rozwiązania GdByLKaKr ( ).

4. Przykłady innych zastosowań algorytmu A* Algorytm A* może również posłużyć do rozwiązania problemu komiwojażera. Podobnie jak poprzednio przestrzeń przeszukiwań zawierać będzie ścieżki. Możemy wówczas sprowadzić problem do problemu poszukiwania najkrótszej ścieżki w grafie. Wiemy, że musimy stworzyć ścieżkę zawierającą krawędzi, oznaczmy więc jako liczbę krawędzi, które już wykorzystaliśmy. Wtedy funkcją heurystyczną może być na przykład iloczyn liczby krawędzi pozostałych do wykorzystania i wagi najtańszej krawędzi wtedy taka funkcja na pewno będzie nadmiernie optymistyczna. Dokładniejsze oszacowanie daje nam funkcja heurystyczna zdefiniowana jako suma najmniejszych wag niewykorzystanych jeszcze krawędzi.

Innym sposobem rozwiązania problemu komiwojażera za pomocą algorytmu heurystycznego jest przekształcenie problemu do problemu sortowania. Przestrzenią przeszukiwań jest wówczas przestrzeń permutacji miast. Taka struktura przestrzeni nie jest jednak strukturą drzewiastą, więc nie mówimy tu o funkcji heurystycznej, a co za tym idzie nie można w tym przypadku użyć algorytmu A*. Kolejnym przykładem zastosowania algorytmu może być rozwiązanie łamigłówki piętnastka. Przestrzenią przeszukiwań będą wówczas sekwencje przekształceń prowadzących do rozwiązania, W każdym kroku mówimy w którą stronę ma się przesunąć puste miejsce. Przestrzeń przeszukiwań staje się więc przestrzenią drzewiastą. Funkcją kosztu będzie liczba ruchów jakie wykonaliśmy do tej pory. Funkcją heurystyczną może być wartość mówiąca o tym ile kwadratów jest nie na swoim miejscu. Wtedy jeśli np. 13 kwadratów nie jest na swoim miejscu, to trzeba wykonać minimum 13 ruchów by je prawidłowo ustawić. Warunek dopuszczalności jest więc spełniony. Łatwo zauważyć, że również warunek monotoniczności jest spełniony, gdyż albo przesuniemy kwadracik (koszt +1) i on wejdzie na swoje miejsce (funkcja heurystyczna -1), albo przesuniemy kwadracik (koszt +1) i on nie wejdzie na swoje miejsce (funkcja heurystyczna bez zmian). Aby uzyskać dokładniejsze oszacowanie, możemy policzyć dla każdego kwadracika liczbę ruchów potrzebną aby przesunąć go na swoje miejsce, tak jakby na planszy nie było żadnego innego kwadracika.

5. Bibliografia 1. Notatki z wykładu przedmiotu ALHE, prowadzonego przez prof. Jarosława Arabasa w semestrze letnim 2015/2016 2. Slajdy wykładowe przedmiotu ALHE (źródło wiedzy i ilustracji) 3. Wikipedia