• Nie Znaleziono Wyników

Wprowadzenie do Sztucznej Inteligencji

N/A
N/A
Protected

Academic year: 2021

Share "Wprowadzenie do Sztucznej Inteligencji"

Copied!
41
0
0

Pełen tekst

(1)

©AM

Wprowadzenie do Sztucznej Inteligencji

Wykład 3

Informatyka Studia InŜynierskie

Przeszukiwanie przestrzeni stanów

Przestrzeń stanówjest to czwórka uporządkowana [N, A, S, GD], gdzie:

N jest zbiorem wierzchołków odpowiadających stanom w procesie rozwiązywania problemu

A jest zbiorem krawędzi, odpowiadających krokom w procesie rozwiązywania problemu

S jest niepustym podzbiorem N, zawierającym stany początkowe problemu

GDjest niepustym podzbiorem N, zawierającym stany docelowe problemu.

Stany GD są opisane:

przez podanie własności stanów występujących w przeszukiwaniu

przez podanie własności ścieŜki tworzonej podczas przeszukiwania

ŚcieŜką rozwiązania nazywamy ścieŜkę wiodącą przez ten graf z

(2)

©AM

Podstawowe problemy teorii przeszukiwania przestrzeni stanów

• Czy metoda gwarantuje znalezienie rozwiązania?

• Czy algorytm zakończy się w kaŜdym przypadku, czy moŜe wpaść w pętlę nieskończoną?

• Czy jeśli rozwiązanie zostanie znalezione, to mamy gwarancję, Ŝe będzie to rozwiązanie optymalne?

• Jaka jest czasowa i pamięciowa ("przestrzenna") złoŜoność obliczeniowa procesu przeszukiwania?

• Czy i w jaki sposób moŜna zredukować złoŜoność obliczeniową?

Sformułowanie zadania dla algorytmów przeszukiwania

• Definicja stanu przestrzeni

• Stan początkowy problemu (ang. initial state)

• Zbiór dopuszczalnych operatorów/akcji (ang.

operator/action set) lub funkcja następnika (ang. successor function)

• Zbiór stanów docelowych (ang. goal states) lub funkcja weryfikacji celu (ang. goal test)

• Funkcja kosztu ścieŜki (ang. path cost) - z reguły jest to głębokość przeszukiwania

(3)

©AM

Własności przestrzeni stanów w reprezentacji grafowej

• Powtarzające się stany (cykle)

• Identyfikacja typu grafu reprezentującego przestrzeń przeszukiwania: drzewa, acykliczne grafy skierowane (DAG)

• Rozmiar przestrzeni stanów (ograniczanie złoŜoności)

Powtarzające się stany:

efektywność przeszukiwania

A

B

C

D

A

B

C

B

C C C

Przestrzeń stanów Graf przeszukiwania przestrzeni

(4)

©AM

Powtarzające się stany: charakterystyka

• Konieczność wykrywania ze względu na efektywność przeszukiwania

• Nieuniknione w niektórych zadaniach (np. z

odwracalnymi operatorami) - warunek zatrzymania

• Uwaga! Kompromis między kosztami

przeszukiwania a kosztami wykrywania powtórzeń stanów

Powtarzające się stany:

metody przeciwdziałania

• Zakaz powrotu do bezpośrednio poprzedzającego stanu

• Wykrywanie cykli w ścieŜce - zakaz generowania jakiegokolwiek stanu poprzedzającego (pośrednio)

• Wykrywanie dowolnego powtarzającego się stanu w całym grafie przeszukiwania (duŜe wymagania pamięciowe!)

(5)

©AM

Przykład przeszukiwania przestrzeni stanów:

problem komiwojaŜera

A B

E C

D

75

100 100 50

50 125

75 125 125

100

|ACDBEA| = 450

Przykład przeszukiwania przestrzeni stanów:

problem komiwojaŜera

A

B C D E

C D

E B D E

D

E

A E

D C

E E

C

A A A

175

125 100 75

100

225 250 175

150 225

250 275

300

375

325

425 275

400

475 225

400

525

(6)

©AM

Kierunki przeszukiwania przestrzeni stanów

• Przeszukiwanie w przód (ang. forward chaining)

• Przeszukiwanie w tył (ang. backward chaining)

• Przeszukiwanie dwukierunkowe (ang.

bidirectional search)

Przeszukiwanie w przód

Start

Cel

(7)

©AM

Przeszukiwanie w tył

Start

Cel

Branching factor - co to takiego?

2 2 2

3

3 3 3 3 3 3

(8)

©AM

Kiedy przeszukiwanie w przód?

Wszystkie lub większość danych zawarta jest w początkowym sformułowaniu problemu - np. interpretacja i analiza duŜych zbiorów danych

Występuje duŜa liczba potencjalnych celów, ale jest tylko kilka moŜliwości zastosowania faktów i informacji wejściowych dla konkretnej instancji problemu

Trudno sformułować hipotezę docelową - np. określanie struktury związków chemicznych

Przeszukiwanie w przód wykorzystuje wiedzę i ograniczenia zawarte w danych i opisie stanu początkowego problemu, aby pokierować przeszukiwaniem zgodnie z zasadami opisanymi przez operatory zmiany stanów.

Kiedy przeszukiwanie w tył?

Cel lub hipoteza jest dana w sformułowaniu problemu albo moŜna ją łatwo sformułować – np. dowodzenie twierdzeń matematycznych, systemy diagnostyczne

Liczba reguł moŜliwych do zastosowania rośnie szybko i powoduje, Ŝe liczba odwiedzanych stanów jest bardzo duŜa; wczesna sekcja celów moŜe wyeliminować większość gałęzi tak, Ŝe przeszukiwanie będzie bardziej efektywne – np. dowodzenie twierdzeń

Dane o problemie nie są znane explicite, tylko muszą być pozyskane przez rozwiązującego; przeszukiwanie w tył moŜe pomóc ukierunkować proces pozyskiwania danych - np. diagnostyka medyczna

Przeszukiwanie wstecz wykorzystuje informacje o Ŝądanym celu i kieruje procesem przeszukiwania poprzez dobór odpowiednich operatorów zmiany stanów oraz eliminację pewnych gałęzi z przestrzeni stanów.

(9)

©AM

Przeszukiwanie dwukierunkowe

Start

Cel

Przeszukiwanie dwukierunkowe

• Jednoczesne przeszukiwanie w przód i w tył

• Ograniczenie złoŜoności czasowej

• Problem generowania poprzedników stanu

• Problem wielu stanów docelowych (np. stany poprzedzające mata w szachach)

• Efektywna metoda sprawdzania występowania stanu w grafie przeszukiwania przeciwnego kierunku (problem wyminięcia!)

• Dobór odpowiedniej strategii przeszukiwania w kaŜdym kierunku

(10)

©AM

Praktyczna realizacja przeszukiwania - mechanizm nawrotów

Start

Cel

Strategie przeszukiwania przestrzeni stanów

• Przeszukiwanie wszerz (ang. breadth-first search)

• Przeszukiwanie w głąb (ang. depth-first search)

Przeszukiwanie w głąb z nawrotami (ang. depth-first search with backtracking)

• Przeszukiwanie z iteracyjnym pogłębianiem (ang. iterative deepening search)

• Przeszukiwanie metodą jednolitego kosztu (ang. uniform-cost search)

(11)

©AM

Algorytm przeszukiwania w głąb

procedure depth_first_search(initial_state) begin

open = [initial_state];

closed = [];

while open ≠ [] do begin

remove the leftmost state from open, call it X;

if X is goal state then return(success);

generate all children of X;

put X on closed;

eliminate any children of X already on either open or closed, as this will cause loops in the search;

put the remaining descendants, in order of discovery, on the LEFT end of open;

end end.

Przeszukiwanie w głąb - przykład

A

B C D

E F G H I J

K L M N O P Q R

S T U

Open

Closed

(12)

©AM

Przeszukiwanie w głąb - przykład

A

B C D

E F G H I J

K L M N O P Q R

S T U

Open

Closed

Przeszukiwanie w głąb - przykład

A

B C D

E F G H I J

K L M N O P Q R

S T U

Open

Closed

(13)

©AM

Przeszukiwanie w głąb - przykład

A

B C D

E F G H I J

K L M N O P Q R

S T U

Open

Closed

Przeszukiwanie w głąb - przykład

A

B C D

E F G H I J

K L M N O P Q R

S T U

Open

Closed

(14)

©AM

Przeszukiwanie w głąb - przykład

A

B C D

E F G H I J

K L M N O P Q R

S T U

Open

Closed

Przeszukiwanie w głąb - przykład

A

B C D

E F G H I J

K L M N O P Q R

S T U

Open

Closed

nawrót

(15)

©AM

Przeszukiwanie w głąb - przykład

A

B C D

E F G H I J

K L M N O P Q R

S T U

Open

Closed

Przeszukiwanie w głąb - przykład

A

B C D

E F G H I J

K L M N O P Q R

S T U

Open

Closed

nawrót

(16)

©AM

Przeszukiwanie w głąb - przykład

A

B C D

E F G H I J

K L M N O P Q R

S T U

Open

Closed

eliminacja powtórzeń

Przeszukiwanie w głąb - przykład

A

B C D

E F G H I J

K L M N O P Q R

S T U

itd.

Open

Closed

(17)

©AM

Algorytm przeszukiwania w głąb (rekurencja)

function depth_first_search(current_state) begin

if current_state is a goal then return(success) else

begin

add current_state to closed;

while current_state has unexamined children do begin

child := next unexamined child of current_state

if child is not a member of closed then {check for loops}

if depth_first_search(child) = success then return(success)

end end;

return(fail) end.

Przeszukiwanie w głąb - przykład

12 8

1 6 7

3 4 5

2 8 1 6 7 3 4 5

2 8 1 7 6

3 4 5

2 8 6 1 7 3 4 5

2 8 1 7 6 3 4 5

2 1 8 7 6 3 4 5

8 2 6 1 7 3 4 5

8 2 1 7 6 3 4 5

2 1 8 7 6 3 4 5 2 8

6 1 7

3 4 5

2 8 7 1 6 3 4 5

8 2 6 1 7 3 4 5

2 6 8 1 7 3 4 5

2 8 6 4 1 7 3 5

2 8 6 7 1

3 4 5 8 2 1 7 6 3 4 5

1 2 8 7 6 3 4 5 2 8 7 1 6

3 4 5

8 3 2 64

8 6 2

3 4

2 6 8 3 4

2 3 6 8 4

2 8 6 43

2 8 6 4 3 5

2 8 6 7 3 4

2 8 6 7 3 4

8 3 2 14

8 1 2

3 4

2 8 7

3 4

2 8 7 1 3 4

1 2 7 8 3 4

1 2 8

3 4 cel

2 18

3 19 28

4 8 20 24 29

5 9 12 15 21 25 30

(18)

©AM

Algorytm przeszukiwania wszerz

procedure breadth_first_search(initial_state) begin

open = [initial_state];

closed = [];

while open ≠ [] do begin

remove the leftmost state from open, call it X;

if X is goal state then return(success);

generate all children of X;

put X on closed;

eliminate any children of X already on either open or closed, as this will cause loops in the search;

put the remaining descendants, in order of discovery, on the RIGHT end of open;

end end.

Przeszukiwanie wszerz - przykład

A

B C D

E F G H I J

K L M N O P Q R

S T U

Open

Closed

(19)

©AM

Przeszukiwanie wszerz - przykład

A

B C D

E F G H I J

K L M N O P Q R

S T U

Open

Closed

Przeszukiwanie wszerz - przykład

A

B C D

E F G H I J

K L M N O P Q R

S T U

Open

Closed

(20)

©AM

Przeszukiwanie wszerz - przykład

A

B C D

E F G H I J

K L M N O P Q R

S T U

Open

Closed

Przeszukiwanie wszerz - przykład

A

B C D

E F G H I J

K L M N O P Q R

S T U

Open

Closed

(21)

©AM

Przeszukiwanie wszerz - przykład

A

B C D

E F G H I J

K L M N O P Q R

S T U

Open

Closed

Przeszukiwanie wszerz - przykład

A

B C D

E F G H I J

K L M N O P Q R

S T U

Open

Closed

(22)

©AM

Przeszukiwanie wszerz - przykład

A

B C D

E F G H I J

K L M N O P Q R

S T U

itd.

Open

Closed

Przeszukiwanie wszerz - przykład

12 8

1 6 7

3 4 5

2 8 1 6 7 3 4 5

2 8 1 7 6

3 4 5

2 8 1 6 7 5 3 4

2 8 6 1 7 3 4 5

2 8 1 7 6 3 4 5

2 8 1 4 7 6 3 5 2

1 8 7 6 3 4 5

2 8 1 6 7 5 3 4

8 2 6 1 7 3 4 5

8 2 1 7 6 3 4 5

2 8 1 4 7 6 3 5 2

1 8 7 6 3 4 5

2 8 1 7 5

3 6 4 2 8

6 1 7

3 4 5

2 8 7 1 6 3 4 5

2 8 1 4 7 6 3 5 2 3

1 8 7 6 4 5

2 8 1 6 7 5 3 4

8 2 6 1 7 3 4 5

2 6 8 1 7 3 4 5

2 8 6 4 1 7 3 5

2 8 6 7 1

3 4 5 8 2 1 7 6 3 4 5

2 1 4 7 6 8 3 5 1 2

8 7 6 3 4 5 2 8 7 1 6

3 4 5

2 8 1 4 7

3 5 6 2 3

1 8 7 6 4 5

2 8 1 7 5 3 6 4 2 1 8 7 5 3 6 4

2 8 1 5 7

3 6 4

2 1 6 7 5 8 3 4

8 3 2 64

8 6 2

3 4

2 6 8 3 4

2 3 6 8 4

2 8 6 43

2 8 6 4 3 5

2 8 6 7 3 4

2 8 6 7 3 4

8 3 2 14

8 1 2

3 4

2 8 7

3 4

2 8 7 1 3 4

1 2 7 8 3 4

1 2 8

3 4 cel

2 3 4

5 6 7 8 9

10 11 12 13 14 15 16 17 18 19

20 21 22 23 24 25 26 27 28 29

30 31 32 33

(23)

©AM

Algorytm przeszukiwania z iteracyjnym pogłębianiem (1)

procedure iterative_deepening_search(initial_state) begin

for depth ← 0 to ∞ do begin

if depth_limited_search(initial_state, depth) = success then return(its result);

end;

return(failure);

end.

Algorytm przeszukiwania z iteracyjnym pogłębianiem (2)

function depth_limited_search(current_state, depth) begin

if current_state is a goal then return(success) else

if depth = 0 then return(failure) else

begin

add current_state to closed;

while current_state has unexamined children do begin

child := next unexamined child of current_state

if child is not a member of closed then {check for loops}

if depth_limited_search(child, depth-1) = success then return(success)

end end;

return(failure)

(24)

©AM

Iteracyjne pogłębianie - przykład

A depth=0

Open Closed

Iteracyjne pogłębianie - przykład

A

B C D

depth=1

Open Closed

(25)

©AM

Iteracyjne pogłębianie - przykład

A

B C D

depth=1

Open Closed

Iteracyjne pogłębianie - przykład

A

B C D

depth=1

Open Closed

(26)

©AM

Iteracyjne pogłębianie - przykład

A

B C D

depth=1

Open Closed

Iteracyjne pogłębianie - przykład

A

B C D

E F G H I J

depth=2

Open Closed

(27)

©AM

Iteracyjne pogłębianie - przykład

A

B C D

E F G H I J

depth=2

Open Closed

Iteracyjne pogłębianie - przykład

A

B C D

E F G H I J

depth=2

Open Closed

(28)

©AM

Iteracyjne pogłębianie - przykład

A

B C D

E F G H I J

depth=2

Open Closed

Iteracyjne pogłębianie - przykład

A

B C D

E F G H I J

depth=2

Open Closed

(29)

©AM

Iteracyjne pogłębianie - przykład

A

B C D

E F G H I J

depth=2

Open Closed

Iteracyjne pogłębianie - przykład

A

B C D

E F G H I J

depth=2

Open Closed

(30)

©AM

Iteracyjne pogłębianie - przykład

A

B C D

E F G H I J

depth=2

Open Closed

Iteracyjne pogłębianie - przykład

A

B C D

E F G H I J

depth=2

Open Closed

(31)

©AM

Iteracyjne pogłębianie - przykład

A

B C D

E F G H I J

depth=2

Open Closed

Iteracyjne pogłębianie - przykład

A

B C D

E F G H I J

K L M N O P Q R

depth=3

Open Closed

(32)

©AM

Iteracyjne pogłębianie - przykład

A

B C D

E F G H I J

K L M N O P Q R

depth=3

Open Closed

Iteracyjne pogłębianie - przykład

A

B C D

E F G H I J

K L M N O P Q R

depth=3

Open Closed

(33)

©AM

Iteracyjne pogłębianie - przykład

A

B C D

E F G H I J

K L M N O P Q R

depth=3

Open Closed

Iteracyjne pogłębianie - przykład

A

B C D

E F G H I J

K L M N O P Q R

depth=3

Open Closed

(34)

©AM

Iteracyjne pogłębianie - przykład

A

B C D

E F G H I J

K L M N O P Q R

depth=3

itd.

Open Closed

Algorytm Uniform-cost search

procedure uniform_cost_search(initial_state) begin

open = [initial_state];

closed = [];

while open ≠ [] do begin

remove the first state from open, not already on closed, call it X;

if X is a goal state then return(solution path that led to X);

generate all children of X;

put X on closed;

for each child of X do

assign path cost to the child state;

add the child state to the open;

end;

re-order states on open according to path cost value (lower values first) end

end.

(35)

©AM

Algorytm UCS - przykład(1)

A-0

B-5 C-5 D-6

E F G H I J

K L M N O P Q R

S T U

5 5 6 Open

Closed 6 koszt operacji

Algorytm UCS - przykład(2)

A-0

B-5 C-5 D-6

E F G H I J

K L M N O P Q R

S T U

5 5 6 Open

Closed 6 koszt operacji

(36)

©AM

Algorytm UCS - przykład(3)

A-0

B-5 C-5 D-6

E-9 F-9 G H I J

K L M N O P Q R

S T U

5 5 6

4 4

Open

Closed 6 koszt operacji

Algorytm UCS - przykład(4)

A-0

B-5 C-5 D-6

E-9 F-9 G-9 H-8 I J

K L M N O P Q R

S T U

5 5 6

4 4 4 3

Open

Closed 6 koszt operacji

(37)

©AM

Algorytm UCS - przykład(5)

A-0

B-5 C-5 D-6

E-9 F-9 G-9 H-8 I-12 J-13

K L M N O P Q R

S T U

5 5 6

4 4 4 3 6 7

Open

Closed 6 koszt operacji

Algorytm UCS - przykład(6)

A-0

B-5 C-5 D-6

E-9 F-9 G-9 H-8 I-12 J-13

K L M N Q R

S T U

5 5 6

4 4 4 3 6 7

2 3

Open

Closed

O-10 P-11

6 koszt operacji

(38)

©AM

Algorytm UCS - przykład(7)

A-0

B-5 C-5 D-6

E-9 F-9 G-9 H-8 I-12 J-13

K-15 L-12 M N O-10 P-11 Q R

S T U

5 5 6

4 6

4 4 3 6 7

3 2 3

Open

Closed 6 koszt operacji

Algorytm UCS - przykład(8)

A-0

B-5 C-5 D-6

E-9 F-9 G-9 H-8 I-12 J-13

K-15 L-12 M-13 N O-10 P-11 Q R

S T U

5 5 6

4 6

4 4 3 6 7

3 3 4 2 3

Open

Closed 6 koszt operacji

(39)

©AM

Algorytm UCS - przykład(9)

A-0

B-5 C-5 D-6

E-9 F-9 G-9 H-8 I-12 J-13

K-15 L-12 M-13 N-14 O-10 P-11 Q R

S T U

5 5 6

4 6

4 4 3 6 7

3 3 4 5 2 3

Open

Closed 6 koszt operacji

Algorytm UCS - przykład(10)

A-0

B-5 C-5 D-6

E-9 F-9 G-9 H-8 I-12 J-13

K-15 L-12 M-13 N-14 O-10 P-11 Q R

S T U

5 5 6

4 6

4 4 3 6 7

3 3 4 5 2 3

Open

Closed 6 koszt operacji

(40)

©AM

Algorytm UCS - przykład(11)

A-0

B-5 C-5 D-6

E-9 F-9 G-9 H-8 I-12 J-13

K-15 L-12 M-13N-14 O-10 P-11 Q R

S T U-12

5 5 6

4 6

4 4 3 6 7

3 3 4 5 2 3 1

Open

Closed

itd.

6 koszt operacji

Algorytm UCS: charakterystyka

Cechy szczególne

Ocena stanu to koszt dojścia do tego stanu (koszt pokonanej ścieŜki od stanu początkowego) - koszt przejścia z dowolnego stanu do jego stanu potomnego musi być zawsze ≥ 0

Stanowi uogólnienie algorytmu przeszukiwania wszerz - w algorytmie przesz. wszerz koszt, to głębokość na jakiej leŜy stan

Optymalny (gwarantuje znalezienie najkrótszego rozwiązania)

Wady

DuŜe wymagania czasowe i pamięciowe (rosnące wykładniczo!)

!!!

(41)

©AM

Porównanie strategii przeszukiwania

Kryterium Wszerz Uniform- cost

W głąb z nawrotami

Iteracyjne pogłębianie

Dwukie- runkowe

( jeśli moŜliwe)

Czas Bd Bd Bn Bd Bd/2

Pamięć Bd Bd Bn Bd Bd/2

Optymalny? Tak Tak Nie Tak Tak

Zupełny? Tak Tak Tak Tak Tak

B - średnia liczba następników kaŜdego stanu (ang. branching factor)

n - maksymalna głębokość przeszukiwania d - głębokość rozwiązania

Kryterium Wszerz Uniform- cost

W głąb z nawrotami

Iteracyjne pogłębianie

Dwukie- runkowe

( jeśli moŜliwe)

Czas Bd Bd Bn Bd Bd/2

Pamięć Bd Bd Bn Bd Bd/2

Optymalny? Tak Tak Nie Tak Tak

Zupełny? Tak Tak Tak Tak Tak

B - średnia liczba następników kaŜdego stanu (ang. branching factor)

n - maksymalna głębokość przeszukiwania d - głębokość rozwiązania

Zasady implementacji algorytmów przeszukiwania przestrzeni stanów

1. Reprezentacja rozwiązania problemu jako ścieŜki od stanu początkowego do stanu docelowego.

2. Przeglądanie systematyczne wszystkich ścieŜek w poszukiwaniu celu.

3. Powrót do poprzedniego stanu pozwalający na wznowienie przeszukiwania w sytuacji, gdy dotychczasowa ścieŜka nie prowadzi do celu - mechanizm nawrotów.

4. Struktury listowe umoŜliwiające utrzymywanie w sposób jawny danych o aktualnie analizowanych stanach:

• lista open, pozwalająca na powrót do nie odwiedzonych jeszcze stanów,

• lista closed stanów juŜ odwiedzonych, pozwalająca na wykrywanie pętli i uniknięcie powtarzania bezowocnych ścieŜek.

5. Zastosowanie stosu w algorytmie przeszukiwania w głąb i kolejki

Cytaty

Powiązane dokumenty

• O ile jednak klasyczne gry planszowe mają na tyle proste reguły i ograniczoną przestrzeń rozwiązań, że udało się już stworzyć komputerowych graczy co najmniej

• Warto aby zapis był intuicyjny; warto unikać predykatów

Panowie Abacki, Babacki i Cabacki uprawiają różne zawody, jeden z nich to architekt a pozostali to. informatyk

• Sztuczna inteligencja to badania mające na celu stworzenie komputerów posiadających umiejętności, w których człowiek jest obecnie lepszy.. [Rich i

rezolucji moż że by e być ć pochł poch łoni onię ęta przez inn ta przez inną ą klauzulę klauzul

• Okre Okreś ślona akcja jest analizowana jednak nie dlatego, lona akcja jest analizowana jednak nie dlatego, ż że prowadzi do e prowadzi do osi osią ągni gnię ęcia celu,

Samoorganizacja w sieci neuronowej (np. SOM) umożliwiają uczenie sieci bez nauczyciela (unsupervised), którego celem jest wykształcenie w sieci neuronów, które by reagowały na

Zaletą algorytmu przeszukiwania w głąb jest to, że nie przeszukujemy wszystkich wierzchołków grafu, dodatkowo przeszukując ścieżką prowadzącą bezpośrednio do