Zadanie nr 1.
Transkrypt
Zadanie nr 1.
Zadanie 1. Poszukiwanie drogi w labiryncie 1 Problem Napisać program implementujący algorytm zachłanny przeznaczony do poszukiwania drogi w labiryncie. 2 Reprezentacja problemu Obszar poszukiwań pokrywamy kwadratową kratą. Liczba oczek kraty zależy od stopnia złożoności pejzażu, w którym porusza się agent (np. robot). Przykładowy labirynt przedstawia poniższy rysunek: Rysunek 1: Przykładowy labirynt. Wejście i wyjście wskazują szare kwadraty: kwadrat w pierwszej kolumnie trzeciego wiersza to wejście, a wyjście znajduje się w ostatniej kolumnie ósmego wiersza. Przeszkody, oraz ściany labiryntu, oznaczono czarnymi kwadratami. Pokrywamy go kwadratową siatką dobierając odpowiednio rozmiar oczka. W naszym przypadku potrzebujemy 10 × 15 kwadratów. Do reprezentacji uzyskanej w ten sposób przestrzeni poszukiwań zastosujemy tablicę int[][] o wymiarze 10×15. Poszczególne elementy tej tablicy wypełniamy symbolami 0 lub 1. Jeżeli w danym polu znajduje się przeszkoda, oznaczamy je symbolem 0, a jej brak – symbolem 1. Na oznaczenie wejścia i wyjścia można także zastosować dodatkowe symbole, np. w polu o współrzędnych [2][0] można wstawić symbol 2 oznaczający wejście do labiryntu, a w polu [7][14] symbol 3 oznaczający wyjście z labiryntu. 3 Założenia Przyjmujemy, że: • Agent może poruszać się w jednym z czterech kierunków: Lewo, Prawo, Góra, Dół. 1 • Wartość funkcji heurystycznej oblicza się w oparciu o odległość Manhattan, tzn. skoro wyjście znajduje się w polu o współrzędnych (7, 14), to polu (stanowi) s o współrzędnych (sx , sy ) przypisujemy wartość h(s) = |sx − 7| + |sy − 14|. 4 Pytania (a) Napisać program zwracający trasę pozwalającą przejść przez labirynt. (b) Sprawdzić na ile trasa ulegnie zmianie, jeżeli przyjmiemy, że agent może poruszać się także po przekątnych, a więc przechodzić do sąsiednich pól danego pola (o ile tylko są one wolne). (c) Porównać uzyskane wyniki z wynikami zwracanymi przez algorytm A∗ . Aby zaimplementować ten ostatni przyjąć, że funkcja g(s) jest równa liczbie pól, które musiał przebyć agent aby przejść od wejścia do pola s. UWAGA: Program powinien być zaopatrzony w komentarze dotyczące roli ewentualnych klas, używanych w nich poszczególnych metod, oraz przeznaczenia użytych zmiennych. 2