Zadanie 1 - przeszukiwanie przestrzeni stanów

Transkrypt

Zadanie 1 - przeszukiwanie przestrzeni stanów
Informatyka, studia dzienne, inż I st.
semestr VI
Sztuczna inteligencja i systemy ekspertowe 2011/2012
Prowadzący: dr inż. Krzysztof Lichy
wtorek, 12:15
Data oddania:
Ocena:
Artur Angiel
157797
Piotr Jasiak
157853
Szymon Wawrzyniak 157986
Zadanie 1 - przeszukiwanie przestrzeni stanów∗
1. Wprowadzenie
Celem niniejszego zadania jest napisanie dwóch programów. Pierwszy z
nich ma za zadanie odnaleźć rozwiązanie łamigłówki zwanej “Piętnastką”, a
drugi ma na celu wizualizację rozwiązywania łamigłówki.
2. Opis programów
2.1. Rozwiązywanie łamigłówki
Łamigłówka jest rozwiązywana za pomocą poniższych algorytmów (wybieranych z linii poleceń):
— strategia ”w głąb”, swobodna oraz z iteracyjnym pogłębianiem
— strategia ”wszerz”
— strategia ”najpierw najlepszy”: A*, BF
2.1.1. Funkcje heurystyczne
heuristic1 Heurystyka obliczająca odległość zera od punktu docelowego zera.
heuristic2 Heurystka obliczająca odległość wszystkich pól od ich pożądanego miejsca.
∗
SVN: https://repo.mydevil.net/svn/pub/arturangiel/sise/
1
heuristic3 Heurystka obliczająca ile pól nie znajduje się na swoich miejscach.
2.2. Wizualizacja rozwiązania
Wizualizacja rozwiązania odbywa się poprzez przedstawienie planszy z
ponumerowanymi klockami, zmieniającymi swoje położenie w czasie.
3. Opis algorytmów
3.1. DFS
Algorytm przeszukiwania grafu “w głąb” (ang. Depth-First Search) jest
algorytmem rekurencyjnym i polega na tym, że plansza przeszukiwana jest od
korzenia wzdłuż jednej gałęzi, w zadanym z góry kierunku. Kiedy algorytm
dojdzie do końca gałęzi, wraca do rodzica i przechodzi do kolejnego dziecka,
które także jest zdefiniowane przez kolejność.
3.2. IDFS
Algorytm przeszukiwania “w głąb” z iteracyjnym pogłębianiem jest rozszerzeniem algorytmu 3.1. W tym przypadku funkcja odpowiedzialna za rozwiązanie jest wywoływana w pętli i w każdym przebiegu jest powiększana
dopuszczalna głębokość rekurencji, aż do uzyskania wyniku.
3.3. BFS
BFS (ang. Breadth-first search) czyli algorytm przeszukiwania grafu “wszerz”.
Jego działanie można traktować jako pewien schemat, którego usprawnionymi przykładami są m.in. takie algorytmy jak: “Best First Search”, “A”.
Algorytm ten przeszukuje cały graf wszerz aż do znalezienia węzła docelowego. W przypadku rozwiązywania łamigłówki, jego działanie polega na
tym, że pobiera stan początkowy i sprawdza czy spełnia on warunek stopu.
Jeżeli nie, to przechodzi do wyznaczenia wszystkich możliwych stanów potomnych zgodnie z podaną kolejnością. Następnie każdy z potomnych stanów
jest sprawdzany czy taki stan już był rozpatrywany, jeżeli nie to zostaje on
dodany do kolejki z której pobierane są kolejne stany do przetworzenia i cały
proces jest wykonywany na nowo do dopóty, dopóki w kolejce znajdują się
stany do przetworzenia. BFS nie wykorzystuje żadnej heurystyki.
3.4. Best First
BF (ang. Best First) jest algorytmem kierunkowanym na szybsze dotarcie do rozwiązania. Każdy stan posiada heurystyczną ocenę liczbową f (v),
dzięki czemu możliwe jest poddanie ocenie jak daleko stan znajduje się od
celu. Stany przechowywane są w kolejce priorytetowej, zatem w pierwszej
kolejności rozpatrywane są najbardziej “obiecujące“ stany.
2
3.5. A*
Algorytm ten wykorzystuję heurystykę. Jego działanie polega na tym,
że wybierana jest ścieżka pomiędzy wierzchołkiem początkowym, a końcowym. Wybór kolejnego elementu ścieżki uzależniony jest od wartości funkcji
f (x) = g(x) + h(x). Mianowicie, ze wszystkich dostępnych w danym momencie sąsiadujących wierzchołków wybieramy ten, dla którego funkcja f (x) jest
najmniejsza. g(x) jest to droga przebyta w danej ścieżce do tej pory, a h(x)
to wartość funkcji heurystycznej w danym ustawieniu.
4. Wynik działania
3
Algorytm
Czas Odwiedzone Przetworzone
IDFS (DLPG)
131ms
3045
2053
BFS (DLPG)
21ms
792
402
A* (heuristic 1)
3ms
224
147
A* (heuristic 2)
1ms
49
33
A* (heuristic 3)
0ms
49
33
BestFirst (heuristic 2) 4ms
24
12
BestFirst (heuristic 3) 3ms
24
12
It./rek. Rozwiązanie
9/0
DGPPPDDD
198
PPPDDD
78
PPPDDD
17
PPPDDD
17
PPPDDD
7
PPPDDD
7
PPPDDD
Tabela 1. 0 1 2 3 5 6 7 4 9 10 11 8 13 14 15 12
Algorytm
Czas Odwiedzone Przetworzone
IDFS (DLPG)
155ms
3778
2543
BFS (DLPG)
59ms
1292
687
A* (heuristic 1)
14ms
706
463
A* (heuristic 2)
3ms
100
64
A* (heuristic 3)
4ms
76
48
BestFirst (heuristic 2) 1ms
76
40
BestFirst (heuristic 3) 1ms
24
14
It./rek. Rozwiązanie
9/0
DGGPPDDD
323
GPPDDD
225
GPPDDD
33
GPPDDD
25
GPPDDD
20
GPPDDD
7
GPPDDD
Tabela 2. 1 6 2 3 5 0 7 4 9 10 11 8 13 14 15 12
Algorytm
Czas Odwiedzone Przetworzone
IDFS (DLPG)
137ms
2900
1951
BFS (DLPG)
16ms
904
473
A* (heuristic 1)
5ms
428
282
A* (heuristic 2)
2ms
92
61
A* (heuristic 3)
3ms
100
67
BestFirst (heuristic 2) 4ms
64
32
BestFirst (heuristic 3) 2ms
36
19
It./rek. Rozwiązanie
9/0
DGLGPDDD
226
LGPDDD
139
LGPDDD
30
LGPDDD
32
LGPDDD
17
LGPDDD
10
LGPDDD
Tabela 3. 1 2 7 3 5 6 4 0 9 10 11 8 13 14 15 12
Algorytm
Czas Odwiedzone Przetworzone
DFS (DPGL)
1ms
15
6
IDFS (DPGL)
49ms
322
227
BFS (DPGL)
30ms
384
202
A* (heuristic 1)
4ms
192
131
A* (heuristic 2)
3ms
49
33
A* (heuristic 3)
2ms
49
33
BestFirst (heuristic 2) 3ms
24
12
BestFirst (heuristic 3) 3ms
24
12
Tabela 4. 0 2 3 4 1 6 7 8 5 10 11 12 9 13 14 15
4
It./rek. Rozwiązanie
6
DDDPPP
7/0
DDDPPP
96
DDDPPP
62
DDDPPP
17
DDDPPP
17
DDDPPP
7
DDDPPP
7
DDDPPP
Algorytm
Czas Odwiedzone Przetworzone
IDFS (DLPG)
57ms
1389
941
BFS (DLPG)
25ms
752
387
A* (heuristic 1)
7ms
199
132
A* (heuristic 2)
3ms
70
46
A* (heuristic 3)
1ms
74
49
BestFirst (heuristic 2) 12ms
36
20
BestFirst (heuristic 3) 4ms
28
17
It./rek. Rozwiązanie
9/0
LPPGGPDD
188
PGGPDD
64
PGGPDD
23
PGGPDD
24
PGGPDD
10
PGGPDD
8
PGGPDD
Tabela 5. 1 2 3 4 5 6 11 7 9 10 15 8 13 0 14 12
Algorytm
Czas Odwiedzone Przetworzone
IDFS (DPGL)
81ms
1778
1209
BFS (DPGL)
23ms
1480
783
A* (heuristic 1)
20ms
1141
756
A* (heuristic 2)
3ms
132
88
A* (heuristic 3)
3ms
122
81
BestFirst (heuristic 2) 4ms
32
21
BestFirst (heuristic 3) 2ms
28
18
It./rek. Rozwiązanie
8/0
DLDPDPP
370
DLDPDPP
362
DLDPDPP
43
DLDPDPP
40
DLDPDPP
9
DLDPDPP
8
DLDPDPP
Tabela 6. 1 0 3 4 6 2 7 8 5 9 11 12 13 10 14 15
Algorytm
Czas
Odwiedzone Przetworzone
DFS (DLPG)
1989ms
13768
4203
IDFS (DLPG)
80ms
1893
1285
BFS (DLPG)
15ms
472
244
A* (heuristic 1)
2ms
120
77
A* (heuristic 2)
0ms
41
26
A* (heuristic 3)
1ms
44
28
BestFirst (heuristic 2) 11ms
20
11
BestFirst (heuristic 3)
0ms
20
11
It./rek. Rozwiązanie
4203
Zbyt długie
8/0
DGPPDDD
118
PPDDD
42
PPDDD
14
PPDDD
15
PPDDD
6
PPDDD
6
PPDDD
Tabela 7. 1 0 2 3 5 6 7 4 9 10 11 8 13 14 15 12
Algorytm
Czas Odwiedzone Przetworzone
IDFS (DLPG)
88ms
1893
1282
BFS (DLPG)
19ms
596
316
A* (heuristic 1)
7ms
254
166
A* (heuristic 2)
5ms
68
43
A* (heuristic 3)
2ms
64
40
BestFirst (heuristic 2) 4ms
36
19
BestFirst (heuristic 3) 5ms
20
12
Tabela 8. 1 2 7 3 5 6 0 4 9 10 11 8 13 14 15 12
5
It./rek. Rozwiązanie
8/0
DGGPDDD
149
GPDDD
82
GPDDD
22
GPDDD
21
GPDDD
10
GPDDD
6
GPDDD
Algorytm
IDFS (DLPG)
BFS (DLPG)
A* (heuristic 1)
A* (heuristic 2)
A* (heuristic 3)
BestFirst (heuristic 2)
BestFirst (heuristic 3)
Czas Odwiedzone Przetworzone
92ms
1413
962
13ms
332
175
10ms
114
77
14ms
46
31
6ms
42
28
8ms
20
12
3ms
20
12
It./rek. Rozwiązanie
8/0
DGLDPDD
83
LDPDD
38
LDPDD
16
LDPDD
15
LDPDD
6
LDPDD
6
LDPDD
Tabela 9. 1 2 4 0 5 6 3 7 9 10 11 8 13 14 15 12
Algorytm
Czas
Odwiedzone Przetworzone
IDFS (DLPG)
16ms
203
146
BFS (DLPG)
8ms
212
119
A* (heuristic 1)
15ms
88
60
A* (heuristic 2)
4ms
36
24
A* (heuristic 3)
3ms
42
28
BestFirst (heuristic 1) 13077ms
19484
8830
BestFirst (heuristic 2)
5ms
20
13
BestFirst (heuristic 3)
5ms
20
13
It./rek. Rozwiązanie
6/0
DLDDP
53
DLDDP
29
DLDDP
13
DLDDP
15
DLDDP
4872
DLDDP
6
DLDDP
6
DLDDP
Tabela 10. 1 2 3 0 5 6 8 4 9 10 7 12 13 14 11 15
Algorytm
Czas Odwiedzone Przetworzone
IDFS (DLPG)
89ms
1389
940
BFS (DLPG)
25ms
544
290
A* (heuristic 1)
6ms
258
169
A* (heuristic 2)
5ms
76
48
A* (heuristic 3)
3ms
71
45
BestFirst (heuristic 2) 3ms
64
36
BestFirst (heuristic 3) 2ms
20
16
It./rek. Rozwiązanie
8/0
DGGPDDP
136
GPDDP
83
GPDDP
25
GPDDP
23
GPDDP
17
GPDDP
6
GPDDP
Tabela 11. 1 2 3 4 5 10 6 8 9 0 7 12 13 14 11 15
Algorytm
Czas Odwiedzone Przetworzone
DFS (DLPG)
8ms
6
3
IDFS (DLPG)
5ms
27
22
BFS (DLPG)
6ms
32
17
A* (heuristic 1)
9ms
13
9
A* (heuristic 2)
2ms
13
9
A* (heuristic 3)
3ms
13
9
BestFirst (heuristic 2) 3ms
12
7
BestFirst (heuristic 3) 6ms
12
7
Tabela 12. 1 2 3 0 5 6 7 4 9 10 11 8 13 14 15 12
6
It./rek. Rozwiązanie
3
DDD
4/0
DDD
8
DDD
6
DDD
6
DDD
6
DDD
4
DDD
4
DDD
Algorytm
Czas Odwiedzone Przetworzone
DFS (DLPG)
232ms
4435
1353
IDFS (DLPG)
25ms
398
274
BFS (DLPG)
4ms
120
61
A* (heuristic 1)
1ms
33
22
A* (heuristic 2)
1ms
21
14
A* (heuristic 3)
1ms
25
17
BestFirst (heuristic 2) 1ms
12
9
BestFirst (heuristic 3) 1ms
12
9
It./rek. Rozwiązanie
1353
Zbyt długie
6/0
DGPDD
30
PDD
11
PDD
7
PDD
8
PDD
4
PDD
4
PDD
Tabela 13. 1 2 3 4 5 6 0 7 9 10 11 8 13 14 15 12
Algorytm
Czas Odwiedzone Przetworzone
DFS (DLPG)
232ms
4435
1353
IDFS (DLPG)
25ms
398
274
BFS (DLPG)
4ms
120
61
A* (heuristic 1)
1ms
33
22
A* (heuristic 2)
1ms
21
14
A* (heuristic 3)
1ms
25
17
BestFirst (heuristic 2) 1ms
12
9
BestFirst (heuristic 3) 1ms
12
9
It./rek. Rozwiązanie
1353
Zbyt długie
6/0
DGPDD
30
PDD
11
PDD
7
PDD
8
PDD
4
PDD
4
PDD
Tabela 14. 1 2 3 4 5 6 0 7 9 10 11 8 13 14 15 12
Algorytm
Czas
Odwiedzone Przetworzone
DFS (DLPG)
1342ms
13341
4070
IDFS (DLPG)
59ms
880
600
BFS (DLPG)
6ms
208
110
A* (heuristic 1)
11ms
44
28
A* (heuristic 2)
1ms
24
14
A* (heuristic 3)
0ms
24
14
BestFirst (heuristic 2) 12ms
16
9
BestFirst (heuristic 3)
0ms
16
9
It./rek. Rozwiązanie
4070
Zbyt długie
7/0
DGPDDD
52
PDDD
15
PDDD
9
PDDD
9
PDDD
5
PDDD
5
PDDD
Tabela 15. 1 2 0 3 5 6 7 4 9 10 11 8 13 14 15 12
Algorytm
Czas Odwiedzone Przetworzone
DFS (DLPG)
143ms
4437
1354
IDFS (DLPG)
6ms
161
115
BFS (DLPG)
1ms
156
82
A* (heuristic 1)
1ms
48
30
A* (heuristic 2)
1ms
32
20
A* (heuristic 3)
1ms
32
20
BestFirst (heuristic 2) 0ms
16
11
BestFirst (heuristic 3) 1ms
16
11
Tabela 16. 1 2 0 4 5 6 3 7 9 10 11 8 13 14 15 12
7
It./rek. Rozwiązanie
1354
Zbyt długie
5/0
DPDD
39
DPDD
17
DPDD
11
DPDD
11
DPDD
5
DPDD
5
DPDD
Algorytm
Czas Odwiedzone Przetworzone
DFS (DLPG)
148ms
4574
1396
IDFS (DLPG)
23ms
845
574
BFS (DLPG)
2ms
248
126
A* (heuristic 1)
2ms
68
43
A* (heuristic 2)
0ms
39
24
A* (heuristic 3)
1ms
39
24
BestFirst (heuristic 2) 1ms
16
12
BestFirst (heuristic 3) 0ms
16
12
It./rek. Rozwiązanie
1396
Zbyt długie
7/0
DGPPDD
62
PPDD
22
PPDD
12
PPDD
12
PPDD
5
PPDD
5
PPDD
Tabela 17. 1 2 3 4 5 0 6 7 9 10 11 8 13 14 15 12
Algorytm
Czas
Odwiedzone Przetworzone
A* (heuristic 2)
369ms
4694
3105
A* (heuristic 3)
12748ms
17305
11268
BestFirst (heuristic 2)
48ms
1056
522
BestFirst (heuristic 3)
75ms
2264
1151
Tabela 18. 1 2 3 4 6 11 7 8 5 9 15 12 13 10 14 0
8
It./rek.
1494
5550
265
LGGLLDP
567
LGLGLDPPDLGLD
5. Wnioski
Najwydajniejszymi algorytmami okazały się, zgodnie z oczekiwaniami, algorytmy wykorzystujące heurystykę. Spowodowane jest to tym, że wybierane
są tutaj drogi, które są najbliżej rozwiązania porzucając pozostałe. Funkcjonalności tej pozbawione są algorytmy nie wykorzystujące heurystyk, przez co
rośnie czas poszukiwania. Najmniej wydajnym algorytmem okazał się DFS,
ponieważ liczba rekurencji jest tutaj największa.
Literatura
[1] T. Oetiker, H. Partl, I. Hyna, E. Schlegl. Nie za krótkie wprowadzenie do
systemu LATEX2e, 2007, dostępny online.
[2] Przemysław Klęsk. Algorytmy przeszukiwania grafów i drzew dla gier i łamigłówek, http://wikizmsi.zut.edu.pl/uploads/b/be/2_search.pdf
[3] Wikipedia, wolna encykolpedia Breadth-first search, http://en.wikipedia.
org/wiki/Breadth-first_search
[4] Wikipedia, wolna encyklopedia Algorytm A*, http://pl.wikipedia.org/
wiki/Algorytm_A*
9

Podobne dokumenty