Sunteți pe pagina 1din 13

Inteligena Artificial

Cap. 4. Structuri i strategii de cutare

Cap. 4.
Structuri i strategii de cutare n spaiul de stri

Obiective
1. nsuirea noiunilor de baz privind reprezentarea problemelor de
inteligen artificial ca structuri de stri i rezolvarea acestora cu ajutorul
metodelor de cutare.
2. Formarea deprinderilor de reprezentare corect i eficient a problemelor
de inteligen artificial n spaiul de stri.
3. Dezvoltarea abilitilor practice de operare cu strategiile inteligente de
rezolvare prin metode de cutare n structuri arborescente (grafuri, n
general).

Durata: 2 ore
4.1. Inteligena artificial ca reprezentare i cutare
n lucrarea ACM Turing Award Lecture, Newell i Simon (1976) demonstreaz
c activitatea inteligent, uman sau artificial, se realizat prin intermediul:
1. Simbolurilor pentru reprezentarea aspectelor semnificative din domeniul
problemei;
2. Operaii pe aceste simboluri pentru generarea unor poteniale soluii
ale problemei;
3. Cutarea n vederea selectrii unei soluii dintre aceste posibiliti.
Cu alte cuvinte, trebuie definit o reprezentare simbolic a obiectelor din
domeniul aplicaiei i trebuie definii nite operatori prin care se poate modifica
aceast reprezentare.
Rezolvarea unei probleme de ctre o main gnditoare presupune
reprezentarea cunotinelor i cutarea soluiei, cele dou principii fiind ntr-o
interdependen reciproc.
4.1.1. Reprezentarea cunotinelor
nainte ca un calculator s poat ncepe soluionarea unei probleme, trebuie
ca detaliile problemei respective s fie reprezentate i codificate ntr-un limbaj
neles de calculator. Programatorul de inteligen artificial trebuie s
abstractizeze aceste detalii i s introduc n calculator numai acele date
indispensabile rezolvrii problemei.
39

Inteligena Artificial

Cap. 4. Structuri i strategii de cutare

4.1.2 Cutarea
Un al doilea aspect subliniat de Newell i Simon este acela c o problem
este soluionat prin cutarea soluiei printre nite alternative posibile. Acest
aspect este susinut de analogia cu gndirea uman. Omul utilizeaz de asemenea
un numr de strategii n modul lui de a rezolva o problem. De exemplu, un
juctor de ah analizeaz un anumit numr de micri viitoare, alegnd micarea
n funcie de un criteriu de eficien, astfel ales nct s-i asigure un avantaj
maxim. Un matematician alege dintre diferite strategii, nu mai puin complexe, pe
acelea care-i permit demonstrarea unei teoreme complexe; un fizician poate
investiga un anumit numr de cauze posibile ale unui anumit fenomen .a.m.d.
Acest aspect al inteligenei contureaz aa numita tehnica de rezolvare prin
cutare n spaiul de stri.
Prin stare se nelege o anumit configuraie a problemei investigate. De
exemplu, n jocul de ah o stare este o anumit poziie de pe tabla de ah. n
calculator, o poziie este reprezentat printr-o aa numit baz de date, baz a
crei complexitate depinde de natura problemei abordate, mergnd de la cteva
numere pn la o baz de date relaional. n procesul de rezolvare a unei
probleme, omul sau maina poate utiliza anumite reguli, poate aplica anumite
procedee sau artificii sau, n cazul jocurilor, poate efectua anumite mutri. De
exemplu, n jocul de ah poate efectua oricare din mutrile posibile. Aceste reguli,
procedee sau mutri vor produce modificri asupra bazei de date, aceasta
reflectnd starea curent a problemei.
Totalitatea acestor stri vor constitui un spaiu pe care-l vom denumi spaiul
de stri. Dintre acestea, vom deosebi o stare denumit stare iniial reflectnd
datele iniiale ale problemei. De asemenea, strile ce constituie soluii posibile ale
problemei vor fi denumite stri finale.
Grafurile constituie un instrument practic i eficient de reprezentare a
obiectelor i a relaiilor dintre acestea. Teoria grafurilor a fost introdus la
nceputul secolului al XVIII-lea de matematicianul austriac Leonhard Euler n
vederea soluionrii celebrei probleme cunoscut sub numele de podurile din
Knigsberg.
Grafurile ofer un instrument ideal de reprezentare al spaiului de stri al unei
probleme. Astfel, nodurile vor reprezenta strile distincte ale problemei, iar arcele
regulile, operaiile sau mutrile efectuate n procesul de rezolvare al problemei. La
un astfel de graf deosebim un nod corespunztor strii iniiale, nod ce va constitui
rdcina grafului. De asemenea, graful va conine cel puin un nod care va
constitui starea final sau soluia problemei (evident, n ipoteza c problema are
soluie). Acest astfel de nod este denumit nod final sau goal.
Utiliznd grafurile pentru reprezentarea spaiului de stri, rezolvarea
problemei se reduce la cutarea n graful asociat a unui drum de la nodul iniial la
unul din nodurile finale.

40

Inteligena Artificial

Cap. 4. Structuri i strategii de cutare

O implementare eficient a unui algoritm de cutare cere programatorului s


analizeze i s prevad comportarea algoritmului, acesta fiind confruntat cu
urmtoarele probleme:
conduce algoritmul respectiv la o soluie?
algoritmul conduce la o soluie ntr-un numr finit (rezonabil) de pai sau
poate intra ntr-un ciclu infinit?
dac o soluie este gsit este aceasta optim?
ct de amplu este procesul de cutare n termenii timpului de calcul
consumat i al memoriei afectate?
Exemplul 1. Este foarte cunoscut aa numitul joc 15-Puzzle constituit din 15
jetoane ptrate numerotate de la 1 la 15 dispuse ntr-un chenar, jucat de
majoritatea copiilor. Fie, pentru simplitatea reprezentrii, un joc 8-puzzle:
1

8
7

3
4

Cteva aspecte interesante privitoare la procesul de rezolvare a problemelor


pot fi evideniate pe acest joc.
Dei micrile fizice sunt efectuate prin mutarea micilor jetoane numerotate
de la 1 la 8, este mult mai simplu s ne imaginm c mutm spaiul liber
reprezentat prin ptrelul negru. Astfel, urmtoarele mutri sunt permise:
mutarea ptrelului negru n sus

mutarea ptrelului negru la dreapta

mutarea ptrelului negru n jos

mutarea ptrelului negru la stnga

Pentru a aplica aceste mutri, trebuie avut grij ca ptrelul negru s nu


prseasc tabla de joc. Prin urmare, nu toate dintre cele patru mutri sunt
aplicabile la un moment dat. De exemplu, cnd ptrelul negru este ntr-unul din
coluri numai dou din micri sunt posibile.
Dac se specific o stare iniial i una final, se poate reprezenta graful de
cutare propriu problemei propuse. Strile se pot reprezenta ca tablouri 33.
Utiliznd calculul predicatelor, o stare, sau baza de date curent se poate
reprezenta printr-un predicat stare coninnd 9 argumente. De exemplu, starea
iniial poate fi reprezentat utiliznd predicatul:
stare(1,4,3,7,0,6,5,8,2)
unde s-a notat cu 0 ptrelul negru.
Patru proceduri, definind cele patru micri posibile vor defini arcele grafului
de reprezentare a spaiului de stri. Ca i n cazul precedent, multe stri pot avea
diferii descendeni, prin urmare digraful asociat nu este o arborescen. Un drum
de la starea iniial la starea final n digraful astfel generat nu reprezint altceva
dect strategia sau secvena de micri care conduce la rezolvarea problemei.
41

Inteligena Artificial

Cap. 4. Structuri i strategii de cutare

Trebuie de remarcat c n acest caz digraful generat nu mai este aciclic, o


anumit configuraie a dispunerii celor 8 numere putndu-se repeta n cadrul
jocului. Dar, dac n graful generat exist un drum de la starea iniial la cea de
goal atunci exist sigur i un drum elementar ntre cele dou stri. Explornd
numai drumurile elementare riscul ca algoritmul de cutare s pice ntr-un ciclu
infinit este exclus.
1

6
2

7
5
up
1

left

6
2

right

left
1

6
2

6
2

6
2

up

6
2

right

down

down

6
2

6
2

6
2

Fig. 1. Spaiul de stri n cazul unui 8-puzzle

4.2. Strategii de cutare


Clasificarea algoritmilor de cutare
1. Direcia de cutare

cutare direct (forward chaining, data driven): se pornete de


la starea iniial i se identific drumul ctre starea final.

cutare invers (forward chaining): se pornete de la goal i


ajunge n starea iniial.

cutare mixt: cutare n ambele direcii.


2. Spaiul de cutare

cutare complet (exhaustiv), pe ntreaga mulime S.


cutare incomplet, pe o mulime S S. Este cercetat numai un
subspaiu al mulimii S (hill climbing, beam search).
3. Strategia de cutare

irevocabil (fr revenire, metode de gradient).

cu revenire sau backtracking.


4. Exploatarea informaiei stocate n starea curent (informativitate)

cutare oarb sau neordonat blind search).

42

up

right

left

down

3
2

Inteligena Artificial

Cap. 4. Structuri i strategii de cutare

cutare euristic (informat), estimeaz distana de la starea curent


la soluie n vederea selectrii celui mai promitor descendent.

4.2.1. Algoritmi de cutare exhaustiv


Cutarea pe ntreg spaiul de stri poate fi implementat cu ajutorul a doi
algoritmi reprezentativi:
1. Depth First (cutare n adncime);
2. Breadth First (cutare pe nivel).
n implementarea celor dou metode de cutare se utilizeaz dou liste:
Lista Open conine strile care urmeaz a fi expandate (explodate, cercetate);
Lista Close conine strile care au fost deja cercetate.
Elementele acestor liste sunt de forma (s, p): s stare curent, p starea printe.
s0
s1
s2
s3

s8
s6

s4

s0
s1

s9
s4

s7
s7

s5

Depth First

s2
s5

s8

s3

s6

s9

Breadth First

4.2.1.1. Algoritmul Depth-First (cutare n adncime)


procedure DepthFirst
begin
Open [(s0 nil)];
Close [ ];
while Open [ ] do
begin
extract ((s, p), Open) {Extrage primul element al listei Open}
insert ((s, p), Close) {insereaz primul element n lista Close}
if goal (s) then begin
compune_solutia; exit/continue;
end;
t

D {d S | s
d , t T}
for d in D do
if ((d, _) Open) ((d, _) Close) then insert ((d,s), Open);
{Se insereaz (d,s) la nceputul listei Open);
end;
writeln(Problema nu are soluie)
end;

43

Inteligena Artificial

Cap. 4. Structuri i strategii de cutare

Lista Close

Lista Close

Lista Open

Lista Open

Algoritmul Depth First

Algoritmul Breadth First

Dezavantajele cutrii de tip Depth First:


nu gsete n general soluia optim;
algoritmul se poate pierde n explorarea unor ramuri foarte lungi,
programul putnd fi ntrerupt datorit depirii resurselor de memorie.
Exemplu: S se descrie evoluia listelor Open i Close n problema de cutare
reprezentat mai jos prin algoritmul Depth First.
a 1

i
4

10

f
7

g
goal

Rezolvare
Open =[ a], Close =[ ]
1. Open =[ ], x = a
D(x) =b, e, i;
Close =[ a], Open =[ b, e, i],
2. x = b, Open =[ e, i],
Dx=c, d;
Close =[ a, b], Open =[ c, d, e, i],
3. x = c, Open =[ d, e, i], Close =[ a, b, c],
4. x = d, Open =[ e, i], Close =[ a, b, c, d],
5. x = e, Open =[ i], Close =[ a, b, c, d, e],
D(x)= d, f; % d nu se mai examineaz
Open =[ f, i],

11

6. x = f, Open =[i], Close =[a, b, c, d, e, f],


D(x) = g, h; Open =[ g, h, i],
7. x = g, Open =[h, i], Close =[ a, b, c,
d, e, f, g].
n lista Close se regsesc perechile (S,
P) (Stare, Printe)
(b, a), (c, b), (d, b), (e, a), (i, a), (f, e),
(g, f).
Soluia problemei: aefg.
D(x) mulimea descendenilor strii x

44

Inteligena Artificial

Cap. 4. Structuri i strategii de cutare

4.2.1.2. Algoritmul Breadth-First (cutare pe nivel)


Dac algoritmul Depth First implementeaz o strategie de tip stiv (LIFO),
algoritmul Breadth First are la baz o strategie de tip coad (FIFO).
Algoritmul Breadth-First este simular cu cel prezentat la metoda Depth First,
cu diferena c starea (d,s) se insereaz la sfritul listei Open i nu la nceputul
acesteia (v. fig. de mai jos).
0

Open

s
s

Close
4

10

11

12

d1
13

d2

d3

14

Avantaj: gsete soluia de lungime minim.


Dezavantaj: resursele de memorie necesare sunt foarte mari, acestea crescnd
exponenial cu nivelul de adncime explorat.
4.2.2. Algoritmi de cutare euristic
George Polya asocia termenul euristic semnificaia de studiu al metodelor i
regulilor descoperirii i inventicii. n dicionarul limbii romne contemporane
euristic = adjectiv al procedeelor metodologice cu semnificaia care servete la
descoperirea unor soluii noi.
Lenat (1982): prin euristic se definete acel tip de cunoatere avnd
caracterul de raionament bazat pe experien, specializare, generalizare i
analogie cu ajutorul cruia se efectueaz o interpretare, se ia o decizie sau se
acioneaz n vederea atingerii unui obiectiv.
Euristic = euristico = a descoperi <<EUREKA>>
n IA, cutarea euristic se utilizeaz n 2 sisteme de baz:
1. Problema nu are soluie exact datorit inerentelor ambiguiti din datele
problemei. Un diagnostic medical poate fi un exemplu n acest sens: aceleai
simptome pot avea la baz mai multe cauze. Un medic utilizeaz o euristic
pentru stabilirea celui mai probabil diagnostic.
2. Problema are o soluie exact, dar resursele necesare determinrii acesteia pot
fi inaccesibile sau insurmontabile. Ex: jocul de ah are 10120 stri.
Fie S spaiul strilor i f : S + (N ) denumit euristic care face o
evaluare a strilor avnd sS, f(s) desemnnd ansa sau probabilitatea ca s s se
gseasc pe drumul cel mai scurt spre soluia problemei.
Funcia f se mai numete i funcie cost sau lungime. O stare este cu att mai
bun cu ct f este mai mic. Se calculeaz min f(di) pentru 1 i k, adic se alege
45

Inteligena Artificial

Cap. 4. Structuri i strategii de cutare

descendentul de la care costul determinrii soluiei este cel mai mic. Se spune c
descendentul dmin are anse mai mari sau se gsete cu o probabilitate mai mare pe
drumul optim de la starea s la soluia problemei.
Atunci cnd spaiul strilor este foarte mare, acesta nu poate fi memorat sau
parcurs ntr-un timp rezonabil.
Cutarea euristic este incomplet, dar informaional. Avnd n vedere
caracterul incomplet al cutrii, un algoritm de cutare euristic poate conduce la
o soluie suboptimal sau poate chiar eua, n sensul c nu poate determina o
soluie. Cu toate acestea, n multe situaii cutarea euristic constituie singurul
mod de rezolvare a unei mod a unei probleme.
Cutarea euristic poate fi:
complet sau incomplet. Cele incomplete pot fi cu 1 descendent (Hill
Climbing) sau cu civa (cei mai buni Beam search);
cu revenire sau fr revenire (Hill Climbing).
s

d1

d2

dk

dj
f(dj)=min f(d)

dk

d2

d1

decendenii cu valorile f minimale

Algoritmul Hill Climbing

Algoritmul Beam search

Exemplul 1: TICTACTOE
Se consider c maina (calculatorul) joac prima (cu simbolul ), iar
juctorul cu caracterul o. Euristica se definete astfel: unei stri oarecare i se
atribuie
ca
valoare
euristic
numrul
posibilelor
combinaii
(linii+coloane+diagonale) ctigtoare ale calculatorului, deci numrul
liniilor/coloanelor/diagonalelor care conin i nu conin simbolul o.
Maina

Jucatorul A

46

Inteligena Artificial

Cap. 4. Structuri i strategii de cutare

Exemplul 2: 8 puzzle
h1(s) numrul jetoanelor care nu se gsesc pe poziia corect.
h2(s) suma deplasrilor
8 1
1 2 3
jetoanelor spre poziia corect.
h1(s) = 8.
h2(s) = 1+1+3+3+1+1+3+3= 16.

2
5

Starea s

7
4

4.2.2.1. Algoritmul Hill climbing


A fost propus i aplicat de Pearl n 1984. Este un algoritm fr revenire i cu
o strategie incomplet. Este aplicabil n probleme de optimizare utiliznd metoda
gradientului.
Se urmrete optimizarea funciei f(x1, x2,..., xn), n sensul determinrii max f,
i fie vectorul soluie Xk la pasul k ,

X k x1k , x2k , K, xnk X k +1 x1k +1 , x2k +1 , K, xnk +1 .


Soluia la pasul k+1 se stabilete astfel:

X k +1 = X k +

f k k
x1 , x2 , K, xnk .
xi

n acest mod, mergnd pe gradient, se asigur traseul ctre valoarea de max


(local sau global) a funciei f.
Cutare oarb: crtorul este nerbdtor i orb. Se alege panta cea mai
abrupt pn cnd se ajunge la un punct de la care nu se mai poate continua: s-a
atins soluia sau s-a ajuns la un maxim local. Cutarea poate s eueze. Samuel
Pearl a utilizat cu succes acest algoritm n implementarea jocului de dame.
4.2.2.2. Algoritmul Beam search
Este un algoritm cu revenire (backtracking), cu cutare incomplet. Din
mulimea succesorilor se rein numai aceia cu anse maxime (i relativ apropiate)
de a figura pe drumul optim.
4.2.2.3. Algoritmul BEST FIRST (cu revenire)
Acest algoritm se obine din algoritmul Depth
s
First cu amendamentul c descendenii strii
s
curente sunt ordonai cresctor, prin funcia de
evaluare, nainte ca acetia s fie depui la Close
nceputul listei Open.
Euristica f este conceput n modul urmtor:
d1
d2 d3
f(s) = g(s) + h(s),
g(s) adncimea strii s;
Ordonare
h(s) estimare euristic a lungimii (costului)
soluiei pornind de la starea s.
47

Inteligena Artificial

Cap. 4. Structuri i strategii de cutare

procedure BestFirstSearch
begin
Open := [(s nil, 0, h(s)]; Close := [ ];
while Open [ ] do
begin
extract ((s, p, g, h), Open)
insert ((s, p, g, h), Close)
if goal (s) then begin
compune_solutia (Close); exit;
end;
t

D:={d S | s
d , t T}
for d in D do
begin
gc := g + Cost(t); fc := gc + h(d);
end;
case d of
(d, _, _, _)Open Close: insert ((d, s, gc, fc), Open);
(d, pe, ge, fe)Open:
if fc<fe then
begin
remove ((d, pe, ge, fe), Open);
insert ((d, pc, gc, fc), Open);
end;
(d, pe, ge, fe)Close:
if fc<fe then
begin
remove ((d, pe, ge, fe), Close);
insert ((d, pc, gc, fc), Open);
end;
end; {case}
Ordoneaz(Open); { f minimal pe prima poziie}
end; {while}
writeln(Problema nu are soluie)
end;
Exemplul 1: Cutare ntr-un spaiu cu obstacole
Euristica: f(s) = f(x, y) = |xgx| + |ygy|. f(s) = 5.
r

Operatori

48

Inteligena Artificial

Cap. 4. Structuri i strategii de cutare

Exemplul 2: 8 puzzle
h(s) numrul pieselor care nu se gsesc n poziia corect (fr a include
spaiul liber);
Funcia de evaluare va fi de forma f(s) = g(s) + h(s):
g(s) adncimea sau costul cu care a fost generat starea s;
h(s) estimare euristic a costului soluiei pornind din starea s.
Starea curent
2

4
5

h=5
f=6

h=3
f=4

4
5

h=4
f=6
2

h=2
f=5

4
5

h=3
f=5

4
5

4
5

g=1

g=2

h=4
f=7

4
5

49

h=3
f=5
2

4
5

h=5
f=6

Starea final (goal)

g=3
4
5

Inteligena Artificial

Cap. 4. Structuri i strategii de cutare

REZUMAT
1.
2.

3.
4.

Rezolvarea unei probleme de ctre o main gnditoare presupune


reprezentarea cunotinelor i cutarea soluiei.
Tehnica de rezolvare prin cutare n spaiul de stri presupune
reprezentarea simbolic a obiectelor din domeniul aplicaiei (definirea
parametrilor de stare) i definirea unor operatori prin care se poate
modifica aceast reprezentare (funcii generatoare de stri).
Spaiul de stri asociat unei probleme este frecvent reprezentat sub form
arborescent.
Cutarea soluiei se poate realiza prin mai multe tehnici (algoritmi):
exhaustiv (n adncime, pe nivel), cu evaluare euristic (de ex., Best
First), cu sau fr revenire.

PROBLEME PROPUSE
Problema 1: Utiliznd metodele a) Depth First; b) algoritmul Breadth First i c) Best
First, s se gseasc drumul de la Start la Goal n labirintul din figura de mai jos.
Start

Goal
12
10

11

9
8

Ordinea operatorilor:

1
2

4
5

Problema 2: S se descrie evoluia listelor Open i Close n problema de cutare


reprezentat mai jos, prin algoritmul Breadth First.
50

Inteligena Artificial

Cap. 4. Structuri i strategii de cutare


a

i
4

10

f
7

g
goal

11

TEST DE AUTOEVALUARE
1.

2.

3.

4.

5.

Prin stare nelegem:


a. Un instrument practic i eficient
de reprezentare a obiectelor.
b. O
anumit
configuraie
a
problemei investigate.
c. Reprezentarea cunotinelor i
cutarea soluiei.
Spaiul de stri reprezint:
a. Totalitatea regulilor, procedeelor
sau mutrilor care produc
modificri asupra bazei de date.
b. Totalitatea grafurilor.
c. Totalitatea strilor din domeniul
problemei.
Estimarea distanei de la starea curent
la soluie, n vederea selectrii celui
mai
promitor
descendent,
se
realizeaz prin:
a. Cutare complet.
b. Cutare euristic.
c. Cutare neordonat.
Depth First reprezint un algoritm de:
a. Cutare pe nivel.
b. Cutare fr revenire.
c. Cutare n adncime.
La implementarea algoritmilor Depth
First i Breadth First, lista Close
conine:
a. Strile care au fost cercetate.
b. Strile iniiale i finale.
c. Totalitatea strilor posibile.

6.

Algoritmul Beam Search prezint:


a. Cutri euristice incomplete cu un
descendent.
b. Cutri euristice incomplete cu
civa descendeni.
c. Cutri euristice complete.
7. Lista Open conine:
a. Strile care au fost cercetate.
b. Strile ce urmeaz a fi cercetate.
c. Strile ce nu vor fi cercetate.
8. Best First reprezint un algoritm cu
evaluare euristic a descendenilor de
tip:
a. Cutare in adncime.
b. Cutare pe nivel.
c. Cutare fr revenire.
9. Breadth First reprezint un algoritm
de:
a. Cutare in adncime.
b. Cutare pe nivel.
c. Cutare
cu
revenire
sau
backtracking.
10. Algoritmul Hill Climbing realizeaz:
a. Cutri euristice incomplete cu un
descendent .
b. Cutri euristice complete.
c. Cutri euristice incomplete cu
civa descendeni.

Rspuns
1. b
2. c

51

3. b
4. c

5. a
6. b

7. b
8. a

9. b
10. a.