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