Sunteți pe pagina 1din 101

Inteligenta artificiala

Curs pentru nvatamant la distanta

Lector Doctor Lucian Sasu

2007-2008
Universitatea Transilvania din Brasov
Facultatea de Matematica si Informatica

Cuprins
1 Definitii. Rezolvarea problemelor prin c
autare
1.1

Definitii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.1.1

Sisteme care actioneaza precum oamenii . . . . . . . . . . . . . . .

1.1.2

Sisteme care gandesc ca oamenii . . . . . . . . . . . . . . . . . . . .

1.1.3

Sisteme care gandesc rational . . . . . . . . . . . . . . . . . . . . .

1.1.4

Sisteme care actioneaza rational . . . . . . . . . . . . . . . . . . . .

1.2

Fundamentele inteligentei artificiale . . . . . . . . . . . . . . . . . . . . . .

1.3

Starea actuala . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

1.4

Rezolvarea de probleme de catre agenti . . . . . . . . . . . . . . . . . . . . 10

1.5

Formularea unei probleme . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

1.6

Exemple de probleme de cautare . . . . . . . . . . . . . . . . . . . . . . . . 12


1.6.1

Probleme de jucarie . . . . . . . . . . . . . . . . . . . . . . . . . 12

1.6.2

Probleme din lumea reala . . . . . . . . . . . . . . . . . . . . . . 13

1.7

Cautarea solutiei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

1.8

Masurarea performantelor algoritmilor de cautare . . . . . . . . . . . . . . 16

1.9

Rezumat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

1.10 Teste de autoevaluare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19


1.10.1 Intrebari . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.10.2 Teste grila . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2 Strategii de c
autare neinformat
a

21

2.1

Cautarea mai ntai n latime . . . . . . . . . . . . . . . . . . . . . . . . . 21

2.2

Cautarea dupa costul uniform . . . . . . . . . . . . . . . . . . . . . . . . . 24

2.3

Cautarea mai ntai n adancime . . . . . . . . . . . . . . . . . . . . . . . 24

2.4

Cautarea cu adancime limitata

2.5

Cautarea mai ntai n adancime cu adancire iterativa . . . . . . . . . . . 29

2.6

Cautare bidirectionala . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

2.7

Problema starilor duplicat . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

2.8

Rezumat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

. . . . . . . . . . . . . . . . . . . . . . . . 27

CUPRINS
2.9

Teste de autoevaluare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.9.1

Intrebari . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

2.9.2

Teste grila . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

3 C
autare informat
a

37

3.1

Strategii de cautare informata . . . . . . . . . . . . . . . . . . . . . . . . . 37

3.2

Cautarea euristica lacoma . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

3.3

Algoritmul A* . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

3.4

Variatii ale lui A* . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

3.5

Functii euristice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

3.6

Algoritmi de cautare locala si probleme de optimizare . . . . . . . . . . . . 49


3.6.1

Cautarea prin metoda ascensiunii . . . . . . . . . . . . . . . . . . . 49

3.6.2

Recoacerea simulata . . . . . . . . . . . . . . . . . . . . . . . . . . 54

3.6.3

Algoritmi genetici . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

3.6.4

Cautare locala n spatii continue . . . . . . . . . . . . . . . . . . . . 58

3.7

Rezumat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

3.8

Teste de autoevaluare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
3.8.1

Intrebari . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

3.8.2

Teste grila . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

4 Probleme de satisfacere a constr


angerilor

61

4.1

Probleme de satisfacere a constrangerilor . . . . . . . . . . . . . . . . . . . 61

4.2

Cautare backtracking pentru PSC . . . . . . . . . . . . . . . . . . . . . . . 64


4.2.1

Ordonarea valorilor si a variabilelor . . . . . . . . . . . . . . . . . . 66

4.2.2

Propagarea informatiilor prin constrangeri . . . . . . . . . . . . . . 67

4.3

Cautare locala pentru PSC . . . . . . . . . . . . . . . . . . . . . . . . . . . 70

4.4

Structura problemei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71

4.5

Rezumat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

4.6

Teste de autoevaluare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
4.6.1

Intrebari . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

4.6.2

Teste grila . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

5 Agenti logici

75

5.1

Motivatie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

5.2

Agenti bazati pe cunoastere . . . . . . . . . . . . . . . . . . . . . . . . . . 76

5.3

Lumea monstrului . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77

5.4

Logica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78

5.5

Logica propozitionala . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79

CUPRINS

5.6

5.5.1

Sintaxa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79

5.5.2

Semantica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80

5.5.3

Exemplu: lumea monstrului n logica propozitionala . . . . . . . . . 81

5.5.4

Inferenta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81

5.5.5

Echivalenta, validitate si satisfiabilitate . . . . . . . . . . . . . . . . 82

Tipare de rationament n logica propozitionala . . . . . . . . . . . . . . . . 83


5.6.1

5.7

Rezolutia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85

Forma normala conjunctiva . . . . . . . . . . . . . . . . . . . . . . . . . . 86

5.8

Algoritmul de rezolutie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
5.9 Inlantuirea nainte si napoi . . . . . . . . . . . . . . . . . . . . . . . . . . 88
5.10 Inferenta propozitionala efectiva . . . . . . . . . . . . . . . . . . . . . . . . 90
5.10.1 Algoritm bazat pe backtracking . . . . . . . . . . . . . . . . . . . . 90
5.10.2 Algoritm bazat pe cautare locala . . . . . . . . . . . . . . . . . . . 95
5.11 Rezumat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
5.12 Teste de autoevaluare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
5.12.1 Intrebari . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
5.12.2 Teste grila . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
A Indicatii si r
aspunsuri

97

A.1 Indicatii si raspunsuri pentru capitolul 1 . . . . . . . . . . . . . . . . . . . 97


A.1.1 Raspunsuri la ntrebari . . . . . . . . . . . . . . . . . . . . . . . . . 97
A.1.2 Raspunsuri pentru testele grila . . . . . . . . . . . . . . . . . . . . 97
A.2 Indicatii si raspunsuri pentru capitolul 2 . . . . . . . . . . . . . . . . . . . 98
A.2.1 Raspunsuri la ntrebari . . . . . . . . . . . . . . . . . . . . . . . . . 98
A.2.2 Raspunsuri pentru testele grila . . . . . . . . . . . . . . . . . . . . 98
A.3 Indicatii si raspunsuri pentru capitolul 3 . . . . . . . . . . . . . . . . . . . 99
A.3.1 Raspunsuri la ntrebari . . . . . . . . . . . . . . . . . . . . . . . . . 99
A.3.2 Raspunsuri pentru testele grila . . . . . . . . . . . . . . . . . . . . 99
A.4 Indicatii si raspunsuri pentru capitolul 4 . . . . . . . . . . . . . . . . . . . 100
A.4.1 Raspunsuri pentru testele grila . . . . . . . . . . . . . . . . . . . . 100
A.5 Indicatii si raspunsuri pentru capitolul 5 . . . . . . . . . . . . . . . . . . . 100
A.5.1 Raspunsuri pentru testele grila . . . . . . . . . . . . . . . . . . . . 100
Bibliografie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101

CUPRINS

Capitolul 1
Definitii. Rezolvarea problemelor
prin c
autare
Obiective
Acest capitol este unul cu scop introductiv, cu scopul de a prezenta o vedere generala
generala asupra domeniului.
Se prezinta cateva definitii pentru domeniul Inteligentei artificiale (cele patru abordari)
precum si care sunt fundamentele sale, respectiv lista disciplinelor care au contribuit la
dezvoltarea domeniului.
Sunt prezentate mai apoi urmatoarele:
notiunea de problema de cautare, mpreuna cu exemplificari
notiunea de arbore de cautare, nod
schita a unui algoritm de cautare n arborele de cautare

1.1

Definitii

Dam cateva definitii care au fost formulate de-a lungul timpului n diverse lucrari,
precum si comentarii asupra lor. Exista patru tipuri de abordari pentru sistemele cu
inteligenta artificiala: sisteme care gandesc precum oamenii, sisteme care gandesc rational,
sisteme care actioneaza precum oamenii, sisteme care actioneaza rational. Remarcam ca
exista o diferenta ntre a actiona ca un om si a actiona rational; desi inteligenta umana
si rationalitatea nu sunt disjuncte, actiunile oamenilor nu sunt ntotdeauna nscrise n
totalitate n legile ratiunii.
7

CAPITOLUL 1. DEFINIT
II. REZOLVAREA PROBLEMELOR PRIN CAUTARE

1.1.1

Sisteme care actioneaza precum oamenii

Definitia 1 Arta crearii de masini care ndeplinesc functii ce necesit


a inteligenta atunci
cand sunt ndeplinite de catre oameni.
Definitia 2 Studiul asupra cum se poate ca un calculator s
a fac
a lucruri la care, pentru
moment, oamenii sunt mai buni.
Testul Turing, propus de catre Alan Turing n 1950 a fost conceput pentru a da o
definitie operationala a inteligentei. Testul care trebuie trecut de catre un sistem inteligent
consta n a pune un om n imposibilitate de a decide daca interlocutorul (sistemul artificial)
este om sau nu.
Deducem ca un asemenea sistem ar trebui sa posede urmatoarele abilitati:
1. procesarea limbajului natural - pentru a putea comunica ntr-o limba folosita de
oameni
2. reprezentarea cunostintelor - pentru a stoca ceea ce se stie sau afla
3. rationamentul automat - pentru a putea deduce noi concluzii pe baza informatiilor
acumulate si pentru a raspunde ntrebarilor
4. nv
atarea automata - pentru a se adapta noilor conditii, pentru a detecta modele
sau sabloane (pattern-uri).
Testul de mai sus nu presupune un contact direct ntre om si sistemul artificial. Daca
acest lucru este dorit, atunci mai e nevoie de:
1. vedere artificiala (engl: computer vision) - pentru perceperea vizuala a obiectelor
2. robotica - pentru a manipula obiecte
Cu toate ca testul Turing nu a fost nca trecut, exista interes destul de scazut din
partea cercetatorilor n aceasta directie; exista opinia ca e mai important a se studia
principiile care stau la baza inteligentei decat sa se duplice un exemplar.

1.1.2

Sisteme care g
andesc ca oamenii

Definitia 3 Efortul provocator de a face calculatoarele s


a gandeasc
a [. . . ] masini cu
minte, n sens literal.
Definitia 4 [Automatizarea] activitatilor pe care le asociem cu gandirea uman
a, activitati
precum luarea deciziilor, rezolvarea problemelor, nv
atarea[. . . ]
Pentru a putea spune ca un program gandeste precum un om, ar trebui sa stim cum
anume gandesc oamenii - problema deloc simpla. Sunt doua moduri: prin introspectie si
prin experimente psihologice.

1.2. FUNDAMENTELE INTELIGENT


EI ARTIFICIALE

1.1.3

Sisteme care g
andesc rational

Definitia 5 Studiul facultatilor mentale pe baza utilizarii modelelor computationale.


Definitia 6 Studiul calculelor care fac posibile perceptia, rationamentul, actionarea.
Aceasta abordare se bazeaza pe maturizarea domeniului numit logica n secolul
al 19-lea introducerea de notatii si silogisme care permit redactarea unor enunturi si
relatii ntre diferite obiecte. Exista nsa probleme la trecerea din teorie la practica: de
exemplu, ce se ntampla cu situatiile n care exista incertitudine? apoi, exista diferente
ntre a rezolva o problema n principiu (teoretic) si a o rezolva n practica - resursele
computationale necesare pot fi prohibitive chiar pentru probleme de dimensiuni modeste
- a se vedea de exemplu algoritmii si discutiile captolul 2.

1.1.4

Sisteme care actioneaz


a rational

Definitia 7 Inteligenta computationala este studiul design-ului agentilor inteligenti.


Definitia 8 IA [. . . ] se preocup
a de comportamentul inteligent n artifacte.
Pe aceasta directie se introduce de obicei conceptul de agent - un sistem artificial, care
spre deosebire de programele obisnuite actioneaza autonom, percep mediul, persista pe
o perioada mai mare de timp, se adapteaza la schimbari si care urmaresc un scop. Un
agent rational este unul care actioneaza pentru a obtine cel mai bun rezultat, sau, acolo
unde exista incertitudinea, cel mai bun rezultat mediu.
Nu toate actiunile unui astfel de agent sunt neaparat rationale; exista cazuri n care se
stie ca nu exista nici o actiune rationala, dar totusi se decide a se actiona cumva. Astfel,
inferentele corecte sunt doar o parte a actiunii rationale.

1.2

Fundamentele inteligentei artificiale

Prezentam succint o lista a disciplinelor care au contribuie la dezvoltarea IA:


1. Filozofie - intervine cu ntrebari si discutii despre:
Pot fi regulile formale folosite pentru a extrage concluzii valide?
Cum se creeaza activitatea mentala plecand de la creier?
De unde vine cunoasterea?
Cum duce cunoasterea la actiune?
2. Matematica - trateaza problemele:


10 CAPITOLUL 1. DEFINIT
II. REZOLVAREA PROBLEMELOR PRIN CAUTARE
Care sunt regulile formale pentru a extrage concluzii valide?
Ce poate fi calculat?
Cum rationam plecand de la informatii nesigure?
3. Stiintele economice - preocupate de:
Cum ar trebui sa decidem astfel ncat sa maximizam castigul?
Cum ar trebui sa decidem atunci cand castigul este pe termen lung?
4. Neurostiinta care ncearca sa raspunda la Cum proceseaza creierul informatia?
5. Psihologia - cum gandesc si actioneaza animalele?
6. Ingineria calculatoarelor - cum putem crea un calculator eficient?
7. Lingvistica - cum este legat limbajul de gandire?

1.3

Starea actual
a

Unde este de folos IA? O lista neexhaustiva este data mai jos:
planificare autonoma - folosita de exemplu n navetele lansate spre Marte
jocuri - supercalculatorul Deep Blue de la IBM a fost folosit pentru rularea unui
program specializat n jocul de sah, nvingandu-l pe camionul mondial, Garry Kasparov
control autonom - folosit pentru a conduce o masina de-a lungul SUA, realizand o
conducere autonoma pentru 98% din perioada totala.
diagnostic - diagnostic medical bazat pe sisteme expert
robotica - se folosesc roboti asistenti n microchirurgie, implant de proteze.
ntelegerea limbajului si rezolvarea problemelor - rezolvare de cuvinte ncrucisate.

1.4

Rezolvarea de probleme de c
atre agenti

Sa presupunem ca un agent inteligent are de rezolvat o problema: cum anume se


poate ajunge din Arad n Bucuresti (figura 1.4 este o harta simplificata a Romaniei),
folosind drept cai de comunicatie soselele din Romania. Vom considera faptul ca se cunosc
distantele existente ntre cateva perechi de orase (cele care sunt direct legate) si ca se pot

1.5. FORMULAREA UNEI PROBLEME

11

Figura 1.1: O harta simplificata a Romaniei[1]


schita cateva scenarii de drum pe baza carora sa aleaga o solutie. Ca rezultat se va obtine
o secventa de actiuni a caror ndeplinire duce la rezolvarea problemei.
Pasii care trebuie urmati n rezolvarea unei probleme sunt:
1. formularea problemei - n sectiunea 1.5 se arata modul n care poate fi exprimata o
problema de cautare;
2. cautarea solutiei - aici se folosesc algoritmi decautare specifici, avand ca rezultat
returnarea unei singure solutii
3. executarea - pe baza solutiei ce expliciteaza actiunile ce trebuie executate n vederea
rezolvarii problemei se implementeaza faza de executie. Dupa ce se atinge scopul
problemei, se poate formula un nou scop.

1.5

Formularea unei probleme

O problema poate fi abstractizata precum mai jos, prin intermediul a patru atribute.
1. Starea initiala - starea din care se porneste cautarea; de exemplu, pentru problema
drumului de la Arad la Bucuresti starea initiala este In(Arad).
2. O descriere a actiunilor pe care le poate ndeplini agentul. Acestea se pot formaliza
sub forma de operatori sau a unei functii succesor ce se aplica pe multimea starilor
si produce ca rezultat o multime de perechi de forma (actiune, stare):
x f unctie succesor(x) = {(actiune1 , stare1 ), . . . , (actiunen , staren )}


12 CAPITOLUL 1. DEFINIT
II. REZOLVAREA PROBLEMELOR PRIN CAUTARE
unde actiunei este o actiune ce se poate aplica n starea curenta x, iar starei este
starea n care se ajunge din x aplicand actiunei .
Pentru problema exemplificata putem avea de exemplu:
f unctie succesor(In(Arad)) = {(Go(Sibiu), In(Sibiu)),
(Go(T imisoara), In(T imisoara)),
(Go(Zerind), In(Zerind))}
Starea initiala si functia succesor determina spatiul starilor problemei - al acelor stari
care sunt accesibile din starea initiala. O cale n spatiul starilor este o secventa de
stari conectate printr-o secventa de actiuni.
3. Testul de scop - determina daca o stare este stare scop, adica o stare n care problema
se considera a fi rezolvata. Verificarea atingerii scopului se poate face n doua
moduri:
(a) prin compararea starii curente cu multimea starilor scop, enuntata explicit; de
exemplu, pentru problema de mai sus multimea starilor scop este In{Bucuresti}.
(b) prin verificarea unor proprietati pe care trebuie sa le ndeplineasca starea pentru a fi considerata stare scop; de exemplu, pentru jocul de sah stare scop este
aceea n care nu se mai poate misca regele advers fara a fi atacat.
4. O functie de cost a caii care asigneaza o valoare numerica fiecarei cai. Functia
serveste ca masura a performantei succesiunii de actiuni (a solutiei); vom presupune
ca costul unei cai este dat de suma costurilor actiunilor continute, iar costul unei
actiuni este o cantitate nenegative.
O solutie este o succesiune de actiuni care permite agentului rezolvarea problemei, iar
o solutie optima este una n care costul solutiei este minim posibil.

1.6

Exemple de probleme de c
autare

1.6.1

Probleme de juc
arie

Sunt folosite n special pentru demonstrarea conceptelor, avand scop didactic.


1. Problema puzzle-ului: se da o matrice de n linii si tot atatea coloane; n fiecare
celula se afla un singur numar de la 1 la n2 1, nu exista doua celule care sa contina
acelasi numar, iar una din celule este goala. Pentru cazul n = 3 avem exemplificare


1.6. EXEMPLE DE PROBLEME DE CAUTARE

13

n figura 1.2(a). Se cere ca prin mutari succesive pe orizontala si pe verticala ale


numerelor n locul spatiului gol sa se ajunga la o configuratie finala, de exemplu n
care numerele sunt ordonate (citirea se face linie cu linie), iar spatiul este pe ultima
pozitie.

(a)

Starea

(b)

initiala

Starea

scop

Figura 1.2: Problema puzzle-ului pentru n = 3


Starea initiala este dispunerea data; functia succesor genereaza toate miscarile prin
care spatiul alb este mutat n cadrul matricei, pe verticala sau orizontala, cu cate
o sigura pozitie; testul de scop este verificarea faptului ca o stare coincide cu cea
aleasa drept finala; costul caii este egal cu numarul de mutari efectuate, deoarece
se poate considera ca fiecare mutare are costul egal cu 1.
2. Problema reginelor pe tabla de sah: dandu-se o tabla de sah de n linii si tot atatea
coloane, sa se determine o pozitionare a reginelor astfel ncat sa nu se atace reciproc.
Starea initiala este cea n care tabla este goala; functia succesor este adauga o regina
Tabela 1.1: Problema dispunerii reginelor pe o tabla de 5x5
,
,
,
,
,

ntr-o celula goala (dar se pot gasi si alte formulari mai inspirate); o stare scop este
aceea n care reginele nu se ataca reciproc.

1.6.2

Probleme din lumea real


a

1. Problema determinarii rutei: acest tip de problema apare ntr-o varietate de aplicatii,
precum crearea unui itinerar bazat pe zboruri cu avionul, planificarea operatiilor militare, rutare n retele de calculatoare, etc. Complexitatea acestor probleme provine


14 CAPITOLUL 1. DEFINIT
II. REZOLVAREA PROBLEMELOR PRIN CAUTARE
din multitudinea de factori ce trebuie luati n considerare. De exemplu, pentru
problema gasirii unui itinerar pe cale aeriana, specificatiile ar putea fi:
fiecare stare este reprezentata de o locatie (un aeroport) si momentul curent
starea initiala: locul si momentul plecarii
functie succesor: dependenta de lista zborurilor care sunt programate dintr-o
anumita locatie, la un moment ulterior;
testul scop: se poate ajunge la destinatie ntr-o perioada de timp specificata/pana la un moment maxim specificat?
costul caii: depinde de costul biletelor ce trebuie achizitionate, timpul de
asteptare, durata totala a calatoriei, calitatea locurilor, tipul serviciului, modul
de rezolvare a mbarcarii si tranzitului, tipul avionului, etc
Trebuie nsa considerate posibilitatile (si probabilitatile) de aparitie a unor evenimente nedorite precum anularea/ntarzierea unor zboruri. Un bun planificator va
considera mai multe variante, va veni cu alternative si solutii de rezerva, mpreuna
cu costurile suplimentare.
2. Problema comis-voiajorului - o persoana trebuie sa faca un tur al unei multimi de
orase, fara a trece de doua ori prin acelasi loc, cu revenire n locatia initiala si cu un
cost al drumului minim (ciclu Hamiltonian de cost minim). Se cunoaste faptul ca
problema este NP-completa, dar exista foarte multe studii care ncearca sa rezolve
problema cat mai eficient, eventual cu sacrificarea optimalitatii solutiei.
3. Dispunerea circuitelor VLSI1 , unde pe o placuta de dimensiuni foarte mici trebuie
dispuse componente, realizate conexiuni, astfel ncat sa nu existe cuplari nedorite
ntre componente, sa se realizeze cu consum de material minim, sa fie minimizate
lungimile circuitelor de transfer, etc. Problemele de cautare sunt extrem de complexe
datorita interdependentelor sau restrictiilor.
4. Roboti software pentru cautarea pe Internet; pe langa faptul ca trebuie sa trateze
operarea ntr-o imensa baza de date cu grad mic de structurare, trebuie sa rezolve
probleme care nu sunt simple nici pentru un om: raspunsuri la ntrebari, gasirea
preturilor cele mai convenabile, gasirea informatiilor nrudite cu ceva specificat, etc.
1

VLSI: Very Large Scale Integration, crearea de circuite integrate prin combinarea de tranzistoare.


1.7. CAUTAREA
SOLUT
IEI

1.7

15

C
autarea solutiei

Rezolvarea problemei este facuta prin cautare n spatiul starilor. Tehnicile de cautare
prezentate n acest capitol si n capitolul 2 folosesc un arbore de cautare care are drept
radacina un nod corespunzand starii initiale a problemei, iar nodurile sunt generate pe
baza actiunilor permise din starea curenta.
Vom considera ca exemplu problema gasirii drumului minim de la Arad la Bucuresti;
pentru moment, permitem existenta unor noduri diferite, dar care au stari identice; o
discutie asupra acestui aspect este prezentata n sectiunea 2.7.
Considerand cate o stare la un moment dat, vom proceda astfel: testam sa vedem daca
starea curenta este stare scop; daca da, oprim cautarea, construim solutia si o raportam2 .
Daca raspunsul este nsa negativ, atunci se va expanda starea curenta pe baza functiei
succesor, obtinand un nou set de stari. Modul de alegere a nodului determina strategia
de cautare.
Arborele de cautare este format din noduri; un nod consta din urmatoarele componente:
Stare: starea caruia i corespunde nodul curent
Nod-Parinte: nodul din arborele de cautare care a generat nodul curent
Actiune: actiunea care a fost aplicata nodului parinte pentru a produce nodul
curent
Costul-caii: costul cumulat al actiunilor care duc de la nodul initial la nodul
curent;
Adancime: numarul de pasi de-a lungul caii de la nodul initial
Nodul initial corespunde starii initiale, parintele si actiunea aferente acestui nod sunt
codificate convenabil (null, valoare neaplicabila, etc). Componenta Costul-caii poate fi
n unele cazuri omisa, deoarece nu toate problemele cer determinarea unei solutii de cost
optim.
Un exemplu al arborelui de cautare generat pentru a cauta drumul de la Arad la
Bucuresti este dat n figura 1.4. Mai trebuie sa mentionam ca nu trebuie facuta confuzie
ntre noduri si stari; n timp ce multimea starilor poate fi finita (de exemplu multimea
oraselor din Romania), numarul nodurilor poate fi infinit, daca se permite generarea de
cicluri de forma: Arad Sibiu Arad, Arad Sibiu Arad Sibiu Arad, etc.
2

De remarcat ca nu ne propunem determinarea tuturor sau macar a mai multor solutii, ci doar a

primeia pe care algoritmul de cautare o descoper


a.


16 CAPITOLUL 1. DEFINIT
II. REZOLVAREA PROBLEMELOR PRIN CAUTARE
Nodurile care au fost obtinute prin expandarea altora, dar nu au fost la randul lor
expandate (altfel zis: noduri frunza n arborele de cautare construit pana la momentul
curent) sunt mentinute ntr-o colectie numita colectieNoduri; natura acestei colectii si
politica de acces fac distinctia ntre o parte din algoritmii de cautare ce vor fi prezentati.
Forma generala a algoritmului de cautare este data n figura 1.3.
Cateva comentarii relativ la cod:
1. Functiile insereaza, insereaza-toate, scoate-primul determina: inserare de
nod, inserare de colectie de noduri, extragerea primului element conform politicii de
acces specifice tipului de date corespunzator lui colectieNoduri;
2. Notatia X[Y] reprezinta valoarea atributului X pentru entitatea Y
3. Parametrul problema reprezinta o codificare a problemei conform celor din sectiunea
1.5.
4. Functia Cautare-in-arbore poate returna si esuare, pentru cazul n care nu mai
exista nici un nod care sa fie expandat iar iteratiile anterioare nu au descoperit
starea scop printre starile explorate. Trebuie nsa spus ca exista situatii si strategii
de algoritmi de cautare care pot rula teoretic la infinit, sau din punct de vedere
practic duc la epuizarea memoriei disponibile.

1.8

M
asurarea performantelor algoritmilor de c
autare

Pentru algoritmii de cautare care urmeaza a fi discutati evaluarea se va face prin


prisma urmatoarelor patru caracteristici:
Completitudinea un algoritm de cautare este complet daca se garanteaza ca gaseste
solutia problemei, n cazul n care aceasta exista;
Optimalitatea un algoritm este optim daca solutia gasita este cu cost al caii optim;
Complexitatea n timp
Complexitatea n spatiu
Cele doua complexitati se cuantifica prin intermediul notatiei O. Definim notatia
pentru cazul functiilor reale cu un singur argument. Fie o functie g : N R+ ; notam cu
O(g) multimea:
O(g) = {f : N R+ |n0 N, c > 0 : n n0 , f (n) c g(n)}
Pentru algoritmii de cautare ce urmeaza a fi prezentatti complexitatea este data n termeni
de:

1.8. MASURAREA
PERFORMANT
ELOR ALGORITMILOR DE CAUTARE

Figura 1.3: Algoritmul general de cautare.

17


18 CAPITOLUL 1. DEFINIT
II. REZOLVAREA PROBLEMELOR PRIN CAUTARE

(a) Nodul initial, corespunzator starii In(Arad)

(b) Dup
a expandarea nodului initial

(c) Dup
a expandarea nodului corespunzator starii In(Sibiu)

Figura 1.4: Cresterea arborelui de cautare pentru rezolvarea problemei gasirii rutei de
Arad la Bucuresti. Nodurile care au fost expandate sunt colorate gri; cele obtinute n
urma expandarii unui nod parinte sunt cu linie continua; cele care urmeaza a fi obtinute
prin expandare, la pasii urmatori sunt cu marcate cu linie ntrerupta.

1.9. REZUMAT

19

b, factor de ramificare reprezentand numarul maxim de succesori ai oricarui nod


d, adancimea celui mai putin adanc nod solutie (a carui stare este stare scop)
m, lungimea maxima a oricarei cai n arborele de cautare
Complexitatea n timp este masurata relativ la numarul de noduri generate n decursul
explorarii, iar complexitatea de memorie este numarul maxim de noduri ce trebuie sa fie
memorat pana la rezolvare.

1.9

Rezumat

S-au dat mai multe definitii domeniului Inteligenta artificiala, n functie abordarile
existente. Tendinta actuala este de a descoperi principiile care stau la baza actionarii
inteligente.
Pentru problemele de cautare s-a dat o formulare generala, bazata pe starea initiala,
descrierea actiunilor, test de scop si functie de cost. Cautarea solutiei se face prin generarea starilor care pot fi obtinute prin plecarea de la starea initiala si efectuarea de actiuni
conform functiei succesor. Exista un algoritm general de cautare pe un arbore, prin a
carui particularizare se obtin diferite metode de cautare.
Criteriile de performanta pentru compararea diferitelor variante sunt: completitudinea,
optimalitatea, complexitatea n timp si complexitatea n spatiu.

1.10

Teste de autoevaluare

1.10.1

Intreb
ari

1. In ce tip de abordare de definire a domeniului se ncadreaza testul Turing?


2. Care este domeniul pe baza caruia se sprijina abordarea prin gandire rationala?
3. Care sunt pasii pentru rezolvarea unei probleme?
4. Care sunt componentele unui nod din arborele de cautare?

1.10.2

Teste gril
a

Raspundeti la urmatoarele ntrebari, alegand variantele corecte.


1. Domeniul numit logica este definitoriu pentru care abordare a sistemelor inteligente?


20 CAPITOLUL 1. DEFINIT
II. REZOLVAREA PROBLEMELOR PRIN CAUTARE
(a) sisteme care gandesc precum oamenii
(b) sisteme care gandesc rational
(c) sisteme care actioneaza precum oamenii
(d) sisteme care actioneaza rational
2. Functia succesor este folosita pentru a descrie:
(a) starea din care se porneste cautarea
(b) actiunile si starile n care se ajunge pe baza lor
(c) scopul problemei
(d) costul caii
3. Daca un algoritm de catare determina ntotdeauna solutia (cand aceasta exista)
atunci el se numeste:
(a) complet
(b) optim
(c) complex
4. Factorul de ramificare este:
(a) numarul maxim de succesori ai oricarui nod dinarborele de cautare
(b) adancimea celui mai putin adanc nod solutie
(c) lungimea maxima a oricarei cai n arborele de cautare

Capitolul 2
Strategii de c
autare neinformat
a
Obiective
Capitolul prezinta cateva strategii de cautare neinformata, mpreuna cu tratarea problemelor legate de complexitate, optimalitate, completitudine. Cautarile sunt sistematice
si se deosebesc ntre ele prin strategia de alegere a nodurilor ce urmeaza sa fie expandate.
Se discuta n final problema starilor duplicat efecte si mod de evitare.

2.1

C
autarea mai nt
ai n l
atime

Cautarea mai ntai n latime1 are ca particularitate folosirea structurii de date de


tip coada (colectie n care politica de acces este FIFO - First In, First Out - primul intrat,
primul iesit) n cadrul functiei Cautare-in-arbore din sectiunea 1.7. Nodul de start
este expandat, apoi copiii acestui nod sunt expandati, apoi copiii copiilor, etc. Functia
Cautare-in-arbore va fi apelata cu parametrul colectieNoduri initializat cu o coada
goala. Expandarea oricarui nod duce la crearea altor noduri care sunt puse la sfarsitul
cozii. In acest fel nodurile de la o adancime mai mica n arborele de cautare sunt expandate
naintea celor cu adancime mai mare. Putem vedea aceasta explorare ca o expandare
radiala n jurul nodului de plecare. Un exemplu de functionare a acestei strategii este
aratat n figura 2.1, pentru cazul n care arborele de cautare este de tip binar.
Se poate vedea faptul ca daca plecand de la nodul initial se ajunge la nodul final prin
urmarirea actiunilor date de functia succesor, atunci functia va duce mai devreme sau
mai tarziu la descoperirea lui; mai mult, drumul de la nodul initial la nodul scop este cu
numar minim de arce; altfel spus, algoritmul descopera un nod scop care are adancimea
minima si atunci opreste cautarea.
1

Engl: breadth-first search

21

CAPITOLUL 2. STRATEGII DE CAUTARE


NEINFORMATA

22

B
D

C
E

B
G

(a) Expandarea nodului r


adacina.

(b)

E
Dup
a

expandarea

nodului

r
adacina; acesta dispare din coada
colectieNoduri,

schimb

sunt

adaugate nodurile B si C.

B
D

C
E

B
D

C
E

(c) Dup
a expandarea nodului B; acesta

(d) Dup
a expandarea nodului C; acesta

dispare din coada, dar se adauga la

dispare din coada, dar se adauga la

sfarsitul lui colectieNoduri nodurile

sfarsitul lui colectieNoduri nodurile F si

D si E.

G.

Figura 2.1: Modul de alegere a nodurilor ce se expandeaza conform strategiei de cautare


mai ntai n latime. Nodurile marcate cu gri sunt eliminate din coada colectieNoduri,
cele marcate prin linie discontinua vor fi obtinute prin expandare la pasii urmatori,
nodurile n dreptul carora este desenata o sageata urmeaza a fi expandate, iar celelate
sunt noduri aflate n coada colectieNoduri.


IN LAT
IME
2.1. CAUTAREA
MAI INTAI

23

Algoritmul este optimal doar daca functia de cost a caii este nedescrescatoare2 fata de
numarul de arce (adancimea nodului). Acest lucru se ntampla, de exemplu, daca costul
fiecarei actiuni egal cu aceeasi cantitate constanta. Un exemplu de functie de cost a caii
care nu este nedescrescator fata de numarul de arce este dat n figura 2.1, unde costul caii
din nodul A n nodul C via B (deci cu doua arce) este 20, pe cand costul drumului direct
AC (un singur arc) este 30.

Figura 2.2: Exemplu de functie de cost care nu este nedescrescatoare fata de numarul de
arce. Pe fiecare arc este scris costul sau.
Pana acum comportamentul acestui algoritm este ncurajator. Pentru a vedea de ce
nu este o alegere buna n toate cazurile facem analiza complexitatilor. Consideram un caz
n care fiecare stare are exact b succesori. Nodul radacina genereaza b noduri copil, fiecare
dintre acestia are la randul lui b copii (deci la adancimea 2 avem b2 noduri), prin inductie
se poate arata ca la adancimea h avem bh noduri. Sa presupunem ca solutia se afla la
adancimea d. Cazul cel mai defavorabil este acela n care acest nod corespunzand solutiei
este chiar ultimul care se expandeaza de pe nivelul lui, deci avem: cele bd noduri de pe
nivelul d, fiecare din cele b 1 noduri de pe nivelul nodului radacina (noduri expandate
naintea nodului solutie) produce copii care se pun n colectieNoduri, deci nca (bd 1) b
noduri de pe nivelul d + 1. In total numrul de noduri generate este:
1 + b + b2 + . . . + bd + (bd+1 b) = O(bd+1 ).
Fiecare nod generat trebuie de asemenea sa fie pastrat n memorie, pentru a putea fi
folosit la reconstituirea drumului - nu avem de unde sa stim care din acestia sunt efectiv
folositi n refacerea drumului, deci nu ne permitem sa stergem din memorie pana cand se
reface drumul de la starea initiala la cea finala; alfel zis, complexitatea n spatiu este tot
O(bd+1 ).
Complexitatile nu sunt ncurajatoare, deoarece pentru un factor de ramificare b = 10
si adancime a nodului solutie d = 8 este nevoie de 31 de ore de rulare si 1 teraoctet de
memorie RAM (la o rata de producere a nodurilor de 10000 noduri/secunda si 1000 octeti
pentru fiecare nod). Ca atare, acest tip de explorare nu se foloseste n practica decat
pentru probleme de dimensiuni foarte mici.
2

O functie f : R R este nedescrescatoare dac


a x, y R, x < y avem ca f (x) f (y).

CAPITOLUL 2. STRATEGII DE CAUTARE


NEINFORMATA

24

2.2

C
autarea dup
a costul uniform

Cautarea mai ntai n latime alege spre expandare cel mai putin adanc nod care nu
este expandat. Pentru cazul n care costul caii nu este nedescrescator fata de adancimea
nodului, strategia de alegere poate sa rateze gasirea caii optime. Se poate nsa corecta
acest aspect daca la fiecare pas se alege nu cel mai putin adanc nod neexpandat, ci nodul
neexpandat cu costul caii cel mai mic. Acest lucru se poate face daca colectia de noduri
este mentinuta nu ca o coada normala, ci ca o coada de prioritati (colectie sortata dupa
costul caii fiecarui nod; orice adaugare de nod se face nu neaparat la sfarsit ca pentru o
coada clasica ci astfel ncat sa se pastreze proprietatea de ordonare a colectiei; extragerea
produce nodul cu costul caii cel mai mic, adica primul element al colectiei sortate).
Astfel, cautarea dupa costul uniform nu descopera caile cu numar minim de arce, ci
pe cel cu cost minim. Daca costul fiecarui pas (actiuni) este cel putin egal cu o constanta
> 0, atunci cautarea este atat completa cat si optima.
Complexitatea n timp si spatiu nu mai poate fi caracterizata de adancimea nodului;
n schimb este
implicat costul solutiei optime, C . Complexitatea de timp si spatiu este



C
O b1+[ ] care este deseori mai mare decat O bd+1 .

2.3

C
autarea mai nt
ai n ad
ancime

Cautarea mai ntai n adancime3 va alege pentru expandare cel mai adanc nod
din arbore care nu a fost expandat. Colectia de noduri neexpandate din algoritmul
Cautare-in-arbore se poate implementa ca o stiva (LIFO - Last In, First Out sau
ultimul intrat, primul iesit). Pentru cazul unui arbore binar ordinea de parcurgere este
exemplificata n figura 2.3.
Necesarul de memorie pentru acest algoritm este deosebit de modest: daca factorul de
ramificare este b si adancimea maxima m atunci numarul de noduri ce trebuie retinute n
colectieNoduri este 1 + b m, deci complexitatea este O(b m).
Exista o varianta si mai redusa ca necesar de memorie bazat pe acest tip de cautare;
algoritmul este cunoscut sub numele de backtracking si are particularitatea ca nu face
expandarea tuturor nodurilor copil pentru nodul extras din stiva, ci doar a unui copil;
daca explorarea pe acest copil este nefructuasa, atunci se ncearca al doilea copil, etc.
Avantajul vine din faptul ca stiva nu se ncarca decat cu nodurile care chiar fac parte din
calea de cautare curenta. Complexitatea n spatiu este O(m). Mai mult, se poate doar
mentine nodul curent (daca pasul napoi, de la copil spre parinte este usor de refacut)
si atunci complexitatea n spatiu este O(1) memorie constanta ocupata, indiferent de
3

In limba englez
a, n original: depth first search.


IN ADANCIME

2.3. CAUTAREA
MAI INTAI

25

D
H

E
J

F
K

G
M

(a) Expandarea nodului r


adacina.

(b)

E
I

Dup
a

r
adacina;

expandarea

nodului

acesta dispare din stiva


n

colectieNoduri,

schimb

sunt

adaugate nodurile C si apoi B (ordinea


de introducere poate s
a difere si atunci
desenele ce urmeaz
a difer
a).
A

A
B
D
H

E
I

G
M

E
I

G
M

(c) Dup
a expandarea nodului B, pre-

(d) Dup
a expandarea nodului D; acesta

luat din v
arful stivei; acesta dispare

dispare din stiv


a, dar se adauga la v
arful

din stiv
a, dar se adauga la v
arful ei

ei nodurile I si apoi H. Urm


atoarea

nodurile E si apoi D (a se vedea remarca

operatie este expandarea (si deci elim-

despre alta ordine de adaugare la stiv


a

inare din stiv


a) a nodului H, ceea ce

din subfigura anterioar


a).

nu duce la adaugarea de alte noduri n


colectieNoduri.
A

A
B

D
H

E
I

F
K

G
M

D
O

E
I

F
K

G
M

(e) Se extrage v
arful stivei, adica

(f) Dup
a expandarea nodului I; acesta

nodul H si se ncearc
a expandarea lui;

dispare din stiv


a si nu se adauga nici

deaorece el nu are descendenti, stiva

un alt nod la stiv


a.

colectieNoduri r
am
ane nemodificat
a

Figura 2.3: Modul de alegere a nodurilor ce se expandeaza conform strategiei de cautare


mai ntai n adancime.

Nodurile colorate cu negru/gri sunt eliminate din stiva

colectieNoduri, cele marcate prin linie discontinua vor fi obtinute prin expandare la
pasii urmatori, nodurile n dreptul carora este desenata o sageata urmeaza a fi expandate,
iar celelalte sunt noduri aflate n stiva colectieNoduri.

CAPITOLUL 2. STRATEGII DE CAUTARE


NEINFORMATA

26

D
H

E
I

F
K

G
M

D
O

E
I

F
K

G
M

(a) Dup
a expandarea nodului E; acesta

(b) Dup
a expandarea nodului J; acesta

dispare din stiva colectieNoduri, n

dispare din stiva colectieNoduri si

schimb sunt adaugate nodurile K si apoi

deoarece nu are descendenti nu produce

J.

noi elemente n stiv


a.
A

D
H

E
I

F
K

G
M

D
O

E
I

F
K

G
M

(c) Dup
a expandarea nodului K; acesta

(d) Dup
a expandarea nodului C; acesta

dispare din stiva colectieNoduri si

dispare din stiv


a, dar se adauga la

deoarece nu are descendenti nu pro-

v
arful ei nodurile G si apoi F.

duce noi elemente n stiv


a.
A

D
H

E
I

F
K

G
M

D
O

E
I

F
K

G
M

(e) Se extrage v
arful stivei, adica nodul

(f) Expand
arile frunzelor M si L re-

F si se expandeaz
a, adaugand-se la

duc num
arul de elemente din stiv
a cu

stiv
a nodurile M si apoi L.

cate o unitate, urmeaz


a expandarea
nodului G (deci scoaterea lui din stiva
colectieNoduri) si introducerea frunzelor O si N. Dup
a expandarea acestor frunze (deci eliminarea lor din
stiv
a) colectieNoduri devine vid
a si
cautarea se opreste.

Figura 2.4: Parcurgerea mai ntai n adancime - continuare.

2.4. CAUTAREA
CU ADANCIME
LIMITATA

27

adancimea curenta a nodului.


Problema cu acest tip de cautare este ca poate sa parcurga un numar mare de arce
pana la gasirea nodului solutie, daca ordinea de alegere a nodurilor este neinspirata;
de exemplu, strategia de cautare poate sa duca la descoperirea unui nod scop de cost
suboptimal, dar daca nscrierea n stiva a nodurilor copil obtinute la expandare se face
dupa alta ordine, atunci s-ar putea ca primul nod solutie descoperit sa fie de cost mai
bun sau chiar optim. Mai mult chiar, poate sa caute la nesfarsit n arbore, daca nu
se face evitarea starilor duplicat. Pentru problema oraselor, este posibila urmatoarea
parcurgere: Arad, apoi Sibiu, apoi Arad, iar Sibiu, etc. Putem deci spune ca algoritmul
nu este complet, nici optimal, iar daca se termina atunci n cel mai defavorabil caz are
complexitatea n timp O(bm ), unde m este lungimea maxima a unei cai n arborele de
cautare. Mai trebuie zis ca m poate sa fie mult mai mare decat d, adancimea celui
mai putin adanc nod scop, deci complexitatea de timp poate sa fie mai mare decat cea
pentru cautarea mai ntai n latime sau chiar si cea a costului uniform. Ramane nsa
de remarcat compexitatea de memorie ceruta: liniara.

2.4

C
autarea cu ad
ancime limitat
a

Cautarea mai ntai n adancime din sectiunea 2.3 are un mare atu: foloseste extrem
de putina memorie. Dar are si un dezavantaj major, posibilitatea de a cauta la infinit
n arbore. Acest dezavantaj este eliminat simplu: vom limita adancimea maxima la care
poate sa coboare explorarea n arbore. Vom folosi deci un parametrul l (numar ntreg)
reprezentand adancimea maxima de explorare. Nodurile de la adancimea l sunt tratate ca
si cum nu ar avea succesori. Insa acest algoritm mai introduce un tip de rezultat: taiere4 ,
pentru cazul n care avem d > l iar cautarea epuizeaza toate nodurile din subarborele de
adancime l; n acest caz nu se poate spune ca se esueaza, pentru ca o adancime de cautare
mai mare ar fi permis gasirea nodului scop (si deci problema sar fi putut rezolva).
Algoritmul cautarii cu adancime limitata5 este dat n figura 2.4. Functiile solutie,
expandeaza sunt aceleasi ca la algoritmul de cautare n arbore (sectiunea 1.3, pagina 17).
Algoritmul nu este complet daca l < d; pentru l > d cautarea poate sa nu fie nici
macar optima. Complexitatea n timp este O(bl ), iar cea n spatiu O(b l) (mostenite
amandoua de la parcurgerea mai ntai n adancime). Ceea ce este nsa de remarcat e
ca nu mai avem risc de cautare infinita datorata ciclurilor (vizitarii repetate a acelorasi
stari). Impreuna cu consumul de memorie redus ne fac sa speram ca problema de cautare
devine rezolvabila cu cerinte de memorie rezonabile.
4

In englez
a, n original: cutoff
In limba englez
a, n original: depthlimited search

CAPITOLUL 2. STRATEGII DE CAUTARE


NEINFORMATA

28

Se pune ntrebarea: de unde stim care este adancimea maxima la care vom permite
cautarea? Pentru cateva probleme, din nsasi enuntul lor se poate deduce care este o
valoare rezonabila pentru limita maxima. De exemplu, pentru problema AradBucuresti
putem observa ca numarul maxim de orase de pe harta este 20, deci l = 19 este o alegere
buna. Chiar mai mult, se poate observa ca pentru orice pereche de orase se poate sa
se ajunga dintr-unul n celalalt prin maxim 9 pasi, deci adancimea poate fi si mai mult
redusa.

Figura 2.5: Algoritmul cautarii cu adancime limitata.


IN ADANCIME

2.5. CAUTAREA
MAI INTAI
CU ADANCIRE
ITERATIVA

2.5

29

C
autarea mai nt
ai n ad
ancime cu ad
ancire
iterativ
a

Problema necunoasterii apriorice a adancimii la care sa se faca cautarea este tratabila


prin urmatoarea strategie: se dau valori succesive lui l ncepand cu 0, din ce n ce mai mari
pana ce rezultatul este de tip esuare sau solutie. Gasirea solutiei nseamna determinarea
nodului solutie cel mai putin adanc. Varianta de algoritm combina partile bune ale
cautarii n adancime si n latime: memorie necesara mica si respectiv, completitudine
si optimalitate pentru cazul n care functia de cost a caii este nedescrescatoare fata de
numarul de arce pentru cale.

30

(a) Evolutia arborelui de cautare pentru l = 0

noduri copil B si C.

(c) Evolutia arborelui de cautare pentru l = 2; se reconstruiesc r


adacina, cei doi copii ai ei B si C si
apoi se obtin cele patru noduri nepot D, E, F si G.

Figura 2.6: Evolutia arborelui de cautare pentru diferite valori ale lui l.

CAPITOLUL 2. STRATEGII DE CAUTARE


NEINFORMATA

(b) Evolutia arborelui de cautare pentru l = 1; se reconstruieste r


adacina si apoi se obtin cele dou
a

2.6. CAUTARE
BIDIRECT
IONALA

31

Strategia algoritmului cautarea mai ntai n adancime cu adancire iterativa6 ar putea


parea neeficienta, deoarece se creeaza toate nodurile de la adancimea i 1 atunci cand se
cauta la adancimea i. Putem observa nsa ca cu cat un nivel de noduri se recreeaza mai
des, cu atat este de fapt adancimea lui mai mica (deci numarul de noduri corespunzator
este mai redus). Putem calcula numarul de noduri care sunt expandate astfel: nodurile
de la adancimea d sunt generate o singura data (de fapt, la ultima iteratie s-ar putea sa
nu fie chiar toate generate), cele de la nivelul d 1 sunt generate de doua ori, etc, cele de
la nivelul 0 (adica radacina) de d ori; numarul de noduri este dat ca:
N (CAR) = bd 1 + bd1 2 + . . . + b d + 1 (d + 1) = O(bd )
pe cand la cautarea mai ntai n latime numarul de noduri generate este O(bd+1 ).
Am obtinut deci un algoritm de cautare care este complet, este optim daca functia de
cost este nedescrescatoare fata de numarul de arce ale drumului, are cerinte de memorie

modeste si complexitate n timp mai mica decat cea a algoritmilor anterior prezentati. In
practica se consider
a ca algoritmul de catare mai nt
ai n ad
ancime cu ad
ancire iterativa
este algoritmul preferat de catare atunci cand spatiul de catare este mare iar ad
ancimea
nodului solutie este necunoscuta.

2.6

C
autare bidirectional
a

Cautarea bidirectionala se bazeaza pe strategia: se ncep simultan doua cautari, atat


dinspre nodul de start spre scop cat si invers. Daca se produce ntalnirea celor doua
cautari (si n acest caz punctul comun celor doua parcurgeri este la distanta d/2 dintre
cele doua noduri de pornire), atunci complexitatea n timp este O(bd/2 + bd/2 ) = O(bd/2 ),
care este mult mai mic decat O(bd ). Procedeul este ilustrat n figura 2.7.
Figura 2.7: Cautare bidirectionala. Aria nsumata a celor doua cercuri este mai mica
decat aria unui cerc mare care pleaca din nodul de start si ajunge n nodul de scop.

Start

Goal

La fiecare expandare de nod se verifica daca acesta nu a fost cumva atins de cautarea
din sens contrar. Daca da, atunci solutia (secventa de actiuni care duce dinspre nodul
6

In limba englez
a, n original: iterative deepening depth-first search.

CAPITOLUL 2. STRATEGII DE CAUTARE


NEINFORMATA

32

de start spre cel de scop) se reface pe baza drumurilor construite spre nodul comun.
Determinarea faptului ca un nod se gaseste ntr-o lista de noduri se face n timp constant,
daca se foloseste o tabela de dispersie. Dar tocmai faptul ca necesarul de memorie este
O(bd/2 ) face acest algoritm sa nu poata fi aplicat n practica. In rest nsa, algoritmul este
complet si optimal daca fiecare din cele doua cautari este efectuata prin parcurgere mai
ntai n latime (si desigur, cu ipoteza suplimentara ceruta de algoritmul mentionat). Alte
variante de combinare pot face algoritmul neoptim sau incomplet.
Mai trebuie zis aici ca algoritmul poate fi folosit doar n cazul n care se poate calcula
usor functia de predecesor, opusul functiei succesor care face parte din definitia problemei
- lucru care nu se ntampla la toate problemele. Inca un aspect merita mentionat - daca
exista mai multe noduri scop care pot fi enumerate (nu doar teoretic, ci si practic) atunci
se poate crea o stare scop noua, unica, al carui pas de predecesor sa duca n starile scop
originale. Daca multimea starilor scop este foarte larga sau validarea nodurilor scop se
face fata de un predicat, atunci cautarea bidirectionala este greu sau imposibil de aplicat,
n lipsa unei descrieri compacte a proprietatii de a fi stare scop.

2.7

Problema st
arilor duplicat

Algoritmul general de cautare nu evita explorarea n mod repetat a acelorasi stari


(deci obtinerea de noduri diferite, dar pentru care starile corepsunzatoare au mai fost
vizitate anterior). Acest lucru face ca, de exemplu, explorarea n adancime sa poata sa
nu determine solutie, cu toate ca una exista. Pentru ceilalti algoritmi vizitarea repetata
a unor stari se traduce prin ineficienta.
Un exemplu de explozie a numarului de noduri datorate starilor duplicat este dat
n figura 2.8. Din fiecare punct avem 4 variante de continuare; daca nu facem evitarea
starilor duplicat, atunci la o parcurgere de adancime d obtinem 4d noduri; daca se face
evitarea starilor duplicat, atunci obtinem 2 d2 noduri. Pentru d = 20, diferenta este
uriasa: 1.099.511.627.776 fata de 800 de noduri!
Figura 2.8: Retea pentru care neevitarea starilor duplicat duce la o explozie exponentiala
a numarului de noduri cu stari repetate.

Detectarea se face prin cautarea starii nodului ce urmeaza a fi expandat n lista starilor
care au fost deja expandate. Daca un algoritm evita starile duplicat, atunci poate fi vazut

2.8. REZUMAT

33

ca o cautare n graf. Algoritmul este dat n figura 2.9 si foloseste o multime a starilor deja
expandate numita stariVechi. Algoritmul nou obtinut se numeste Cautare-in-graf.

Figura 2.9: Algoritmul de cautare in graf.


Algoritmul Cautare-in-graf nu pune probleme n privinta completitudinii; complexitatea n timp si spatiu sunt proportionale cu numarul starilor distincte, iar asta poate sa
fie mult mai mic decat O(bd ). Remarcam nsa ca pentru cautarea mai ntai n adancime
sau cu adancime limitata, datorita mentinerii acestei liste de noduri vechi, necesarul de
memorie nu mai este liniar (dar se evita ciclarea).
In ceea ce priveste optimalitatea, lucrurile stau astfel: algoritmul va elimina noua
cale descoperita catre o stare care a mai fost ntalnita nainte. Deoarece prima cale
descoperita s-ar putea sa fie suboptimala, rezulta ca nu se poate garanta optimalitatea
solutiei determinate. Acest lucru nu se ntampla atunci cand avem cautarea costului
uniform sau cand se foloseste cautarea mai ntai n latime pentru cost constant al
actiunilor. Pentru celelate metode ar trebui ca ajungerea la o stare care a mai fost
parcursa sa declanseze o verificare asupra faptului ca noua cale produce un rezultat mai
bun; daca este adevarat, atunci trebuie ca toate nodurile care au ca ascendent (direct sau
prin tranzitivitate) nodul curent sa si reactualizeze costurile.

2.8

Rezumat

Pornind de la algoritmul general al cautarii pe arbore, se obtin cateva strategii de rezolvare, n prima faza prin particularizarea structurii de date asociate colectiei de noduri,

CAPITOLUL 2. STRATEGII DE CAUTARE


NEINFORMATA

34

apoi prin modificarea comportamentului algoritmilor precedenti. Algoritmii rezultati


sunt:
1. cautarea mai ntai n latime
2. cautarea dupa costul uniform
3. cautarea mai ntai n adancime
4. cautarea cu adancime limitata
5. cautarea mai ntai n adancime cu adancire iterativa
6. cautare bidirectionala
Pentru fiecare se studiaza optimalitatea, completitudinea, complexitatea n timp si memorie. Una din problemele mari este complexitatea de memorie, care limiteaza aplicabilitatea
n practica a unora dintre algoritmi. Cel mai bun algoritm de explorare neinformata
pentru cazul n care nu este cunoscuta adancimea solutiei este cautarea mai ntai n
adancime cu adancire iterativa.
Evitarea starilor duplicat trebuie luata n considerare, iar folosirea unei structuri de
date eficiente pentru mentinerea starilor care au fost deja obtinute duce la reducerea timpului de lucru si poate fi scris astfel ncat sa nu sacrifice optimalitatea solutiilor obtinute.

2.9

Teste de autoevaluare

2.9.1

Intreb
ari

1. Ce este specific strategiei de cautare prin parcurgere mai ntai n latime?


2. Ce este specific strategiei de cautare dupa costul uniform?
3. Ce este specific strategiei de cautare prin parcurgere mai ntai n adancime?
4. Care este complexitatea de memorie a algoritmului de cautare prin parcurgere mai
ntai n adancime? Cum este ea fata de complexitatea de memorie pentru strategia
de cautare prin parcurgere mai ntai n latime?
5. Explicati diferenta dintre algoritmul parcurgerii pe graf si cel al parcurgerii pe arbore.

2.9. TESTE DE AUTOEVALUARE

2.9.2

35

Teste gril
a

Raspundeti la urmatoarele ntrebari, alegand variantele corecte.


1. Tipul de date utilizat pentru colectieNoduri la algoritmul de cautare prin parcurgere mai ntai n latime este:
(a) stiva
(b) coada
(c) arbore
(d) coada de prioritati
2. Tipul de date utilizat pentru colectieNoduri la algoritmul de cautare dupa costul
uniform:
(a) stiva
(b) coada
(c) arbore
(d) coada de prioritati
3. Algoritmul de cautare prin parcurgere mai ntai n latime este garantat optimal
(a) adevarat
(b) fals
4. Algoritmul de cautare dupa costul uniform este garantat optimal:
(a) adevarat
(b) fals
5. Algoritmul de cautare prin parcurgere mai ntai n adancime este:
(a) optimal
(b) complet
(c) nici optimal, nici complet
6. Care este algoritmul de cautare neinformata preferat, atunci cand nu se cunoaste
adancimea nodului solutie?
(a) cautarea mai ntai n latime
(b) cautarea mai ntai n adancime

CAPITOLUL 2. STRATEGII DE CAUTARE


NEINFORMATA

36

(c) cautarea mai ntai n adancime cu adancire iterativa


(d) cautare dupa costul uniform
7. Cautarea bidirectionala are complexitate de memorie liniara:
(a) adevarat
(b) fals
8. Evitarea starilor duplicat poate reduce numarul de noduri de la forma exponentiala
la forma polinomiala:
(a) adevarat
(b) fals

Capitolul 3
C
autare informat
a
Obiective
Algoritmii discutati n capitolul 2 efectueaza o explorare sistematica a spatiului starilor.
Capitolul acesta contine o descriere a unor strategii de cautare euristica. Pentru anumite
variante si ipoteze destul de generale, unii algoritmi garanteaza gasirea unei solutii optime.
De asemenea sunt introdusi algoritmi de cautare locala si optimizare.
Dupa parcurgerea capitolului studentul va putea sa:
defineasca euristica folosita pentru acesti tip de algoritmi
exemplifice executia acestor algoritmi pe cateva probleme
enunte conditiile n care A* duce la determinarea solutiei optime
construirea de functii euristice pentru probleme date
aplice un algoritm de cautare locala si optimizare.

3.1

Strategii de c
autare informat
a

Strategiile euristice prezentate n acest capitol pornesc de la o idee simpla: ce s-ar


ntampla daca s-ar explora ntr-o directie care pare mai promitatoare pentru rezolvarea
problemei? am putea astfel sa evitam explorarea unor noduri care au o sansa mica de
ajungere n nodul scop, cu efect benefic asupra complexitatii n timp si spatiu. Este o
strategie des folosita de expertii umani, care pe baza experientei si intuitiei evita explorarea tuturor posibilitatilor si decid o cautare n anumite directii.
In cazul problemelor de cautare formalizate n cursul 1, vom considera pentru fiecare
nod n sansa lui de a duce spre un nod scop. Concret, pentru fiecare nod n se calculeaza
o functie de evaluare f (n). Nodul cu cea mai mica valoare a acestei functii este ales
37

CAPITOLUL 3. CAUTARE
INFORMATA

38

pentru expandare, deoarece f estimeaza efortul de ajungere la solutie prin nodul curent.
Ca atare, algoritmul de cautare pe arbore poate fi folosit cu o modificare minora: lista de
noduri colectieNoduri trebuie sa fie organizata ca o coada de prioritati.
Exista o clasa ntreaga de algoritmi bazati pe aceasta idee. O componenta comuna
a acestor algoritmi este o functie euristic
a notata traditional cu h(n). h(n) reprezinta
costul estimat al celei mai ieftine cai (ca secventa de actiuni) dintre nodul curent si un
nod scop1 . In mod firesc, vom impune ca h(n) = 0 daca n este nod scop.
De exemplu, pentru problema drumului din Arad n Bucuresti putem sa vedem aceasta
functie ca fiind distanta pe drum drept de la oricare oras catre Bucuresti. Figura 3.1
contine atat harta schematizata a Romaniei, cat si un tabel cu distantele pe drum drept
dintre orase si Bucuresti.

3.2

C
autarea euristic
a lacom
a

Cautarea euristica lacoma2 alege pentru expandare nodul care are valoarea calculata
pentru functia h cea mai mica. Altfel spus, avem f (n) = h(n).
Pentru problema drumului minim de la Arad la Bucuresti pasii sunt dati n figura
3.2. Distantele folosite drept euristica sunt scrise n figura 3.1. Primul nod care se
expandeaza este Sibiu, deoarece are distanta pe drum drept de la el la Bucuresti minima,
253 km. Urmatorul nod expandat este Fagaras, deoarece din multimea nodurilor aflate
n colectieNoduri el este cel mai apropiat de Bucuresti. Expandarea lui Fagaras duce
la obtinerea nodului Bucuresti, care la iteratia urmatoare este cel ales pentru expandare
(avand costul 0) si care termina iteratia din algoritmul Cautare-in-arbore (sectiunea
1.7). Dar drumul optim este urmatorul: Arad Sibiu Ramnicu Valcea Pitesti
Bucuresti, cu 32 de kilometri mai mic decat cel descoperit anterior.
Putem observa ca minimizarea lui h poate duce la cautare cu numar infinit de pasi:
de exemplu, daca se doreste a se ajunge din Iasi la Fagaras, prima destinatie este Neamt;
dar de aici nu mai exista nici un alt drum, decat napoi napoi n Iasi, ceea ce duce la
un ciclu infinit daca nu se evita starile repetate; daca se evita, atunci se descopera calea
optima: Iasi, Vaslui, Urziceni, Bucuresti, Fagaras.
Caracterisiticle acestui algoritm: incomplet, neoptim, complexitate n timp si spatiu
O(bm ), unde m este adancimea maxima a unui drum n arborele de cautare.

Daca problema este de minimizare, atunci h(n) este costul celei mai ieftine cai; dac
a este problema

de maxim, atunci este costul celei mai scumpe cai


2
In limba englez
a, n original: greedy best-first search.

75

Oradea
Neamt

Zerind

87

151

Iasi
Arad

140

92
Sibiu

99

Fagaras

118

Vaslui

80
Rimnicu Vilcea

Timisoara

111

Lugoj

Pitesti

97

142

211

70

98
Mehadia

75
Dobreta

146

85

101
138

120

Hirsova

Urziceni

86
Bucharest

90
Craiova
Giurgiu

Eforie

Straightline distance
to Bucharest
Arad
366
Bucharest
0
Craiova
160
Dobreta
242
Eforie
161
Fagaras
178
Giurgiu
77
Hirsova
151
Iasi
226
Lugoj
244
Mehadia
241
Neamt
234
Oradea
380
Pitesti
98
Rimnicu Vilcea 193
Sibiu
253
Timisoara
329
Urziceni
80
Vaslui
199
Zerind
374

LACOMA

3.2. CAUTAREA
EURISTICA

71

Figura 3.1: Harta Romaniei si distantele pe drum drept dintre orase si Bucuresti.

39

40

(a) Nodul eles pentru expandare este unic,

(b) Dupa expandarea nodului r


adacina; nodul ce urmeaz
a a fi

r
adacina

expandat este Sibiu, av


and costul f (= h) cel mai mic.

Fag
aras, av
and costul f cel mai mic.

(d) Dup
a expandarea nodului Fag
aras; se ajunge n orasul Bucuresti, care
va fi ales la urmatoarea iteratie din algoritmul Cautare-in-arbore.

Figura 3.2: Pasi n executarea algoritmului de cautare euristica lacoma. Valorile scrise sub noduri provin din figura 3.1

CAPITOLUL 3. CAUTARE
INFORMATA

(c) Dup
a expandarea nodului Sibiu; nodul ce urmeaz
a a fiu expandat este

3.3. ALGORITMUL A*

3.3

41

Algoritmul A*

Cea mai cunoscuta forma a acestor algoritmi euristici de cautare este algoritmul A*,
pentru care functia f (n) este data ca:
f (n) = g(n) + h(n)
unde g(n) este costul real al drumului de la nodul de start la nodul n iar h(n) este (precum
anterior) costul estimat al celei mai bune cai de la nodul n la un nod scop. Avem deci ca
f (n) este costul estimat al celei mai bune cai de la nodul de start la un nod scop, drum ce
trece prin n. Pentru cateva conditii impuse lui h se obtine ca algoritmul A* este optim si
complet; n practica, rezultatele obtinute sunt foarte bune, prin comparatie cu strategiile
de cautare de tip neinformat.
Vom considera functii h care sunt euristici admisibile, adica h(n) niciodata nu supraestimeaza costul unei solutii de la nodul n la nod scop3 . Prin natura lor, acest tip de functii
sunt optimiste. Deoarece functia g cuantifica efortul exact de a ajunge din nodul initial
n nod scop, deducem ca functia f niciodata nu supraestimeaza efortul de a ajunge din
nodul initial n nod scop via nodul intermediar ales.
Un exemplu de functie euristica admisibila este cea care estimeaza efortul de ajungere
din nodul n n Bucuresti ca fiind distanta pe drum drept de la n la Bucuresti. Este evident
ca orice ruta s-ar alege, ea nu poate avea cost mai mic decat costul drumului drept.
Evolutia algoritmului A* pentru problema ajungerii de la Arad la Bucuresti este
reprezentata n figurile 3.3 si 3.4.

Aceasta este definitia pentru problema n care se cere minimizarea caii; pentru probleme de maxi-

mizare, o euristica admisibila nu subestimeaza efortul real de ajungere la nod scop.

42

(a) Nodul eles pentru expandare este unic,

(b) Dupa expandarea nodului r


adacina; nodul ce urmeaz
a a fi ex-

r
adacina

pandat este Sibiu, av


and costul f cel mai mic.

Ramnicu V
alcea, av
and costul f cel mai mic.

(d) Dup
a expandarea nodului Ramnicu V
alcea; nodul ce urmeaz
a a fi expandat este
Fag
aras.

Figura 3.3: Pasi n executarea algoritmului A*. Valorile scrise sub noduri reprezinta valorile functiei f = g + h.

CAPITOLUL 3. CAUTARE
INFORMATA

(c) Dup
a expandarea nodului Sibiu; nodul ce urmeaz
a a fiu expandat este

3.3. ALGORITMUL A*

(a) Dup
a expandarea nodului Fag
aras.

(b) Dup
a expandarea nodului Pitesti. Bucuresti este urmatorul nod expandat, dar si nod scop,
deci cautarea se opreste

Figura 3.4: Pasi n executarea algoritmului A* (continuare).


43

CAPITOLUL 3. CAUTARE
INFORMATA

44
Vom demonstra urmatoarea propozitie:

Propozitia 1 Daca algoritmul A* se termina, atunci nodul scop la care s-a ajuns are
cost optim.
Demonstratie Fie G si G2 noduri scop aflate n colectieNoduri, G2 suboptimal si G
optimal. Avem urm
atoarele:
f (G2 ) = g(G2 )
deoarece am impus nc
a de la nceput ca h(nodScop) = 0. Din acelasi motiv:
f (G) = g(G)
Apoi:
g(G2 ) > g(G)
deoarece G2 este suboptimal. Din cele de mai sus avem ca:
f (G2 ) > f (G)
deci G va fi expandat naintea lui G2 de catre algoritmul A*.
Daca se foloseste algoritmul Cautare-in-Graf n locul algoritmului Cautare-in-Arbore,
rezultatul de mai sus nu este valabil. Reamintim ca algoritmul parcurgerii pe graf evita
starile repetate astfel: se expandau doar nodurile a caror stare nu se regaseau ntr-o lista
de stari deja parcurse. Problema cu aceasta abordare este ca se poate astfel ca prima
ajungere ntr-o anumita stare sa se faca cu cun cost suboptimal, iar urmatoarele drumuri
care conduc la aceeasi stare sunt neglijate, chiar daca ar duce la mbunatatirea costului
pentru acea stare.
Exista doua solutii care se pot aplica. Prima consta n mentinerea caii care are costul
cel mai bun. Se poate scrie asemenea algoritm, chiar daca este mai complex (presupune
de exemplu ca sa se modifice si costurile nodurilor care sunt descendenti ai nodurilor cu
cost mbunatatit). A doua solutie cere ca sa ne asiguram ca prima cale care duce la o
anumita stare este ntotdeauna cu cost optim, ca atare putem neglija drumurile ulterioare
care duc la aceeasi stare. Vom detalia n cele ce urmeaza care sunt conditiile care trebuie
sa fie ndeplinite de catre h pentru a aplica aceasta varianta.
Definitia 9 O functie h se numeste consistenta dac
a pentru orice nod n si orice succesor
n generat de o actiune a avem ca:
h(n) c(n, a, n ) + h(n )
unde c(n, a, n ) este costul actiunii a care permite mutarea din starea n n starea n a
se vedea figura 3.5.

3.3. ALGORITMUL A*

45

n
c(n,a,n)
n

h(n)

h(n)
G
Figura 3.5: Inegalitatea triunghiului pentru o functie consistenta
O functie consistenta se mai numeste si monotona. Este o forma a inegalitatii triunghiului, triunghi format de varfurile n, n si nodul scop cel mai apropiat de n. Se poate
arata ca orice functie consistenta este si admisibila. Reciproca nu este adevarata, dar
trebuie destul de multa ingeniozitate pentru a crea o functie care este admisibila si nu
este si monotona.
Pentru problema drumului AradBucuresti, functia euristica data de distanta pe drum
drept de la orasul curent la Bucuresti este de asemenea si consistenta, deoarece satisface
inegalitatea triunghiului din geometria plana.
Aratam ca daca h este monotona, atunci valorile lui f de-a lungul unui drum sunt
nedescrescatoare. Fie n un succesor al lui n; atunci:
g(n ) = g(n) + c(n, a, n )
(conform definitiei lui g, unde a este actiunea care permite schimbarea starii curente din
n n n ) si
f (n ) = g(n ) + h(n ) = g(n) + c(n, a, n ) + h(n ) g(n) + h(n) = f (n)
Enuntam fara demonstratie teorema:
Teorema 1 Daca h este consistenta, atunci A* folosind functia Cautare-pe-Graf este
optimal.
Fie C costul solutiei optime. Se mai poate arata ca:
A* expandeaza toate nodurile cu f (n) < C ;
se poate ca A* sa expandeze cateva noduri care au f (n) = C nainte ca sa expandeze
nod scop.
Sa notam ca A* nu expandeaza noduri n cu f (n) > C , de exemplu nodul aferent orasului
Timisoara. Datorita monotoniei functiei f avem ca nici orasele care descind direct din
Timisoara nu vor fi expandate, de fapt nici un nod de pe vreo ruta care include Timisoara

CAPITOLUL 3. CAUTARE
INFORMATA

46

ca nod intermediar nu va fi expandat; se face astfel o retezare a arborelui de cautare,


prin eliminarea unor variante care nu ar fi dus oricum la un rezultat optim.
Algoritmul este complet, daca nu cumva sunt infinit de multe noduri n care au f (n)
f (G). Este si optimal; mai mult decat atat, este optimal eficient pentru orice functie
euristica data adica nici un alt algoritm optimal nu garanteaza expandarea unui numar
mai mic de noduri decat A*, abstractie facand de numarul de noduri n pentru care
f (n) = C . Daca am avea un un algoritm care nu expandeaza toate nodurile n cu
f (n) < C , atunci ar exista riscul ca sa se rateze o cale optima.
Exista totusi o problema: numarul de noduri care au f () < C creste exponential cu
lungimea solutiei. Un caz n care nu se ntampla asa ceva este cand:
|h(n) h (n)| O (log (h (n)))
unde h (n) este costul real al ajungerii de la nodul n la scop. Din pacate, cele mai multe
euristici folosite n practica sunt macar proportionale cu costul caii, ca atare obtinem
numar de noduri exponential si toate trebuie tinute n memorie, pentru a putea reface
solutia. De multe ori algoritmul epuizeaza toata memoria pusa la dispozitie, nainte de
ca timpul pus la dispozitie sa se scurga.

3.4

Variatii ale lui A*

Exista cateva variatii ale algoritmului A*, recent obtinute, care determina solutia
optima cu un necesar de memorie neprohibitiv. Primul dintre ele este Recursive best
first search (RBFS) care are complexitate de memorie liniara, dar sufera de regenerarea
excesiva a nodurilor. Practic, acest algoritm sufera din cauza ca foloseste prea putina
memorie.
Algoritmii MA* (Memorybounded A*) si SMA* (Simplified memorybounded A*)
vin sa corecteze problema, ei folosind toata memoria care li se pune la dispozitie. Algoritmul este complet daca solutia poate fi atinsa cu memoria data; este optimal n aceeasi
conditie, iar daca memoria pusa la dispozitie este prea putina, atunci va returna cea mai
buna solutie (suboptimala) pe care a putut-o descoperi. Pe de alta parte, nsa, o problema
poate deveni intratabila datorita complexitatii de timp crescute.

3.5

Functii euristice

Vom studia functii euristice pentru problema puzzle-ului (a se vedea definitia problemei
de la pagina 12). Pentru un puzzle de 3x3, factorul mediu de ramificare este 3 (4 noduri
descendente daca spatiul este la mijloc, 2 noduri descendente daca spatiul este ntr-un

3.5. FUNCT
II EURISTICE

47

colt, 3 noduri altfel). Numarul mediu de mutari pentru rezolvare este de 22; o cautare
exhaustiva ar cere vizitarea a 322 adica aproximativ 3, 11010 stari. Prin eliminarea starilor
duplicat problema s-ar reduce la 9!/2=181.440 stari distincte. Numarul este acceptabil,
dar pentru un puzzle de 4x4, un calcul asemanator duce la aproximativ 1013 stari distincte.
Ca atare, ne ntrebam ce functie euristica am putea folosi si cat de buna este ea.
Cele mai populare euristici sunt:
h1 numarul de piese pozitionate gresit. h1 este o euristica admisibila, deoarece
este clar ca orice casuta cu pozitionare gresita trebuie sa suporte cel putin o mutare.
h2 suma distantelor dintre pozitiile actuale si cele din starea finala a pieselor.
Deoarece piesele se pot misca doar pe orizontala si verticala, nu vom folosi distanta
euclidiana precum n problema drumului de la Arad la Sibiu ci distanta L1 (sau
distanta Manhattan):
L1 ((x1 , y1 ), (x2 , y2 )) = |x1 x2 | + |y1 y2 |
Din nou se observa ca este o euristica admisibila, deoarece pentru mutarea unei
piese la pozitia corecta se fac cel putin mutarile pe orizontala si pe verticala.
O modalitate de a caracteriza calitatea unei euristici este factorul efectiv de ramificare,
b . Daca numarul de noduri pentru o instanta particulara a unei probleme este N , atunci

b se defineste ca factorul de ramificare (nu neaparat numar ntreg) pentru care un arbore
uniform de adancime d contine cele N noduri; pe scurt, b este solutia ecuatiei:
N = 1 + b + (b )2 + . . . + (b )d
De exemplu, daca A* descopera solutia la adancime 5 cu 52 de noduri, atunci b 1.92.
Numarul se obtine de fapt ca o medie peste diferite instante, dar este o valoare relativ
constanta. Scopul este de a obtine un factor de ramificare cat mai apropiat de 1.
De exemplu, pentru instante n care numarul de pasi este 12, numarul de noduri generat pentru cautarea mai ntai n adancime cu adancire iterativa genereaza 3.644.035
noduri, algoritmul A*(h1 ) genereaza 227 noduri, iar A*(h2 ) genereaza 73 noduri. Pentru adancime 24, algoritmul de cautare oarba clacheaza din lipsa de memorie, A*(h1 )
genereaza 39135 noduri, iar A*(h2 ) genereaza 1641 noduri.
Daca exista mai multe euristici ne putem pune problema daca e vreuna mai buna
decat celelalte. Pentru h1 si h2 , de pilda, avem ca h2 (n) h1 (n), n. Din cauza ca A*
expandeaza fiecare nod care are f (n) < C (echivalent: h(n) < C g(n)), rezulta ca
orice nod expandat pentru functia h2 este sigur expandat si pentru functia h1 . Ceea ce
ne ndeamna a cauta functii euristice care sa aibe valori cat mai mari, dar sa ramana nca
admisibile (sub valoarea reala). Problema cu o asemenea abordare este ca functia, desi

CAPITOLUL 3. CAUTARE
INFORMATA

48

devine mai buna, poate cere de asemenea resurse computationale prea mari. Pentru
cazul n care ntre doua euristici exista relatia h2 h1 spunem ca h2 domina pe h1 4 .
Se pune ntrebarea: cum se pot inventa functii euristice? Este posibil a se inventa
asemenea functii n mod automat? Modul n care sau descoperit este simplu: sau
relaxat restrictiile problemei. Daca problema se enunta sub forma unor conditii, precum:
o piesa se muta din locatia A n B daca A este vecin orizontal sau vertical al lui B si
B este spatiu liber atunci putem realiza trei variante relaxate prin eliminarea la o parte
din conditii:
1. o piesa se poate muta de la pozitia A la B daca A este vecin cu B
2. o piesa se poate muta de la pozitia A la B daca B este spatiu
3. o piesa se poate muta de la pozitia A la B
Prima varianta corespunde euristicii h2 , iar cea de-a treia este pentru euristica h1 .
Folosind aceasta tehnica (si alte strategii), sa obtinut un program capabil de a gasi
variante relaxate de probleme, unele conducand la euristici superioare celor cunoscute.
Ce se ntampla cand avem mai multe euristici, dar niciuna nu domina pe toate celelelate
(adica: avem h1 , h2 , . . . , hm si pentru orice i, j, 1 i, j m, i 6= j exista x, y astfel ncat
hi (x) hj (x) dar hi (y) > hj (y))? Putem considera functia h definita punctual ca:
h(n) = max{h1 (n), . . . hm (n)}
care domina pe toate celelalte; mai mult decat atat, se poate arata ca aceasta functie este
si consistenta!
O alta metoda de obtinere a euristicilor este de a pleca de la subprobleme ale problemei
initiale. De exemplu, putem sa ne concentram atentia doar asupra unora din piesele de pe
puzzle, pe care ncercam sa le aducem la pozitia corecta, n timp ce celelate pot ajunge n
orice pozitie. Pentru multe cazuri, rezultatul este mai bun decat daca se foloseste distanta
Manhattan.
Se poate merge mai departe pe ideea acestor subprobleme: avand n vedere ca au
considerabil mai putine stari decat problema originala, se poate sa memoram ntr-o baza
de date aceste stari, mpreuna cu costul de ajungere de la ele la starea finala. Construirea
acestei baze5 poate fi laborioasa, dar efortul se amortizeaza rapid daca trebuie rezolvate
mai multe probleme.
4

Din nou, reamintim ca ne-am fixat pe probleme n care dorim s


a obtinem solutie de cost minim.

Pentru probleme de maxim dominarea nseamna schimbarea sensului inecuatiei.


5
Numit
a baz
a de tipare, original: pattern database


SI PROBLEME DE OPTIMIZARE
3.6. ALGORITMI DE CAUTARE
LOCALA

3.6

49

Algoritmi de c
autare local
a si probleme de optimizare

Algoritmii precedenti fac o cautare mai mult sau mai putin sistematica pentru a descoperi daca un nod scop poate fi ajuns plecand de la nodul initial. Cand acest lucru se
ntampla, se reconstituie calea dintre nodul de start si nodul scop.
De multe ori, nsa, secventa de pasi care duce din starea initiala n starea finala este
irelevanta. De exemplu, pentru problema reginelor pe tabla de sah (sectiunea 1.6.1, pagina 12) nu ne intereseaza cum sa ajuns la plasarea acestor regine, ci doar dispunerea lor
efectiva pe tabla de sah. In aceeasi categorie intra si designul circuitelor integrate, programarea itinerarului optim prin magazine, stabilirea rutelor pentru vehicule, optimizarea
retelelor de telecomunicatii, etc.
Pentru asemenea cazuri vom considera o clasa diferita de algoritmi. Cautarea locala
foloseste doar o singura stare, cea curenta ceea ce din start nseamna ca memoria
consumata este redusa; mutarile se fac doar n stare vecina cu cea curenta, iar caile urmate
nu se memoreaza. Pe langa cantitatea mica de memorie ceruta (de obicei o cantitate
constanta), se pot aborda si probleme unde cautarea sistematica sau chiar euristica nu
sunt fezabile (de exemplu probleme pe spatii continue).
De asemenea, se pot folosi algoritmii prezentati n aceasta sectiune si pentru cazul
problemelor de optimizare, unde sa da o functie obiectiv. Desi nu totdeauna solutiile
obtinute sunt optime, rezultatele se obtin de regula foarte aproape de optim.
Optimul poate sa fie minim sau maxim; avem n vedere ca:
min(f ) = max(f )
si deci exemplificarile se vor face cu optimizari convenabil alese, data fiind trecerea de la
un tip de optim la altul. Vom considera profilul functiei obiectiv (figura 3.6); dorim ca
pentru functia reprezentata sa determinam care este maximul.
Precum la metodele de cautare prezentate anterior, n acest context un algoritm de
cautare este:
complet, daca ntotdeauna gaseste un scop (cu conditia ca acesta sa existe);
optimal, daca gaseste un optim local

3.6.1

C
autarea prin metoda ascensiunii

Metoda ascensiunii6 se bazeaza pe o idee simpla: ncearca sa modifici pozitia curenta


printr-o deplasare mica, astfel ncat sa se produca o mbunatatire a valorii functiei obiectiv.
6

In englez
a, n original: hill climbing.

CAPITOLUL 3. CAUTARE
INFORMATA

50

Figura 3.6: Profilul unei functii obiectiv; se doreste maximizarea ei. Punctul marcat pe
grafic reprezinta pozitia curenta, pentru care o miscare n sus duce la mbunatatirea valorii
curente.
Pentru profilul reprezentat n figura 3.6, unde se doreste maximizarea valorii functiei,
miscarea punctului de pe grafic se face nspre stanga.
Algoritmul este dat n figura 3.7. Algoritmul nu construieste un arbore de cautare, iar
cautarea actiunii urmatoare nu se face mai departe de vecinul imediat. Este ndreptatita
deci asemanarea acestui algoritm cu urcarea pe Everest ntr-o ceata subtire, suferind
de amnezie. Metoda se mai numeste si cautare locala lacoma. Algoritmul se termina
atunci cand se ajunge ntr-un optim, care poate fi local. Cautarea vecinului se face n
proximitate, salturi prea mari ar putea duce la ratarea unor configuratii cu valoarea
buna.
Strategia se poate folosi pentru problema damelor pe o tabla de sah (a se vedea
sectiunea 1.6.1, pagina 12). Pentru fiecare patrat se calculeaza care ar fi numarul total de
atacuri de pe tabla de sah care are rezulta dupa plasarea reginei de pe coloana respectiva
n acel patrat. Evident, dorim sa determinam configuratia n care numarul de atacuri este
minim, ideal 0. Daca pentru o stare (dispunere a reginelor) oarecare exista mai multe
cele mai bune mutari se poate alege aleator oricare dintre ele.
Problemele pe care le are algoritmul bazat pe ascensiune sunt:
1. maximele locale: un maxim local este un varf care este mai nalt decat punctele
situate ntr-o vecinatate a lui, dar este mai mic decat maximul global. Algoritmul
se termina atunci daca nodul curent nu poate fi mbunatatit printr-o mutare n
apropiere.
2. zona plata: o zona plata este o regiune din spatiul starilor n care functia de evaluare


SI PROBLEME DE OPTIMIZARE
3.6. ALGORITMI DE CAUTARE
LOCALA

51

Figura 3.7: Algoritmul de cautare prin ascensiune (urcarea pe panta cea mai abrupta).
Daca pentru nodul curent exista un vecin de valoarea mai buna, atunci el este nlocuit cu
vecinul.
este constanta. Poate fi un platou de unde nu exista posibilitate de urcare, sau o
coama de unde se poate obtine un progres. Asa cum este dat algoritmul din figura
3.7, se produce valoarea constanta din paltou.
3. creste7 ; rezulta n secventa de maxime locale pentru care directia corecta este dificil
de ales (figura 3.9).
Pentru problema celor opt regine, cautarea prin ascensiune duce la un optim local n
86% din cazuri; rezolvare cu functia de cost nula se atinge doar n 14% din cazuri. Trebuie
sa mentionam totodata ca numarul mediu de mutari n care se ajunge la un minim local
este 3 iar din 4 mutari se ajunge la o rezolvarea a problemei.
Algoritmul, asa cum a fost enuntat, se opreste atunci cand ajunge n zona de platou
sau de coama. Pentru coama, nsa, daca s-ar permite cautarea pe zona plata, s-ar putea
ajunge din nou la o situatie de urcus. O varianta a algoritmului din figura 3.7 este cea
n care se permit pasi laterali pe zon
a plata. Pentru a preveni plimbarea la infinit pe un
platou, se poate impune o limita a numarului de pasi succesivi care pastreaza valoarea
functiei obiectiv. De exemplu, daca se stabileste aceasta limita la 100, pentru problema
damelor se gaseste rezolvare corecta n 94% din cazuri. Numarul mediu de pasi creste,
nsa: 21 de pasi pentru o rezolvare si 64 pentru esuare n minim local.
De asemenea mai exista varianta ascensiunii stochastice: dintr-un punct se alege probabilist panta pe care se face urcarea; cu cat panta este mai abrupta, cu atat este maimare
7

In limba englez
a n original: ridges.

CAPITOLUL 3. CAUTARE
INFORMATA

52

(a) O asezare a opt regine pe tabla de

(b) Un minim local pentru problema

sah, cu costul euristic estimat 17. Pen-

celor opt regine. Starea prezentata are

tru fiecare patrat se arata valorea acestei

valoarea 1.

functii dac
a sar face mutarea reginei de

stare nu micsoreaz
a valoarea functiei.

Orice mutare din aceast


a

pe coloana corespunzatoare n ea. Cele


mai bune mutari din aceast
a pozitie duc
la valoarea 12.

h=5

h=2

h=0

(c) Rezolvarea problemei celor 4 regine. Solutia obtinuta este de cost 0, deci dispunerea este corecta.

Figura 3.8: Rezolvarea problemei reginelor pe tabla de sah prin cautare prin ascensiune.
Se cauta un minim al functiei care contorizeaza numarul de atacuri reciproce pe tabla.


SI PROBLEME DE OPTIMIZARE
3.6. ALGORITMI DE CAUTARE
LOCALA

53

Figura 3.9: Creste, una din configuratiile problematice pentru un algoritm de ascensiune.

sansa de alegere a ei ca directie urmatoare.


Algoritmii descrisi pana acum sunt incompleti ei nu gasesc solutia mereu, deoarece
se blocheaza n optime locale. Ascensiunea cu repornire aleatoare stabileste puncte de
plecare aleator n spatiul starilor. Abordarea duce la un algoritm care este complet cu o
probabilitate ce tinde catre 1, din motivul ca repornirile aleatoare pot duce la alegerea unui
nod de start corespunzator unui nod scop. Daca procentul de succes pentru o problema
este p, atunci este nevoie de 1/p reporniri. Pentru problema celor opt regine, unde p =
0.14, avem nevoie de aproximativ 7 iteratii pentru a gasi o stare scop (de cost 0), adica
6 porniri care duc la minim local si 1 care duce la rezolvare (numarul dat este mediu).
Numarul mediu de pasi este 22. Daca se foloseste algoritmul ce permite pasi laterali,
un calcul asemanator duce la 25 de pasi necesari (n medie) pentru rezolvarea problemei.
Pentru o problema de 3 milioane de regine, aceasta abordare (repornire aleatoare cu
cautare cu pasi laterali) descopera o solutie n mai putin de un minut!
Problemele din lumea reala deseori au un profil al functiei obiectiv cu maxime si
minime multiple, ndesate pe domeniul de definitie; algorimul cautarii prin ascensiune
duce, de regula, ntr-un maxim local suficient de bun pentru tipul de calcul consumat.

CAPITOLUL 3. CAUTARE
INFORMATA

54

3.6.2

Recoacerea simulat
a

Un algoritm de cautare prin ascensiune este incomplet, deoarece se poate cantona


ntr-un mimim local. Ar fi de dorit sa permitem algoritmului sa efectueze miscari si ntr-o
directie nefavorabila, n speranta ca va permite iesirea dintr-un minim local. Explicarea
intuitiva este urmatoarea: sa ne imaginam o un relief bidimensional n care dorim sa
descoperim minimul local. Lasam o bila sa plece dintr-un punct oarecare, dar vom face
si scuturarea suprafetei atunci cand se ajunge ntr-un minim, cu intentia de a scoate bila
din minim. Aceste scuturari sunt suficient de viguroase pentru a scoate bila din minimul
local, dar totusi nu foarte tari pentru a scoate bila din minim global. O reprezentare este
data n figura 3.10.

Figura 3.10: Algoritmul coacerii simulate. Perturbarile vor permite scoaterea bilei din
minimele locale.

Algoritmul este inspirat din metalurgie, n care se ncalzeste un metal pana la o temperatura nalta; pentru a durifica metalul se lasa apoi sa se raceasca foarte lent, permitand
structurii cristaline sa ajunga ntr-o stare stabila. Este important ritmul n care scade
temperatura.
Algoritmul pentru minimizarea unei functii este formalizat n figura 3.11. Daca mutarea curenta duce ntr-o situatie cu valoarea mai mica, atunci se accepta; daca noua
situatie este mai defavorabila, atunci se accepta o mutare cu o anumita probabilitate.
Probabilitatea scade exponential cu lipsa de calitate a noii configuratii si cu temperatura (variabila) curenta. Se poate arata ca daca temperatura scade suficient de lent,
atunci algoritmul va gasi un optim local cu probabilitatea 1 [3]. Planificarea care apare
ca parametu al algoritmului este o functie descrescatoare fata de timpul t.


SI PROBLEME DE OPTIMIZARE
3.6. ALGORITMI DE CAUTARE
LOCALA

55

Figura 3.11: Algoritmul de coacere simulata. Pasii defavorabili sunt permisi, dar probabilitatea acestora este controlata. Parametrul planifiare determina valoarea temperaturii
T pentru timpul t.

3.6.3

Algoritmi genetici

Sunt inspirati din principiile evolutionismului darwinian, care ncearca sa explice


evolutia vietuitoarelor pe pamant. Se porneste cu o populatie initiala, care este supusa
apoi unui sir de procese de tipul:
1. selectie: indivizii care sunt cei mai adecvati (fata de valoarea functiei ce se vrea
optimizata) sunt favorizati sa apara de mai multe ori ntr-o populatie noua fata de
indivizii mai putin performanti;
2. ncrucisare: are loc un schimb de gene ntre perechi de parinti, formandu-se copii;
acestia se presupune ca mostenesc si combina performantele parintilor.
3. mutatie: se efectueaza niste modificari minore asupra materialului genetic existent.
Rolul mediului este preluat de catre functia scop. Vom detalia algoritmul pentru

maximizarea unei functii f : [a, b] R+


. Indivizii care alcatuiesc popolatia se numesc

cromozomi si sunt alcatuiti din gene.


Pas 1. Crearea unei populatii initiale de cromozomi. Se considera mai multe valori pentru variabila x [a, b]. Numarul acestor valori (numit dimensiunea populatiei)

CAPITOLUL 3. CAUTARE
INFORMATA

56

este dat ca parametrul al algoritmului, N R (ex. N R = 100). Toate valorile sunt


cuantificate prin cromozomi care sunt siruri de k biti (un bit se mai numeste si
gena), k fiind alt parametru de intrare.
Generarea celor N R cromozomi se face aleator, prin setarea fiecarei gene la valoarea
0 sau 1, la ntamplare. Se obtine astfel o populatie initiala formata din cromozomii
c1 , . . . , cN R .
Fiecare cromozom c (adica sir de k biti) va produce un numar x(c) din intervalul
[a, b], astfel: daca valoarea n baza 10 a cromozomului este v(c), 0 v(c) 2k 1,
atunci valoarea asociata din intervalul [a, b] este:
x(c) = a + v(c)

ba
[a, b].
2k 1

Pas 2. Evolutia populatiei. In acest pas se obtin generatii succesive plecand de la


populatia initiala; populatia de la generatia g + 1 se obtine pe baza populatiei de
la generatia g. Operatorii sunt selectia, mperecherea (crosssover, ncrucisarea) si
mutatia.
Pas 2.1. Selectia . Pentru fiecare cromozom din populatie se calculeaza functia
obiectiv vi = f (x(ci )), 1 i N R. Apoi se nsumeaza valorile functiilor
obiectiv obtinute pentru fiecare cromozom n parte:
S=

NR
X

vi

i=1

Pentru fiecare din cei NR cromozomi se calculeaza probabilitatea de selectie:


pi =

vi
, 1 i NR
S

Pentru fiecare cromozom se calculeaza probabilitatea cumulativa de selectie:


qj =

j
X

pi , 1 j N R

i=1

Remarcam ca qN R = 1 iar sirul qj defineste un sir crescator. Cu cat cromozomul


ci determina o valoare mai mare pentru functia f (adica valoarea f (v(ci )) este
mai mare), cu atat diferenta dintre qi si qi1 este mai mare.
Se selecteaza N R numere aleatoare uniform distribuite n (0, 1]. Pentru fiecare
numar, daca el se gaseste n intervalul (0, q1 ] atunci cromozomul c1 este ales
si depus ntr-o populatie noua; daca acest numar se afla n intervalul (qi , qi+1 ]
atunci se alege cromozomul ci+1 . Remarcam ca numarul de cromozomi prezenti
n noua populatie este tot N R, iar cu cat valoarea asociata unui cromozom este


SI PROBLEME DE OPTIMIZARE
3.6. ALGORITMI DE CAUTARE
LOCALA

57

mai mare, cu atat cresc sansele lui spre a fi selectat si depus n noua populatie.
Este foarte probabil ca un astfel de cromozom valoros (valoarea unui cromozom
este cu atat mai mare cu cat valoarea functiei f calculata pentru cromozomul
respectiv este mai mare) sa apara de mai multe ori in populatia noua; de
asemenea, este foarte probabil ca un cromozom cu o valoare mica pentru functia
f sa nu apara deloc.
Pas 2.2. Incrucisarea. Pentru fiecare cromozom care a rezultat la pasul anterior se
alege o valoare aleatoare, uniform distribuita n intervalul (0, 1]. Daca aceasta
valoare este mai mica decat un parametru pc (parametru al aplicatiei, e.g. 0.1),
atunci cromozomul este ales pentru incrucisare. Se procedeaza astfel ncat sa
se obtina un numar par de cromozomi (de exemplu se renunta la ultimul daca
numarul lor este impar).
Cromozomii alesi se ncruciseaza astfel: primul selectat cu al doilea selectat, al
3-lea cu al 4-lea, etc. Incrucisarea decurge astfel:
se alege un numar aleator t intre 0 si numarul de gene (toti cromozomii au
acelasi numar de gene k)
se obtin 2 cromozomi copii astfel: primul va contine primele t gene ale
primului parinte si ultimele k t gene ale celui deal doilea parinte; al
doilea copil contine primele t gene ale celui deal doilea parinte si ultimele
k t gene ale primului parinte
cei doi cromozomi copii vor nlocui n populatie pe parinti
Pas 2.3. Mutatia. Populatiei obtinute i se aplica operator de mutatie, astfel:
pentru fiecare gena a fiecarui cromozom se alege o valoare aleatoare, uniform
distribuita n (0, 1]; daca acest numar este mai mic decat o probabilitate de
mutatie pm (parametru al aplicatiei), atunci se modifica valoarea curenta a
genei cu complementul sau fata de 1.
Populatia obtinuta n pasul 2 reia ciclul de evolutie. Dupa ce se executa cateva astfel
de evolutii (sau numar de generatii, parametru al programului), se raporteaza valoarea
celui mai bun cromozom din ultima generatie8 .
Se observa ca se combina cautarea locala cu explorarea aleatoare si schimbul de
informatie ntre indivizi. Avantajul primar al algoritmilor genetici consta n acest schimb
de informatie, adica schimbarea de blocuri de date care au evoluat astfel ncat sa se
mbunatateasca valoarea produsa. O utilizare eficienta a algoritmilor genetici prespune
crearea unor structuri de date pentru gene si a unor operatori adecvati problemei ce
8

Sau se foloseste strategia elitist


a: se returneaz
a cel mai bun individ al tuturor generatiilor.

CAPITOLUL 3. CAUTARE
INFORMATA

58
trebuie rezolvate9 .

3.6.4

C
autare local
a n spatii continue

Algoritmii de cautare prezentati pana acum functioneaza ntr-un univers discret si n


care functia succesor returneaza un set finit de pasi care pot fi efectuati dintr-o stare
oarecare. Cele mai multe probleme, nsa, sunt de tip continuu si deci posibilitatile de
alegere a urmatorilor pasi sunt infinite.
Pentru o functie reala de mai multe variable f (x1 , . . . , xn ), maximul se regaseste printre
punctele x = (x1 , . . . , xn ) pentru care f (x) = 0, unde:
f (x) =

f
f
,...,
x1
xn

De cele mai multe ori acest gradient se poate calcula doar local, nu si global, deci abordarea aceasta directa nu este ntotdeauna posibila. Chiar si asa, se poate aplica metoda
ascensiunii, luand ca stare urmatoare:
x x + f (x)
unde este o constanta mica, a carei valoare poate fi stabilita printr-o multitudine de
metode (volumul de studiu dedicat este impresionant).
Pentru multe probleme, cel mai bun algoritm este bazat pe metoda NewtonRaphson,
folosita pentru determinarea radacinilor ecuatiilor de forma g(x) = 0 (g fiind functie de o
singura variabila). Se calculeaza o noua estimare a lui x prin:
xx

g(x)
g (x)

Pentru a gasi un maxim al lui f (functie de mai multe variabile) urmatoarea valoarea a
lui x se determina astfel:
x x Hf1 (x)f (x)
unde Hf (x) este matricea hessiana, cu Hij = 2 f /xi xj . Totusi, inversarea matricilor
este computational intensiva pentru un numar mare de variabile.

3.7

Rezumat

Cautarea informata ncearca sa evite explorarea sistematica a spatiului starilor. O


directie este reprezentata de folosirea de algoritmi de cautare care folosesc o euristica
de directionare a cautarii (cel mai proeminent exemplu fiind algoritmul A*), iar cea de-a
9

S-a stabilit ecuatia Algoritmi genetici + structuri de date = programare evolutionista, [4].

3.8. TESTE DE AUTOEVALUARE

59

doua este folosirea unor algoritmi de cautare locala, care nu mai pot garanta determinarea
gasirea solutiei, dar n practica duc la rezultate foarte bune.
Algoritmul A* este n esenta o cautare pentru care estimarea calitatii unei stari duce
la favorizarea unor directii de cautare. Algoritmul este optim si complet, pentru cazul
euristicilor admisibile; de asemenea se pot evita starile repetate (algoritmul ramanand
optim) daca se folosesc euristici consistente. Determinarea functiilor euristice este relativ
simpla.
Algoritmii de cautare locala (metoda ascensiunii si variantele ei, recoacerea simulata
si algoritmii genetici) folosesc extrem de putina memorie si sunt utili pentru rezolvarea
problemelor n care solutia este determinarea unei stari care satisface anumite cerinte, dar
modul n care se ajunge la acea stare este neimportant. Ei lucreaza cu functii obiectiv ce
trebuie optimizate; nu se garanteaza gasirea unui optim absolut, dar fie sansa de a ajunge
ntrun asemnea optim este foarte mare, fie rezultatul determinat este foarte bun pentru
cat timp de calcul li se aloca.

3.8

Teste de autoevaluare

3.8.1

Intreb
ari

1. Care este structura de date cea mai potrivita pentru mentinerea colectiei de noduri
din care se alege urmatorul expandat, pentru algoritmul A*?
2. Explicati de ce la algoritmul A* fara evitarea starilor repetat noduri corespunzand
starii Arad pot avea doua valori distincte.
3. Explicati de ce pentru o problema de minimizare a costului caii, euristicile dominante
sunt mai bune.
4. Explicati de ce n algoritmul din sectiunea 3.6.3 populatia ramane mereu cu acelasi
numar de cromozomi.

3.8.2

Teste gril
a

Raspundeti la urmatoarele ntrebari, alegand variantele corecte.


1. Algoritmul de cautare euristica lacoma este optim
(a) adevarat
(b) fals

CAPITOLUL 3. CAUTARE
INFORMATA

60

2. Algoritmul de cautare euristica lacoma este complet (considerati ca nu se face


evitarea starilor repetat)
(a) adevarat
(b) fals
3. Algoritmul A* expandeaza si noduri avand costul (valoarea functiei f ) mai mare
decat costul solutiei optime:
(a) adevarat
(b) fals
4. Danduse o colectie de funtii euristice, nu se poate construi o functie euristica
dominanta peste oricare din familia data:
(a) adevarat
(b) fals
5. Algoritmii de cautare locala nu sunt completi
(a) adevarat
(b) false

Capitolul 4
Probleme de satisfacere a
constr
angerilor
Obiective
Prezentul capitol trateaza probleme n care starile se supun unor restrictii impuse.
Spre deosebire de reprezentarile date la metodele de cautare din capitolele anterioare
(reprezentari care tin cont de particularitatile problemei pentru care se face cautarea
solutiei), problemele de satisfacere a constrangerilor au o forma mult mai generala, iar
euristicile sunt larg aplicabile.
Dupa parcurgerea capitolului studentii vor putea sa:
exemplifice probleme de satisfacere a constrangerilor;
formuleze algoritmul backtracking pentru rezolvarea problemelor n care se cere
satisfacerea constrangerilor;
enunte strategii de eficientizare a procesului de cautare backtracking;
foloseasca metodele de cautare locala n rezolvarea problemelor de satisfacere a
constrangerilor.

4.1

Probleme de satisfacere a constr


angerilor

O problema de satisfacere a constrangerilor (PSC) este definita ca un set de variabile


X1 , . . . , Xn si un set de constrangeri C1 , . . . Cm . Fiecare variabila are un domeniu nevid
de valori Di . O constrangere se refera la un subset de variabile si exprima conditii asupra
combinatiilor de valori pentru variabilele n discutie. O stare a problemei este o asignare
de forma {Xi = vi , Xj = vj , . . .}. O stare n care valorile respecta orice restrictie Ck , 1
61

62

CAPITOLUL 4. PROBLEME DE SATISFACERE A CONSTRANGERILOR

k m se numeste consistenta sau legala. O solutie a problemei este o asignare consistenta


si care da valori pentru fiecare variabila. Uneori este implicata si o functie obiectiv care
trebuie optimizata.
Tratarea unei probleme ca o PSC poate fi benefica: n primul rand, se poate formaliza
foarte usor metoda generala de rezolvare, iar aplicarea ei pe o problema concreta nseamna
scrierea adecvata a functiilor de succesor si a testului de scop (a se vedea algoritmul
general); n al doilea rand, se dau niste euristici generice care nu sunt dependente de
domeniul problemei (sectiunea 4.2.1 si urmatoarele).
Exemplu: dorim sa coloram harta regiunilor Australiei (figura 4.1) cu 3 culori, astfel
ncat sa nu existe doua regiuni vecine care au aceasi culoare. Variabilele pot fi considerate
abrevierile pentru regiuni, respectiv: W A, N T , Q, N SW , V , SA, T , domeniul fiecarei
variabile este {rosu, verde, albastru}, iar restrictiile se pot exprima sub forma unor perechi
de forma X 6= Y unde X, Y W A, N T, Q, N SW, V, SA, T si X, Y vecine pe harta.

Northern
Territory
Queensland

Western
Australia
South
Australia

New South Wales

Victoria

Tasmania

Figura 4.1: Regiuni din Australia.


Deseori se recurge la reprezentarea acestor restrictii sub forma de graf n care doua
variabile sunt legate printr-o muchie daca se supun unei constrangeri. De exemplu, pentru
problema colorarii regiunilor se leaga prin muchii noduri reprezentand regiuni vecine (si
care trebuie colorate diferit) - fig 4.2.
O PSC se poate formula n forma urmatoare:
stare initiala : multimea vida, corespunzatoare lipsei de asignari de valori oricarei
variabile;
functie succesor : se asigneaza unei variabile ce nu are valoare data (numita variabila
libera) o valoare din domeniul asociat, cu conditia ca asignarea nou obtinuta sa fie
consistenta (sa nu ncalce restrictiile impuse);
test scop: asignarea curenta este completa, nu mai exista variabile libere


4.1. PROBLEME DE SATISFACERE A CONSTRANGERILOR

63

NT
Q
WA
SA

NSW

Victoria

Figura 4.2: Graf de constrangeri pentru problema colorarii hartii Australiei.


costul caii : o constanta pentru fiecare asignare de variabila
Deoarece fiecare solutie are toate cele n variabile cu valori asignate rezulta ca adancimea
solutiei este n. Algoritmii folositi pentru rezolvarea acestui tip de probleme sunt cei de
cautare n adancime (adancimea se cunoaste, iar cicluri nu putem avea, deoarece la fiecare
pas consideram o alta variabila libera). De asemenea, algoritmii pentru cautare locala
dau rezultate bune.
Domeniile de valori pot fi discrete si finite (precum mai sus) sau nu, si n acest al doilea
caz restrictiile se dau folosind un limbaj care permite descrierea relatiilor (de exemplu
x + y < z si x y = 4). Problemele cu domenii de tip continuu sunt studiate de catre
cercetarile operationale.
O constrangere poate fi unara daca se refera la o singura variabila si atunci este
simplu de tratat, pentru ca se modifica corespunzator domeniul de valori asociat prin
excluderea valorilor care nu satisfac restrictia. Deseori se dau restrictii binare, care implica
exact doua variabile. De exemplu, pentru graful din figura 4.2 orice muchie reprezinta o
restrictie binara.
Exista, desigur, si restrictii de ordin mai mare, implicand cel putin trei variabile.
Avem asemenea situatie n problema urmatoare1 : sa se substituie fiecare litera printr-o
cifra diferita, astfel ncat ecuatia sa fie adevarata
unu+
patru =
----cinci
Constrangerea ca valorile caracterelor diferite sa fie diferite poate fi redusa la cateva de tip
1

Problem
a de criptaritmetica.


CAPITOLUL 4. PROBLEME DE SATISFACERE A CONSTRANGERILOR

64

binar - u 6= i, u 6= n, etc; apoi, pentru fiecare din cele cinci coloane avem cate o restrictie:

u + u = i + 10x1

n + r + x1 = c + 10x2

u + t + x = n + 10x3

a + x3 = i + 10x4

(4.1)

p + x4 = c

unde xi reprezinta (eventualul) transport de la suma de cifre. Restrictiile pot fi reprezentate sub forma de hipergraf, precum in figura 4.3. Se poate arata ca problemele cu
domenii finite pot fi reduse la probleme cu restrictii binare prin introducerea unor variabile auxiliare. Din acest motiv ne vom concentra asupra problemelor cu constrangeri
binare.

Figura 4.3: Hipergraf de constrangeri atasat problemei de criptaritmetica. Patratele


definesc restrictii la care participa variabilele - patratul de pe primul rand este reprezentare
a conditiei ca valorile caracterelor diferite sa fie diferite, iar cele de pe penultimul rand
reprezinta constrangerile din sistemul 4.1.

4.2

C
autare backtracking pentru PSC

Formularea data pentru PSC (n special prezenta unei functii succesor) ne permite
sa speram ca putem trata problemele de acest tip prin orice algoritm de cautare de care
dispunem. Totusi, acest tip de probleme trebuie abordat cu o anumita schema de cautare.
Sa plecam de la o PSC n care avem n variabile care pot lua valori dintr-o multime
finita cu d elemente. Daca vrem sa folosim cautarea n latime, atunci:
la nodul radacina (cel care nu are nici o variabila nu are valoare fixata) avem n
d posibilitati de a continua, deoarece avem n variabile si pentru fiecare poate fi
stabilita o valoare din cele d;
la nivelul urmator avem (n 1)d alegeri, pentru ca au ramas mai putine variabile


4.2. CAUTARE
BACKTRACKING PENTRU PSC

65

n total obtinem n! dn frunze


Numarul de frunze este mult mai mare decat dn care s-ar obtine prin enumerarea tuturor
posibilitatilor de asignare de valori pentru cele n variabile. Ca atare, aplicarea unei metode
de cautare oarecare poate sa nu fie o idee buna.
Numarul supraestimat de frunze a aparut din cauza ca la fiecare pas permitem luarea
n considerare a tuturor variabilelolor posibile, pe cand solutia unei PSC nu este senzitiva
la ordine. Este admisibil ca la fiecare pas sa se ia n considerare doar o variabila. Asa
numarul de frunze devine dn .
Cautarea de tip backtracking este de fapt o cautare de tip mai ntai n adancime care
genereaza un singur nod descendent. Deoarece reprezentarea PSC este standardizata, ea
se poate aplica independent de specificul domeniului. Algoritmul este dat n figura 4.4.

Figura 4.4: Algoritmul backtracking pentru probleme de satisfacere a constrangerilor.


Fiind un algoritm de cautare neinformata, n practica el nu se comporta bine pentru
probleme de dimensiune mare. Exista nsa niste metode generale care maresc eficienta
lor. Metodele reprezinta raspunsuri la urmatoarele ntrebari:
1. Care variabila ar trebui luata n considerare la pasul curent, si n ce ordine ar trebui
ncercate valorile?
2. Care sunt implicatiile asignarii curente de valoare pentru o variabila pentru alte
variabile ce nca nu au valori asociate?

66

CAPITOLUL 4. PROBLEME DE SATISFACERE A CONSTRANGERILOR

4.2.1

Ordonarea valorilor si a variabilelor

Algoritmul backtracking contine linia:

var<-selecteaza-variabila-neasignata(variabile[psc], asignare, psc)


dar nu se spune cum anume se face selectarea de variabila. Se poate, desigur, opta pentru
o ordine fixa a lor. Dar putem observa ca daca asignam W A = rosu si N T = verde,
pentru SA ramane o singura valoare care poate fi asignata, deci are sens sa consideram
la pasul urmator variabila SA, mai degraba decat Q, N SW sau V . Dupa acest pas, Q,
N SW si V au domeniu de alegere al valorilor restrans la cate o variabila. Intuitiv, ar
trebui sa consideram la fiecare pas variabila care are cele mai putine valori candidat.
Strategia numita valori minime ramase(VMR) decide alegerea variabilei care are cele
mai putine variante, astfel se ncearca producerea unei esuari cat mai devreme posibil n
calea de cautare curenta, astfel ca sa se reteze caile care nu duc la solutii. De exemplu,
daca avem o variabila care are 0 valori ramase, atunci algoritmul o va alege pe aceasta
si se va detecta esuare. Acest lucru este corect, deoarece oricum mai devreme sau mai
tarziu se ajunge la imposibilitatea de a da valoare pentru variabila n cauza, deci astfel
se evita niste cautari care nu ar putea produce solutie.
In practica, aceasta strategie simpla duce la mbunatatiri ale vitezei de 3 pana la
3000 de ori. Se discuta n sectiunea 4.2.2 modul n care contorizarea numarului de valori
disponibile ramase se poate face eficient.
Euristica nu este utila la alegerea primei variabile, deoarece fiecare regiune poate avea
trei culori. Intr-un asemenea moment se foloseste euristica gradului care indica alegerea
acelei variabile care are cele mai multe contrangeri cu alte variabile fara valori asignate.
Notiunea de grad face aici referire la valori definite n teoria grafurilor. De exemplu,
pentru harta din figura 4.1 avem ca SA are gradul 5, alte variabile au valori 2, 3, 0. Ca
atare, se va alege ca prima variabila SA (si pasii urmatori, cu aceeasi euristica duc la
rezolvarea problemei fara a fi nevoie sa se revina). Strategia VMR este mult mai efectiva
decat aceasta, dar euristica gradului este utila la deciderea urmatorului pas ntr-o situatie
de egalitate.
Odata ce sa ales variabila pentru care se va da valoare trebuie determinat care este
ordinea de considerare a valorilor. Pentru asta se aplica strategia celei mai putin constrangatoare valori. Concret, se prefera valorile care produc cele mai putine eliminari de
valori pentru alte varibile neasignate. Ideea este de a se lasa maximum de flexibilitate
(posibilitati) pentru alegerile urmatoare. Evident, daca se cere generarea tuturor solutiilor
pentru PSC sau daca problema nu are nicio solutie, strategia este inutila.


4.2. CAUTARE
BACKTRACKING PENTRU PSC

4.2.2

67

Propagarea informatiilor prin constr


angeri

Pana acum algoritmul a considerat constrangerile pentru o variabila doar cand ea era
aleasa de catre selecteaza-variabila-neasignata. Daca se iau n considerare aceste
constrangeri mai repede de acest moment, atunci se poate reduce foarte mult spatiul de
cautare.
Verificare nainte
Ori de cate ori unei variabile X i se asigneaza o valoare, pentru fiecare variabila Y
care este conectata cu X printro restrictie se sterge din domeniul lui Y valorile care sunt
inconsistente cu proaspata valoare a lui X. Tabelul 4.1 arata evolutia cautarii cu verificare
nainte. Se poate observa ca dupa ce se asigneaza W A = rosu si Q = verde, domeniile
pentru N T si SA contin doar un singur element; am redus deci factorul de ramificare
pentru aceste doua variabile. Este clar ca aceasta verificare nainte face pereche buna cu
strategia VMR, pentru care urmatoarele variabile luate n considerare sunt SA si N T .
Verificarea nainte este un mod eficient de calcularea a informatiei de care VMR are nevoie.
Mai observam ca dupa ce setam V = albastru domeniul lui SA este gol. Deci verificarea nainte a determinat ca asignarea partiala {W A = rosu, Q = verde, V = albastru}
este inconsistenta cu cerintele problemei, necesitand un pas napoi.
WA

NT

N SW

SA

Domeniile initiale

RVA

RVA

RVA

RVA

RVA

RVA

RVA

Dupa W A = rosu

VA

RVA

RVA

RVA

VA

RVA

Dupa Q = verde

RA

RVA

RVA

Dupa V = albastru

RVA

Tabela 4.1: Evolutia in problema colorarii hartilor folosind verificarea nainte. R este
rosu, V este verde, A este albastru.

Propagarea constr
angerilor
Cu toate ca verificarea nainte depisteaza inconsitente, ea nu le depisteaza pe toate. De
exemplu, sa consideram a treia linie a tabelului 4.1: cand W A = rosu si Q = verde, atat
N T cat si SA sunt limitate la culoarea albastra; dar ntrucat ele sunt si regiuni vecine,
trebuie sa fie de culori diferite. Deci verificarea nainte nu este suficient de patrunzatoare
n a detecta incompatibilitati. Propagarea constr
angerilor este un termen general, desemnand propagarea restrictiilor pentru o variabila conform constrangerilor pentru alte
variabile. Mai clar, propagam de la W A si Q la N T si SA (precum la verificarea nainte),
dar luam n considerare si constrangerea dintre N T si SA pentru a detecta inconsitenta.

68

CAPITOLUL 4. PROBLEME DE SATISFACERE A CONSTRANGERILOR

Evident, dorim sa facem o asemenea propagare de constrangeri cu efort computational


cat mai mic.
Consistenta arcului este o metoda rapida de propagare a constrangerilor care este ult
mai puternica decat verificarea nainte. Un arc se refera la o legatura directionata de la
o variabila la alta. Date fiind doua variabile X si Y cu domeniile de valori aferente, un
arc de la X la Y este consistent daca pentru orice valoare din domeniul lui X avem ca
exista macar o valoarea compatibila (consistenta) n domeniul lui Y . De exemplu, pentru
a treia linie din tabelul 4.1 se observa ca domeniul pentru SA este {albastru}, iar pentru
N SW este {rosu, albastru}. Pentru SA = albastru avem o asignarea consistenta a lui
N SW si anume N SW = rosu. Invers, nsa, nu este adevarat: pentru N SW = albastru
nu avem nici o valoare potrivita ce poate fi asignata lui SA. Arcul (N SW, SA) poate fi
facut consistent prin eliminarea lui albastru din domeniul de valori al lui N SW .
Acelasi proces se poate aplica si perechii de variabile SA si N T (ele fiind legate printr-o
restrictie): tot din linia 3 a tabelului 4.1 se observa ca amandoua variabilele au domeniul
{albastru}, si deci actionarea pentru a mentine consistenta oricarui arc (de la SA la N T
sau invers) duce la domeniu de valori vid pentru una din variabile. Se va produce deci
un pas napoi, datorita detectarii devreme a imposibilitatii de continuare. Consistenta
arcului vede mai departe decat propagarea nainte.
Procesul de verificare a consistentei arcelor trebuie aplicat n mod repetat pana cand
nu mai exista inconsistente. Acest proces se poate face nainte de nceperea cautarii
sau dupa fiecare asignare de valoare. Ori de cate ori se face stergerea unei valori din
domeniul unei variabile X, trebuie verificate toate arcele de la variabile Y la X. Algoritmul
consistentei arcelor AC-3 este dat n figura 4.5 si foloseste o coada care mentine arcele
ce trebuie sa fie verificate din punct de vedere al consistentei. Fiecare arc (Xi , Xj ) este
cercetat pe rand pentru consistenta. Daca se sterge vreo valoare din domeniul lui Xi ,
atunci toate arcele de forma (Xk , Xi ) ce indica spre variabila Xi sunt adaugate la coada.
Complexitatea este O(n2 d3 ) [1]; beneficiile obtinute prin folosirea acestei strategii acopera
efortul computational. Tot n [1] se explica de ce consistenta arcelor nu determina toate
inconsistentele.
Se pot efectua verificari de k-consistente, n care pentru orice set de k 1 variabile
care au o asignare consistenta, o oricare a k-a variabila poate sa primeasca o valoare
consistenta (pentru k = 2 avem obtinem chiar consistenta arcelor). Totusi, cu cat k este
mai mare cu atat verificarile sunt mai complexe.


4.2. CAUTARE
BACKTRACKING PENTRU PSC

69

Figura 4.5: Algoritmul AC-3 pentru consistenta arcelor. Dupa aplicarea lui fiecare arc
este consistent sau exista variabile al caror domeniu este gol (si n acest ultim caz PSC
nu poate fi rezolvata).


CAPITOLUL 4. PROBLEME DE SATISFACERE A CONSTRANGERILOR

70

Figura 4.6: Algoritmul corespunzator euristicii conflicte-minime. Functia conflicte contorizeaza numarul de constrangeri ncalcate de o valoare particulara.

4.3

C
autare local
a pentru PSC

Algoritmii de cautare locala se dovedesc a fi foarte eficienti n rezolvarea multor PSC.


Ei pornesc de la o asignare pentru toate variabilele iar functia succesor modifica valoarea
unei variabile la fiecare pas.
Cea mai evidenta euristica pentru selectarea valorii undei variabile este alegerea unei
valori care produce numarul minim de conflicte cu alte variabile euristica conflicteminime. Algoritmul este dat n figura 4.6.
Euristica este extrem de productiva pentru problema celor n regine; daca se face
abstractie de timpul cerut pentru pozitionarea initiala a reginelor, atunci timpul de rulare
este relativ independent de dimensiunea problemei. De exemplu, poate rezolva problema
pentru 1 milion de regine in 50 de pasi. Trebuie spus nsa ca aceasta problema are
multimea solutiilor densa n multimea starilor, deci o solutie este usor de gasit. Strategia
functioneaza bine si pentru probleme grele: de exemplu, planificarea operatiilor din
decursul unei saptamani pentru telescopul Hubble a fost redusa la 10 minute, de la 3
saptamani.
Un alt avantaj al cautarii locale este ca permite cautarea unei solutii atunci cand
o parte din restrictii se schimba pe loc. De exemplu, pentru o problema de planificare a zborurilor, daca un aeroport devine indisponibil (accidente, conditii meteo) atunci
restrictia corespunzatoare poate fi usor introdusa si plecand de la o planificare precedenta
se poate obtine una adecvata pentru situatia actuala n timp foarte scurt.
Tabelul 4.2 contine o comparatie a performantelor diferitelor variante de backtracking pentru un set de probleme. Compararea se face pe baza numarului de verificari de
consistenta. Prima problema este gasirea unei colorari adecvate a hartii SUA pentru 50
de state si 4 culori. A doua problema se refera la reolvarea problemei celor n regine,

4.4. STRUCTURA PROBLEMEI

71

Problema

Bactracking

BT+VMR

Verificare nainte VI+VMR Conflicte-minime

SUA

(> 1000K)

(> 1000K)

2K

60

64

n-regine

(> 40000K)

13500K

(> 40000K)

817K

4K

Zebra

3859K

1K

35K

0.5K

2K

Random 1

415K

3K

26K

2K

Random 2

942K

27K

77K

15K

Tabela 4.2: Comparatie pentru diferitele variante de backtracking pentru probleme de satisfacere a constrangerilor. K este abreviere pentru kilo; Backtracking se refera la backtracking clasic, BT+VMR este folosirea euristicii valorii minime ramase; VI+VMR
se refera la verificare nainte + strategia valorilor minime ramase; Conflicte-minime este
algoritmul din sectiunea 4.3. Numerele din paranteza arata ca nu s-a putut determina o
solutie n timpul alocat pentru rulare.
pentru n [2, 50]. A treia problema este jocul Puzzle Zebra [1]. Ultimele doua sunt
probleme artificiale alese aleator. Rezultatele sugereaza ca verificarea nainte mpreuna
cu VMR este mai buna decat orice alta strategie backtracking, dar nu ntotdeauna mai
buna decat cautarea locala cu conflicte minime.

4.4

Structura problemei

Vom examina modul n care structura problemei poate fi de ajutor pentru gasirea
rapida a unei solutii. Un caz simplu este acela n care problema este compusa din mai
multe subprobleme care se pot rezolva independent; de exemplu, pentru problema colorarii
hartii Australiei, Tasmania este o subproblema care poate fi rezolvata separat. Reducerile de complexitate pot fi mari, iar timpii de rulare obtinuti sunt acceptabili. Singura
problema este ca o asemenea situatie este rar ntalnita.
Un alt caz simplu de rezolvat este acela n care graful constrangerilor formeaza un
arbore. Se poate arata ca:
Teorema 2 Daca graful de constr
angeri nu are cicluri, atunci PSC poate fi rezolvata cu
complexitatea O(n d2 ).
Sporul de performanta este evident prin comparatie cu performanta generala a algoritmului backtracking, O(dn ).
In acest punct ne putem pune problema cum anume reducem o problema la una care
are graful structurat ca un arbore. Exista doua metode: una se bazeaza pe eliminarea
unor variabile, cealalta pe crearea de grupari de noduri.

72

CAPITOLUL 4. PROBLEME DE SATISFACERE A CONSTRANGERILOR


Prima varianta functioneaza astfel: se determina un set de noduri prin a carui elim-

inare se ajunge la un graf de tip arbore; de exemplu, pentru graful din figura 4.2 daca se
elimina nodul corespunzator variabilei SA, atunci graful obtinut este cel din figura 4.7,
pentru care teorema de mai sus ne asigura de existenta unui comportament foarte bun.
Eliminarea nodului se face prin asignarea unei valori din domeniul asociat si stergerea
valorilor incompatibile din domeniile variabilelor care sunt unite prin restrictie cu nodul
eliminat. Desigur, valoarea aleasa pentru SA poate sa duca la imposibilitatea de rezolva problema, dar aceste valori pot fi ncercate pe rand (conform principiului general al
metodei backtracking).
Schitat, algoritmul arata astfel:
1. alege un subset S din V ariabile[P SC] astfel ncat graful sa devina un arbore dupa
eliminarea nodurilor din S si a arcelor corespunzatoare. S se va numi set de eliminare
a ciclurilor.
2. Pentru fiecare asignare posibila pentru variabilele din S care satisfac constrangerile
PSC:
(a) elimina din domeniul variabilelor ramase valorile care sunt inconsistente cu
asignarile pentru S
(b) daca PSC ramasa are o solutie, returneazo mpreuna cu asignarile pentru S
Gasirea celui mai mic set de eliminare a ciclurilor este o problema NP-grea, dar exista
algoritmi eficienti pentru obtinerea unor aproximari. Daca acest set are dimensiunea c,
atunci complexitatea variantei de mai sus este O(dc (n c)d2 ).
A doua varianta porneste de la construirea unei descompuneri a grafului de constrangeri ntrun arbore format dintr-un set de probleme interconectate. Fiecare subproblema se rezolva independent, apoi solutiile rezultate sunt combinate. Figura 4.8
arata descompunerea problemei de colorare a hartii Australiei. Descompunerea trebuie
sa ndeplineasca urmatoarele trei conditii:
1. fiecare variabila din problema originala trebuie sa apara n cel putin una din subprobleme;
2. daca doua variabile sunt conectate printr-o constrangere n problema originala,
atunci ele trebuie sa apara mpreuna n cel putin una dintre subprobleme;
3. daca o variabila apare n doua subprobleme din arbore, atunci ele trebuie sa apara
n fiecare subproblema de-a lungul unei cai care conecteaza aceste subprobleme.

4.4. STRUCTURA PROBLEMEI

73

NT
Q
WA
NSW

V
Victoria

T
Figura 4.7: Prin eliminarea variabilei SA, graful de constrangeri din figura 4.2 devine un
arbore, pentru care rezolvarea se face n timp liniar.

Figura 4.8: O descompunere sub forma de arbore a grafului de constrangeri din figura 4.2


CAPITOLUL 4. PROBLEME DE SATISFACERE A CONSTRANGERILOR

74

Fiecare din subprobleme se rezolva independent; daca una dintre ele nu are solutie,
atunci ntreaga problema nu are solutie. Constrangerile care trebuie respectate se rezolva
prin interpretarea fiecarei subprobleme ca o variabila mai mare si aplicarea algoritmului
eficient de rezolvare pentru arbore. Constrangerile pentru acest graf arbore reprezinta
conditia ca subprobleme cu variabile comune sa aibe aceeasi valoare pentru variabilele
partajate.

4.5

Rezumat

Problemele de satisfacere a constrangerilor se refera la situatiile n care pentru un set


de variabile se cere determinarea de valori care satisfac anumite restrictii. Metoda de
cautare este backtracking, dar algoritmul general poate fi mbunatatit prin folosirea unor
strategii independente de problema. Algoritmii de cautare locala sunt adecvati si ei la
rezolvarea de PSC, iar exploatarea unei structuri particulare a problemei poate duce la
reduceri de complexitate considerabile.

4.6

Teste de autoevaluare

4.6.1

Intreb
ari

1. Prin ce se caracterizeaza o problema de satisfacere a constrangerilor?


2. Din ce motiv se foloseste cautarea n adancime pentru rezolvarea unei PSC?
3. Pe ce idee se bazeaza strategia valorilor minim ramase?

4.6.2

Teste gril
a

Raspundeti la urmatoarele ntrebari, alegand variantele corecte.


1. Algoritmul de cautare folosit pentru rezolvarea unei PSC se bazeaza pe cautarea n:
(a) adancime
(b) latime
(c) bidirectionala
2. Metode numita verificare nainte determina verificarea consistentei arcelor dintre
noduri:
(a) adevarat
(b) fals

Capitolul 5
Agenti logici
Obiective
Capitolul introduce agentii bazati pe cunoastere. Conceptele care se discuta sunt
reprezentarea cunoasterii si procesele de rationare preocupari centrale ale inteligentei
artificiale.
Dupa parcurgerea capitolului studentul va putea sa:
explice care sunt aspectele care definesc o logica
defineasca deductia
formuleze enunturi conform sintaxei din logica propozitionala
foloseasca algoritmii prezentati pentru a efectua inferente

5.1

Motivatie

Spre deosebire de agentii care aplica metodele de cautare prezentate n capitolele


anterioare, agentii logici beneficiaza de cunoastere exprimata n cele mai variate forme,
combinand si recombinand informatia pentru a raspunde unor scopuri diverse. In plus,
cunoasterea si rationarea de asemenea joaca un rol crucial n lucrul cu medii partial
observabile. Un agent bazat pe cunoastere poate sa produca noi cunostinte pe baza
cunostintelor generale si a perceptiilor ; de exemplu, un medic poate sa puna un diagnostic
unui pacient, plecand de la simptomele acestuia si cunostintele pe care i le-a asigurat
formarea medicala. Dar, desi simptomele sunt cunoscute, un medic nu cunoaste absolut
tot despre pacientul tratat de aici necesitatea de a lucra cu observatiile partiale.
Un alt motiv pentru care se studiaza agentii bazati pe cunoastere este flexibilitatea
produselor rezultate. Astfel de agenti sunt n stare sa accepte noi sarcini si sa castige
75

76

CAPITOLUL 5. AGENT
I LOGICI

rapid noi competente prin nvatare sau prin descoperire de noi informatii.
Principalul mod n care se abordeaza agentii logici este bazat pe logica (propozitionala,
apoi de ordinul ntai). Spectrul abordarilor curente este nsa mult mai bogat, deoarece
n lumea reala apar probleme legate de imprecizie (si aici intervin teoria probabilitatilor
si sistemele fuzzy), iar partea de nvatare se abordeaza de regula prin teoria aferenta
domeniului nvatarii automate - retele neuronale, arbori de decizie (vezi [5], [6]).

5.2

Agenti bazati pe cunoastere

Componenta centrala a unui agent este baza de cunostinte (BC), adica un set de
enunturi care fac parte din domeniul de lucru al agentului. Fiecare enunt este exprimat
ntrun limbaj numit limbaj de reprezentare a cunostintelor si reprezinta niste asertiuni
despre lume.
Mai este nevoie de un mecanism care sa adauge noi propozitii la BC si unul care sa
determine ce se cunoaste (sau ce anumte trebuie sa se faca la pasul urmator). Numele
lor este Spune si Intreaba. Ultimul mecanism presupune inferente metode prin care
pornind de la cunostinte se deduc altele.
Figura 5.1 contine o schita a unui program bazat pe cunoastere. El preia o perceptie
ca intrare si returneaza o actiune. Agentul mentine o BC care initial este formata din
cunostintele de baza si care se mbogateste pe masura ce i se comunica perceptii sau
propozitii. Primul pas este de a comunica bazei de cunostinte ceea ce s-a perceput; la
pasul al doilea se ntreaba ce ar trebui facut. La pasul al treilea i se comunica BC ca s-a
efectuat actiunea indicata la pasul anterior; aceasta a doua comunicare este utila pentru
a tine BC ancorata n contextul curent.

Figura 5.1: Un agent generic ce actioneaza plecand de la o baza de cunostinte.


Creeaza-enunt-perceptie translateaza n limbajul formal specific bazei de cunostinte
perceptia curenta; demn de remarcat este ca timpul apare si el ca o dimeniune a perceptiei.
Creeaza-interogare-actiune contruieste o propozitie care interogheaza BC ce actiune

5.3. LUMEA MONSTRULUI

77

ar trebuie sa se execute la momentul curent. In sfarsit, Creeaza-enunt-actiune construieste un enunt care codifica faptul ca actiunea indicata a fost ndeplinita.
Initial, baza de cunostinte este construita printr-o succesiune de apeluri ale lui Spune,
prin care se comunica cunostinte generale si principii. Este un mod declarativ de definire a
unui domeniu, care mareste mult aria de aplicabilitate a acestor agenti. O alta modalitate
de mbogatire a BC este prin nvatare automata pe baza perceptiilor.

5.3

Lumea monstrului

Sectiunea contine o descriere a unui joc, folosita ca suport de exemplificare n restul


capitolului. Se dau mai multe camere dispuse ntr-o matrice; camerele comunica ntre
ele; ntro camera se gaseste un monstru care mananca pe oricine intra acolo (si jocul se
termina). In alte camere se afla gropi; daca se intra ntro asemenea groapa, atunci jocul
se termina. Intr-o camera se afla aur; luarea lui determina sfarsitul jocului. Un personaj
narmat cu o sageata are posibilitatea de a se muta dintr-o camera n alta n cautarea
aurului.
Detaliile sunt:
masura de performanta este data de suma valorilor atasate fiecarui eveniment: 1000
pentru preluarea aurului, -1000 pentru caderea ntro groapa sau omorarea de catre
monstru, -10 pentru aruncarea sagetii si -1 pentru orice alta actiune;
mediul: o matrice de camere de 4 pe 4. Agentul ncepe n camera din stanga jos,
de coordonate [1, 1], cu fata spre dreapta. Locatia camerelor cu aurul, garile si
monstrul sunt alese aleator, dar se garanteaza ca nu sunt n locatia de pornire.
actiuni: agentul poate sa se deplaseze n directia n care se afla cu fata, poate sa se
ntoarca la stanga sau la dreapta cu 90 . Personajul moare daca intra n camera cu
monstrul viu. Daca exact n fata lui este un zid, atunci ramane pe loc. Actiunea
apuca este folosita pentru preluarea aurului, daca se afla n aceeasi camera cu el.
Actiunea trage se poate folosi pentru a lansa sageata n directia n care e orientat;
sageata zboara pana se izbeste fie de zid, fie de monstru.
senzori: agentul are cinci senzori:
n patratul care contine monstrul si n camerele vecine (dar nu pe diagonala)
se percepe miros;
n camerele vecine (dar nu pe diagonala) cu o camera care contine o groapa se
simte briza de aer;

78

CAPITOLUL 5. AGENT
I LOGICI
n camera care contine aurul se percepe stralucire
cand agentul se izbeste de un zid, se aude bufnitura
cand monstrul este omorat, se aude tipat
Cele cinci perceptii determina un vector cu cinci elemente care se raporteaza ori de
cate ori agentul (personajul) intra ntro camera.

Cunostintele date mai sus se introduc ntro BC. De fiecare data cand agentul viziteaza
o camera se primeste vectorul de perceptii si se pot face deductii de tipul: e posibil ca n
camera [2, 1] sa fie o groapa, sau sigur n camera [3, 3] nu se afla monstru, deductii care
se adauga la BC (pentru a evita redescoperirea rotii).

5.4

Logica

Sectiunea prezenta contine generalitati despre reprezentari logice si rationament. Detalile sunt specifice logicilor concrete ce se studiaza (logica propozitiilor, logica predicatelor, logica temporala, logica fuzzy).
Orice logica trebuie sa clarifice doua aspecte: sintaxa si semantica. Sintaxa reprezinta
o specificare a ceea ce este corect exprimat n logica respectiva si se poate reprezenta sub
forma de diagrame sau propozitii folosind simboluri.
Semantica defineste n general semnificatia unui enunt. In cadrul logicii ea permite
stabilirea unei valori de adevar pentru un enunt care este corect formulat din punct de
vedere sintactic. Mai mult, semantica trebuie sa specifice valoarea de adevar pentru fiecare
enunt fata de fiecare lume posibila; de exemplu, a > b este adevarata pentru a = 3 si
b = 2, dar falsa pentru a = b = 4.
O lume posibila (set de valori atasat variabilelor) se va numi de acum nainte model
si vom spune ca m este un model al lui a daca a este adevarata n lumea m.
Rationamentul logic (sau deductia, adica partea de interes major ntr-o logica) reprezinta
modul n care se poate deduce un enunt dintr-un altul. Definitia formala a deductiei este:
Definitia 10 Spunem ca din se deduce si not
am |= dac
a n orice model al
enuntului avem ca si este adevrat.
De exemplu, din propozitia a > b se poate deduce si b a, deoarece pentru orice
combinatie de numere a si b care fac prima propozitie adevarata si al doilea enunt este
adevarat. Pentru jocul cu lumea monstrului, sa presupunem ca agentul nu detecteaza
nimic n pozitia [1, 1] si detecteaza curent de aer n [2, 1]. Acestea mpreuna cu regulile
jocului1 formeaza baza de cunostinte. Agentul este interesat daca n [1, 2], [2, 2], [3, 1] se
1

Pentru moment nu ne intereseaza cum anume se formalizeaza aceste reguli, vom presupune ca ele

sunt reprezentate convenabil.


5.5. LOGICA PROPOZIT
IONALA

79

afla gauri. Fiecare din camere poate sa contina sau nu gaura, deci n total avem 8 modele
posibile. Vom considera acele modele pentru care baza de cunostinte nu este contrazisa;
exista trei asemenea cazuri din cele 8 posibile si n toate propozitia nu exista groapa n
[1, 2] este adevarata, pe cand nu exista groapa n [2, 2] si nu exista groapa n [3, 1]
nu sunt adevarate pentru toate cele trei cazuri (si negatiile lor sunt n aceeasi situatie).
Aceasta metoda de verificare a posibilitatii de deducere se numeste algoritmul verificarii
modelelor. Vom dezvolta mai multi algoritmi de dedutie; daca avem un astfel de algoritm
i, atunci vom scrie |=i si vom citi este dedus (sau derivat) din prin i sau i l
deriveaza pe din .
Un algoritm inferential se numeste temeinic 2 daca obtine numai enunturi care sunt
derivabile din baza de cunostinte. Este evident ca algoritmul de verificare a modelelor
este temeinic.
O alta proprietate pentru un algoritm inferential este cea de completitudine daca
poate sa deduca toate enunturile care sunt derivabile din baza de cunostinte. O examinare
sistematica n cazul unei probleme n care multimea de concluzii posibile este finita duce,
evident, la un algoritm complet; proprietatea este nsa esentiala pentru problemele n care
multimea concluziilor posibile este infinita.

5.5

Logica propozitional
a

5.5.1

Sintaxa

Enunturile atomice din logica propozitionala3 sunt elemente sintactice indivizibile.


Fiecare simbol corespunde unei propozitii care poate sa fie adevarata sau falsa. Exista
doua simboluri propozitionale cu semnificatii fixate: Adevarat este propozitia tot timpul
adevaratasi Fals este propozitia tot timpul falsa.
Enunturile complexe sunt compuse din propozitii simple folosind conectorii logici. Cei
cinci conectori sunt:
1. (non) o propozitie precum A este negarea lui A. Un literal este fie un enunt
atomic (literal pozitiv), fie negarea a unuia (literal negativ).
2. (si) o propozitie formata din doua propozitii legate prin precum A B se
numeste conjuntie.
3. (sau) o propozitie ce foloseste , precum A B, se numeste disjunctie.
2
3

In limba englez
a, n original: sound.
Numit
a si logic
a booleana

80

CAPITOLUL 5. AGENT
I LOGICI
4. (implica) o propozitie precum A B se numeste implicatie. Premisa sau
antecedentul implicatiei este A, iar concluzia sau consecventul este B.
5. (echivalent, daca si numai daca) propozitia A B se mai numeste biconditionala.
Tabelul 5.1 da sintaxa folosita n logica propozitionala n forma BNF (Backus-Naur

Form).
Enunt
Enunt atomic
Simbol
Enunt complex

Enunt atomic | Enunt complex


Adevarat | Fals | simbol
P|Q|R
Enunt

(Enunt Enunt)

(Enunt Enunt)

(Enunt Enunt)

(Enunt Enunt)

Tabela 5.1: Gramatica BNF pentru enunturile din logica propozitionala.


Parantezele sunt importante: fiecare propozitie care este construita cu conector binar
este ncadrata ntre paranteze. Uneori acestea se pot omite, dar numai daca nu duc
la ambiguitati. Suplimentar, se defineste si prioritatea operatorilor; acestia, n ordinea
precedentei sunt: , , , , . Astfel, A B C este totuna cu (A (B C)).
Suplimentar, semantica ne poate permitem sa scriem A B C deoarece ((A B) C)
are ntotdeauna aceeasi valoare de adevar ca si (A(B C)), dar arata ca este ambiguitate
pentru expresia A B C.

5.5.2

Semantica

Semantica defineste reguli pentru determinarea valorii de adevar a propozitiilor relativ


la un model concret. In logica propozitionala un model reprezinta valorile de adevar ale
simbolurilor propozitionale. De exemplu, daca avem propozitiile P1,2 , P2,2 , P3,1 , atunci
un model posibil este m = {P1,2 = f als, P2,2 = adevarat, P3,1 = adevarat}.
Calculul valorii de adevar se face recursiv, deoarece orice propozitie este alcatuita din
propozitii atomice si conectori. Pentru nceput, trebuie sa se determine valoarea de adevar
a unei propozitii atomice:
Adevarat are valoarea de adevar adevarat pentru orice model; Fals are valoarea
de adevar fals pentru orice model;
valoarea de adevar a unei unui simbol propozitional trebuie sa rezulte din modelul
curent.


5.5. LOGICA PROPOZIT
IONALA

81

Pentru propozitiile compuse se foloseste tabela de adevar (data n tabelul 5.2) care
arata cum se calculeaza valoarea propozitiei plecand de la elementele care o formeaza.
Pe baza celor de mai sus se poate scrie o functie (Este-Adevarat) care stabileste daca
valoarea de adevar a unei expresii s, plecand de la un model dat m este adearat.
p

adevarat adevarat

fals

adevarat

fals

fals

fals

pq

fals

pq

pq

adevarat adevarat adevarat adevarat

adevarat adevarat

fals

pq

adevarat

fals

adevarat

fals

adevarat adevarat

fals

fals

fals

fals
fals

adevarat adevarat

Tabela 5.2: Tabela de adevar pentru logica propozitionala.


S-a spus anterior ca o baza de cunostinte este o multime de enunturi. Dat fiind modul
de calcul al valorii de adevar pentru o conjuntie, se poate spune ca o BC de forma 1 ,
. . . , n se poate scrie ca: 1 . . . n .

5.5.3

Exemplu: lumea monstrului n logica propozitional


a

Pentru fiecare pereche de indici (i, j) corespunzand unei camere, vom seta Pi,j =adevarat
daca si numai daca n camera de coordonate (i, j) este o groapa si Bi,j va fi adevarata
daca si numai daca se simte curent de aer n acceasi camera. Conform regulilor jocului
din sectiunea 5.3, avem ca:
nu exista nici o groapa in camera din care ncepe jocul, deci avem regula R1 : P1,1
ntro camera se simte curent de aer numai daca n vecinatatea ei se afla o groapa;
deci avem:
R2 : B1,1 (P1,2 P2,1 )
si
R3 : B2,1 (P1,1 P2,2 P3,1 )
introducem perceptiile: nu se simte curent de aer n prima camera (deci R4 : B1,1 )
si se simte curent n camera (2, 1) (deci R5 : B2,1 ).
Baza de cunostinte se poate sumariza ca: R1 R2 R3 R4 R5 .

5.5.4

Inferenta

Scopul unei inferente este de a detemina daca BC |= . Primul algoritm pe care l


dam se bazeaza pe implementarea directa a definitiei 10: se enumera toate modelele si

82

CAPITOLUL 5. AGENT
I LOGICI

Figura 5.2: Algoritm de deductie bazat pe construirea tabelei de adevar.


se verifica daca este adevarata n toate modelele n care BC este adevarata. Pentru
logica propozitionala, multimea tuturor modelelor se obtine dand toate combinatiile de
valori de adevar pentru simbolurile propozitionale. In cazul nostru avem simbolurile B1,1 ,
B2,1 , P1,1 , P1,2 , P2,1 , P2,2 si P3,1 . Sunt deci 27 = 128 de modele; se poate verifica faptul ca
pentru trei dintre ele BC este adevarata; n aceste trei modele P1,2 este adevarata, deci
nu este groapa n camera de coordonate (1, 2). Mai departe, P2,2 este adevarata doar n
doua din cele trei modele, deci nu putem deduce nici P2,2 nici P2,2 .
Figura 5.2 contine un algoritm general pentru a determina daca se poate deduce din
BC. Este o cautare de tip backtracking; algoritmul este temeinic, deoarece implementeaza
direct definitia; este de asemenea si complet deoarece se termina pentru orice baza de
cunostinte si , numarul de modele fiind finit.
Complexitatea algoritmului este dictata de n, numarul de simboluri. Complexitatea
n timp este O(2n ) iar cea n spatiu este O(n), deoarece avem o cautare de tipul mai
ntai n adancime. Vom prezenta algoritmi care n practica sunt mult mai eficienti, dar
pentru toti algoritmii inferentiali cunoscuti exista un cel mai defavorabil caz care duce la
complexitate exponentiala.

5.5.5

Echivalent
a, validitate si satisfiabilitate

Conceptele urmatoare sunt folosite n alti algoritmi care urmeaza a fi prezentati.


Primul concept este legat de echivalenta logica, notata cu simbolul . Doua propozitii
si sunt echivalente daca sunt adevarate n aceleasi modele. Se poate vedea de exemplu
ca P Q este echivalenta cu Q P (se verifica pe tabela de adevar).
O definitie alternativa a echivalentei este: daca si numai daca |= si |= .


5.6. TIPARE DE RAT
IONAMENT IN LOGICA PROPOZIT
IONALA

83

Tabelul 5.3 contine echivalentele logice standard.


( ) ( ) comutativitatea lui
( ) ( ) comutativitatea lui
(( ) ) ( ( )) asociativitatea lui
(( ) ) ( ( )) asociativitatea lui
() eliminarea dublei negatii
( ) ( ) contrapozitie
( ) ( ) eliminarea implicatiei
( ) (( ) ( )) eliminarea biconditionala
( ) ( ) de Morgan
( ) ( ) de Morgan
( ( )) (( ) ( )) distributivitatea lui asupra lui
( ( )) (( ) ( )) distributivitatea lui asupra lui
Tabela 5.3: Echivalente logice standard.
Al doilea concept este validitatea. O propozitie este valida daca este adevarata n orice
model4 . Conceptul este util pentru urmatoare teorema de deductie:
Teorema 3 Pentru orice propozitii si , aevem ca |= dac
a si numai dac
a propozitia
este valid
a.
Ultimul concept este satisfiabilitatea. O propozitie este satisfiabila daca si numai daca
este adevarata n cel putin un model. Daca este adevarata ntrun model m, atunci
spunem ca m satisface , sau ca m este un model al lui .
A verifica daca se poate deduce din (adica daca ) este echivalent cu a vedea
daca este nesatisifiabila - de fapt regasim procedeul demonstratiei prin reducere
la absurd.

5.6

Tipare de rationament n logica propozitional


a

Prezentam tiparele standard care pot fi aplicate pentru a deriva noi propozitii; aceste
tipare se mai numesc si reguli de inferent
a.
Cea mai cunoscuta regula se numeste Modus Ponens si are forma:
,

adica: daca din se poate deduce si stim ca este adevarata, atunci si este adevarata.
4

O astfel de propozitie se mai numeste si tautologie.

84

CAPITOLUL 5. AGENT
I LOGICI
Alta regula este eliminarea lui si care spune ca dintro conjunctie oricare din termeni

poate sa fie dedus:

De asemenea, oricare din echivalentele din tabelul 5.3 pot fi folosite ca reguli de
inferenta; de exemplu echivalenta pentru eliminarea biconditionala duce la doua reguli
de inferenta:

( ) ( )
si
( ) ( )

Exemplificam utilizarea regulilor de inferenta si a echivalentelor n lumea monstrului.


Continuam lista prezentata n sectiunea 5.5.3. Aplicand eliminarea bicondiotionala pentru
R2 obtinem:
R6 : (B1,1 (P1,2 P2,1 )) ((P1,2 P2,1 ) B1,1 )
Se aplica eliminarea lui si pentru R6 si se ajunge la:
R7 : ((P1,2 P2,1 ) B1,1 )
Echivalenta logica pentru contrapozitive da:
R8 : (B1,1 (P1,2 P2,1 ))
Se aplica regula Modus Ponens pentru R8 si faptul dat n R4 , obtinanduse:
R9 (P1,2 P2,1 )
Din regula lui de Morgan se obtine:
R10 : P1,2 P2,1
sau altfel zis, nici camera [1, 2] si nici [2, 1] nu contin groapa.
Derivarea precedenta se numeste demonstratie si se beazeaza pe aplicarea unor reguli
de inferenta. Oricare din algoritmii de cautare din capitolele 2 si 3 poate fi folosit pentru
gasirea unei demonstratii, folosind ca stare initiala baza de cunostinte iar pas urmator
oricare din regulile de inerenta.
Deoarece inferenta n logica propozitionala este NP-completa, s-ar putea spune ca o
cautare de demonstratie nu poate sa fie mai eficienta decat enumerarea modelelor. In practica nsa, gasirea unei demonstratii este mult mai eficienta, deoarece se evita propozitiile
irelevante, indiferent de cate sunt. De exemplu, n demonstratia anterioara nu sa facut
referire la propozitiile care contin simbolurile B2,1 sau P3,1 .


5.6. TIPARE DE RAT
IONAMENT IN LOGICA PROPOZIT
IONALA

5.6.1

85

Rezolutia

In mod evident, regulile de inferenta expuse anterior sunt temeinice; nu este nsa
evident daca sunt si complete, adica ele permite deducerea a orice poate fi demonstrat
pornind de la o baza de cunostinte. Aplicarea unui algoritm de cautare care este complet
avand drept pasi urmatori regulile de inferenta nu garanteaza obtinerea unui mecanism inferential complet. De exemplu, daca regula eliminarii biconditionale nu ar fi fost
prezenta, atunci concluzia din demonstratia anterioara nu sar fi putut dovedi.
Introducem o singura regula de inferenta, numita rezolutie care produce un algoritm
de inferenta complet, daca este folosit n conjunctie cu un algoritm de cautare complet.
Pentru lumea monstrului, adaugam urmatoarele fapte la baza de cunostinte:
R11 : B1,2
si
R1,2 : B1,2 (P1,2 P2,2 P1,3 )
Printr-o demonstratie asemanatoare cu cea de mai sus, avem ca:
R13 : P2,2
R14 : P1,3
Se aplica eliminarea biconditionala la R3 , apoi Modus Ponens cu R5 si se obtine:
R15 : P1,1 P2,2 P3,1
Se observa ca literalul P2,2 din R13 se reduce cu literalul P2,2 din R15 si obtinem:
R15 : P1,1 P3,1
Putem, de asemenea, sa reducem P1,1 din R1 cu P1,1 din R15 si obtinem:
R16 : P3,1
Aceste reduceri exprima regula rezolutiei unitate, care se scrie formalizat astfel:
l1 lk , m
l1 li1 li+1 lk
unde fiecare l este un literal iar li si m sunt literali complementari (unul este negarea
celuilalt). Deci regula rezolutiei unitate preia o clauza (o disjunctie de literali) si un
literal si produce o noua clauza.
Regula de mai sus admite o generalizare imediata:
l1 lk , m1 mn
l1 li1 li+1 lk m1 mj1 mj+1 mn

86

CAPITOLUL 5. AGENT
I LOGICI

adica se pleaca de la doua clauze si se ajunge la una noua n care avem toti literalii clauzelor
initiale, mai putin cei doi termeni care sunt complementari. Desigur, se presupune ca se
aplica si factorizare, adica o expresie de forma A A este redusa la A.
Este usor de vazut ca regula de rezolutie este temeinica: daca li este adevarata, atunci
mj este falsa si deci m1 mj1 mj+1 mn trebuie sa fie adevarata; analog, daca
li este falsa, atunci l1 li1 li+1 lk este adevarata. Deoarece li este ori adevarata,
ori falsa, obtinem ca una din cele doua concluzii are loc, exact ceea ce constituie concluzia
regulii de rezolutie.
Se poate arata, de asemenea, ca orice algoritm complet de cautare care aplica doar
regula de rezolutie poate sa demonstreze orice concluzie care se poate demonstra plecand
de la o baza de cunostinte n logica propozitionala.
Exista totusi un aspect practic care trebuie mentionat: daca se da de exemplu propozitia
A adevarata, metoda rezolutiei nu poate sa deduca automat ca si A B este adevarata.
Mai general, rezolutia poate fi folosita pentru a confirma sau infirma orice propozitie, dar
nu poate sa genereze singura toate propozitiile care pot fi deduse pornind de la baza de
cunotinte.

5.7

Forma normal
a conjunctiv
a

Regula de rezolutie se aplica numai disjunctiilor de literali, deci s-ar parea ca se aplica
doar bazelor de cunotinte si interogarilor care constau din asemenea forme. Se poate arata
ca orice expresie din logica propozitionala poate fi rescrisa sub forma unei conjunctii de
disjuntii, asa numita form
a normal
a conjunctiva (FNC).
De exemplu, pentru propozitia: B1,1 (P1,2 P2,1 ) se obtine FNC echivalenta prin
pasii:
1. Se aplica eliminarea biconditionala:
(B1,1 (P1,2 P2,1 )) ((P1,2 P2,1 ) B1,1 )
2. Se elimina , prin
(B1,1 P1,2 P2,1 ) ((P1,2 P2,1 ) B1,1 )
3. Apliclegea lui de Morgan pentru ( ) ( ) obtinem:
(B1,1 P1,2 P2,1 ) ((P1,2 P2,1 ) B1,1 )
4. Aplicam distributivitatea lui asupra lui si obc tinem FNC:
(B1,1 P1,2 P2,1 ) (P1,2 B1,1 ) (P2,1 B1,1 )

5.8. ALGORITMUL DE REZOLUT


IE

87

Figura 5.3: Algoritm de rezolutie pentru logica propozitionala. Functia LP-Rezolva


returneaza setul de clauze care se obtine prin combinarea celor doua intrari.

5.8

Algoritmul de rezolutie

Procedurile de inferenta bazate pe rezolutie lucreaza pe principiul reducerii la absurd,


adica pentru a arata ca BC |= , aratam ca (BC ) este nesatisfiabila.
Algoritmul este aratat n figura 5.3. Primul pas este de a converti BC n FNC.
Apoi, pentru fiecare pereche care contine literali complementari se produce o noua clauza,
care este adaugata la setul de clauze, daca nu este deja prezenta. Procesul se repeta pana
cand se ntampla una din:
1. nu exista noi clauze care sa fie adaugata la setul de clauze; n acest caz din BC nu
se poate deduce ;
2. doua clauze produc clauza vida, caz n care din BC se poate deduce .
Clauza vida este echivalenta cu Fals, deoarece o clauza este adevarata daca si numai
daca cel putin un termen al ei este adevarat; nefiind cazul, nseamna ca FNC data de
BC evolueaza la un enunt care contine conjuntie cu Fals, deci valoarea de adevar
este fals.
O aplicare partiala a algoritmului de rezolutie pentru BC = R2 R4 si = P1,2 este
data n figura 5.4. Tot din figura observam ca obtinem, de exemplu, B1,1 P1,2 B1,1
care se reduce la Adevarat P1,2 care se evalueaza la Adevarat. Nu este utila o asemenea
clauza, deoarece este cuprinsa ntro conjunctie, iar conform tabelei de adevar 5.2 avem
ca Adevarat P este echivalent cu P , pentru orice expresie P .

88

CAPITOLUL 5. AGENT
I LOGICI

Figura 5.4: Aplicare partiala a algoritmului pentru BC = R2 R4 si = P1,2 . Se arata


evolutia pana n momentul obtinerii clauzei vide.
Se defineste nchiderea rezolutiva a unei propozitii aflate n FNC ca fiind setul tuturor
clauzelor care se obtin din aplicarea repetata a regulii de rezolutie peste propozitie sau
clauze derivate din ea. Acesta multime este finita, deoarece numarul de combinatii n
disjuntii al unui set finit de simboluri este finit (se aplica si factorizarea).
Completitudinea este data de teorema:
Teorema 4 (Teorema de rezolutie, [1]) Daca un set de clauze este nesatisfiabil, atunci
nchiderea rezolutiv
a a acestor clauze contine clauza vid
a.

5.9

Inl
antuirea nainte si napoi

De multe ori, bazele de cunostinte din lumea reala contin clauze ntro forma particulara numita clauza Horn. O clauza Horn este o disjuntie de literali n care cel mult un
literal are forma pozitiva. De exemplu, A B C.
Restrictia poate parea cam dura, dar:
1. Fiecare clauza Horn poate fi scrisa ca o implicatie a carei premisa este o conjuntie cu
literali pozitivi si drept concluzie un singur literal pozitiv. De exemplu, AB C
este echivalenta cu A B C. Aceasta din urma forma este extrem de naturala.
motiv pentru care clauzele Horn se regasesc atat de usor n bazele de cunostinte.
Ele sunt element fundamental al domeniului numit Programare logica.
Daca o clauza Horn nu contine nici un literal pozitiv (de exemplu: AB), atunci
se poate scrie echivalent A B F als si apoi ca A B F als.
2. Inferentele cu clauze Horn pot fi facute cu doi algoritmi extrem de naturali, nlantuirea
nainte si nlantuirea napoi.
3. Algoritmii de deductie care folosesc clauze Horn este liniar n dimensiunea BC.
Algoritmul de nlantuire nainte LP-InlantuireInainte(BC, q) determina daca un
simbol propozitional q poate fi dedus din baza de cunstinte aflate n forma Horn. Daca

UIREA INAINTE SI INAPOI


5.9. INLANT

89

premisele unei implicatii sunt cunoscute ca adevarate, atunci concluzia implicatiei este
adevarata si este adaugata la baza de cunostinte. Procedeul se repeta pana cand fie se
deduce q, fie nu se mai poate adaunga niciun simbol propozitional nou la BC. Algoritmul
este dat n figura 5.5.

Figura 5.5: Algoritmul de nlantuire nainte.


Cel mai bun mod de ntelegere a algoritmului de nlantuire nainte este pe baza unui
exemplu. Sa presupunem ca avem baza de cunostinte exprimata sub forma de clauze
Horn:

P Q
LM P
BLM
AP L
AB L
A
B

90

CAPITOLUL 5. AGENT
I LOGICI

Acestei baze de cunostinte i se poate asocia un graf de tipul sisau, construit astfel:
nodurile lui sunt simbolurile propozitionale, arcele de graf unite reprezinta operatorul ,
n timp ce arcele neunite corespund disjuntiei. Figura 5.6 reprezinta graful sisau asociat
bazei de cunostinte date, mpreuna cu evolutia cunostintelor. In dreptul fiecarui arc de
jonctiune de arce se afla numarul de premise care mai trebuie mai demonstrate pentru a
se putea deduce concluzia aflata la capatul arcului.
Se poate vedea ca nlantuirea nainte este temeinica, deoarece reprezinta aplicarea
repetata a regulii Modus Ponens. Este de asemenea si un algoritm complet (a se vedea
[1]).
Inlantuirea nainte este un exemplu de rationament condus de date, adica al unui
rationament n care demonstrarea unei concluzii se face pornind dinspre ipoteze. Spre
deosebire de regula rezolutiei, poate fi folosita pentru a genera o lista de concluzii care
pot fi deduse plecand de la o baza de cunostinte.
Inlantuirea napoi porneste dinspre interogare spre baza de cunostinte. Daca se cere
a se demonstra ca q este adevarata, se verifica prima data daca se stie deja valoarea de
adevar a lui q; daca nu se cunoaste, atunci se gasesc toate implicatiile care l produc pe
q. Daca se poate demonstra ca premisele unei astfel de implicatii sunt toate adevarate,
atunci si q este adevarata. Procesul de rationament este unul directionat de scop. O
ilustrare a procesului este data n figura 5.8.
De multe ori, costul unei nlantuiri napoi este mult mai mic decat dimensiunea bazei
de cunostinte (desi o implementare eficienta are costul liniar, n cel mai defavorabil caz).

5.10

Inferent
a propozitional
a efectiv
a

Descriem aici doua variante de algoritmi eficienti pentru inferenta propozitionala


bazate pe verificarea de modele: unul este bazat pe cautare backtracking, altul pleaca
de la cautare prin metoda ascensiunii.
Ambele metode verifica satisifiabilitatea, adica determinarea unui model (valori pentru
variabile) astfel ncat sa se verifice o anumita valoare de adevar. Atat backtracking cat si
cautarea locala rezolva aceste probleme, dar primul este un algoritm determinist, exact,
pe cand al doilea poate sa duca la rezultate incorecte.

5.10.1

Algoritm bazat pe backtracking

Algoritmul, datorat lui Davis si Putnam pleaca de la o propozitie n forma normala


conjunctiva. Precum cautarea backtracking (sectiunea 4.2) si metoda TA-deductie (figura
5.2), este o enumerare a modelelor, dar cu urmatoarele mbunatatiri:

PROPOZIT
EFECTIVA

5.10. INFERENT
A
IONALA

91

2
M

M
2

(a) Aplicarea premisei A.

(b) Numarul de premise care


mai trebuie demonstrate pentru dovedirea lui L devine 1. Se
aplica premisa B.

Q
1

1
P

P
1

2
M

M
1

0
A

0
A

(c) Numarul de premise care

(d) Numarul de premise care

mai trebuie demonstrate pen-

mai trebuie demonstrate pen-

tru dovedirea lui L devine 0, iar

tru dovedirea lui M devine 0.

pentru M scade la 1. Se aplica

Se aplica premisa M .

premisa L.

Figura 5.6: Exemplificarea algoritmului de nlantuire nainte.

92

CAPITOLUL 5. AGENT
I LOGICI
Q

0
M

M
0

0
A

0
A

(a) Numarul de premise care

(b) Numarul de premise care

mai trebuie demonstrate pen-

mai trebuie demonstrate pen-

tru dovedirea lui P devine 0.

tru dovedirea lui Q devine 0, la

Se aplic
a premisa P .

fel ca si pentru dovedirea lui L


folosind conjuntia (dar despre
L se stie deja ca poate fi semonstrat). Astfel, sa demonstrat
concluzia Q.

Figura 5.7: Exemplificarea algoritmului de nlantuire nainte (continuare).

terminare rapida: algoritmul detecteaza daca o propozitie este adevarata sau falsa,
chiar daca modelul este partial completat. O clauza este adevarata daca un literal
este adevarat, chiar daca ceilalti literali nu au valoare de adevar fixata. Similar, o
conjuntie de clauze este falsa daca o clauza este falsa, indiferent de valorile celorlalte
clauze.

Euristica simbolurilor pure: un simbol este pur daca apare cu acelasi semn n fiecare
clauza. Este usor de vazut ca daca o propozitie are un model, atunci acesta are
proprietatea ca simbolul pur are valoarea adevarat.

Strategia clauzei unitate: o clauza unitate este o clauza cu un singur literal. In


contextul algoritmului, nseamna si o clauza unde toti literalii, mai putin unul, au
valoare fals. Strategia clauzei unitate asigneaza valori unor asemenea simboluri
nainte de a se apuca de altele. O astfel de setare de variabila poate de asemenea
sa duca la alte clauze unitate.

PROPOZIT
EFECTIVA

5.10. INFERENT
A
IONALA

93

M
L

(a) Se cere demonstrarea lui


Q.

Simbolurile A si B sunt

cunoscute ca av
and valoarea de

(b) Demonstrarea ca Q

adevarat cere demonstrarea ca


P = adevarat.

adevar adevarat.

M
L

A
(c) Demonstrarea ca P

(d) Demonstrarea ca L este

adevarat cere demonstrarea ca

adevarat cere ca s
a se demon-

L are valoarea adevarat si ca

streze ca A si P sunt adevarate,

M are valoarea adevarat.

sau ca A si B sunt adevarate.

Figura 5.8: Exemplificarea algoritmului de nlantuire napoi.

94

CAPITOLUL 5. AGENT
I LOGICI

(a) Se ajunge la cererea de

(b) Deoarece A si B sunt

a demonstra ca A si B sunt

adevarate, rezulta ca L este

adevarate.

adevarata.

(c) Deoarece L si B sunt

(d) Deoarece L si M B sunt

adevarate, rezulta ca M este

adevarate, rezulta ca P este

adevarata.

adevarata. La pasul urmator


se deduce ca si Q are valoarea
adevarat.

Figura 5.9: Exemplificarea algoritmului de nlantuire napoi (continuare).

5.11. REZUMAT

95

Figura 5.10: Algoritmul Walksat pentru verificarea satisfiabilitatii unui set de clauze.

5.10.2

Algoritm bazat pe c
autare local
a

Algoritmii de cautare locala pot fi aplicati direct problemelor de satisfiabilitate, daca


se da o functie de evaluare adecvata. Se alege de regula numarul de clauze nesatisfacute.
Algoritmii de acest tip schimba la fiecare pas valoarea unei variabile; pentru a iesi din
minimele locale se folosesc diferite variante de aleatoritivitate.
Unul din cei mai simpli si mai eficienti algoritmi rezultati se numeste WalkSat (figura
5.10). La fiecare iteratie algoritmul alege o clauza nesatisfacuta si alege aleator care dintre
variabile sa si schimbe valoarea. Alegerea variabilei se face aleator, fie:
se alege variabila care minimizeaza numarul de clauze nesatisfacute, sau
se alege simbolul aleator
Daca algoritmul returneaza un model, atunci acest model satisface clauzele. Daca nsa
se returneaza esuare, atunci nu se poate sti sigur daca expresia este nesatisfiabila sau ar
trebui ca algoritmul sa fie lasat sa ruleze mai mult (si nici cat de mult).

5.11

Rezumat

Agentii logici beneficiaza de cunoastere exprimata n cele mai variate forme, combinand si recombinand informatia pentru a raspunde unor scopuri diverse. In plus,
cunoasterea si rationarea de asemenea joaca un rol crucial n lucrul cu medii partial
observabile.
Logica booleana este un caz particular de logica, beneficiind de sintaxa si semantica
proprii. Exista algoritmi de inferenta asociati, pornind de la implementarea naiva, trecand
prin tiparele de retionament dezvoltate ca legi ale gandirii si ajungand la algoritmi bazati

96

CAPITOLUL 5. AGENT
I LOGICI

pe proces de rezolu ctie. De asemenea exista forme eficiente ale acestor algoritmi folositi
pentru bazele de cunostinte care se regasesc n practica, si anume nlantuirea nainte si
napoi.
Diferite eursitici implementate pe un schelet de catare de tip backtracking (algoritm
determinit) si algoritmi bazati pe cautare locala (procedeu nedeterminist) duc la algoritmi
care se pot utiliza practic pentru probleme legate de procesul inferential.

5.12

Teste de autoevaluare

5.12.1

Intreb
ari

1. Ce anume trebuie sa posede o logica?


2. Cum functioneaza mecanismul de rezolutie?
3. Pentru ce cazuri se pot folosi algoritmii de nlantuire nainte si napoi?

5.12.2

Teste gril
a

Raspundeti la urmatoarele ntrebari, alegand variantele corecte.


1. Pentru expresia AB, daca A are valoarea Fals, atunci ntreaga expresie are valoarea
de adevar:
(a) adevarat
(b) fals
(c) depinde de valoarea de adevar a lui B
2. Pentru expresia AB, daca A are valoarea Fals, atunci ntreaga expresie are valoarea
de adevar:
(a) adevarat
(b) fals
(c) depinde de valoarea de adevar a lui B

Anexa A
Indicatii si r
aspunsuri pentru testele
de autoevaluare
A.1

Indicatii si r
aspunsuri pentru capitolul 1

A.1.1

R
aspunsuri la ntreb
ari

1. Testul Turing, urmarind reproducerea comportamentului uman, este parte a viziunii


sisteme care actioneaza precum oamenii. Desi atragatoare si cea mai raspandita
reprezentare a inteligentei artificiale, la ora actuala nu mai este prioritate pentru
cercetare.
2. Logica, stiinta care formalizeaza legile gandirii este piatra de temelie a abordarii
agentilor logici.
3. Pasii care trebuie urmati n rezolvarea unei probleme sunt:
(a) formularea problemei
(b) cautarea solutiei - aici se folosesc algoritmi de cautare specifici
(c) executarea - pe baza solutiei ce expliciteaza actiunile ce trebuie executate
4. Starea, referinta catre nodul parinte, actiunea, costul caii, adancimea.

A.1.2

R
aspunsuri pentru testele gril
a

1. b
2. b
3. a
4. a
97


ANEXA A. INDICAT
II SI RASPUNSURI

98

A.2
A.2.1

Indicatii si r
aspunsuri pentru capitolul 2
R
aspunsuri la ntreb
ari

1. Cautarea mai ntai n latime foloseste ca si colectie pentru stocarea nodurilor


care sunt descoperite prin explorare, dar nca neexpandate, o coada. In acest fel de
fiecare data se alege spre expandare cel mai vechi nod ramas n colectia de noduri;
expandarea se face dupa adancimea crescatoare a nodurilor.
2. Cautarea dupa costul uniform alege spre expandare nodul care are costul caii cel
mai mic; colectia de noduri este organizata ca o coada de prioritati; algoritmul este
optim, spre deosebire de cautarea mai ntai n latime.
3. Cautarea mai ntai n adancime foloseste ca si colectie pentru stocarea nodurilor
care sunt descoperite prin explorare, dar nca neexpandate o stiva. In acest fel
de fiecare data se alege spre expandare cel mai recent nod introdus n colectia de
noduri.
4. Complexitatea de memorie a algoritmului de cautare prin parcurgere mai ntai n
adancime este O(bm), deci polinomiala. Pentru strategia de cautare prin parcurgere mai ntai n latime complexitatea este exponentiala: O(bd ), mult mai mare
decat pentru cautarea prin parcurgere mai ntai n adancime.
5. Parcurgerea pe graf evita crearea unor noduri care ar avea drept stare una din starile
ce au fost deja atinse, prin verificarea starii nodului care urmeaza a fi expandat fata
de o coletie de stari. Algoritmul parcurgerii pe graf mai utilizeaza deci o colectie
suplimentara; trebuie luat n considerare sporul de viteza obtinut (sau chiar faptul
ca o cautare n adancime se poate transforma din algoritm incomplet n complet),
precum si efortul necesar pentru mentinere caracterului optim al solutiei gasite.

A.2.2
1. b
2. d
3. b
4. a
5. c
6. c

R
aspunsuri pentru testele gril
a


A.3. INDICAT
II SI RASPUNSURI
PENTRU CAPITOLUL 3

99

7. b
8. a

A.3
A.3.1

Indicatii si r
aspunsuri pentru capitolul 3
R
aspunsuri la ntreb
ari

1. Coada de prioritati; desigur, trebuie ca pentru oricare doua noduri sa fie definita
relatia de < (mai mic) pentru a sti care este ordinea de mentinere a nodurilor
n colectie. Ordinea a doua noduri coincide cu ordinea data de valorile functiei f
pentru nodurile respective.
2. Fie doua noduri Arad corespunzatoare drumului Arad Sibiu Arad. Pentru
primul nod Arad, functia g are valoarea 0 (este chiar nodul de plecare), pe cand
pentru al doilea functia g are ca valoare distanta AradSibiu plus distanta Sibiu
Arad. Functia h are aceeasi valoare pentru ambele noduri, deci n total valoarea
functiei f pe cele doua noduri este diferita.
3. Din cauza ca A* expandeaza fiecare nod care are f (n) < C (echivalent: h(n) <
C g(n)), rezulta ca orice nod expandat pentru functia h2 este sigur expandat si
pentru functia h1
4. Pasul de seletie aduna exact atatia elemente cat existau n populatia initiala. La
ncrucisare copiii si nlocuiesc parintii, iar mutatia nu adauga si nu extrage indivizi
din populatie.

A.3.2
1. b
2. b
3. b
4. b
5. a

R
aspunsuri pentru testele gril
a


ANEXA A. INDICAT
II SI RASPUNSURI

100

A.4

Indicatii si r
aspunsuri pentru capitolul 4

1. O PSC presupune existenta unui set de variabile, cu domenii de valori asociate si


pentru care se dau conditii ce trebuie satisfacute de valorile variabilelor.
2. Cautarea n adancime este adecvata pentru rezolvarea unei PSC deoarece adancimea
solutiei se cunoaste iar cicluri nu pot exista.
3. Strategia valorilor minim ramase ncearca sa produca cat mai devreme o esuare n
procesul de cautare, prin alegerea variabilei pentru care se va considera valoarea ca
fiind variabila pentru care exista cele mai putine variante de alegere de valori.

A.4.1

R
aspunsuri pentru testele gril
a

1. a
2. b

A.5

Indicatii si r
aspunsuri pentru capitolul 5

1. Pentru o logica trebuie sa se defineasca sintaxa (specificare a modului n care


se pot formula enunturi cu sens) si semantica (modalitate prin care se stabileste
semnificatia unui enunt).
2. Se face reducerea a doi termeni care au forme complementare n doua expresii scrise
ca disjunctii.
3. Daca baza de cunostinte este data sub forma de clauze Horn, atunci se pot folosi
algoritmii enuntati.

A.5.1
1. b
2. c.

R
aspunsuri pentru testele gril
a

Bibliografie
[1] Artificial Intelligence. A Modern Approach, Prentice Hall, Stuart Russel, Peter Norvig,
2nd edition, 2003
[2] Principiile inteligentei artificiale, Editura Albastra, D. Dumitrescu, 2004
[3] Pattern Classification, editia a doua, Ed. Wiley-Interscience, Richard O. Duda, Peter
E. Hart, David G. Stork, 2000
[4] Genetic Algorithms + Data Structures = Evolution Programs, Ed. Springer-Verlag,
Zbigniew Michalewicz, 1998
[5] Machine Learning, Ed. McGrawHill, Tom Mitchell, 1997
[6] Neural Networks. A comprehensive foundation, Ed. Prentice Hall, Simon Haykin, 1999

101

S-ar putea să vă placă și