• Nie Znaleziono Wyników

2. Algorytmy przeszukiwania. Best First Search.

N/A
N/A
Protected

Academic year: 2021

Share "2. Algorytmy przeszukiwania. Best First Search."

Copied!
15
0
0

Pełen tekst

(1)

2. Algorytmy przeszukiwania. Best First Search.

Do tej pory omawiane były dwie metody systematycznego przeszukiwania roz- wiązań: Depth First Search (przeszukiwanie w głąb) i Breadth First Search (prze- szukiwanie wszerz. Połączmy teraz ich zalety:

• przeszukiwanie w głąb pozwala na znalezienie rozwiązania bez potrzeby prze- glądania wszystkich ”konkurencyjnych” rozwiązań;

• przeszukiwanie wszerz chroni przed zabrnięciem w ślepą uliczkę.

Jeden z możliwych sposobów to podążanie jedną ścieżką (jak w głąb), ale prze- łączanie się na inną jeśli tylko okaże się ona lepsza od bieżącej.

Poniważ powiżej wystąpiło pojęcie ”lepsza” zatem oznacza to konieczność wpro- wadzania funkcji oceniających:

• f 1, podającej koszt przejścia od stanu początkowego do stanu bieżącego; war- tość ta jest dokładna, gdyż dotyczy ona stanów, w których już byliśmy i do- kładnie znamy koszty związane z przejściami między nimi;

• f 2, podającej koszt przejścia od stanu bieżącego do końcowego; wartość ta jest jedynie przybliżona.

W każdym kroku wybieramy ten stan, który okazuje się najlepszy z dotychczas wygenerowanych (jeśli oczywiście jeszcze w nim nie byliśmy). Używamy w tym celu wartości zwracanych przez funkcje f 1 i f 2 (na przykład sumy tych wartości). Po przejściu do nowego stanu generujemy wszystkich jego następców stsując do niego wszystkie dostępne operatory i dołączamy do listy stanów.

Przyjrzyjmy się teraz różnicom między omawianymi do tej pory algorytmami oraz nowoproponowanych, tzw. Best First Search.

Załóżmy, że poszukujemy najkrótszej drogi na mieście łączącej punkty A i S.

Miasto i odpowiadający mu graf przedstawiają rysunki poniżej (rys 1 i rys 2):

Operatory, jakie możemy zastosować to: id na pnoc, id na zachd, id na poudnie, id na wschd. Funkcja f 1 zwraca po prostu ilość węzłów +1 przez jakie trzeba przejść ze stanu początkowego A do bieżącego CS. Funkcja f 2 oblicza odległość w linii prostej od stanu bieżącego CS do stanu końcowego S (rys 3).

(2)

Rysunek 1: Mapa.

Rysunek 2: Graf odpowiadający mapie.

Rysunek 3: Obliczanie funkcji f.

(3)

Oto jak przeszukiwać będą kolejne algorytmy:

Algorytm przeszukiwania w głąb.

Rysunek 4: Kolejne kroki przeszukiwania w głąb.

(4)

Algorytm przeszukiwania wszerz.

Rysunek 5: Kolejne kroki przeszukiwania wszerz.

Best First Search.

Oto, jak przebiegać będzie wykonywanie algorytmu:

1. Wygenerowanie wszystkich stanów dostępnych ze stanu A, tj stanówB1, B2, B3, B4. Koszt przejścia do nich jest taki sam i wynosi 1. Odległość od stanu

(5)

S to odpowiednio

26, 6,

26 i 5. Zatem koszt przejścia do poszczególnych stanów jest następujący:

• B1: 1 +√

26 ≈ 6, 1;

• B2: 1 + 6 = 7;

• B3: 1 +√

26 ≈ 6, 1;

• B4: 1 + 4 = 7.

W tej sytuacji najlepiej będzie gdy przejdziemy do stanu B4.

2. Wygenerowanie wszystkich stanów dostępnych ze stanu B4, tj stanu C i do- łączenie ich do listy:

• B1: 1 +√

26 ≈ 6, 1;

• B2: 1 + 6 = 7;

• B3: 1 +√

26 ≈ 6, 1;

• C: 2 + 3 = 5.

Przejście do stanu C.

3. Wygenerowanie wszystkich stanów dostępnych ze stanu C, tj stanu D i dołą- czenie ich do listy:

• B1: 1 +√

26 ≈ 6, 1;

• B2: 1 + 6 = 7;

• B3: 1 +√

26 ≈ 6, 1;

• D: 3 + 2 = 5.

Przejście do stanu D.

4. Ze stanu D możzemy przejść do stanu E1 lub E2. Stąd w liście stanów mieć będziemy:

• B1: 1 +√

26 ≈ 6, 1;

• B2: 1 + 6 = 7;

• B3: 1 +√

26 ≈ 6, 1;

• E1: 4 +√

5 ≈ 6, 2;

• E2: 4 +√

5 ≈ 6, 2.

Przejście do stanu B1.

5. Wygenerowanie wszystkich stanów dostępnych ze stanu B1, tj stanu F i do- łączenie ich do listy:

• B2: 1 + 6 = 7;

• B3: 1 +√

26 ≈ 6, 1;

• E1: 4 +√

5 ≈ 6, 2;

• E2: 4 +√

5 ≈ 6, 2;

• F : 2 +√

29 ≈ 7, 4.

(6)

Przejście do stanu B3.

6. Wygenerowanie wszystkich stanów dostępnych ze stanu B3, tj stanu G i do- łączenie ich do listy:

• B2: 1 + 6 = 7;

• E1: 4 +√

5 ≈ 6, 2;

• E2: 4 +√

5 ≈ 6, 2;

• F : 2 +√

29 ≈ 7, 4;

• G: 2 +√

29 ≈ 7, 4.

Przejście do stanu E1.

7. Wygenerowanie wszystkich stanów dostępnych ze stanu E1, tj stanu H i do- łączenie ich do listy:

• B2: 1 + 6 = 7;

• E2: 4 +√

5 ≈ 6, 2;

• F : 2 +√

29 ≈ 7, 4;

• G: 2 +√

29 ≈ 7, 4;

• H: 5 +√

8 ≈ 7, 8.

Przejście do stanu E2.

8. Wygenerowanie wszystkich stanów dostępnych ze stanu E2, tj stanu I i dołą- czenie ich do listy:

• B2: 1 + 6 = 7;

• F : 2 +√

29 ≈ 7, 4;

• G: 2 +√

29 ≈ 7, 4;

• H: 5 +√

8 ≈ 7, 8;

• I: 5 +√

2 ≈ 6, 4.

Przejście do stanu I.

9. Wygenerowanie wszystkich stanów dostępnych ze stanu I, tj stanu J i dołą- czenie ich do listy:

• B2: 1 + 6 = 7;

• F : 2 +√

29 ≈ 7, 4;

• G: 2 +√

29 ≈ 7, 4;

• H: 5 +√

8 ≈ 7, 8;

• J: 6 + 1 = 7.

Przejście do stanu B2.

10. Wygenerowanie wszystkich stanów dostępnych ze stanu B2, tj stanu K i do- łączenie ich do listy:

(7)

• F : 2 +√

29 ≈ 7, 4;

• G: 2 +√

29 ≈ 7, 4;

• H: 5 +√

8 ≈ 7, 8;

• J: 6 + 1 = 7;

• K: 2 + 7 = 9.

Przejście do stanu J .

11. Wygenerowanie wszystkich stanów dostępnych ze stanu J , tj stanu L i dołą- czenie ich do listy:

• F : 2 +√

29 ≈ 7, 4;

• G: 2 +√

29 ≈ 7, 4;

• H: 5 +√

8 ≈ 7, 8;

• K: 2 + 7 = 9;

• L: 7 + 0 = 7.

Przejście do stanu L.

12. Stan L jest stanem końcowym;koniec algorytmu.

Dodatkowo na bieżąco będziemy tworzyć drzewo, w którym każdy węzeł repre- zentować będzie stan, w którym się znaleźliśmy. W dzrewie tym istotne jest, aby każdy następca wskazywał na swojego poprzednika. Dzięki temu łatwo będziemy mogli wypisać scieżkę prowadzącą od stanu początkowego do końcowego.

Stan drzewa przy wykonywaniu kolejnych kroków algorytmu:

Rysunek 6: 1-szy krok algorytmu.

(8)

Rysunek 7: 2-gi krok algorytmu.

Rysunek 8: 3-ci krok algorytmu.

(9)

Rysunek 9: 4-ty krok algorytmu.

Rysunek 10: 5-ty krok algorytmu.

(10)

Rysunek 11: 6-ty krok algorytmu.

Rysunek 12: 7-my krok algorytmu.

(11)

Rysunek 13: 8-my krok algorytmu.

Rysunek 14: 9-ty krok algorytmu.

(12)

Rysunek 15: 10-ty krok algorytmu.

Rysunek 16: 11-ty krok algorytmu.

(13)

Rysunek 17: 12-ty krok algorytmu.

(14)

Best First Search.

1. Utwórz kolejkę priorytetową KP .

2. Wygeneruj stan początkowy i nazwij go CS.

3. Zastosuj do CS wszystkie możliwe operatory. Otrzymanym w ten sposób sta- nom przypisz wartości zależne od wartości zwróconych przez funcje oceniające, a następnie zapisz je do KP .

4. Pobierz stan z KP i nazwij go CS.

5. Jeżeli:

• CS jest poszukiwanym stanem końcowym zwróć SUKCES i idź do 7.

• CS = N U LL zwróć BRAK ROZWIĄZANIA i idź do 7.

6. Idź do 3.

7. Zakończ algorytm

(15)

Zadanie

Zadanie będzie polegało na przeszukaniu grafu alorytmem Best First Search. Na- leży wczytać z pliku graf, a następnie zapytać o wierzchołek początkowy i końcowy.

Algorytm odpowie na pytanie, czy podane wierzchołki są ze sobą połączone czy nie.

Dodatkowo należy wypisać drogę, jaką zostało wygenerowane połączenie od wierz- chołka początkowego do końcowego (w przypadku, jeżeli te wierzchołki są ze sobą połączone).

Plik opisujący graf będzie miał następującą strukturę:

• n− licza wierzchołków w grafie

• x1, y1 − współrzędne pierwszego wierzchołka,

• ...

• xn, yn − współrzędne n − tego wierzchołka,

• lista wierzchołków sąsiadujących z wierzchołkiem pierwszym zakończona 0,

• ...

• lista wierzchołków sąsiadujących z wierzchołkiem n − tym zakończona 0.

Plik składa się z 2n + 1 linii. Wirzchołki w grafie są numerowane liczbami natu- ralnymi od 1 do n. Numery wierzchołków sąsiadujących z danym wierzchołkiem są oddzielone spacjami.

Cytaty

Powiązane dokumenty

Natomiast zdecydowanie warto przyswoić sobie praktyczne metody stosowania tych praw......

Witraż znany był już w starożytnym Egipcie, gdzie pełnił rolę klejnotów. Na podstawie wykopalisk z Herkulanum i Pompei wiemy, że to Rzymianie jako pierwsi

Powinność m oralna w tak im układzie rzeczy okazuje się więc ujęciem powinności ontycznej w akcie poznania, czyli jej podm iotow ym uświadomieniem i przejęciem

Należy opracować algorytm przeszukiwania tabu do wyznaczania kompromisowej trajektorii autonomicznego pojazdu podwodnego (dla p=2), wykonać jego implementację oraz

However, it should be noted that, if the given problem instance is unsolvable, then the steps taken by such useless search instances are the only overhead (in terms of the number

Kommissya Sprawiedliwości stosuiąc się do myśli podaney przez Beputacyą, do rozwinięcia ma- teryi o detaxacyi dóbr ziemskich, wyznaczoną, maiąc oraz 1^1 uwadze,

ZASTOSOWANIE CZASOWO ZMIENNEJ TRANSFORMACJI DO WYZNACZANIA STANÓW NIEĆSTALONYCH ELEKTROMAGNETYCZNYCH ZMIENNYCH STANU W NIESYMETRYCZNIE OBCIĄŻONEJ MASZYNIE

Eine ortolf-haltige Bearbeitung der Q uaestiones de m edicorum statu’ aus dem spatmittelalter- lichen Schlesien, w: Uberlieferungsgeschichtliche Editionen und Studien