Przeszukiwanie
Podstawy Sztucznej Inteligencji (PSZT)
Paweł Wawrzyński
Motywacja
• Rozwiązywanie problemów:
– poszukiwanie sekwencji operacji prowadzącej do celu
– poszukiwanie układu stanowiącego rozwiązanie
• Planowanie:
– optymalizacja sekwencji działań
Dzisiaj
• Problemy w których trzeba znaleźć
sekwencję operacji prowadzących do celu
– jakąkolwiek sekwencję – sekwencję najkrótszą
– sekwencję najmniej kosztowną
Model
Problemy przykładowe
• Układanie kostki
• 3 misjonarzy + 3 ludożerców
przeprawiających się przez rzekę 2-
osobową łódką. W żadnej chwili na brzegu nie może być więcej ludożerców niż
misjonarzy
Problemy przykładowe
• Problem n hetmanów: jak ustawić n
hetmanów na szachownicy n/n aby żaden nie był atakowany przez żadnego innego
• Dwa pojemniki mają 5 oraz 7 litrów
pojemności. Jak, zapełniając je do pełna, opróżniając i przelewając wodę miedzy nimi odmierzyć 4 litry?
• Problem komiwojażera
Strategie nieinformowane
Przeszukiwanie wszerz
0. Utwórz listę A stanów otwartych, pustą listę Z stanów zbadanych, wpisz s0 do A 1. Rozwiń pierwszy stan z A w sekwencję
stanów; przesuń ten stan do Z; stany z sekwencji nieobecne w A∪Z wpisz na koniec A
2. Jeśli w A pojawił się stan terminalny -
zakończ, w przeciwnym razie skocz do 1.
Strategie nieinformowane
Przeszukiwanie w głąb
0. Utwórz listę A stanów otwartych, wpisz s0 do A
1. Rozwiń pierwszy stan z A w sekwencję stanów; stany z sekwencji nieobecne w A wpisz na początek A
2. Jeśli w A pojawił się stan terminalny -
zakończ, w przeciwnym razie skocz do 1.
Strategie nieinformowane
Wszerz vs. w głąb - własności
- „wszerz” znajduje najkrótsze rozwiązanie zużywając najmniej czasu ale potrzebuje dużo pamięci
- „w głąb” potrzebuje mało pamięci ale nie znajduje najlepszego rozwiązania jako pierwszego
Strategie nieinformowane
Przeszukiwanie w głąb
z iteracyjnym pogłębianiem
0. Przypisz m:=1
1. Przeszukaj w głąb do głębokości m 2. Przypisz m:=m+1
3. Jeśli został znaleziony stan terminalny, zwróć rozwiązanie; w przeciwnym razie wróć do Linii 1.
Strategie nieinformowane
Przeszukiwanie w głąb
z iteracyjnym pogłębianiem
• Nie potrzebuje tyle pamięci co przeszukiwanie wszerz
• Im częściej zdarzają się stany, do których można dotrzeć różnymi drogami, tym
większą przewagę ma przeszukiwanie wszerz
Strategie nieinformowane
Przeszukiwanie skupione
0. L0 = {s0}, m=0
1. Stwórz Pm+1 jako zbiór wszystkich stanów wygenerowanych z Lm
2. m:=m+1
3. Wybierz Lm jako k najlepiej zapowiadających się stanów z Pm (nieobecnych w Li, i<m)
4. Jeśli nie znalazł się stan terminalny, skocz do
Strategie nieinformowane
Przeszukiwanie skupione
Działa kiedy albo (i) mamy heurystykę pozwalającą trafnie wybierać Lm albo
uruchamiamy procedurę dla wykładniczo rosnącej szerokości wiązki k
Strategie nieinformowane
Przeszukiwanie dwukierunkowe
- Przeszukujemy wszerz od strony s0 oraz, poprzez operatory odwrotne, od strony T - Szczęśliwy koniec: pojawienie się stanu
który jest w L0 procedury działającej w drugą stronę.
Cechy: działa bardzo dobrze w przypadkach w których T jest znane i małe, w innych
Strategie nieinformowane
Porównanie metod
Złożoność w wersji pesymistycznej b - współczynnik rozgałęzienia
d - głębokość znalezionego rozwiązania m - max. głębokość
poszukiwań
k - szerokość wiązki
Strategie minimalizujące koszt
Strategia zachłanna
0. i=0
1. Rozwiń stan si w stany si,1, si,2, itd.
2. Wybierz jako si+1 stan minimalizujący c(si, si,j).
3. i:=i+1
4. Jeśli si jest terminalny - zakończ, w przeciwnym razie przejdź do 1.
Strategie minimalizujące koszt
Pierwszy najtańszy
0. i=0, G0={s0}
1. Rozwiń z si zbiór stanów Pi 2. Gi+1=Gi ∪Pi -{si}
3. i:=i+1
4. Wybierz si jako najtańszy stan z Gi
5. Jeśli si jest terminalny - zakończ, w p.p. idź do Punktu 1.
Strategie minimalizujące koszt
Przeszukiwanie skupione
0. L0 = {s0}, m=0, przyjmij początkowe k
1. Stwórz Pm+1 jako zbiór wszystkich stanów wygenerowanych z Lm
2. m:=m+1
3. Wybierz Lm jako k najlepszych (w sensie sumy kosztów) stanów z Pm
4. Jeśli znalazł się stan terminalny to zapamiętaj go, usuń z Lm i zmniejsz k o 1
Strategie minimalizujące koszt
Porównanie metod
Przykład: poszukiwanie najkrótszej drogi z A do G
Strategie minimalizujące koszt
Porównanie metod
Pierwszy najtańszy - znajduje najlepsze rozwiązanie ale jest najbardziej
zasobożerny
Strategia zachłanna - najszybsza ale dająca słabe rozwiązania
Strategia skupiona - przez parametr k można ją płynnie dostosować do okoliczności
Strategie heurystyczne
Pierwszy najlepszy
h(s) - oszacowanie kosztu od stanu s do końca 0. i=0
1. Rozwiń stan si w stany si,1, si,2, itd.
2. Wybierz jako si+1 stan minimalizujący c(si, si,j)+h(si,j).
3. i:=i+1
4. Jeśli s jest terminalny - zakończ,
Strategie heurystyczne
A*
h(s) - dolne ograniczenie kosztu od stanu s do końca 0. i=0, G0={s0}
1. Rozwiń z si zbiór stanów Pi 2. Gi+1=Gi ∪Pi -{si}
3. i:=i+1
4. Wybierz si jako stan z Gi minimalizujący f(s) = C(s) + h(s).
5. Jeśli s jest terminalny - zakończ, w p.p. idź do Punktu 1.
Strategie heurystyczne
A*
Przykład: poszukiwanie najkrótszej drogi z A do G
Strategie heurystyczne
IDA* (Iterative Deepening A*)
h(s) - dolne ograniczenie kosztu od stanu s do końca f(s) = c(s) + h(s).
0. Zainicjuj fmax
1. Dokonaj przeszukania wgłąb bez rozwijania stanów dla których f(s)>fmax
2. Jeśli znalazł się stan terminalny - zwróć go jako rozwiązanie
3. Powiększ f i idź do Linii 1.
Strategie heurystyczne
Porównanie i rekomendacje
• Pierwszy najlepszy <= optymalność nie jest krytyczna a heurystyka oceniająca jest
dobra
• A* <= optymalność jest istotna a wymagania pamięciowe nie są ostre
• IDA* <= przestrzeń stanów nie zmieści się w pamięci a heurystyka oceniająca jest