3 - Politechnika Wrocławska

Transkrypt

3 - Politechnika Wrocławska
Rozwiązywanie problemów
metodą przeszukiwania
Dariusz Banasiak
Katedra Informatyki Technicznej W4/K9
Politechnika Wrocławska
Reprezentacja problemu w przestrzeni stanów
Jedną z ważniejszych metod sztucznej inteligencji jest
szukanie (ang. searching).
Metodą przeszukiwania można rozwiązywać następujące
typy zadań:
przesuwanki np. kostka Rubika, puzzle
labirynty, poszukiwanie optymalnej drogi
problemy układania klocków np. wieża z Hanoi
zagadki logiczne np. misjonarze i kanibale
gry planszowe
inne
Autor: Dariusz Banasiak – Katedra Informatyki Technicznej W4/K9
2
Reprezentacja problemu w przestrzeni stanów
Aby zastosować metodę przeszukiwania należy w
odpowiedni sposób określić przestrzeń poszukiwań.
W tym celu należy zdefiniować trzy elementy:
bazę danych (fakty, stany, możliwości, opis sytuacji)
możliwe operacje, które zmieniają stan bazy danych
strategię kontrolną (start, koniec i kolejność operacji)
Autor: Dariusz Banasiak – Katedra Informatyki Technicznej W4/K9
3
Reprezentacja problemu w przestrzeni stanów
Przestrzeń stanów definiowana jest jako uporządkowana
czwórka [N, A, S, G], gdzie:
N jest zbiorem wierzchołków odpowiadających stanom
w procesie rozwiązywania problemu
A jest zbiorem krawędzi odpowiadających krokom
(operacjom) w procesie rozwiązywania problemu
S jest niepustym podzbiorem N, zawierającym stany
początkowe problemu
G jest niepustym podzbiorem N, zawierającym stany
docelowe (końcowe) problemu
Autor: Dariusz Banasiak – Katedra Informatyki Technicznej W4/K9
4
Reprezentacja problemu w przestrzeni stanów
Bardzo wygodnym sposobem reprezentacji przestrzeni
stanów są grafy lub drzewa (czasami stosowane są
specjalne typy grafów np. AND/OR). Ścieżką rozwiązania
danego problemu jest wówczas ścieżka wiodąca przez ten
graf z wierzchołka S do wierzchołka G.
W przypadku niektórych problemów z każdym przejściem
między stanami związany jest określony koszt. W procesie
szukania należy dążyć wówczas do znalezienia ścieżki o
minimalnym całkowitym koszcie.
Autor: Dariusz Banasiak – Katedra Informatyki Technicznej W4/K9
5
Reprezentacja problemu w przestrzeni stanów
Graf (drzewo) opisujące wszystkie możliwe sytuacje
wyznacza przestrzeń szukania. W zależności od złożoności
problemu przestrzeń szukania może mieć różny rozmiar
(może być również nieskończona).
puzzle (3x3)
9!/2 = 181440 wierzchołków
warcaby
1040 stanów końcowych
szachy
10120 stanów końcowych
Autor: Dariusz Banasiak – Katedra Informatyki Technicznej W4/K9
6
Reprezentacja problemu w przestrzeni stanów
Problem 1 – Lis, gęś i ziarno
Nad rzeką znajduje się farmer z lisem, gęsią i ziarnem,
które musi przewieźć na drugi brzeg. Zadanie posiada
następujące ograniczenia:
w danej chwili można przewieźć łódką tylko jedną
rzecz
bez opieki nie mogą zostać lis z gęsią oraz gęś z
ziarnem
Autor: Dariusz Banasiak – Katedra Informatyki Technicznej W4/K9
7
Reprezentacja problemu w przestrzeni stanów
Opis stanu:
F L G Z
(x1, x2, x3, x4),
gdzie xi = {L, P}
Stan początkowy: (L, L, L, L)
Stan końcowy:
(P, P, P, P)
Dopuszczalne operacje:
1. Farmer płynie sam
2. Farmer przewozi lisa
3. Farmer przewozi gęś
4. Farmer przewozi ziarno
Autor: Dariusz Banasiak – Katedra Informatyki Technicznej W4/K9
8
Reprezentacja problemu w przestrzeni stanów
Liczba wszystkich stanów:
Liczba stanów akceptowalnych:
Liczba stanów nieakceptowalnych:
24 = 16
10
6
Przykłady stanów nieakceptowalnych:
(P, L, L, P), (L, P, P, L) – lis i gęś razem „bez opieki”
(P, P, L, L), (L, L, P, P) – gęś i ziarno razem „bez opieki”
Na następnym rysunku przedstawiono rozwiązanie
problemu, które zawiera jedynie stany akceptowalne.
Pominięto stany „ślepe”, które nie prowadzą do
rozwiązania.
Autor: Dariusz Banasiak – Katedra Informatyki Technicznej W4/K9
9
Reprezentacja problemu w przestrzeni stanów
(L, L, L, L)
3
(P, L, P, L)
1
(L, L, P, L)
4
2
(P, L, P, P)
(P, P, P, L)
3
(L, L, L, P)
3
2
4
(L, P, L, L)
(P, P, L, P)
1
(L, P, L, P)
3
(P, P, P, P)
Autor: Dariusz Banasiak – Katedra Informatyki Technicznej W4/K9
1. Farmer płynie sam
2. Farmer przewozi lisa
3. Farmer przewozi gęś
4. Farmer przewozi ziarno
10
Reprezentacja problemu w przestrzeni stanów
Problem 2 – Napełnianie naczyń
Posiadamy dwa puste dzbanki:
o pojemności 4 l (dzbanek 1)
o pojemności 3 l (dzbanek 2)
Dzbanek 1 (o pojemności 4 l) należy napełnić do połowy.
Opis stanu:
(x, y)
x – ilość wody w dzbanku 1
y – ilość wody w dzbanku 2
Stan początkowy: (0, 0)
Stan końcowy:
(2, 0)
Autor: Dariusz Banasiak – Katedra Informatyki Technicznej W4/K9
11
Reprezentacja problemu w przestrzeni stanów
Dopuszczalne operacje:
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
wypełnij dzbanek 1
wypełnij dzbanek 2
opróżnij dzbanek 1
opróżnij dzbanek 2
przelej wszystko z dzbana 1 do dzbana 2
przelej wszystko z dzbana 2 do dzbana 1
uzupełnij do pełna dzban 1 z dzbana 2
uzupełnij do pełna dzban 2 z dzbana 1
odlej pewną ilość wody z dzbana 1
odlej pewną ilość wody z dzbana 2
...
((x,
((x,
((x,
((x,
((x,
((x,
((x,
((x,
((x,
((x,
y) → (4, y), warunek: x<4)
y) → (x, 3), warunek: y<3)
y) → (0, y), warunek: x>0)
y) → (x, 0), warunek: y>0)
y) → (0, x+y), war.: x>0, x+y ≤ 3)
y) → (x+y, 0), war.: y>0, x+y ≤ 4)
y) → (4, y-(4-x)), war.: y>0, x+y ≥ 4)
y) → (x-(3-y), 3), war.: x>0, x+y ≥ 3)
y) → (x-d, y), war.: x>0)
y) → (x, y-d), war.: y>0)
Można definiować kolejne operacje. Do rozwiązania problemu
wystarczą operacje 1-8.
Autor: Dariusz Banasiak – Katedra Informatyki Technicznej W4/K9
12
Reprezentacja problemu w przestrzeni stanów
1
(0, 0)
2
(4, 0)
2
8
(4, 3)
4
3
(1, 3)
1
4 6
(0, 3)
3
1
(0, 0)
3
(4, 0) (0, 3) (4, 3) (1, 0) (4, 0) (0, 3)
6
(4, 3)
4
3
(3, 0)
1
4
(0, 0)
2
(4, 0) (0, 3) (4, 0) (3, 3) (0, 0) (0, 3)
5
(0, 1)
1
(4, 1)
8
(2, 3)
4
(2, 0)
1.
2.
3.
4.
5.
6.
7.
8.
wypełnij dzbanek 1
wypełnij dzbanek 2
opróżnij dzbanek 1
opróżnij dzbanek 2
przelej wszystko z dzbana 1 do dzbana 2
przelej wszystko z dzbana 2 do dzbana 1
uzupełnij do pełna dzban 1 z dzbana 2
uzupełnij do pełna dzban 2 z dzbana 1
Autor: Dariusz Banasiak – Katedra Informatyki Technicznej W4/K9
13
Reprezentacja problemu w przestrzeni stanów
Problem 3 – Puzzle 3x3 (tzw. ósemka)
1
3
8
2
7
6
1
2
3
4
4
5
6
5
7
8
Opis stanu:
(x1, x2, x3, x4, x5, x6, x7, x8, x9),
gdzie xi = {0, 1, ... , 8}
Stan początkowy: (?, ?, ?, ?, ?, ?, ?, ?, ?)
Stan końcowy:
(1, 2, 3, 4, 5, 6, 7, 8, 0)
Autor: Dariusz Banasiak – Katedra Informatyki Technicznej W4/K9
14
Reprezentacja problemu w przestrzeni stanów
1
3
8
2
4
7
6
5
2
1
3
8
2
7
6
1
1
3
8
2
7
6
3
4
1
5
2
3
1
3
4
1
4
8
2
5
8
5
7
6
7
3
8
2
4
7
6
5
2
3
6
4
1
2
8
5
7
2
6
3
3
1
3
4
8
2
4
5
7
6
5
2
4
Dopuszczalne operacje:
1.
2.
3.
4.
„przesuń” wolne pole do góry
„przesuń” wolne pole w dół
„przesuń” wolne pole w lewo
„przesuń” wolne pole w prawo
Autor: Dariusz Banasiak – Katedra Informatyki Technicznej W4/K9
8
7
1
3
1
3
2
4
8
2
4
6
5
7
6
5
15
Algorytmy przeszukiwania przestrzeni stanów
W celu uzyskania rozwiązania danego problemu metodą
przeszukiwania należy:
określić reprezentację problemu w przestrzeni stanu
(wyróżnienie poszczególnych stanów, sposób ich
kodowania),
określić dopuszczalne operatory, które pozwalają dla
dowolnego stanu określić stany następne,
zdefiniować stan początkowy i stan (lub stany)
docelowe,
określić strategię przeszukiwania, czyli metodę wyboru
operatora spośród wszystkich operatorów możliwych.
Autor: Dariusz Banasiak – Katedra Informatyki Technicznej W4/K9
16
Algorytmy przeszukiwania przestrzeni stanów
Przestrzeń poszukiwań może być reprezentowana w
postaci grafu lub drzewa. Rozwiązanie problemu polega
wówczas na szukaniu w grafie (drzewie) ścieżki od
wierzchołka początkowego do jednego z wierzchołków
docelowych:
St := [stan_początkowy]
WHILE ( St <> stan_docelowy) DO
BEGIN
Op := [wybrany operator dla stanu St]
St := [wynik zastosowania Op do stanu St]
END
Autor: Dariusz Banasiak – Katedra Informatyki Technicznej W4/K9
17
Algorytmy przeszukiwania przestrzeni stanów
Metodę wyboru operatora w powyższym algorytmie
nazywa się strategią poszukiwań. Wybierając odpowiednią
strategię należy uwzględnić następujące czynniki:
ograniczenie rozmiaru drzewa poszukiwań (np.
eliminacja operatorów nie prowadzących do celu)
znalezienie optymalnego rozwiązania w przypadku wielu
rozwiązań (np. znalezienie najkrótszej ścieżki od
wierzchołka początkowego do docelowego)
znalezienie rozwiązania w najkrótszym czasie
zakończenie algorytmu w przypadku braku rozwiązania
(ograniczenie głębokości poszukiwań)
Autor: Dariusz Banasiak – Katedra Informatyki Technicznej W4/K9
18
Algorytmy przeszukiwania przestrzeni stanów
Podstawowym algorytmem przeszukiwania przestrzeni
stanów jest systematyczne badanie grafu (tzw. przegląd
zupełny). Celem takiego algorytmu jest sprawdzenie
wszystkich wierzchołków grafu począwszy od wierzchołka
startowego.
Rozwiązanie takie jest często nieefektywne!!!
Stosowane strategie przeszukiwania możemy podzielić na
dwie grupy:
metody szukania „na ślepo” (klasyczne)
metody heurystyczne
Autor: Dariusz Banasiak – Katedra Informatyki Technicznej W4/K9
19
Algorytmy przeszukiwania przestrzeni stanów
Metody szukania „na ślepo”
W większości zadań praktycznych rozmiary drzew są tak
duże, że nie jest możliwe ich zapamiętanie w całości.
Dlatego często stosuje się metodę generowania tych drzew
„na bieżąco”.
W zależności od kolejności przeszukiwanych wierzchołków
w drzewie rozróżnia się następujące strategie:
Monte Carlo (metoda Muzeum Brytyjskiego)
szukanie „w głąb” (DFS - ang. depth-first search)
szukanie „wszerz” (BFS - ang. breadth-first search)
szukanie z nawracaniem (BT - ang, backtracking)
inne
Autor: Dariusz Banasiak – Katedra Informatyki Technicznej W4/K9
20
Algorytmy przeszukiwania przestrzeni stanów
Szukanie „w głąb” (DFS)
Szukanie „w głąb” jest podstawową metodą przeszukiwania
grafów. Przeszukiwanie prowadzone jest zawsze od
ostatnio sprawdzanego wierzchołka, który ma jeszcze
niewykorzystane operatory.
W algorytmie wykorzystuje się listę OPEN, która zawiera
wierzchołki drzewa, które nie zostały jeszcze rozpatrzone.
Lista OPEN zorganizowana jest w postaci stosu (ostatnio
umieszczony element pobierany jest jako pierwszy).
Metoda może być nieskuteczna dla dużych grafów (np. dla
grafów o nieskończonej głębokości)!!!
Autor: Dariusz Banasiak – Katedra Informatyki Technicznej W4/K9
21
Algorytmy przeszukiwania przestrzeni stanów
Zapis algorytmu:
1. wstaw wierzchołek początkowy na listę OPEN
2. IF (lista OPEN jest pusta) THEN STOP (brak rozwiązania)
3. St := FIRST (OPEN)
4. IF (St jest wierzchołkiem docelowym) THEN STOP (sukces)
5. usuń St z listy OPEN
6. utwórz wszystkie wierzchołki potomne od St i wstaw je na początek
listy OPEN,
7. GOTO 2
Autor: Dariusz Banasiak – Katedra Informatyki Technicznej W4/K9
22
Algorytmy przeszukiwania przestrzeni stanów
Działanie algorytmu:
1
8/1
2/1
3/2
4/3
n/
m
5/2
6/4
9/5
7/4
10/1
11/6
wierzchołek celu
n – liczba określająca kolejność analizy wierzchołków,
m – liczba określająca kolejność dodawania nowych wierzchołków do listy
OPEN.
Autor: Dariusz Banasiak – Katedra Informatyki Technicznej W4/K9
23
Algorytmy przeszukiwania przestrzeni stanów
Szukanie „wszerz” (BFS)
Szukanie „wszerz” polega na rozwijaniu na każdym
poziomie wszystkich wierzchołków następnej generacji
(określenie wszystkich potomków dla wszystkich
wierzchołków z danego poziomu i ich sprawdzenie).
Metoda ta, kolejno badając wierzchołki grafu o jednakowej
głębokości, przyznaje wyższy priorytet wierzchołkom o
mniejszej głębokości. Jeżeli rozwiązanie położone jest
niezbyt „głęboko” procedura szukania „wszerz” szybciej
prowadzi do jego znalezienia.
Autor: Dariusz Banasiak – Katedra Informatyki Technicznej W4/K9
24
Algorytmy przeszukiwania przestrzeni stanów
Algorytm szukania „wszerz” jest podobny do algorytmu
przedstawionego dla strategii szukania „w głąb”.
Podstawowa różnica polega na sposobie organizacji listy
OPEN. Podczas szukania „wszerz” lista OPEN
zorganizowana jest w postaci kolejki.
Strategia ta wyznacza wierzchołek celu o najmniejszej
głębokości.
Wadą strategii są duże wymagania pamięciowe (należy
przechowywać całą dotychczas przebadaną część grafu).
Autor: Dariusz Banasiak – Katedra Informatyki Technicznej W4/K9
25
Algorytmy przeszukiwania przestrzeni stanów
Działanie algorytmu:
1
8/3
2/2
3/5
4/-
n/
m
5/6
6/-
9/7
7/-
10/4
11/8
wierzchołek celu
n – liczba określająca kolejność analizy wierzchołków dla algorytmu „w głąb”
m – liczba określająca kolejność analizy wierzchołków dla algorytmu „wszerz”
Autor: Dariusz Banasiak – Katedra Informatyki Technicznej W4/K9
26
Algorytmy przeszukiwania przestrzeni stanów
Szukanie z nawracaniem (BT)
Strategia z nawracaniem jest modyfikacją algorytmu
przeszukiwania „w głąb”. Lista OPEN jest również
zorganizowana w postaci stosu, jednak dla badanego
wierzchołka generowany jest tylko jeden jego potomek.
Jeżeli nowy wierzchołek nie spełnia kryterium celu lub
końcowego, to jest dalej rozszerzany (ale określamy tylko
jednego potomka).
Gdy po kolejnych rozszerzeniach otrzymany wierzchołek
jest końcowy lub nie można dla niego określić wierzchołka
potomnego następuje powrót do najbliższego przodka, dla
którego możliwe jest wygenerowanie potomków.
Autor: Dariusz Banasiak – Katedra Informatyki Technicznej W4/K9
27
Algorytmy przeszukiwania przestrzeni stanów
Główną zaletą strategii z powracaniem jest oszczędność
pamięci – dla danego węzła wystarczy zapamiętać tylko
jednego potomka.
Oszczędność pamięci okupiona jest jednak komplikacją
algorytmu – przy powrocie do wcześniej analizowanego
wierzchołka należy sprawdzić, które krawędzie z niego
wychodzące zostały już rozpatrzone.
Jednym z problemów algorytmu szukania z nawracaniem
jest możliwość powstawania pętli (powrót do stanów już raz
zbadanych). Rozwiązaniem tego problemu może być
utworzenie dodatkowej listy CLOSED (zawiera wykaz
stanów już rozpatrzonych).
Autor: Dariusz Banasiak – Katedra Informatyki Technicznej W4/K9
28

Podobne dokumenty