Projekt 1
W ćwiczeniu 1 przedstawiliśmy przykład pliku opisującego labirynt. Plik miał format:
m n a11 . . . a1n
. . . am1 . . . amn
gdzie
m− liczba wierszy, n− liczba kolumn,
aij− kody poszczególnych pól labiryntu.
Przykład
Rysunek 1: Pola labryntu.
W pliku pierwsza linia zawiera liczbę wierszy, druga - liczbę kolumn, kolejne natomiast to opis pól w danym wierszu. Zatem linia 3 zawiera opis pól wiersza 1, linia 4 - opis pól wiersza drugiego, itd. Kolejne pola w wierszu rozdzielone są spacjami. Oto przykład labiryntu i odpowiadającego mu pliku z danymi:
Rysunek 2: Plansza labiryntu.
1
4 5
8 9 12 8 5 4 5 14 2 13 4 3 9 0 5 13 15 15 7 6
Projekt
Napisać program realizujący algorytm BFS dla labiryntu wczytanego z pliku.
Dla dwóch podanych przez użytkownika pól labiryntu algorytm znajdzie najtańszą drogę łączącą te pola lub w przypadku braku połączenia poinformuje, że szukana droga nie istnieje.
Plik opisujący labirynt ma następującą formę:
m n a11 . . . a1n
. . . am1 . . . amn
b11 . . . b1n . . . bm1 . . . bmn gdzie
m− liczba wierszy, n− liczba kolumn,
aij− kody poszczególnych pól labiryntu,
bij ∈ {1, 2, 3, 4}− koszt wejścia na poszczególne pola labiryntu.
Wskazana forma pliku oznacza, że w inny sposób będzie liczona funkcja f 1. Nie będzie to tak jak poprzednio ilość węzłów +1 ale wartość w poprzednim węźle + koszt wejścia na bieżące pole. Szukana droga to najtańsza droga między dwoma wskazanymi polami.
Aby zrealizować algorytm należy określić współrzędne punktów, na których znaj- dują się poszczególne pola. Dla pola labiryntu znajdującego się w lewym dolnym ro- gu przypiszemy współrzędne (0, 0). Kolejne pola mają przypisane kolejne całkowite współrzędne tak, że pole w prawym górnym rogu ma współrzędne (m − 1, n − 1).
Projekt wykonać graficznie. Pola labiryntu oznaczyć różnymi kolorami w za- leżności od wartości bij. Na koniec zaznaczyć wygenerowaną przez algorytm drogę łączącą pola początkowe z końcowym lub zwrócić komunikat o braku połączenia.
2