You are on page 1of 139

Inteligenta articiala note de curs

Conf. dr. Lucian Sasu

20142015
Universitatea Transilvania din Brasov
Facultatea de Matematica si Informatica
Versiunea: 2015.104
2
Cuprins

1 Definitii. Rezolvarea problemelor prin cautare 7


1.1 Denitii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.1.1 Sisteme care actioneaza precum oamenii . . . . . . . . 7
1.1.2 Sisteme care gandesc ca oamenii . . . . . . . . . . . . . 8
1.1.3 Sisteme care gandesc rational . . . . . . . . . . . . . . 9
1.1.4 Sisteme care actioneaza rational . . . . . . . . . . . . . 9
1.2 Fundamentele inteligentei articiale . . . . . . . . . . . . . . . 10
1.3 Starea actuala . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.4 Rezolvarea de probleme de catre agenti . . . . . . . . . . . . . 11
1.5 Formularea unei probleme de cautare . . . . . . . . . . . . . . 12
1.6 Exemple de probleme de cautare . . . . . . . . . . . . . . . . . 14
1.6.1 Probleme de jucarie . . . . . . . . . . . . . . . . . . . 14
1.6.2 Probleme din lumea reala . . . . . . . . . . . . . . . 15
1.7 Cautarea solutiei . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.8 Masurarea performantelor algoritmilor de cautare . . . . . . . 21

2 Strategii de cautare neinformata 23


2.1 Cautarea mai ntai n latime . . . . . . . . . . . . . . . . . . 23
2.2 Cautarea dupa costul uniform . . . . . . . . . . . . . . . . . . 26
2.3 Cautarea mai ntai n adancime . . . . . . . . . . . . . . . . 27
2.4 Cautarea cu adancime limitata . . . . . . . . . . . . . . . . . 30
2.5 Cautarea mai ntai n adancime cu adancire iterativa . . . . 31
2.6 Cautare bidirectionala . . . . . . . . . . . . . . . . . . . . . . 34

3
4 CUPRINS

2.7 Problema starilor duplicat . . . . . . . . . . . . . . . . . . . . 36

3 Cautare informata 39
3.1 Strategii de cautare informata . . . . . . . . . . . . . . . . . . 39
3.2 Cautarea euristica lacoma . . . . . . . . . . . . . . . . . . . . 40
3.3 Algoritmul A* . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
3.4 Variatii ale lui A* . . . . . . . . . . . . . . . . . . . . . . . . . 50
3.5 Functii euristice . . . . . . . . . . . . . . . . . . . . . . . . . . 51
3.6 Algoritmi de cautare locala . . . . . . . . . . . . . . . . . . . . 54
3.6.1 Cautarea prin metoda ascensiunii . . . . . . . . . . . . 55
3.6.2 Recoacerea simulata . . . . . . . . . . . . . . . . . . . 60
3.6.3 Algoritmi genetici . . . . . . . . . . . . . . . . . . . . . 62
3.6.4 Cautare locala n spatii continue . . . . . . . . . . . . . 65

4 Probleme de satisfacere a constrangerilor 67


4.1 Probleme de satisfacere a constrangerilor . . . . . . . . . . . . 67
4.2 Cautare backtracking pentru PSC . . . . . . . . . . . . . . . . 70
4.2.1 Ordonarea valorilor si a variabilelor . . . . . . . . . . . 73
4.2.2 Propagarea informatiilor prin constrangeri . . . . . . . 74
4.3 Cautare locala pentru PSC . . . . . . . . . . . . . . . . . . . . 78
4.4 Structura problemei . . . . . . . . . . . . . . . . . . . . . . . . 79

5 Agenti logici 83
5.1 Motivatie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
5.2 Agenti bazati pe cunoastere . . . . . . . . . . . . . . . . . . . 84
5.3 Jocul lumea monstrului . . . . . . . . . . . . . . . . . . . . . 85
5.4 Logica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
5.5 Logica propozitionala . . . . . . . . . . . . . . . . . . . . . . . 88
5.5.1 Sintaxa . . . . . . . . . . . . . . . . . . . . . . . . . . 88
5.5.2 Semantica . . . . . . . . . . . . . . . . . . . . . . . . . 90
5.5.3 Exemplu: lumea monstrului n logica propozitionala . . 91
5.5.4 Inferenta n logica propozitionala . . . . . . . . . . . . 91
CUPRINS 5

5.5.5 Echivalenta, validitate si satisabilitate . . . . . . . . . 93


5.6 Tipare de rationament n logica propozitionala . . . . . . . . . 94
5.6.1 Rezolutia . . . . . . . . . . . . . . . . . . . . . . . . . 95
5.7 Forma normala conjunctiva . . . . . . . . . . . . . . . . . . . 97
5.8 Algoritmul de rezolutie . . . . . . . . . . . . . . . . . . . . . . 98
5.9 Inlantuirea nainte si napoi . . . . . . . . . . . . . . . . . . . 101
5.10 Inferenta propozitionala efectiva . . . . . . . . . . . . . . . . . 106
5.10.1 Algoritm bazat pe backtracking . . . . . . . . . . . . . 106
5.10.2 Algoritm bazat pe cautare locala . . . . . . . . . . . . 109

6 Logica de ordinul ntai 111


6.1 Introducere . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
6.2 Sintaxa si semantica logicii de ordinul ntai . . . . . . . . . . . 112
6.2.1 Modele pentru logica de ordinul ntai . . . . . . . . . . 112
6.2.2 Simboluri si interpretari . . . . . . . . . . . . . . . . . 113
6.2.3 Termeni . . . . . . . . . . . . . . . . . . . . . . . . . . 115
6.2.4 Propozitii atomice . . . . . . . . . . . . . . . . . . . . 115
6.2.5 Enunturi complexe . . . . . . . . . . . . . . . . . . . . 115
6.2.6 Cuanticatori . . . . . . . . . . . . . . . . . . . . . . . 116
6.3 Procesul de management al cunostintelor . . . . . . . . . . . . 117
6.4 Inferenta propozitionala comparata cu inferenta de ordinul ntai118
6.4.1 Reguli de inferenta pentru cuanticatori . . . . . . . . 118
6.4.2 Reducerea la inferenta propozitionala . . . . . . . . . . 119

7 Sisteme fuzzy 123


7.1 Prezentare generala . . . . . . . . . . . . . . . . . . . . . . . . 123
7.2 Teoria multimilor fuzzy . . . . . . . . . . . . . . . . . . . . . . 124
7.3 Operatii cu multimi fuzzy . . . . . . . . . . . . . . . . . . . . 127
7.3.1 Egalitatea multimilor fuzzy . . . . . . . . . . . . . . . 128
7.3.2 Incluziunea multimilor fuzzy . . . . . . . . . . . . . . . 128
7.3.3 Complementara unei multimi fuzzy . . . . . . . . . . . 129
7.3.4 Intersectia a doua multimi fuzzy . . . . . . . . . . . . . 129
6 CUPRINS

7.3.5 Reuniunea a doua multimi fuzzy . . . . . . . . . . . . . 130


7.3.6 Operatori de compensare . . . . . . . . . . . . . . . . . 130
7.4 Reguli fuzzy . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
7.5 Masuri ale gradului de nuantare . . . . . . . . . . . . . . . . . 136
Bibliograe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
Capitolul 1

Definitii. Rezolvarea problemelor


prin cautare

1.1 Definitii
Dam cateva denitii care au fost formulate de-a lungul timpului n diverse
lucrari, precum si comentarii asupra lor. Exista patru tipuri de abordari pen-
tru sistemele cu inteligenta articiala: sisteme care gandesc precum oamenii,
sisteme care gandesc rational, sisteme care actioneaza precum oamenii, sis-
teme 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.

1.1.1 Sisteme care actioneaza precum oamenii

Definitia 1 Arta crearii de masini care ndeplinesc functii ce necesita inteligenta


atunci cand sunt ndeplinite de catre oameni.

Definitia 2 Studiul asupra cum se poate ca un calculator sa faca lucruri la


care, pentru moment, oamenii sunt mai buni.

7
8CAPITOLUL 1. DEFINITII. REZOLVAREA PROBLEMELOR PRIN CAUTARE

Testul Turing, propus de catre Alan Turing n 1950 a fost conceput pentru
a da o denitie 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 articial) 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 aa

3. rationamentul automat - pentru a putea deduce noi concluzii pe baza


informatiilor acumulate si pentru a raspunde ntrebarilor

4. nvatarea automata - pentru a se adapta noilor conditii, pentru a de-


tecta modele sau sabloane (pattern-uri).

Testul de mai sus nu presupune un contact direct ntre om si sistemul


articial. Daca acest lucru este dorit, atunci mai e nevoie de:

1. vedere articiala (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 o functionalitate.

1.1.2 Sisteme care gandesc ca oamenii


Definitia 3 Efortul provocator de a face calculatoarele sa gandeasca [. . . ]
masini cu minte, n sens literal.

Definitia 4 [Automatizarea] activitatilor pe care le asociem cu gandirea umana,


activitati precum luarea deciziilor, rezolvarea problemelor, nvatarea[. . . ]
1.1. DEFINITII 9

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.1.3 Sisteme care gandesc rational


Definitia 5 Studiul facultatilor mentale pe baza utilizarii modelelor compu-
tationale.

Definitia 6 Studiul calculelor care fac posibile perceptia, rationamentul, ac-


tionarea.

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
prohibitive chiar pentru probleme de dimensiuni modeste - a se vedea de
exemplu algoritmii si discutiile capitolul 2.

1.1.4 Sisteme care actioneaza rational


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

Definitia 8 IA [. . . ] se preocupa de comportamentul inteligent n artifacte.

Pe aceasta directie se introduce de obicei conceptul de agent - un sis-


tem articial, care spre deosebire de programele obisnuite actioneaza auto-
nom, 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 in-
certitudinea, cel mai bun rezultat mediu.
10CAPITOLUL 1. DEFINITII. REZOLVAREA PROBLEMELOR PRIN CAUTARE

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. Filozoe - intervine cu ntrebari si discutii despre:

Pot 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:

Care sunt regulile formale pentru a extrage concluzii valide?

Ce poate 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?


1.3. STAREA ACTUALA 11

6. Ingineria calculatoarelor - cum putem crea un calculator ecient?

7. Lingvistica - cum este legat limbajul de gandire?

1.3 Starea actuala


Unde este de folos IA? O lista neexhaustiva este data mai jos:

planicare 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 cam-
pionul 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 pro-


teze.

ntelegerea limbajului si rezolvarea problemelor - rezolvare de cuvinte


ncrucisate.

1.4 Rezolvarea de probleme de catre agenti


Sa presupunem ca un agent inteligent are de rezolvat o problema: cum
anume se poate ajunge din Arad n Bucuresti (gura 1.4 este o harta simpli-
cata 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 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.
12CAPITOLUL 1. DEFINITII. REZOLVAREA PROBLEMELOR PRIN CAUTARE

Figura 1.1: O harta simplicata a Romaniei[1]

Pasii care trebuie urmati n rezolvarea unei probleme de cautare sunt:

1. formularea problemei - n sectiunea 1.5 se arata modul n care poate


exprimata o problema de cautare;

2. cautarea solutiei - aici se folosesc algoritmi decautare specici, avand


ca rezultat returnarea unei singure solutii;

3. executarea - pe baza solutiei ce expliciteaza actiunile ce trebuie execu-


tate 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 de cautare


O problema de cautare poate abstractizata precum mai jos, prin inter-
mediul a patru atribute.

1. Starea initiala - starea din care se porneste cautarea; de exemplu, pen-


tru problema drumului de la Arad la Bucuresti starea initiala este
In(Arad).
1.5. FORMULAREA UNEI PROBLEME DE CAUTARE 13

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 unctiesuccesor(x) = {(actiune1 , stare1 ), . . . , (actiunen , staren )}

unde actiunei este o actiune ce se poate aplica n starea x, iar starei


este starea n care se ajunge din x aplicand actiunei .

Pentru problema exemplicata 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 rezolvata. Vericarea 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 vericarea unor proprietati pe care trebuie sa le ndeplineasca


starea pentru a considerata stare scop; de exemplu, pentru jocul
de sah stare scop este aceea n care regele advers este atacat si nu
se mai poate misca fara a ajunge tot ntro pozitie atacata.

4. O functie de cost a caii care asigneaza o valoare numerica ecarei cai.


Functia serveste ca masura a performantei succesiunii de actiuni (a
14CAPITOLUL 1. DEFINITII. REZOLVAREA PROBLEMELOR PRIN CAUTARE

solutiei); vom presupune ca costul unei cai este dat de suma costurilor
actiunilor continute, iar costul unei actiuni este o cantitate nenegativa.

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 cautare

1.6.1 Probleme de jucarie


Sunt folosite n special pentru demonstrarea conceptelor, avand scop di-
dactic.

1. Problema puzzle-ului: se da o matrice de n linii si tot atatea coloane;


n ecare celula se aa 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 exemplicare n gura 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 conguratie nala, de exemplu n care
numerele sunt ordonate (citirea se face linie cu linie), iar spatiul este
pe ultima pozitie.

(a) Starea (b) Starea


initiala 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 vericarea
1.6. EXEMPLE DE PROBLEME DE CAUTARE 15

faptului ca o stare coincide cu cea aleasa drept nala; costul caii este
egal cu numarul de mutari efectuate, deoarece se poate considera ca
ecare 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

Tabela 1.1: Problema dispunerii reginelor pe o tabla de 5x5

,
,
,
,
,

goala; functia succesor este adauga o regina 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 reala


1. Problema determinarii rutei: acest tip de problema apare ntr-o va-
rietate de aplicatii, precum crearea unui itinerar bazat pe zboruri cu
avionul, planicarea operatiilor militare, rutare n retele de calculatoare
etc. Complexitatea acestor probleme provine din multitudinea de fac-
tori ce trebuie luati n considerare. De exemplu, pentru problema gasirii
unui itinerar pe cale aeriana, specicatiile ar putea :

ecare stare este reprezentata de o locatie (un aeroport) si mo-


mentul curent;

starea initiala: locul si momentul plecarii;


16CAPITOLUL 1. DEFINITII. REZOLVAREA PROBLEMELOR PRIN CAUTARE

functie succesor: dependenta de lista zborurilor care sunt progra-


mate dintr-o anumita locatie, la un moment ulterior;

testul scop: se poate ajunge la destinatie ntr-o perioada de timp


specicata/pana la un moment maxim specicat?

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 planicator va considera mai multe variante, va veni cu alter-
native 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
ecient, eventual cu sacricarea 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 e minimizate lungimile circuitelor de transfer etc.
Problemele de cautare sunt 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 structu-
rare, trebuie sa rezolve probleme care nu sunt simple nici pentru un om:
1
VLSI: Very Large Scale Integration, crearea de circuite integrate prin combinarea de
tranzistoare.
1.7. CAUTAREA SOLUTIEI 17

raspunsuri la ntrebari, gasirea preturilor cele mai convenabile, gasirea


informatiilor nrudite cu ceva specicat etc.

1.7 Cautarea 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 9altfel zis, admitem starile duplicat); evitarea starilor
duplicat 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, con-
struim 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 cu-


rent

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;
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 descopera.
18CAPITOLUL 1. DEFINITII. REZOLVAREA PROBLEMELOR PRIN CAUTARE

Adancime: numarul de pasi de-a lungul caii de la nodul initial

Nodul initial corespunde starii initiale, parintele si actiunea aferente aces-


tui nod sunt codicate convenabil (null, valoare neaplicabila etc.). Compo-
nenta Costul-caii poate n unele cazuri omisa, deoarece nu toate proble-
mele 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 gura 1.4. Mai trebuie sa mentionam ca nu
trebuie facuta confuzie ntre noduri si stari; n timp ce multimea starilor poate
nita (de exemplu multimea oraselor din Romania), numarul nodurilor
poate innit, daca se permite generarea de cicluri de forma: Arad Sibiu
Arad, Arad Sibiu Arad Sibiu Arad etc.
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 prezentati n capitolul 2.
Forma generala a algoritmului de cautare este data n gura 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 ele-
ment conform politicii de acces specice tipului de date corespunzator
lui colectieNoduri;

2. Notatia X[Y] reprezinta valoarea atributului (proprietatii) X pentru


entitatea Y

3. Parametrul problema reprezinta o codicare 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 e expandat iar iteratiile ante-
rioare nu au descoperit starea scop printre starile explorate. Trebuie
1.7. CAUTAREA SOLUTIEI 19

Figura 1.3: Algoritmul general de cautare.


20CAPITOLUL 1. DEFINITII. REZOLVAREA PROBLEMELOR PRIN CAUTARE

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

(b) Dupa expandarea nodului initial

(c) Dupa 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 obtinute prin expandare, la pasii urmatori sunt cu marcate
cu linie ntrerupta. Nu se face evitarea starilor duplicat.
1.8. MASURAREA PERFORMANTELOR ALGORITMILOR DE CAUTARE21

nsa spus ca exista situatii si strategii de algoritmi de cautare care pot


rula teoretic la innit, sau din punct de vedere practic duc la epuizarea
memoriei disponibile.

1.8 Masurarea performantelor algoritmilor de


cautare
Pentru algoritmii de cautare care urmeaza a discutati evaluarea se va
face prin prisma urmatoarelor patru atribute:

Completitudinea un algoritm de cautare este complet daca se garan-


teaza 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 de memorie

Complexitatea n timp este masurata relativ la numarul de noduri ge-


nerate n decursul explorarii, iar complexitatea de memorie este numarul
maxim de noduri ce trebuie sa e memorat pana la rezolvare.
Cele doua complexitati se cuantica prin intermediul notatiei O. Pre-
zentam 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 prezentati complexitatea este


data n termeni de:

b, factor de ramicare reprezentand numarul maxim de succesori ai


oricarui nod
22CAPITOLUL 1. DEFINITII. REZOLVAREA PROBLEMELOR PRIN CAUTARE

d, adancimea celui mai putin adanc nod solutie (a carui stare este stare
scop)

m, lungimea maxima a oricarei cai n arborele de cautare.


Capitolul 2

Strategii de cautare neinformata

2.1 Cautarea mai ntai n latime


Cautarea mai ntai n latime 1 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 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, toate 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 gura 2.1, pentru cazul n care
arborele de cautare este binar.
Se poate vedea faptul ca daca plecand de la nodul initial se ajunge la nodul
nal 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

23
24 CAPITOLUL 2. STRATEGII DE CAUTARE NEINFORMATA

A A

B C B C

D E F G D E F G

(a) Expandarea nodului radacina. (b) Dupa expandarea nodului


radacina; acesta dispare din coada
colectieNoduri, n schimb sunt
adaugate nodurile B si C.

A A

B C B C

D E F G D E F G

(c) Dupa expandarea nodului B; acesta (d) Dupa 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 obtinute
prin expandare la pasii urmatori, nodurile n dreptul carora este desenata
o sageata urmeaza a expandate, iar celelate sunt noduri aate n coada
colectieNoduri.
2.1. CAUTAREA MAI INTAI IN LATIME 25

Algoritmul este optimal doar daca functia de cost a caii este nedes-
crescatoare2 fata de numarul de arce (adancimea nodului). Acest lucru se
ntampla, de exemplu, daca costul ecarei 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 gura 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 ecare 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 comple-
xitatilor. Consideram un caz n care ecare stare are exact b succesori. Nodul
radacina genereaza b noduri copil, ecare 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 aa 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, ecare din cele b 1 noduri de pe nivelul nodului
solutie (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
numarul de noduri generate este:
bd+1 1
1 + b + b2 + . . . + bd + (bd+1 b) = + (bd+1 b) O(bd+1 ).
b1
Fiecare nod generat trebuie sa e pastrat n memorie, pentru a putea
folosit la reconstituirea drumului - nu avem de unde sa stim care din acestia
2
O functie f : R R este nedescrescatoare daca x, y R, x < y avem ca f (x) f (y).
26 CAPITOLUL 2. STRATEGII DE CAUTARE NEINFORMATA

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 nala;
alfel zis, complexitatea n spatiu este tot O(bd+1 ).
Complexitatile nu sunt ncurajatoare, deoarece pentru un factor de rami-
care 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 ecare nod). Ca atare, acest tip
de explorare nu se foloseste n practica decat pentru probleme de dimensiuni
mici.

2.2 Cautarea dupa 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 nedes-
crescator fata de adancimea nodului, strategia de alegere poate sa rateze
gasirea caii optime. Se poate nsa corecta acest aspect daca la ecare 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 ca o coada de prioritati (colectie sortata dupa costul caii ecarui
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).
Astfel, cautarea dupa costul uniform nu favorizeaza caile cu numar minim
de arce, ci pe cel cu cost minim. Daca costul ecarui pas (actiune) este cel
putin egal cu o constanta > 0, atunci cautarea este atat completa cat si
optima.
Complexitatea n timp si spatiu de memorie nu mai poate caracterizata
de adancimea nodului; n schimb este implicatcostul solutiei optime, C .
C
Complexitatea de timp si spatiu este O b1+[ ] care este deseori mult mai
 
mare decat O bd+1 .
2.3. CAUTAREA MAI INTAI IN ADANCIME 27

2.3 Cautarea mai ntai n adancime

Cautarea mai ntai n adancime 3 va alege pentru expandare cel mai


adanc nod din arbore care nu a fost expandat. Pentru aceasta, colectia de
noduri neexpandate din algoritmul Cautare-in-arbore se va implementa ca
o stiva. Pentru cazul unui arbore binar ordinea de parcurgere este exempli-
cata n gura 2.3.
Necesarul de memorie pentru acest algoritm este modest: daca factorul
de ramicare este b si adancimea maxima n arborele de cautare e m atunci
numarul de noduri ce trebuie retinute n colectieNoduri este 1 + b m, deci
complexitatea de memorie 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 obtine prin expandare toate nodurile copil pentru
nodul extras din stiva, ci doar un nod copil; daca explorarea pe acest copil
este nefructuoasa, atunci se ncearca al doilea copil etc. Avantajul vine din
faptul ca stiva nu se ncarca decat cu nodurile care realmente 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 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 no-
durilor este neinspirata; de exemplu, strategia de cautare poate sa duca la
descoperirea unui nod scop de cost suboptimal, iar daca nscrierea n stiva a
nodurilor copil obtinute la expandare sar face dupa alta ordine, atunci s-ar
putea ca primul nod solutie descoperit sa e de cost mai bun sau chiar optim.
Mai mult chiar, poate sa caute la nesfarsit n arbore, daca nu se face evi-
tarea starilor duplicat. Pentru problema oraselor, este posibila urmatoarea
parcurgere: Arad, apoi Sibiu, apoi Arad, iar Sibiu etc. Putem deci spune ca

3
In limba engleza: depth first search.
28 CAPITOLUL 2. STRATEGII DE CAUTARE NEINFORMATA

A A

B C B C

D E F G D E F G

H I J K L M N O H I J K L M N O

(a) Expandarea nodului radacina. (b) Dupa expandarea nodului


radacina; acesta dispare din stiva
colectieNoduri, n schimb sunt
adaugate nodurile C si apoi B (ordinea
aceasta poate sa difere si atunci
desenele ce urmeaza difera).

A A

B C B C

D E F G D E F G

H I J K L M N O H I J K L M N O

(c) Dupa expandarea nodului B, pre- (d) Dupa expandarea nodului D; acesta
luat din varful stivei; acesta dispare din dispare din stiva, dar se adauga la varful
stiva, dar se adauga la varful ei nodu- ei nodurile I si apoi H. Urmatoarea
rile E si apoi D (a se vedea remarca des- operatie este expandarea (si deci elimi-
pre alta ordine de adaugare la stiva din nare din stiva) a nodului H, ceea ce
subfigura anterioara). nu duce la adaugarea de alte noduri n
colectieNoduri.

A A

B C B C

D E F G D E F G

H I J K L M N O H I J K L M N O

(e) Se extrage varful stivei, adica no- (f) Dupa expandarea nodului I; acesta
dul H si se ncearca expandarea lui; dispare din stiva si nu se adauga nici
deoarece el nu are descendenti, stiva un alt nod la stiva.
colectieNoduri ramane nemodificata

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


de cautare mai ntai n adancime. Nodurile colorate cu negru sau gri sunt
eliminate din stiva colectieNoduri, cele marcate prin linie punctata vor
obtinute prin expandare la pasii urmatori, nodurile n dreptul carora este
desenata o sageata urmeaza a expandate, iar celelalte sunt noduri aate n
stiva colectieNoduri.
2.3. CAUTAREA MAI INTAI IN ADANCIME 29

A A

B C B C

D E F G D E F G

H I J K L M N O H I J K L M N O

(a) Dupa expandarea nodului E; acesta (b) Dupa 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 stiva.

A A

B C B C

D E F G D E F G

H I J K L M N O H I J K L M N O

(c) Dupa expandarea nodului K; acesta (d) Dupa expandarea nodului C; acesta
dispare din stiva colectieNoduri si dispare din stiva, dar se adauga la
deoarece nu are descendenti nu pro- varful ei nodurile G si apoi F.
duce noi elemente n stiva.

A A

B C B C

D E F G D E F G

H I J K L M N O H I J K L M N O

(e) Se extrage varful stivei, adica no- (f) Expandarile frunzelor M si L re-
dul F si se expandeaza, adaugand-se la duc numarul de elemente din stiva
stiva nodurile M si apoi L. cu cate o unitate, urmeaza expanda-
rea nodului G (deci scoaterea lui din
stiva colectieNoduri) si introduce-
rea frunzelor O si N. Dupa expandarea
acestor frunze (deci eliminarea lor din
stiva) colectieNoduri devine vida si
cautarea se opreste.

Figura 2.4: Parcurgerea mai ntai n adancime - continuare.


30 CAPITOLUL 2. STRATEGII DE CAUTARE NEINFORMATA

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
e mult mai mare decat d, adancimea celui mai putin adanc nod scop, deci
complexitatea de timp poate sa e mai mare decat cea pentru cautarea mai
ntai n latime sau chiar si cea a costului uniform. Ramane nsa de remarcat
complexitatea de memorie ceruta: liniara sau chiar constanta.

2.4 Cautarea cu adancime limitata


Cautarea mai ntai n adancime din sectiunea 2.3 are un mare atu:
foloseste putina memorie. Are nsa si un dezavantaj major, posibilitatea
de a cauta la innit n arbore, datorita starilor duplicat. Acest dezavantaj
este eliminat prin urmatoarea strategie: 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 permis gasirea nodului scop (si deci problema sar putut
rezolva). Functia de cautare semnaleaza acest lucru.
Algoritmul cautarii cu adancime limitata5 este dat n gura 2.4. Functiile
solutie, expandeaza sunt aceleasi ca la algoritmul de cautare n arbore
(sectiunea 1.3, pagina 19).
Algoritmul nu este complet daca l < d; pentru l d el este complet, dar
nu neaparat optim. Complexitatea n timp este O(bl ), iar cea n spatiu O(bl)
(mostenite amandoua de la parcurgerea mai ntai n adancime). Ceea ce
este nsa de remarcat e ca nu mai avem risc de cautare innita datorata
4
In limba engleza: cutoff.
5
In limba engleza: depthlimited search.
2.5. CAUTAREA MAI INTAI IN ADANCIME CU ADANCIRE ITERATIVA31

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.
Se pune ntrebarea: de unde stim care este adancimea maxima la care
vom permite cautarea? Pentru destul de multe probleme, din nsusi enuntul
lor se poate deduce care este o valoare rezonabila pentru limita maxima.
De exemplu, pentru problema AradBucuresti putem observa ca numarul 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 actiuni, deci adancimea poate si mai mult
redusa.

2.5 Cautarea mai ntai n adancime cu adancire


iterativa
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.
32 CAPITOLUL 2. STRATEGII DE CAUTARE NEINFORMATA

Figura 2.5: Algoritmul cautarii cu adancime limitata.


2.5. CAUTAREA MAI INTAI IN ADANCIME CU ADANCIRE ITERATIVA33
(a) Evolutia arborelui de cautare pentru l = 0

(b) Evolutia arborelui de cautare pentru l = 1; se reconstruieste radacina si apoi se


obtin cele doua noduri copil B si C.

(c) Evolutia arborelui de cautare pentru l = 2; se reconstruiesc radacina, 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 n cazul algoritmului de cautare mai ntai n adancime cu adancire
iterativa, pentru diferite valori ale lui l.
34 CAPITOLUL 2. STRATEGII DE CAUTARE NEINFORMATA

Strategia algoritmului de cautare mai ntai n adancime cu adancire ite-


rativa 6 ar putea parea neecienta, 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 si deci numarul de noduri regenerate este mai mic. Putem cal-
cula 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
e chiar toate generate), cele de la nivelul d 1 sunt generate de doua ori
etc., cele de la nivelul 0 (adica radacina) de d + 1 ori; numarul de noduri N
este dat ca:

N bd 1 + bd1 2 + . . . + b1 d + b0 (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 optimal
daca costul ecarui pas este o constanta, are cerinte de memorie modeste si
complexitate de timp mai mica decat cea a algoritmilor anterior prezentati.
In practica algoritmul din aceasta sectiune este algoritmul preferat de cautare
atunci cand spatiul de cautare este mare iar adancimea nodului solutie este
necunoscuta.

2.6 Cautare bidirectionala


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 gura 2.7.
6
In limba engleza: iterative deepening depth-first search.
2.6. CAUTARE BIDIRECTIONALA 35

Start Goal

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.

La ecare expandare de nod se verica daca starea acestuia nu a fost


cumva atinsa de cautarea din sens contrar. Daca da, atunci solutia (secventa
de actiuni care duce dinspre nodul de start spre cel de scop) se reface pe baza
drumurilor construite spre nodul comun. Determinarea faptului ca o stare se
gaseste ntr-o coletie de stari vizitate se face n timp mediu constant7 , daca
se foloseste o tabela de dispersie. Dar tocmai faptul ca necesarul de memorie
este O(bd/2 ) face acest algoritm sa nu poata aplicat n practica. In rest
nsa, algoritmul este complet si optimal daca ecare 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 folosit doar n cazul n care se
poate calcula usor functia de predecesor, opusul functiei succesor care face
parte din denitia problemei - lucru care nu se ntampla la toate problemele.
Inca un aspect merita mentionat - daca exista mai multe noduri scop care pot
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 originare. 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 stare scop.
7
Daca functia de dispersie este bine aleasa.
36 CAPITOLUL 2. STRATEGII DE CAUTARE NEINFORMATA

2.7 Problema starilor duplicat


Algoritmul general de cautare nu evita explorarea n mod repetat a ace-
lorasi stari (deci obtinerea de noduri diferite, dar pentru care starile cores-
punzatoare 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 inecienta.
Un exemplu de explozie a numarului de noduri datorate starilor duplicat
este dat n gura 2.8. Din ecare 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
2d2 +2d+1 noduri. Pentru d = 20, diferenta este uriasa: 1.099.511.627.776
( 1015 ) fata de 841 de noduri!

Figura 2.8: Caz patologic pentru care neevitarea starilor duplicat duce la o
cantitate exponentiala a numarului de noduri n arborele de catare, datorita
viitarii repetate a acelorasi stari.

Detectarea se face prin cautarea starii nodului ce urmeaza a expandat


n lista starilor care au fost deja expandate. Daca un algoritm evita starile
duplicat, atunci poate vazut ca o cautare n graf. Algoritmul este dat n
gura 2.9 si foloseste o multime a starilor deja expandate numita stariVechi.
Algoritmul nou obtinut se numeste Cautare-in-graf.
Algoritmul Cautare-in-graf nu pune probleme n privinta completitu-
dinii; complexitatea n timp si spatiu sunt proportionale cu numarul starilor
distincte, iar asta poate sa e mult mai mic decat O(bd ). Remarcam nsa ca
pentru cautarea mai ntai n adancime sau cei derivati din aceasta strate-
2.7. PROBLEMA STARILOR DUPLICAT 37

Figura 2.9: Algoritmul de cautare in graf.

gie, datorita mentinerii acestei liste de noduri vechi, necesarul de memorie


nu mai este liniar; se evita n schimb ciclarea.
In ceea ce priveste optimalitatea, lucrurile stau astfel: algoritmul va eli-
mina noua cale descoperita catre o stare care a mai fost ntalnita nainte.
Deoarece prima cale descoperita s-ar putea sa e 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 ce-
lelalte metode ar trebui ca ajungerea la o stare care a mai fost parcursa sa
declanseze o vericare 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.
38 CAPITOLUL 2. STRATEGII DE CAUTARE NEINFORMATA
Capitolul 3

Cautare informata

3.1 Strategii de cautare informata


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 benec
asupra complexitatii de timp si de spatiu de memorie folosit. 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, cele
estimate a mai promitatoare.
In cazul problemelor de cautare formalizate n capitolul 1, vom consi-
dera pentru ecare nod n capacitatea estimata a lui de a duce spre un nod
scop. Concret, se foloseste o functie de evaluare f () si pentru ecare nod
n se calculeaza f (n). Nodul cu cea mai mica valoare a acestei functii este
ales pentru expandare. Ca atare, algoritmul de cautare pe arbore poate
folosit cu particularizarea: lista de noduri colectieNoduri este o coada de
prioritati.
Exista o clasa ntreaga de algoritmi bazati pe aceasta idee. O componenta
comuna a acestora este o functie euristica notata traditional cu h(). h(n)
reprezinta costul estimat al celei mai ieftine cai care duce de la nodul curent

39
40 CAPITOLUL 3. CAUTARE INFORMATA

n la un nod scop1 .
In mod resc, 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 ind 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 Cautarea euristica lacoma


Cautarea euristica lacoma2 alege pentru expandare nodul care are va-
loarea calculata pentru functia h cea mai mica. Altfel spus, alegem ca
f (n) = h(n), pentru orice nod n.
Pentru problema drumului minim de la Arad la Bucuresti pasii sunt dati
n gura 3.2. Distantele folosite drept euristica sunt scrise n gura 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 aate 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 explorarea prin cautarea dupa valoarea minima a lui h
poate duce la cautare cu numar innit 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
innit daca nu se evita starile repetate; daca se evita, atunci se descopera
1
Daca problema este de minimizare, atunci h(n) este costul estimat al celei mai scurte
cai; daca este problema de maxim, atunci este costul estimat al celei mai scumpe cai. In
cele ce urmeaza vom lucra cu probleme de cost minim.
2
In limba engleza: greedy best-first search.
3.2. CAUTAREA EURISTICA LACOMA 41

calea optima: Iasi, Vaslui, Urziceni, Bucuresti, Fagaras.


Caracteristicile acestui algoritm sunt: incomplet deoarece poate intra
ntrun ciclu innit, neoptim a se vedea exemplul dat mai sus, complexitate
de timp si memorie O(bm ), unde m este adancimea maxima a unui drum n
arborele de cautare. In practica nsa, o euristica (functie h) bine aleasa poate
sa duca la viteza crescuta si memorie necesara rezonabila, iar costul solutiei
determinate, chiar daca nu e optim, este deseori foarte apropiat de el.
42
Straightline distance
Oradea to Bucharest
71
Neamt Arad 366
87 Bucharest 0
Zerind 151 Craiova
75 160
Iasi Dobreta 242
Arad 140 Eforie 161
92 Fagaras 178
Sibiu 99 Fagaras Giurgiu 77
118 Hirsova
Vaslui 151

CAPITOLUL 3. CAUTARE INFORMATA


80
Iasi 226
Rimnicu Vilcea Lugoj
Timisoara 244
142 Mehadia 241
111 211 Neamt 234
Lugoj 97 Pitesti
Oradea 380
70 98 Pitesti 98
146 85 Hirsova
Mehadia 101 Urziceni Rimnicu Vilcea 193
75 138 86 Sibiu 253
Bucharest Timisoara 329
120
Dobreta
90 Urziceni 80
Craiova Eforie Vaslui 199
Giurgiu Zerind 374

Figura 3.1: Harta Romaniei si distantele pe drum drept dintre orase si Bucuresti.
3.2. CAUTAREA EURISTICA LACOMA
(a) Nodul eles pentru expandare este unic, (b) Dupa expandarea nodului radacina; nodul ce urmeaza a fi
radacina expandat este Sibiu, avand costul f (= h) cel mai mic.

(c) Dupa expandarea nodului Sibiu; nodul ce urmeaza a fiu expandat este
Fagaras, avand costul f cel mai mic.

43
(d) Dupa expandarea nodului Fagaras; 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 gura
3.1
44 CAPITOLUL 3. CAUTARE INFORMATA

3.3 Algoritmul A*
Cea mai cunoscuta forma a acestor algoritmi de cautare informata 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 un nod
din arborele de cautare contine deja aceasta valoare 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 celui mai bun drum 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 complet si optim; n practica, rezultatele
obtinute sunt foarte bune, prin comparatie cu strategiile de cautare oarba
studiate n cursul 2.
Vom considera functii h care sunt euristici admisibile, adica h(n) nicio-
data nu supraestimeaza (depaseste) costul unei solutii de la nodul n la nod
scop3 . Prin natura lor, acest tip de functii sunt optimiste ele permanent
subestimeaza costul real al drumului. Deoarece functia g cuantica efortul
exact de a ajunge din nodul initial n nod scop, deducem ca valoarea f (n) nu
supraestimeaza efortul de a ajunge din nodul initial n nod scop via nodul
intermediar n.
Un exemplu de functie euristica admisibila este cea care estimeaza efortul
de ajungere din nodul n n Bucuresti ca ind 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 Bu-
curesti este reprezentata n gurile 3.3 si 3.4.

3
Aceasta este definitia pentru problema n care se cere minimizarea caii; pentru pro-
bleme de maximizare, o euristica admisibila nu subestimeaza efortul real de ajungere la
nod scop.
3.3. ALGORITMUL A*
(a) Nodul eles pentru expandare este unic, (b) Dupa expandarea nodului radacina; nodul ce urmeaza a fi expan-
radacina dat este Sibiu, avand costul f cel mai mic.

(c) Dupa expandarea nodului Sibiu; nodul ce urmeaza a fiu expandat este
Ramnicu Valcea, avand costul f cel mai mic.

45
(d) Dupa expandarea nodului Ramnicu Valcea; nodul ce urmeaza a fi expandat este
Fagaras.

Figura 3.3: Pasi n executarea algoritmului A*. Valorile scrise sub noduri reprezinta valorile functiei f = g + h.
46
(a) Dupa expandarea nodului Fagaras.

CAPITOLUL 3. CAUTARE INFORMATA


(b) Dupa 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).


3.3. ALGORITMUL A* 47

Vom demonstra urmatoarea propozitie:

Teorema 1 Daca algoritmul A* se termina, atunci nodul scop la care s-a


ajuns, folosind algoritmul Cautare-in-Arbore are cost optim.

Demonstratie Fie G si G2 noduri scop aate n colectieNoduri, cu G


optimal si G2 suboptimal:

g(G2 ) > g(G) = C

unde C este costul optim.


Aratam n continuare ca nodul G este extras din colectieNoduri naintea
lui G2 . Avem:
f (G2 ) = g(G2 ) + h(G2 ) = g(G2 )

deoarece am impus nca de la nceput ca h(nodScop) = 0. Din acelasi motiv:

f (G) = g(G)

De aici:
f (G) = g(G) < g(G2 ) = f (G2 )

si tinand cont de natura structurii de date colectieNoduri organizata ca


o lista de prioritati rezulta ca nodul G va extras de catre algoritmul A*
naintea lui G2 .

Conditia din teorema anterioara este satisfacuta daca numarul de noduri


n pentru care f (n) f (G) este nit.
Daca se foloseste algoritmul Cautare-in-Graf n locul algoritmului Cautare-in-Arbore,
optimalitatea nu mai este neaparat valabila. Reamintim ca algoritmul par-
curgerii pe graf evita starile repetate astfel: un nod din colectia de noduri
se expanda doar daca starea sa nu se regaseasca ntr-o colectie de stari deja
parcurse. Problema cu aceasta abordare este ca se poate astfel ca prima ajun-
gere ntr-o anumita stare sa se faca cu un cost suboptimal, iar urmatoarele
drumuri care conduc la aceeasi stare sunt neglijate, chiar daca ar duce la
mbunatatirea costului pentru acea stare.
48 CAPITOLUL 3. CAUTARE INFORMATA

Exista doua solutii care se pot aplica. Prima consta n mentinerea si


actualizarea permanenta a caii care are costul cel mai bun. Se poate scrie
asemenea algoritm, chiar daca este mai complex (presupune de exemplu ca
sa se modice si costurile nodurilor care sunt descendenti ai nodurilor cu
cost mbunatatit). A doua solutie cere sa ne asiguram ca prima cale ce duce
la o anumita stare este ntotdeauna cu cost optim, ca atare putem neglija
drumurile ulterioare care redescopera starea. Vom detalia n cele ce urmeaza
care sunt conditiile care trebuie sa e ndeplinite de catre functia h pentru a
aplica aceasta a doua varianta.

Definitia 9 O functie h se numeste consistenta daca pentru orice nod n si


orice succesor n al sau, generat de o actiune a avem ca:

h(n) c(n, a, n ) + h(n ) (3.1)

unde c(n, a, n ) este costul actiunii a care permite mutarea din starea n n
starea n a se vedea gura 3.5.

n
c(n,a,n)
h(n)
n
h(n)
G

Figura 3.5: Inegalitatea triunghiului pentru o functie consistenta: denitia


de consistenta cere ca h(n) c(n, a, n ) + h(n ).

Aratam ca daca h este consistenta, 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 denitiei 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)


3.3. ALGORITMUL A* 49

O functie consistenta se mai numeste din acest motiv si monotona.


Ecuatia 3.1 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 n general 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 consis-
tenta, deoarece satisface inegalitatea triunghiului din geometria plana.
Enuntam fara demonstratie teorema:

Teorema 2 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 nescop care au f (n) = C


nainte ca sa expandeze nod scop (si deci sa se termine algoritmul);

A* nu expandeaza noduri n cu f (n) > C .

Ultima observatie este deosebit de importanta, deoarece arata ca se evita


expandarea unui nod care are costul mai mare decat costul optim, chiar
daca acest cost optim nu este cunoscut decat la terminarea algoritmului! De
exemplu, nodul aferent orasului Timisoara nu este niciodata expandat, avand
cost prea mare. Datorita monotoniei functiei f avem ca nici orasele care
descind direct din Timisoara nu vor expandate, de fapt nici un nod de pe
vreo ruta care include Timisoara ca nod intermediar nu va expandat; se face
astfel o retezare a arborelui de cautare, prin eliminarea unor variante care
nu ar dus oricum la un rezultat optim. Geograc, realizam ca toata partea
Banatului este exclusa din arborele de cautare, deoarece costurile nodurilor
din aceasta regiune sunt oricum prea mari fata de costul optim (momentan
necunoscut, determinat doar la sfarsitul algoritmului) C .
50 CAPITOLUL 3. CAUTARE INFORMATA

Algoritmul este complet, daca nu cumva sunt innit de multe noduri n


care au f (n) C . Este si optimal; mai mult decat atat, este optimal ecient
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 nescop n pentru care f (n) = C . Daca am
avea un algoritm care nu expandeaza toate nodurile n cu f (n) < C , atunci
ar exista riscul sa se rateze o cale optima.
Exista totusi o problema: numarul de noduri care au f () < C creste
exponential cu numarul de pasi. 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.

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 bestrst 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* (Simplied memory
bounded A*) vin sa corecteze problema, ei folosind toata memoria care li
se pune la dispozitie. Algoritmul este complet daca solutia poate 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 (subopti-
mala) 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 51

3.5 Functii euristice


Vom studia functii euristice pentru problema puzzle-ului (a se vedea
denitia problemei de la pagina 14). Pentru un puzzle de 3x3, factorul me-
diu de ramicare este 3 (4 noduri descendente daca spatiul este la mijloc, 2
noduri descendente daca spatiul este ntr-un colt, 3 noduri altfel). Numarul
mediu de mutari pentru rezolvare este de 22; o cautare exhaustiva ar cere
vizitarea a 322 adica aproximativ 3.1 1010 noduri. Prin eliminarea starilor
duplicat problema s-ar reduce la 9!/2=181.440 noduri. Numarul este accep-
tabil, 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 admisi-


bila, 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 nala 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 mu-


tarea 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 ramicare, b . Daca numarul de noduri create de algoritmul de cautare
pentru o instanta particulara a unei probleme este N , atunci b se deneste
ca factorul de ramicare (nu neaparat numar ntreg) pentru care un arbore
de adancime d contine cele N noduri; pe scurt, b este solutia ecuatiei:

N = 1 + b + (b )2 + . . . + (b )d
52 CAPITOLUL 3. CAUTARE INFORMATA

De exemplu, daca A* descopera solutia la adancime 5 generand 52 de noduri,


atunci b 1.92. Numarul b se obtine de fapt ca o medie pentru diferite
rulari ale algoritmului, dar este de regula o valoare aleatoare cu dispersie
mica. Scopul este de a obtine un factor de ramicare 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 ite-
rativa 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 alta. Pentru h1 si h2 , de pilda, avem ca h2 (n) h1 (n), n
(demonstrati). Fie functiile f1 () si f2 () denite folosind h1 () si h2 (), mai
precis:
f1 (n) = g(n) + h1 (n)

si
f2 (n) = g(n) + h2 (n)

Avem ca:
f2 (n) = g(n) + h2 (n) g(n) + h1 (n) = f1 (n) n

deci pentru orice nod n care este extras de catre functia f2 este cu siguranta
extras si de functia f1 . Altfel spus, functia f1 extrage cel putin nodurile pe
care le extrage f2 .
Asta ne ndeamna a cauta functii euristice care sa aiba valori cat mai
mari, dar sa ramana nca admisibile (sub valoarea reala a costului h(n)).
Problema cu o asemenea abordare este ca functia, desi 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
4
Reamintim ca ne-am fixat pe probleme n care dorim sa obtinem solutie de cost minim.
Pentru probleme de maxim dominarea nseamna schimbarea sensului inecuatiei.
3.5. FUNCTII EURISTICE 53

exemplele de mai sus 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 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 n 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 de relaxare a conditiilor (si alte strate-
gii), sa obtinut un program capabil de a gasi variante relaxate de probleme,
unele conducand la euristici superioare celor cunoscute de rezolvitorii umani.
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 noduri x, y astfel ncat hi (x) hj (x) dar hi (y) > hj (y))? Putem
atunci considera functia h denita 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 celelalte pot ajunge n orice pozitie. Pentru multe pozitii
de start, 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 originara, se poate
sa memoram ntr-o baza de date aceste stari, mpreuna cu costul de ajungere
54 CAPITOLUL 3. CAUTARE INFORMATA

de la ele la starea nala. Construirea acestei baze5 poate laborioasa, dar


efortul se amortizeaza rapid daca trebuie rezolvate mai multe probleme.

3.6 Algoritmi de cautare locala


Algoritmii precedenti fac o cautare mai mult sau mai putin sistematica
pentru a descoperi daca un nod scop poate 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
nala este irelevanta. De exemplu, pentru problema reginelor pe tabla de
sah (sectiunea 1.6.1, pagina 14) 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 op-
tim 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, se pot aborda si probleme unde cautarea sistematica sau
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 se da o functie obiectiv. Desi
nu totdeauna solutiile obtinute sunt optime, rezultatele practice pot sa-
tisfacatoare.
Optimul poate sa e minim sau maxim; avem n vedere ca:

min(f ) = max(f )

si deci exemplicarile se vor face cu optimizari convenabil alese, data ind


trecerea de la un tip de optim la altul. Vom considera prolul functiei obiectiv
5
Numita baza de tipare: pattern database.
3.6. ALGORITMI DE CAUTARE LOCALA 55

(gura 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 ajunge la scop, daca acesta exista;

optimal, daca gaseste un scop cu cost optimal.

Figura 3.6: Prolul unei functii obiectiv; se doreste obtinerea unei stari n
care valoarea functiei obiectiv este maxima. Punctul marcat pe grac repre-
zinta valoarea aferenta starii curente, pentru care o modicare poate sa duca
la cresterea sau scaderea valorii functiei obiectiv.

3.6.1 Cautarea prin metoda ascensiunii


Metoda ascensiunii6 se bazeaza pe o idee simpla: ncearca sa modi-
ci pozitia curenta printr-o deplasare mica, astfel ncat sa se produca o
mbunatatire a valorii functiei obiectiv. Pentru prolul reprezentat n gura
6
In limba engleza: hill climbing.
56 CAPITOLUL 3. CAUTARE INFORMATA

3.6, unde se doreste maximizarea valorii functiei, dorim ca starea urmatoare


sa corespunda unei miscari mici spre stanga pe gracul functiei obiectiv.
Algoritmul este dat n gura 3.7. Algoritmul nu memoreaza starile prin
care trece, 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 local. Cautarea vecinului se face n imediata vecinatate,
salturi prea mari ar putea duce la ratarea unor conguratii cu valoarea
buna.

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.

Strategia se poate folosi pentru problema celor 8 dame pe o tabla de sah


(a se vedea sectiunea 1.6.1, pagina 14). Pentru ecare patrat se calculeaza
care ar 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 conguratia n care numarul de atacuri este minim 0. Daca
pentru o stare (dispunere a reginelor) oarecare exista mai multe cele mai
bune mutari se poate alege aleator oricare dintre ele. Algoritmul din gura
3.6. ALGORITMI DE CAUTARE LOCALA 57

3.7 se poate modica usor pentru a minimiza functia opbiectiv


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 cand nodul curent nu poate
mbunatatit printr-o mutare n apropiere.

2. zona plata: o zona plata este o regiune din spatiul starilor n care
functia de evaluare este constanta. Poate 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 gura 3.7, se produce valoarea
constanta din platou.

3. creste7 ; rezulta n secventa de maxime locale pentru care directia co-


recta este dicil de ales (gura 3.9).

Pentru problema celor 8 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 (tot numar mediu)
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 gura 3.7 este cea n care se permit pasi laterali pe zona
plata. Pentru a preveni plimbarea la innit 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 celor
8 regine 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.
7
In limba engleza: ridges.
58 CAPITOLUL 3. CAUTARE INFORMATA

(a) O asezare a opt regine pe tabla de (b) Un minim local pentru problema ce-
sah, cu costul 17. Pentru fiecare patrat lor opt regine. Starea prezentata are va-
se arata valorea acestei functii daca sar loarea 1. Orice mutare din aceasta stare
face mutarea reginei de pe coloana cores- nu micsoreaza functia obiectiv.
punzatoare n ea. Cele mai bune mutari
din aceasta 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.
Valoarea h reprezinta numarul de atacuri.

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.
3.6. ALGORITMI DE CAUTARE LOCALA 59

Figura 3.9: Creste, una din conguratiile problematice pentru un algoritm


de ascensiune.
60 CAPITOLUL 3. CAUTARE INFORMATA

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 mai mare sansa de alegere a ei ca directie urmatoare
(dar nu e imposibil sa se aleaga pante de nclinatie mai mica, adica sa se
ajunga n stari n care valoarea nu este cea mai mare dintre toti vecinii).
Algoritmii descrisi pana acum sunt incompleti ei nu gasesc solutia op-
tima mereu, deoarece se pot bloca 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
cand numarul de reporniri aleatoare creste la innit, daca punctele de start
se aleg conform unei distributii uniforme, 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 n medie de
1/p reporniri. Pentru problema celor opt regine, unde p = 0.14, avem nevoie
n medie de 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 (numerele date trebuie
ntelese ca valori medii). Numarul mediu de pasi este 6 3 + 4 = 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 si cautare cu
pasi laterali) poate descoperi o solutie n mai putin de un minut!
Problemele din lumea reala deseori au un prol al functiei obiectiv cu
maxime si minime multiple, ndesate pe domeniul de denitie; algorimul
cautarii prin ascensiune duce, de regula, ntr-un maxim local sucient de bun
pentru timpul de calcul consumat.

3.6.2 Recoacerea simulata


Un algoritm de cautare prin ascensiune este incomplet, deoarece se poate
cantona ntr-un minim local. Ar de dorit sa permitem algoritmului sa
efectueze miscari si ntr-o directie nefavorabila, n speranta ca va permite
iesirea dintr-un minim local. Ca suport intuitiv, sa ne imaginam o un relief
3.6. ALGORITMI DE CAUTARE LOCALA 61

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 sucient 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 gura 3.10.

Figura 3.10: Algoritmul recoacerii simulate. Perturbarile vor permite scoa-


terea bilei din minimele locale.

Algoritmul este inspirat din metalurgie, n care se ncalzeste un metal


pana la o temperatura nalta; pentru a durica metalul se lasa apoi sa se
raceasca 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 gura 3.11.
Daca mutarea curenta duce ntr-o situatie cu valoarea mai mica, atunci se
accepta; daca noua situatie este defavorabila, atunci se accepta mutarea cu o
anumita probabilitate. Probabilitatea scade exponential cu lipsa de calitate
a noii conguratii si cu temperatura curenta (variabila). Se poate arata
ca daca temperatura scade sucient de lent, atunci algoritmul va gasi un
optim local cu probabilitatea 1 [3]. Planicarea care apare ca parametu al
algoritmului este o functie descrescatoare fata de timpul t.
62 CAPITOLUL 3. CAUTARE INFORMATA

Figura 3.11: Algoritmul de recoacere simulata. Pasii defavorabili sunt


permisi, dar probabilitatea acestora este controlata. Parametrul planiare
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. Rolul mediului este preluat de
catre functia scop. Vom detalia algoritmul pentru maximizarea unei functii

f : [a, b] R+ . Indivizii care alcatuiesc populatia se numesc cromozomi si
sunt alcatuiti din gene.
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.6. ALGORITMI DE CAUTARE LOCALA 63

3. mutatie: se efectueaza niste modicari minore asupra materialului ge-


netic existent.

Pas 1. Crearea unei populatii initiale de cromozomi. Se considera N R


valori pentru variabila x [a, b]. Numarul N R este numit dimensiunea
populatiei si reprezinta un parametrul al algoritmului (ex. N R = 100).
Toate valorile sunt cuanticate prin cromozomi care sunt siruri de k biti
(un bit se mai numeste si gena), k ind alt parametru al algoritmului.

Generarea celor N R cromozomi se face aleator, prin setarea ecarei


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:
ba
x(c) = a + v(c) [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
(crossover, ncrucisare) si mutatia.

Pas 2.1. Selectia. Pentru ecare cromozom din populatie se calcu-


leaza functia obiectiv vi = f (x(ci )), 1 i N R. Apoi se
nsumeaza valorile functiilor obiectiv obtinute pentru ecare cro-
mozom n parte:
NR
X
S= vi
i=1

Pentru ecare din cei NR cromozomi se calculeaza probabilitatea


de selectie:
vi
pi = , 1 i NR
S
64 CAPITOLUL 3. CAUTARE INFORMATA

Pentru ecare cromozom se calculeaza probabilitatea cumulativa


de selectie:
j
X
qj = pi , 1 j N R
i=1

Remarcam ca qN R = 1 iar sirul qi (1 i N R) deneste un


sir crescator. Cu cat cromozomul ci produce 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 ecare numar, pe rand, daca el se gaseste n intervalul
(0, q1 ] atunci cromozomul c1 este ales si depus ntr-o populatie
noua; daca acest numar se aa 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 mai mare, cu atat cresc sansele lui de a 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 ecare 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 cromo-
zomul 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


3.6. ALGORITMI DE CAUTARE LOCALA 65

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 ecare gena a ecarui 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 modica 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 schim-
bul de informatie ntre indivizi. Esenta 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 ecienta a
algoritmilor genetici prespune crearea unor structuri de date pentru gene si
a unor operatori adecvati problemei ce trebuie rezolvate9 .

3.6.4 Cautare locala n spatii continue

Algoritmii de cautare prezentati pana acum functioneaza ntr-un univers


discret si n care functia succesor returneaza un set nit de pasi care pot
8
Sau se foloseste strategia elitista: se returneaza cel mai bun individ al tuturor
generatiilor.
9
S-a stabilit ecuatia Algoritmi genetici + structuri de date = programare
evolutionista, [4].
66 CAPITOLUL 3. CAUTARE INFORMATA

efectuati dintr-o stare oarecare. Cele mai multe probleme, nsa, sunt de tip
continuu si deci posibilitatile de alegere a urmatorilor pasi sunt innite.
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 f
f (x) = ,...,
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.


Pentru multe probleme, cel mai bun algoritm este bazat pe metoda Newton
Raphson, folosita pentru determinarea radacinilor ecuatiilor de forma g(x) =
0 (g ind functie de o singura variabila). Se calculeaza o noua estimare a lui
x prin:
g(x)
xx
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.
Capitolul 4

Probleme de satisfacere a
constrangerilor

Prezentul capitol trateaza probleme n care starile se supun unor restrictii


(constrangeri) impuse. Spre deosebire de reprezentarile date la metodele de
cautare din capitolele anterioare (reprezentari care tin cont de particula-
ritatile problemei pentru care se face cautarea solutiei), problemele de sa-
tisfacere a constrangerilor au o forma mult mai generala, iar euristicile sunt
larg aplicabile.

4.1 Probleme de satisfacere a constrangerilor


O problema de satisfacere a constrangerilor (PSC) este denita 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 constrangere Ck , 1 k m se
numeste stare consistenta sau legala. O solutie a problemei este o asignare
consistenta si care da valori pentru ecare variabila. Uneori este implicata si
o functie obiectiv care trebuie optimizata.

67
68CAPITOLUL 4. PROBLEME DE SATISFACERE A CONSTRANGERILOR

Tratarea unei probleme ca o PSC poate beneca: 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 care nu sunt dependente de domeniul problemei (sectiunea 4.2.1 si
urmatoarele).
Exemplu: dorim sa coloram harta regiunilor Australiei (gura 4.1) cu 3
culori, astfel ncat sa nu existe doua regiuni vecine care au aceasi culoare.
Variabilele pot considerate abrevierile pentru regiuni, respectiv: W A, N T ,
Q, N SW , V , SA, T , domeniul ecarei variabile este {rosu, verde, albastru},
iar constrangerile 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
Western Queensland
Australia

South
Australia
New South Wales

Victoria

Tasmania

Figura 4.1: Regiuni din Australia.

Deseori se recurge la reprezentarea acestor constrangeri 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) -
g 4.2.
O PSC se poate formula astfel:
stare initiala: multimea vida, corespunzatoare lipsei de asignari de
valori oricarei variabile;
4.1. PROBLEME DE SATISFACERE A CONSTRANGERILOR 69

NT
Q
WA

SA NSW

V
Victoria

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

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 e consistenta (sa nu ncalce constrangerile
impuse);

test scop: asignarea curenta este completa, i.e. nu mai exista variabile
libere

costul caii: o constanta pentru ecare asignare de variabila

Deoarece ecare 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 ecare pas consideram o alta variabila
libera). De asemenea, algoritmii pentru cautare locala dau rezultate bune.
Domeniile de valori pot discrete si nite (precum mai sus) sau nu, si
n acest al doilea caz constrangerile 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 unara daca se refera la o singura variabila si
atunci este simplu de tratat, pentru ca se modica corespunzator domeniul
de valori asociat prin excluderea valorilor care nu satisfac constrangerea.
70CAPITOLUL 4. PROBLEME DE SATISFACERE A CONSTRANGERILOR

Deseori se dau constrangeri binare, care implica exact doua variabile. De


exemplu, pentru graful din gura 4.2 orice muchie reprezinta o constrangere
binara.
Exista si constrangeri de ordin mai mare, implicand cel putin trei va-
riabile. Avem asemenea situatie n problema urmatoare1 : sa se substituie
ecare litera printr-o cifra diferita, astfel ncat ecuatia sa e adevarata

unu+
patru =
-----
cinci

Constrangerea ca valorile caracterelor diferite sa e diferite poate redusa


la mai multe de tip binar - u 6= i, u 6= n etc.; apoi, pentru ecare din cele
cinci coloane avem cate o constrangere:



u + u = i + 10x1





n + r + x1 = c + 10x2


u + t + x = n + 10x3
2 (4.1)

a + x3 = i + 10x4






p + x4 = c

unde xi reprezinta (eventualul) transport de la suma de cifre. Constrangerile


pot reprezentate sub forma de hipergraf, precum in gura 4.3. Se poate
arata ca problemele cu domenii nite pot reduse la probleme cu con-
strangeri binare prin introducerea unor variabile auxiliare. Din acest motiv
ne vom concentra asupra problemelor cu constrangeri binare.

4.2 Cautare backtracking pentru PSC


Formularea data pentru PSC (n special prezenta unei functii succesor) ne
permite sa speram ca putem trata problemele de satisfacere a constrangerilor
1
Problema de criptaritmetica.
4.2. CAUTARE BACKTRACKING PENTRU PSC 71

Figura 4.3: Hipergraf de constrangeri atasat problemei de criptaritmetica.


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

prin orice algoritm de cautare de care dispunem. Totusi, abordarea trebuie


facuta cu o anumita schema de cautare.
Sa plecam de la o PSC n care avem n variabile care pot lua valori dintr-
o multime nita cu d elemente. Daca vrem sa folosim cautarea n latime,
atunci:

la nodul radacina (cel care nu are nici o variabila nu are valoare xata)
avem nd posibilitati de a continua, deoarece avem n variabile si pentru
ecare poate stabilita o valoare din cele d;

la nivelul urmator avem (n1)d alegeri, pentru ca au ramas mai putine


variabile

n total obtinem n! dn frunze

Numarul de frunze este mult mai mare decat dn , care s-ar obtine prin enu-
merarea tuturor posibilitatilor de asignare de valori pentru cele n variabile.
Ca atare, aplicarea unei metode de cautare neinspirat alese poate mari con-
siderabil numarul de cazuri ce trebuie considerate.
Numarul supraestimat de frunze a aparut din cauza ca la ecare pas
permitem luarea n considerare a tuturor variabilelor posibile, pe cand solutia
72CAPITOLUL 4. PROBLEME DE SATISFACERE A CONSTRANGERILOR

unei PSC nu este senzitiva la ordine. Este posibil ca la ecare pas sa se ia n


considerare doar o variabila si astfel 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 reprezen-
tarea PSC este standardizata, ea se poate aplica independent de specicul
domeniului. Algoritmul este dat n gura 4.4.

Figura 4.4: Algoritmul backtracking pentru probleme de satisfacere a con-


strangerilor.

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 ecienta 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?
4.2. CAUTARE BACKTRACKING PENTRU PSC 73

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 xa a variabilelor. Dar putem observa ca daca asignam
W A = rosu si N T = verde, pentru SA ramane o singura valoare care poate
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 ecare pas variabila care are cele mai putine valori candidat.
Strategia numita minim de valori ramase (MVR) decide alegerea vari-
abilei 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 re-
teze caile care nu duc la solutii. De exemplu, daca avem o variabila care are
0 valori ramase, atunci strategia MVR 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
se evita niste cautari care nu ar putea produce solutie.
In practica, strategia MVR 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 ecient.
Euristica nu este utila la alegerea primei variabile, deoarece ecare regiune
poate avea la nceput oricare din cele 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 valoare denita n teoria grafurilor. De exemplu,
pentru harta din gura 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 nevoie sa se revina.
Strategia MVR este mult mai efectiva decat aceasta, dar euristica gradului
74CAPITOLUL 4. PROBLEME DE SATISFACERE A CONSTRANGERILOR

este utila la deciderea urmatorului pas ntr-o situatie de egalitate.


Odata ce sa ales variabila pentru care se va da valoare, trebuie determi-
nat care este ordinea de considerare a valorilor pentru ea. Se aplica strategia
celei mai putin constrangatoare valori. Mai clar, se prefera valorile care
produc cele mai putine eliminari de valori pentru alte variabile neasignate.
Ideea este de a se lasa maximum de exibilitate (posibilitati) pentru alegerile
urmatoare. De exemplu, daca luam W A = verde si N T = rosu, iar pentru Q
setam culoarea albastra, atunci SA ramane fara posibilitate de a i se atribui
valoare. Evident, daca se cere generarea tuturor solutiilor pentru PSC sau
daca problema nu are nicio solutie, strategia este inutila.

4.2.2 Propagarea informatiilor prin constrangeri


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 ecare


variabila Y care este conectata cu X printro constrangere se sterg din do-
meniul lui Y valorile care sunt inconsistente cu proaspata valoare a lui X.
Tabelul 4.1 arata evolutia cautarii cu vericare 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 ramicare pentru
aceste doua variabile. Este clar ca aceasta vericare nainte face pereche
buna cu strategia MVR, pentru care urmatoarele variabile luate n conside-
rare sunt SA si N T . Vericarea nainte este un mod ecient de calculare a
informatiei de care MVR are nevoie.
Mai observam ca dupa ce setam V = albastru2 domeniul lui SA este
2
Am presupus aici ca alegerea urmatoarei variabile nu se face prin strategia MVR.
4.2. CAUTARE BACKTRACKING PENTRU PSC 75

gol. Vericarea nainte a determinat ca asignarea partiala {W A = rosu, Q =


verde, V = albastru} este inconsistenta cu cerintele problemei, necesitand
un pas napoi.

WA NT Q N SW V SA T
Domeniile initiale RVA RVA RVA RVA RVA RVA RVA
Dupa W A = rosu R VA RVA RVA RVA VA RVA
Dupa Q = verde R A V RA RVA A RVA
Dupa V = albastru R A V R A RVA

Tabela 4.1: Evolutia in problema colorarii hartilor folosind vericarea nainte.


R este rosu, V este verde, A este albastru.

Propagarea constrangerilor

Cu toate ca vericarea nainte depisteaza inconsistente, ea nu le depis-


teaza 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 al-
bastra; dar ntrucat ele sunt si regiuni vecine, trebuie sa e de culori diferite.
Vericarea nainte nu este sucient de patrunzatoare n a detecta incom-
patibilitati. Propagarea constrangerilor este un termen general, desemnand
propagarea constrangerilor pentru o variabila conform constrangerilor pen-
tru alte variabile. Mai clar, propagam de la W A si Q la N T si SA (precum
la vericarea nainte), dar luam n considerare si constrangerea dintre N T
si SA pentru a detecta inconsistenta. 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
mai puternica decat vericarea nainte. Un arc se refera la o legatura directionata
de la o variabila la alta. Date ind doua variabile X si Y cu domeniile de va-
lori 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}.
76CAPITOLUL 4. PROBLEME DE SATISFACERE A CONSTRANGERILOR

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 asignata lui SA. Arcul (N SW, SA)
poate 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 -


ind legate printr-o constrangere): 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 do-
meniu de valori vid pentru una din variabile. Se va produce deci un pas
napoi n algoritm, datorita detectarii din timp a imposibilitatii de continu-
are. Consistenta arcului vede mai departe decat propagarea nainte.

Procesul de vericare 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 ecare asignare de valoare. Ori de cate ori se face
stergerea unei valori din domeniul unei variabile X, trebuie vericate toate
arcele de la variabile Y la X. Algoritmul consistentei arcelor AC-3 este dat n
gura 4.5 si foloseste o coada care mentine arcele ce trebuie sa e vericate
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 ), indicand spre variabila Xi , sunt adaugate
la coada. Complexitatea este O(n2 d3 ) [1]; beneciile obtinute prin folosirea
acestei strategii acopera efortul computational. Tot n [1] se explica de ce
consistenta arcelor nu determina toate inconsistentele.

Se pot efectua vericari 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 pri-
measca o valoare consistenta (pentru k = 2 avem obtinem chiar consistenta
arcelor). Totusi, cu cat k este mai mare cu atat vericarile sunt mai com-
plexe.
4.2. CAUTARE BACKTRACKING PENTRU PSC 77

Figura 4.5: Algoritmul AC-3 pentru consistenta arcelor. Dupa aplicarea lui,
ecare arc este consistent sau exista variabile al caror domeniu este gol (si n
acest ultim caz PSC nu poate rezolvata).
78CAPITOLUL 4. PROBLEME DE SATISFACERE A CONSTRANGERILOR

Figura 4.6: Algoritmul corespunzator euristicii conicte-minime. Functia


conicte contorizeaza numarul de constrangeri ncalcate de o valoare parti-
culara.

4.3 Cautare locala pentru PSC


Algoritmii de cautare locala se dovedesc a foarte ecienti n rezolvarea
multor PSC. Ei pornesc de la o asignare aleatoare de valori pentru toate
variabilele iar functia succesor modica valoarea unei variabile la ecare pas.
Cea mai evidenta euristica pentru selectarea valorii unei variabile este
alegerea de valoare care produce numarul minim de conicte cu alte variabile
euristica conicte-minime. Algoritmul este dat n gura 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, planicarea operatiilor din de-
cursul 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 constrangeri se schimba pe loc. De exemplu, pentru
o problema de planicare a zborurilor, daca un aeroport devine indisponibil
4.4. STRUCTURA PROBLEMEI 79

Problema Backtracking BT+MVR Vericare nainte VI+MVR Conicte-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; Ba-
cktracking se refera la backtracking clasic, BT+MVR este folosirea eu-
risticii minim de valori ramase; VI+MVR se refera la vericare nainte
+ strategia valorilor minime ramase; Conicte-minime este algoritmul din
sectiunea 4.3. Numerele din paranteza arata ca nu s-a putut determina o
solutie n timpul alocat pentru rulare.

(accidente, conditii meteo) atunci constrangerea corespunzatoare poate


usor introdusa si plecand de la o planicare 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 vericari de consistenta. Prima problema este gasirea unei
colorari adecvate a hartii SUA pentru 50 de state si 4 culori. A doua pro-
blema se refera la rezolvarea problemei celor n regine, pentru n [2, 50]. A
treia problema este jocul Puzzle Zebra [1]. Ultimele doua sunt probleme
articiale alese aleator. Rezultatele sugereaza ca strategiile euristice expuse
mbunatatesc mult timpii de rulare.

4.4 Structura problemei


Vom examina modul n care structura problemei poate 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;
80CAPITOLUL 4. PROBLEME DE SATISFACERE A CONSTRANGERILOR

de exemplu, pentru problema colorarii hartii Australiei, Tasmania este o


subproblema care poate rezolvata separat: Tasmania nu e vecina cu nicio
alta regiune. Reducerile de complexitate pot mari, iar timpii de rulare
obtinuti sunt acceptabili. Singurul impediment 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 3 Daca graful de constrangeri nu are cicluri, atunci PSC poate


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.
Prima varianta functioneaza astfel: se determina un set de noduri prin
a carui eliminare se ajunge la un graf de tip arbore; de exemplu, pentru
graful din gura 4.2 daca se elimina nodul corespunzator variabilei SA, atunci
graful obtinut este cel din gura 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 constrangeri
cu nodul eliminat. Desigur, valoarea aleasa pentru SA poate sa duca la
imposibilitatea de rezolva problema, dar aceste valori pot 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.
4.4. STRUCTURA PROBLEMEI 81

2. Pentru ecare asignare posibila pentru variabilele din S care satisfac


constrangerile PSC:

(a) elimina din domeniul variabilelor ramase valorile care sunt incon-
sistente 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 ecienti pentru obtinerea unor aproximari. Daca
acest set are dimensiunea c, atunci complexitatea variantei de mai sus este
O(dc (n c)d2 ).

NT
Q
WA

NSW

V
Victoria

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

A doua varianta porneste de la construirea unei descompuneri a grafului


de constrangeri ntrun arbore format dintr-un set de probleme interconec-
tate. Fiecare subproblema se rezolva independent, apoi solutiile rezultate
sunt combinate. Figura 4.8 arata descompunerea problemei de colorare a
82CAPITOLUL 4. PROBLEME DE SATISFACERE A CONSTRANGERILOR

Figura 4.8: O descompunere sub forma de arbore de subprobleme a grafului


de constrangeri din gura 4.2

hartii Australiei. Descompunerea trebuie sa ndeplineasca urmatoarele trei


conditii:

1. ecare 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 ea trebuie sa apara mpreuna n cel putin una dintre
subprobleme;

3. daca o variabila apare n doua subprobleme din arbore, atunci ea tre-


buie sa apara n ecare subproblema de-a lungul unei cai care conec-
teaza aceste subprobleme.

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 ecarei subprobleme ca o va-
riabila mai mare si aplicarea algoritmului ecient de rezolvare pentru arbore.
Constrangerile pentru acest graf arbore reprezinta conditia ca subprobleme
cu variabile comune sa aiba aceeasi valoare pentru variabilele partajate.
Capitolul 5

Agenti logici

5.1 Motivatie
Capitolul introduce agentii bazati pe cunoastere. Conceptele care se dis-
cuta sunt reprezentarea cunoasterii si procesele de rationare preocupari
centrale ale inteligentei articiale.
Spre deosebire de agentii care aplica metodele de cautare prezentate n
capitolele anterioare, agentii logici beneciaza de cunoastere exprimata n
forme variate, 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 cu-
noastere 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 for-
marea medicala. Dar, desi simptomele sunt cunoscute, un medic nu cunoaste
absolut tot despre pacientul tratat si de aici rezulta o alta caracteristica a
agentilor logici: necesitatea de a lucra cu observatii partiale.
Un alt motiv pentru care se studiaza agentii bazati pe cunoastere este e-
xibilitatea produselor rezultate. Astfel de agenti sunt n stare sa accepte noi
sarcini si sa castige rapid noi competente prin nvatare sau prin descoperire
de noi informatii.

83
84 CAPITOLUL 5. AGENTI LOGICI

Principalul mod n care se abordeaza agentii logici este bazat pe logica


(propozitionala, apoi de ordinul ntai). Spectrul abordarilor curente este nsa
mai bogat, deoarece n lumea reala apar probleme legate de incertitudine, aici
intervenind teoria probabilitatilor si sistemele fuzzy, iar partea de nvatare
se abordeaza de regula prin nvatare automata - 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. Fie-
care enunt este exprimat ntrun 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 i.e. ce anume trebuie sa se faca la pasul
curent. Numele lor este Spune si Intreaba. Al doilea 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.
Creeaza-enunt-perceptie translateaza n limbajul formal specic bazei
de cunostinte perceptia curenta; demn de remarcat este ca timpul apare si
el ca o dimensiune a perceptiei. Creeaza-interogare-actiune construieste
o propozitie care interogheaza BC ce actiune ar trebuie sa se execute la
momentul curent. In sfarsit, Creeaza-enunt-actiune construieste un enunt
care codica faptul ca actiunea indicata a fost ndeplinita.
5.3. JOCUL LUMEA MONSTRULUI 85

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

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 denire a unui domeniu, care mareste aria de aplicabilitate
a acestor agenti. O alta modalitate de mbogatire a BC este prin nvatare
automata pe baza perceptiilor.

5.3 Jocul lumea monstrului


Sectiunea contine o descriere a unui joc, folosit ca suport de exemplicare
n restul capitolului. Se dau mai multe camere dispuse ntr-o matrice; came-
rele comunica ntre ele; ntro camera se gaseste un monstru care mananca pe
oricine intra acolo (si jocul se termina). In alte camere se aa gropi; daca se
intra ntro asemenea groapa, atunci jocul se termina. Intr-o camera se aa
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 ecarui


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 (personajul) ncepe


86 CAPITOLUL 5. AGENTI LOGICI

n camera din stanga jos, de coordonate [1, 1], cu fata spre dreapta.
Locatia camerelor cu aurul, gropile 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 aa 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 prelu-
area aurului, daca se aa n aceeasi camera cu el. Actiunea trage se
foloseste pentru a lansa sageata n directia n care personajul e orientat;
sageata zboara pana se izbeste e de zid, e 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;

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 ra-


porteaza ori de cate ori agentul intra ntro camera (sau ncearca sa se
deplaseze).

Cunostintele date mai sus se introduc ntro BC. De ecare data cand agentul
viziteaza o camera se primeste vectorul de perceptii; pe baza acestora si a
BC se pot face deductii de tipul: e posibil ca n camera [2, 1] sa e o groapa,
sau sigur n camera [3, 3] nu se aa monstru, deductii care se adauga la BC,
pentru a evita redescoperirea unor elemente aate de dinainte.
5.4. LOGICA 87

5.4 Logica
Sectiunea prezenta contine generalitati despre reprezentari logice si rationament.
Exista desigur detalii specice logicilor concrete ce se studiaza logica
propozitiilor, logica predicatelor, logica temporala, logica fuzzy.
Orice logica trebuie sa clarice doua aspecte: sintaxa si semantica. Sin-
taxa reprezinta o specicare a ceea ce este corect exprimat n logica respectiva
si se poate reprezenta sub forma de diagrame sau propozitii folosind simbo-
luri.
Semantica reprezinta semnicatia unui enunt. In cadrul logicii seman-
tica permite stabilirea unei valori de adevar pentru un enunt care este corect
formulat din punct de vedere sintactic. Mai mult, semantica trebuie sa spe-
cice valoarea de adevar pentru orice enunt fata de ecare lume posibila;
de exemplu, a > b este adevarata pentru a = 3 si b = 2, dar falsa pentru
a = b = 4.
O lume posibila sau set de valori atasat variabilelor se va numi de acum
nainte model si vom spune ca m este un model al enuntului a daca a este
adevarat pentru 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.
Denitia formala a deductiei este:

Definitia 10 Spunem ca din se deduce si notam |= daca n orice


model al enuntului avem ca si este adevarat.

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 presu-
punem ca agentul nu detecteaza curent de aer 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 aa gropi.
1
Pentru moment nu ne intereseaza cum anume se exprima aceste reguli, vom presupune
ca ele sunt reprezentate convenabil.
88 CAPITOLUL 5. AGENTI LOGICI

Fiecare din camere poate sa contina sau nu groapa, 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.
Aceasta metoda de vericare a posibilitatii de deducere se numeste algo-
ritmul vericarii modelelor. Vom dezvolta mai multi algoritmi de deductie;
daca avem un astfel de algoritm de deductie 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
vericare a modelelor este temeinic.
O alta proprietate pentru un algoritm inferential este cea de completitu-
dine 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 nita duce, evident, la un algoritm complet; pro-
prietatea este nsa esentiala pentru problemele n care multimea concluziilor
posibile este innita.

5.5 Logica propozitionala

5.5.1 Sintaxa
Enunturile atomice din logica propozitionala3 sunt elemente sintactice
indivizibile. Fiecare simbol corespunde unei propozitii care poate sa e
adevarata sau falsa. Exista doua simboluri propozitionale cu semnicatii
xate: Adevarat este propozitia tot timpul adevarata si Fals este propozitia
tot timpul falsa.
2
In limba engleza, n original: sound.
3
Numita si logica booleana.
5.5. LOGICA PROPOZITIONALA 89

Enunturile complexe sunt compuse din propozitii simple folosind conec-


torii logici. Cei cinci conectori sunt:

1. (non) o propozitie precum A este negarea lui A. Un literal este e


un enunt atomic (literal pozitiv), e negarea a unuia (literal negativ).

2. (si) o propozitie formata din doua propozitii legate prin precum


A B se numeste conjunctie; A B se citeste A si B

3. (sau) o propozitie ce foloseste , precum A B, se numeste


disjunctie; A B se citeste A sau B

4. (implica) o propozitie precum A B se numeste implicatie. Pre-


misa sau antecedentul implicatiei este A, iar concluzia sau consecventul
este B. A B se citeste A implica B sau daca A atunci B.

5. (echivalent, daca si numai daca) propozitia A B se mai numeste


biconditionala si se citeste A daca si numai daca B sau A este echi-
valent cu B.

Tabelul 5.1 da sintaxa folosita n logica propozitionala n forma BNF


(Backus-Naur Form).

Enunt Enunt atomic | Enunt complex


Enunt atomic Adevarat | Fals | simbol
Simbol P | Q | R | ...
Enunt complex (Enunt)
| (Enunt Enunt)
| (Enunt Enunt)
| (Enunt Enunt)
| (Enunt Enunt)

Tabela 5.1: Gramatica BNF pentru enunturile din logica propozitionala.

Parantezele sunt importante: ecare propozitie care este construita cu


conector binar este ncadrata ntre paranteze. Uneori acestea se pot omite,
90 CAPITOLUL 5. AGENTI LOGICI

dar numai daca nu duc la ambiguitati. Suplimentar, se deneste 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 tot semantica arata ca este ambigua expresia A B C.

5.5.2 Semantica

Semantica deneste 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.

Pentru propozitiile compuse se foloseste tabela de adevar data n tabelul


5.2 care arata cum se calculeaza valoarea propozitiei plecand de la elemen-
tele 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 adevarat.
S-a spus anterior ca o baza de cunostinte este o multime de enunturi. Dat
ind modul de calcul al valorii de adevar pentru o conjunctie, se poate spune
ca o BC de forma 1 , . . . , n se poate scrie ca: 1 . . . n .
5.5. LOGICA PROPOZITIONALA 91

p q p pq pq pq pq
adevarat adevarat fals adevarat adevarat adevarat adevarat
adevarat fals fals fals adevarat fals fals
fals adevarat adevarat fals adevarat adevarat fals
fals fals adevarat fals fals adevarat adevarat

Tabela 5.2: Tabela de adevar pentru logica propozitionala.

5.5.3 Exemplu: lumea monstrului n logica propozitionala


Pentru ecare 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 adevarata daca si numai daca se simte curent de aer n
aceeasi 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


aa 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 este R1 R2 R3 R4 R5 .

5.5.4 Inferenta n logica propozitionala


Scopul unei inferente este de a detemina daca BC |= , pentru un
dat. Primul algoritm pe care l dam se bazeaza pe implementarea directa a
denitiei 10: se enumera toate modelele si se verica daca este adevarata
92 CAPITOLUL 5. AGENTI LOGICI

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

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
verica 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). 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 teme-
inic, deoarece implementeaza direct denitia; este de asemenea si complet
deoarece se termina pentru orice baza de cunostinte si , numarul de modele
ind nit.
Complexitatea algoritmului este dictata de n, numarul de simboluri. Com-
plexitatea 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 prac-
tica sunt mai ecienti, dar pentru toti algoritmii inferentiali cunoscuti exista
5.5. LOGICA PROPOZITIONALA 93

un cel mai defavorabil caz care duce la complexitate de timp exponentiala.

5.5.5 Echivalenta, validitate si satisfiabilitate

Conceptele urmatoare sunt folosite n alti algoritmi care urmeaza a


prezentati.
Primul concept este legat de echivalenta logica, notata cu simbolul .
Doua propozitii si sunt echivalente daca si numai daca sunt adevarate
n aceleasi modele. Se poate vedea de exemplu ca P Q este echivalenta cu
Q P , prin vericare pe tabela de adevar.
O denitie alternativa a echivalentei este: daca si numai daca
|= si |= . 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 fata de
( ( )) (( ) ( )) distributivitatea lui fata de

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:
4
O astfel de propozitie se mai numeste si tautologie.
94 CAPITOLUL 5. AGENTI LOGICI

Teorema 4 In logica propozitionala, pentru orice propozitii si , avem ca


|= daca si numai daca propozitia este valida.

Ultimul concept este satisabilitatea. O propozitie este satisabila 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 verica daca se poate deduce din (adica daca este
adevarata) este echivalent cu a vedea daca este nesatisabila - de
fapt regasim procedeul demonstratiei prin reducere la absurd.

5.6 Tipare de rationament n logica propozitionala


Prezentam tiparele standard care pot aplicate pentru a deriva noi
propozitii; aceste tipare se mai numesc si reguli de inferenta.
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.
Alta regula este eliminarea lui si care spune ca dintro conjunctie ori-
care din termeni poate sa e dedus:


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

( ) ( )
si
( ) ( )

Exemplicam utilizarea regulilor de inferenta si a echivalentelor n lu-


mea monstrului. Continuam lista prezentata n sectiunea 5.5.3. Aplicand
5.6. TIPARE DE RATIONAMENT IN LOGICA PROPOZITIONALA 95

eliminarea biconditionala 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 contrapozitie 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 bazeaza pe aplicarea
unor reguli de inferenta. Oricare din algoritmii de cautare din capitolele 2 si 3
poate folosit pentru gasirea unei demonstratii, folosind ca stare initiala baza
de cunostinte iar ca pas urmator (actiune) oricare din regulile de inferenta.
Deoarece inferenta n logica propozitionala este NP-completa, s-ar pu-
tea spune ca o cautare de demonstratie nu poate sa e mai ecienta decat
enumerarea modelelor. In practica nsa, gasirea unei demonstratii este con-
siderabil mai ecienta, deoarece se evita propozitiile irelevante. De exemplu,
n demonstratia anterioara nu sa facut referire la propozitiile care contin
simbolurile B2,1 sau P3,1 .

5.6.1 Rezolutia
In mod evident, regulile de inferenta expuse anterior sunt temeinice; nu
este nsa evident daca sunt si complete, adica daca ele permit deducerea a
96 CAPITOLUL 5. AGENTI LOGICI

orice poate 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 fost prezenta, atunci
concluzia din demonstratia anterioara nu sar putut dovedi.
Introducem o singura regula de inferenta, numita rezolutie care produce
un algoritm de inferenta complet, daca este folosit n conjunctie cu un al-
goritm de cautare complet. Pentru lumea monstrului adaugam urmatoarele
fapte la baza de cunostinte:

R11 : B1,2

si
R12 : 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:
R16 : P1,1 P3,1

Putem, de asemenea, sa reducem P1,1 din R1 cu P1,1 din R15 si obtinem:

R17 : P3,1

Aceste reduceri exprima regula rezolutiei unitate, care se scrie formalizat


astfel:
l1 lk , m
l1 li1 li+1 lk
5.7. FORMA NORMALA CONJUNCTIVA 97

unde ecare lj (1 j k) este un literal iar li si m sunt literali comple-


mentari (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 , m 1 m n
l1 li1 li+1 lk m1 mj1 mj+1 mn
adica se pleaca de la doua clauze si se ajunge la una noua n care avem toti
literalii clauzelor initiale, mai putin doi termeni care sunt complementari.
Desigur, se presupune ca se aplica si reducerea literalilor duplicati, 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 e 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, deci si disjunctia lor este adevarata; aceasta din
urma disjunctie este exact concluzia regulii.
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 auto-
mat ca si AB este adevarata. Mai general, rezolutia poate folosita pentru
a conrma sau inrma orice propozitie, dar nu poate sa genereze singura toate
propozitiile care pot deduse pornind de la baza de cunostinte.

5.7 Forma normala conjunctiva


Regula de rezolutie se aplica numai disjunctiilor de literali, deci s-ar parea
ca se aplica doar bazelor de cunostinte si interogarilor care constau din ase-
menea forme. Se poate arata ca orice expresie din logica propozitionala poate
rescrisa sub forma unei conjunctii de disjuntii, asa numita forma normala
conjunctiva (FNC).
98 CAPITOLUL 5. AGENTI LOGICI

De exemplu, pentru propozitia: B1,1 (P1,2 P2,1 ) se obtine FNC echi-


valenta 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. Aplicand legea lui de Morgan pentru ( ) ( ) obtinem:

(B1,1 P1,2 P2,1 ) ((P1,2 P2,1 ) B1,1 )

4. Aplicam distributivitatea lui asupra lui si obtinem FNC:

(B1,1 P1,2 P2,1 ) (P1,2 B1,1 ) (P2,1 B1,1 )

5.8 Algoritmul de rezolutie


Procedurile de inferenta bazate pe rezolutie lucreaza pe principiul redu-
cerii la absurd, adica pentru a arata ca BC |= , aratam ca (BC ) este
nesatisabila.
Algoritmul este aratat n gura 5.3. Primul pas este de a converti BC
n FNC. Apoi, pentru ecare 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. doua clauze produc clauza vida, caz n care din BC se poate deduce .

2. nu se ajunge la clauza vida si nu exista noi clauze care sa e adaugate


la setul de clauze; n acest caz din BC nu se poate deduce ;
5.8. ALGORITMUL DE REZOLUTIE 99

Figura 5.3: Algoritm de rezolutie pentru logica propozitionala. Functia


LP-Rezolva returneaza setul de clauze care se obtine prin combinarea ce-
lor doua intrari.
100 CAPITOLUL 5. AGENTI LOGICI

Figura 5.4: Aplicare partiala a algoritmului pentru BC = R2 R4 si =


P1,2 . Se arata evolutia pana n momentul obtinerii clauzei vide.

Clauza vida este echivalenta cu Fals, deoarece o clauza este adevarata


daca si numai daca cel putin un termen al ei este adevarat; neind cazul,
nseamna ca FNC data de BC evolueaza la un enunt care contine
conjunctie cu Fals, deci valoarea de adevar a ntregii expresii date n FNC
este falsa. Din principiul reducerii la absurd avem ca BC |= .

O aplicare partiala a algoritmului de rezolutie pentru BC = R2 R4 si


= P1,2 este data n gura 5.4. Tot din gura observam ca obtinem, de
exemplu, B1,1 P1,2 B1,1 care se reduce la AdevaratP1,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 X este
echivalent cu X, pentru orice expresie X.

Se deneste nchiderea rezolutiva a unei propozitii aate n FNC ca -


ind setul tuturor clauzelor care se obtin din aplicarea repetata a regulii de
rezolutie peste propozitie sau clauze derivate din ea. Acesta multime este
nita, deoarece numarul de combinatii n disjunctii al unui set nit de sim-
boluri este nit (se aplica si factorizarea).

Completitudinea este data de teorema:

Teorema 5 (Teorema de rezolutie, [1]) Daca un set de clauze este ne-


satisabil, atunci nchiderea rezolutiva a acestor clauze contine clauza vida.
5.9. INLANTUIREA INAINTE SI INAPOI 101

5.9 Inlantuirea 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 disjunctie 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 scrisa ca o implicatie a carei premisa este o


conjunctie cu literali pozitivi si drept concluzie un singur literal pozitiv.
De exemplu, A B C este echivalenta cu A B C am aplicat
eliminarea implicatiei si regula lui de Morgan. Aceasta din urma forma
este 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:


A B), atunci se poate scrie echivalent A B F als si apoi ca
A B F als.

2. Inferentele cu clauze Horn pot facute cu doi algoritmi de de inferenta


care apar ca naturali, nlantuirea nainte si nlantuirea napoi.

3. Algoritmii de deductie care folosesc clauze Horn sunt liniari n dimen-


siunea BC.

Algoritmul de nlantuire nainte LP-InlantuireInainte(BC, q) deter-


mina daca un simbol propozitional q poate dedus din baza de cunostinte
aate n forma Horn. Daca premisele unei implicatii sunt cunoscute ca
adevarate, atunci concluzia implicatiei este adevarata si este adaugata la
baza de cunostinte. Procedeul se repeta pana cand e se deduce q, e nu se
mai poate adaunga niciun simbol propozitional nou la BC. Algoritmul este
dat n gura 5.5.
102 CAPITOLUL 5. AGENTI LOGICI

Figura 5.5: Algoritmul de nlantuire nainte.


5.9. INLANTUIREA INAINTE SI INAPOI 103

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 enunturi reductibile la clauze Horn:

P Q
LM P
BLM
AP L
AB L
A
B

Acestei baze de cunostinte i se poate asocia un graf de tipul sisau, con-


struit astfel: nodurile lui sunt simbolurile propozitionale, arcele de graf unite
reprezinta operatorul , n timp ce arcele neunite corespund disjunctiei. Fi-
gura 5.6 reprezinta graful sisau asociat bazei de cunostinte date, mpreuna
cu evolutia cunostintelor. In dreptul ecarui arc de jonctiune de arce se aa
numarul de premise care mai trebuie mai demonstrate pentru a se putea
deduce concluzia aata 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 din-
spre ipoteze. Spre deosebire de regula rezolutiei, poate folosita pentru
a genera o lista de concluzii care pot 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 verica 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
104 CAPITOLUL 5. AGENTI LOGICI

Q Q

1 1
P P
2 2
M M
2 2
L L

2 2 1 1

A B A B

(a) Aplicarea premisei A. (b) Numarul de premise care


mai trebuie demonstrate pen-
tru dovedirea lui L devine 1. Se
aplica premisa B.

Q Q

1 1
P P
2 1
M M
1 0
L L

1 0 1 0

A B A B

(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: Exemplicarea algoritmului de nlantuire nainte.


5.9. INLANTUIREA INAINTE SI INAPOI 105

Q Q

1 0
P P
0 0
M M
0 0
L L

1 0 0 0

A B A B

(a) Numarul de premise care (b) Numarul de premise care


mai trebuie demonstrate pen- mai trebuie demonstrate pen-
tru dovedirea lui P devine 0. Se tru dovedirea lui Q devine 0, la
aplica premisa P . fel ca si pentru dovedirea lui L
folosind conjunctia (dar despre
L se stie deja ca poate fi de-
monstrat). Astfel, sa demon-
strat concluzia Q.

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


106 CAPITOLUL 5. AGENTI LOGICI

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 gura 5.8.
De multe ori, costul unei nlantuiri napoi este mult mai mic decat dimen-
siunea bazei de cunostinte (desi o implementare ecienta are costul liniar, n
cel mai defavorabil caz).

5.10 Inferenta propozitionala efectiva


Descriem aici doua variante de algoritmi ecienti pentru inferenta propozitionala
bazate pe vericarea de modele: unul este bazat pe cautare backtracking, al-
tul pleaca de la cautare prin metoda ascensiunii.
Ambele metode verica satisabilitatea, adica determinarea unui model
(valori pentru variabile) astfel ncat sa se verice 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 rezul-
tate 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 me-
toda TA-deductie (gura 5.2), este o ncercare pe rand a modelelor, dar cu
urmatoarele mbunatatiri:

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 xata. Similar, o conjunctie 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 ecare clauza. Este usor de vazut ca daca o propozitie are
5.10. INFERENTA PROPOZITIONALA EFECTIVA 107

Q Q

P P

M M

L L

A B A B

(a) Se cere demonstrarea lui Q. (b) Demonstrarea ca Q =


Simbolurile A si B sunt cu- adevarat cere demonstrarea ca
noscute ca avand valoarea de P = adevarat.
adevar adevarat.

Q Q

P P

M M

L L

A B A B

(c) Demonstrarea ca P = (d) Demonstrarea ca L este


adevarat cere demonstrarea ca adevarat cere ca sa 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: Exemplicarea algoritmului de nlantuire napoi.


108 CAPITOLUL 5. AGENTI LOGICI

Q Q

P P

M M

L L

A B A B

(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.

Q Q

P P

M M

L L

A B A B

(c) Deoarece L si B sunt (d) Deoarece L si M 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: Exemplicarea algoritmului de nlantuire napoi (continuare).


5.10. INFERENTA PROPOZITIONALA EFECTIVA 109

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 litera-
lii, 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.

5.10.2 Algoritm bazat pe cautare locala


Algoritmii de cautare locala pot aplicati direct problemelor de satisabi-
litate, daca se da o functie de evaluare adecvata. Se alege de regula numarul
de clauze nesatisfacute. Algoritmii de acest tip schimba la ecare pas va-
loarea unei variabile; pentru a iesi din minimele locale se folosesc diferite
variante de randomizare.
Unul din cei mai simpli si mai ecienti algoritmi rezultati se numeste Wa-
lkSat (gura 5.10). La ecare iteratie algoritmul alege o clauza nesatisfacuta
si alege aleator care dintre variabile sa si schimbe valoarea. Alegerea varia-
bilei se face aleator:

se alege variabila care minimizeaza numarul de clauze nesatisfacute,


sau

se alege simbol n mod aleator

Daca algoritmul returneaza un model, atunci acest model satisface cla-


uzele. Daca nsa se returneaza esuare, atunci nu se poate sti sigur daca
expresia este nesatisabila sau daca ar trebui ca algoritmul sa e lasat sa
ruleze mai mult (dar nu se stie cat de mult).
110 CAPITOLUL 5. AGENTI LOGICI

Figura 5.10: Algoritmul Walksat pentru vericarea satisabilitatii unui set


de clauze.
Capitolul 6

Logica de ordinul ntai

6.1 Introducere
Logica propozitionala se dovedeste a un limbaj neadecvat pentru re-
prezentarea cunostintelor dintr-un mediu complex, ntrun mod concis. De
exemplu, pentru a spune ca ntr-o camera vecina (pe verticala sau orizon-
tala) cu cea de coordonate [1, 1] n care se simte briza de aer exista o groapa,
scriem astfel:
B1,1 P1,2 P2,1

si ceva asemanator pentru ecare camera din joc. Limbajul natural este
mai concis (comparati camerele vecine cu o camera n care se simte curent
de aer contin o groapa cu cele n2 propozitii care trebuie scrise n logica
propozitionala pentru a exprima acelasi lucru). Pe de alta parte, limbajul
natural poate si imprecis. Ne dorim deci o varianta de limbaj care sa e
concis, exact n exprimare si sa permita deductii.
Alte aspecte pe care le dorim de la un limbaj de reprezentare a cunostintelor
sunt:

natura declarativa cunostintele dintrun domeniu vrem sa e repre-


zentate separat de mecanismul inferential; acesta din urma trebuie sa
e cat mai general aplicabil. Este o abordare diferita de cea a limbajelor

111
112 CAPITOLUL 6. LOGICA DE ORDINUL INTAI

procedurale (Java, C#, C++) unde structurile de date obtinute dupa


modelarea problemei sunt puternic cuplate cu operatorii de prelucrare;

semantica compozitionala semantica unui enunt exprimat ntrun


asemenea limbaj trebuie sa e dictata de semantica partilor care l
compun;

independenta de context se impune obtinerea acelorasi concluzii,


daca se reaplica mecanismul inferential pornind de la o aceeasi baza de
cunostinte;

Mai mult, prin compararea cu ceea ce ne pune la dispozitie limbajul


natural, ne dam seama ca dorim sa putem lucra cu:

obiecte: oameni, culori, numere etc;

relatii ntre obiecte: relatii unare (nalt, rosu, prim) sau n-are: mai
mare decat, frate cu, compus din;

functii: aplicate pe unul sau mai multe obiecte duc la obtinerea altor
obiecte: tatal lui, succesorul lui etc.

Limbajul logicii de ordinul ntai trateaza satisfacator toate aceste aspecte.


Cea mai mare diferenta ntre logica propozitionala si logica predicatelor
este ca n prima se exprima fapte care au sau nu loc. Fiecare fapt are una
din doua valori: adevarat sau fals. Logica predicatelor nsa se refera la o
multime de obiecte ntre care exista sau nu relatii.

6.2 Sintaxa si semantica logicii de ordinul ntai

6.2.1 Modele pentru logica de ordinul ntai


Modelele pentru logica propozitionala constau n perechi de valori de
forma simbol = valoare, unde valoarea poate adevarat sau fals. Pen-
tru logica de ordinul ntai lucrurile sunt substantial diferite: se lucreaza cu
6.2. SINTAXA SI SEMANTICA LOGICII DE ORDINUL INTAI 113

obiecte, care pot lua orice valoare dintr-o multime specicata, posibil innita.
Domeniul unui model este setul de obiecte pe care le contine.
Sa presupunem ca pornim de la urmatoarea stare: exista doua persoane,
John si Richard, care sunt frati si regi (la momente diferite de timp); exista o
coroana care se aa pe capul unuia dintre ei; se face referire la piciorul stang
al oricaruia din cei doi via o functie, PiciorulStang.
O relatie (cum ar frate(John, Richard), frate(Richard, John) si pe-
Cap(coroana, John)) este o multime de tupluri de obiecte care sunt legate
prin acea relatie. Modelul poate de asemenea sa contina relatii unare numite
si proprietati: rege(John), persoana(John), persoana(Richard).
Unele relatii sunt mai natural de vazut ca functii; daca pentru un obiect
oarecare (notat o1 ), relatia asigura o legatura cu un unic obiect, atunci ea
poate vazuta ca o functie de forma relatie(o1 )=o2 . De exemplu, avem
legaturile:
Richard piciorul stang al lui Richard

John piciorul stang al lui John

Functiile trebuie sa e totale, adica pentru orice argument sa asocieze un


rezultat. Astfel, piciorul stang al lui John trebuie sa aiba si el un picior
stang; o asemenea problema se rezolva introducand un obiect ctiv care sa
e atasat obiectelor pentru care nu exista, sub o interpretare rezonabila, ceva
corespunzator.

6.2.2 Simboluri si interpretari


Elementele din sintaxa logicii propozitionale sunt:

constante: John, Richard etc

relatii (predicate): Frate, > etc

functii: PiciorulStang, radical etc

variabile: x, y etc
114 CAPITOLUL 6. LOGICA DE ORDINUL INTAI

conective: , , , ,

egalitatea: =

cuanticatori: ,

Gramatica n forma BNF este data n tabelul 6.1.

Enunt Enunt Atomic


| (Enunt Conectiva Enunt)
| Cuanticator Variabila . . . Enunt
| Enunt
Enunt Atomic Predicat(Termen, . . . ) | Termen = Termen
Termen Functie(Termen, . . . )
| Constanta
| Variabila
Conectiva | | | |
Cuanticator |
Constanta A | X1 | John | . . .
Variabila a | x | ...
Predicat Frate | . . .
Functie TatalLui | PiciorulStang | . . .

Tabela 6.1: Forma BNF pentru sintaxa din logica predicatelor.

Semantica trebuie sa lege enunturile de modele pentru a se putea deter-


mina valoarea de adevar. Avem deci nevoie de o interpretare care sa specice
exact care obiecte, relatii si functii sunt legate simboluri de constante, predi-
cate si functii. Una din interpretarile posibile si care este adecvata exemplului
nostru este:

constanta Richard se refera la persoana Richard; analog constanta


John;

predicatul Frate se refera la relatia dintre doua persoane


6.2. SINTAXA SI SEMANTICA LOGICII DE ORDINUL INTAI 115

functia PiciorulStang se refera la PiciorulStang pomenit la pagina


113.

Exista si alte interpretari care se pot face, de exemplu se poate lega


constanta Richard de persoana John sau de coroana; sau se poate ca diferite
nume sa se refere la acelasi obiect.
Valoarea de adevar a ecarui enunt se deneste n raport cu un model si o
interpretare pentru simbolurile din enunt. Ca atare, deducerea, validitatea,
satisabilitatea sunt denite relativ la toate modelele si toate interpretarile
posibile. Subliniem ca modelele pot innite, de exemplu daca se refera la
multimea numerelor naturale.

6.2.3 Termeni
Un termen este o expresie logica ce se refera la un obiect constante,
functii, relatii. Un simbol pentru functii este util pentru a pune n legatura
obiecte (de exemplu constanta John cu constanta piciorul stang al lui John),
cu efect benec asupra reducerii numarului de simboluri folosit pentru con-
stante. Este un alt mod de a denumi obiecte, plecand de la altele.

6.2.4 Propozitii atomice


Sunt folosite pentru a enunta fapte. O propozitie atomica este de regula
formata dintr-un simbol predicativ urmat de o lista de termeni: Frate(John,
Richard). Argumentele pot si termeni complecsi obtinuti prin aplicare de
functii: Casatorit(Tata(John), Mama(Richard)).
Un enunt atomic este adevarat ntrun model dat si sub o anumita in-
terpretare daca are loc relatia referita de simbolul asociat predicatului ntre
obiectele referite de argumente.

6.2.5 Enunturi complexe


Prin utilizarea conectivelor logice se pot construi enunturi complexe, pre-
cum n calculul propozitional. Semantica enunturilor complexe formate cu
116 CAPITOLUL 6. LOGICA DE ORDINUL INTAI

conective logice este identica cu cea din logica propozitiilor.

6.2.6 Cuantificatori
Cuanticatorii permit exprimarea de proprietati pentru colectii de obiecte,
n loc de a le enumera pe toate (de aici si dorita concizie a limbajului). Cu-
anticatorii sunt nsotiti de o variabila care poate servi ca argument pentru
functii si relatii. Un termen care nu are variabile se numeste termen legat.
Enuntul x P (x) arata ca pentru orice obiect x, P este adevarata.
Sa considera de exemplu propozitia x Rege(x) P ersoana(x). Pentru
a putea spune ca este adevarata, toate cele cinci propozitii de mai jos ar
trebui sa e adevarate:

Richard este rege Richard este persoana


John este rege John este persoana
Piciorul stang al lui Richard este rege Piciorul stang al lui Richard este persoana
Piciorul stang al lui John este rege Piciorul stang al lui John este persoana
Coroana este rege Coroana este persoana
Daca pentru primele doua cazuri nu avem nici o problema din punct de
vedere al raportarii la realitate, ultimele trei propozitii sunt ciudate. Dar
sa ne amintim ca n logica propozitionala falsul implica orice, asa ca nu se
poate spune nimic despre valoarea de adevar a a concluziilor (Coroana este
persoana s.a.). Oricum, pornind de la o premisa falsa, ntreaga implicatie
este adevarata.
Cele cinci propozitii de mai sus care au rezultat din transcrierea n limbaj
propozitional, conform actiunii lui formeaza interpretarea extinsa.
Calicatorul existential are urmatoarea semantica: x P (x) este adevarata
ntrun model si sub o intepretare data daca este adevarata pentru cel putin
o interpretare extinsa.
Cuanticatorii pot imbricati, iar ordinea de precizare a lor este im-
portanta. De exemplu, enuntul x y M aiM are(y, x) care e adevarat pen-
tru multimea numerelor naturale. Daca inversam ordinea cuanticatorilor,
6.3. PROCESUL DE MANAGEMENT AL CUNOSTINTELOR 117

atunci sar obtine y xM aiM are(y, x) care nu este adevarata pentru x si


y numere naturale.
Exista o stransa legatura ntre cei doi cuanticatori. Mai exact, se poate
renunta la oricare dintre ei, deoarece:
x P (x) (x P (x))
x P (x) (x P (x))
dar i mentinem pe amandoi, pentru a obtine exprimari mai naturale.

6.3 Procesul de management al cunostintelor


Proiectele de management al cunostintelor variaza mult, dar toate includ
pasii:

1. Identicarea temei de lucru. Inginerul de cunostinte trebuie sa schiteze


domeniul de ntrebari pentru care baza de cunostinte asigura suport
si tipul de fapte care vor disponibile pentru ecare instanta de pro-
blema. De exemplu, pentru lumea monstrului, ce anume se doreste:
interogarea despre starile diferitelor camere, sau sa se stie care este
actiunea urmatoare?

2. Asamblarea cunostintelor relevante. Inginerul de cunostinte trebuie sa


e expert n domeniul abordat, sau sa poata sa colaboreze cu experti
umani pentru a putea extrage ceea ce se cunoaste n domeniu. La acest
pas de achizitie a cunostintelor nu trebuie sa se formalizeze cunostintele,
ci doar sa se nteleaga care este domeniul problemei si cum se lucreaza
n el.

3. Deciderea asupra unui vocabular de predicate, functii si constante. Se


translateaza conceptele importante ale domeniului pentru care se aplica
procesul n nume convenabil alese. Rezultatul este un vocabular care
formeaza ontologia1 domeniului.
1
Ontologia studiaza existenta ca atare, trasaturile si principiile comune oricarei
existente.
118 CAPITOLUL 6. LOGICA DE ORDINUL INTAI

4. Codicarea cunostintelor generale despre domeniu. Inginerul de cunostinte


scrie axiomele pentru toti termenii de vocabular. Este bine sa se faca
aici si specicarea semnicatiilor termenilor.

5. Codicarea unei descrieri pentru o problema concreta. Consta n scrie-


rea enunturilor atomice despre instante ale conceptelor care sunt deja
parte a ontologiei. Este echivalentul furnizarii datelor pentru progra-
mele din limbajele procedurale.

6. Punerea de ntrebari si obtinerea de raspunsuri. Procedura inferentiala


opereaza asupra axiomelor si faptelor specice problemei pentru a obtine
noi fapte de care suntem interesati.

7. Depanarea bazei de cunostinte. Daca de exemplu lipseste o axioma,


unele interogari nu vor primi raspuns. Se poate cere unui astfel de
sistem sa expliciteze pasii pe care i parcurge, pentru a vedea unde se
blocheaza.

6.4 Inferenta propozitionala comparata cu inferenta


de ordinul ntai
Introducem o tehnica care permite realizarea de inferente care pot apli-
cate unor enunturi cu cuanticatori obtinanduse enunturi fara cuantica-
tori. Se poate intui astfel ca inferenta de ordinul ntai are o varianta: trecerea
la enunturi din logica propozitionala si folosirea unui mecanism inferential
din logica propozitiilor.

6.4.1 Reguli de inferenta pentru cuantificatori


Sa presupunem ca avem enuntul:

x Rege(x) Lacom(x) Rau(x)

Data ind semantica lui rezulta ca propozitiile urmatoare sunt adevarate:


6.4. INFERENTA PROPOZITIONALA COMPARATA CU INFERENTA DE ORDINUL INTAI119

Rege(John) Lacom(John) Rau(John)


Rege(Richard) Lacom(Richard) Rau(Richard)
Rege(T atalLui(John)) Lacom(T atalLui(John)) Rau(T atalLui(John))

Regula instantierii universale spune ca putem deduce orice propozitie


obtinuta prin substituirea unei variabile cu un termen legat (care nu are
nicio variabila). Sa notam cu Subst(, ) rezultatul aplicarii substituirii n
. Atunci:
v
Subst({v/g}, )
Cele trei enunturi propozitionale date anterior sunt obtinute prin substitutiile:
{x/John}, {x/Richard}, {x/T atalLui(John)}.
Regula instantierii existentiale este: pentru orice enunt , pentru orice
variabila v si un simbol constant k care nu apare n baza de cunostinte avem
ca:
v
Subst({v/k}, )
De exemplu, din enuntul x Coroana(x) P eCap(x, John) putem deduce:
Coroana(C1 ) P eCap(C1 , John) unde C1 nu mai apare undeva n baza de
cunostinte. Practic, ceea ce face instantierea existentiala este sa dea un
nume pentru obiectul care satisface conditia. Noul nume se mai cheama si
constanta Skolem. Instantierea existentiala poate folosita o singura data si
propozitia care are acest cuanticator poate eliminata.

6.4.2 Reducerea la inferenta propozitionala


Pe baza mecanismului de mai sus: reducerea unor enunturi cu cuanti-
catori la unele fara se poate reduce inferenta de ordinul ntai la inferenta
propozitionala. De fapt, ceea ce trebuie sa facem este sa nlocuim un enunt
cu care are cuanticator universal cu toate enunturile n care variabila este
nlocuita cu toate valorile posibile. De exemplu, baza de cunostinte din logica
predicatelor:
120 CAPITOLUL 6. LOGICA DE ORDINUL INTAI

x Rege(x) Lacom(x) Rau(x)


Rege(John)
Lacom(John)
F rate(Richard, John)
Se aplica instantierea universala primului enunt folosind toate substitui-
rile de variabile cu termeni legati din vocabularul BC, deci {x/John} si
{x/Richard} si obtinem:

Rege(John) Lacom(John) Rau(John)


Rege(Richard) Lacom(Richard) Rau(Richard)
Baza de cunostinte rezultata (se adauga, evident, si ultimele 3 propozitii
din BC initiala) este n forma propozitionala, daca substituim enunturile cu
valori legate Rege(John), Lacom(John) etc cu simboluri propozitionale
, etc. Se poate aplica oricare din algoritmii din capitolul precedent si
se obtin concluzii Rau(John).
Exista nsa o problema: daca BC include un simbol atasat unei functii (de
exemplu TatalLui), atunci prin propozitionalizare se ajunge la o BC innita,
deoarece putem substitui pe x cu John, T atalLui(John), T atalLui(T atalLui(John)),
si tot asa la innit. Exista nsa un raspuns, datorat lui Herbrand care spune
ca daca un enunt este implicat de catre baza de cunostinte initiala, exprimata
sub forma de predicate, atunci exista o demonstratie care pleaca de la un set
nit de enunturi n forma propozitionala, prin care se poate deduce enuntul
respectiv. Se poate genera o astfel de demonstratie plecand de la nlocuirea
lui x cu John si Richard (deci adancime 0), apoi cu T atalLui(John) si
T atalLui(Richard) (adancime 1) si cu termeni de adancime din ce n ce mai
mare.
Ce se ntampla daca enuntul dat ca posibila concluzie nu este deducti-
bil din baza de cunostinte? Teorema lui Herbrand (sau alte rezultate) nu
spun nimic n acest sens. Procedura descrisa mai sus va genera termeni cu
adancime din ce n ce mai mare, dar neind o limitare data, procedeul se va
repeta la nesfarsit. Altfel zis, problema implicatiei n logica de ordinul ntai
este semidecidabila adica exista algoritmi care raspund pozitiv pentru un
6.4. INFERENTA PROPOZITIONALA COMPARATA CU INFERENTA DE ORDINUL INTAI121

enunt care este deductibil din BC, dar nu exista algoritm care de asemenea
sa raspunda negativ la ecare enunt nedeductibil.
122 CAPITOLUL 6. LOGICA DE ORDINUL INTAI
Capitolul 7

Sisteme fuzzy

7.1 Prezentare generala


Capitolul contine o introducere a logicii fuzzy si multimilor fuzzy1 . Dome-
niile sunt legate de modelarea incertitudinii din lumea reala, de rationamentul
aproximativ, de imprecizia n exprimare. Majoritatea conceptelor folosite n
lumea reala sunt neclare, vagi, ambigue, dar cu toate aceste oamenii opereaza
cu ele foarte bine.
Termenul de fuzzy a fost introdus de catre Lot A. Zadeh, profesor la
University of California at Berkley, n lucrarea sa Fuzzy Sets [9]. Multimile
fuzzy sau multimile nuantate se bazeaza pe conceptul de grad de apartenenta
a unui element la o multime; acest grad este un numar din intervalul [0, 1],
spre deosebire de multimile clasice care sunt vazute ca asignand grade de
apartenenta e 0, e 12 . Intro multime fuzzy, gradul de apartenenta se
exprima printr-o functie cu valori n intervalul [0, 1].
Alaturi de teoria probabilitatilor, sistemele fuzzy sunt folosite pentru mo-
1
Fuzzy: vag, neclar; n acest context este tradus n limba romana si ca nuantat.
2
Se poate face o paralela cu functia caracteristica definita pentru o submultime A a lui
X: (
1 daca x A
fA (x) =
0 daca x X \ A

123
124 CAPITOLUL 7. SISTEME FUZZY

delarea incertitudinii. Incertitudinea existenta n ceea ce priveste rezultatul


aruncarii unui zar este modelata prin variabile aleatoare - umrarindu-se de-
terminarea probabilitatilor asociate diferitelor valori, sau comportamentul
obtinut prin repetarea experimentelor etc. Tipul de incertitudine pe care l
abordeaza sistemele fuzzy este nsa diferit. De exemplu, propozitia Maria
este destul de nalta nu are o incertitudine de tip statistic n ea: nu este
vorba de evenimente aleatoare repetate sau conditionari probabiliste. Carac-
terul vag al unui sistem este o caracteristica intrinseca a sa; ea nu este data
n vreun fel de observatii repetate sau ncrederea n legatura dintre o stare
cunoscuta si una posibil inuentata de ea.
Insistand pe directia aceasta, putem arma ca modul n care se enunta
regulile de productie bazate pe logica traditionala:

Daca A atunci B

este aplicabil doar pentru cazul n care caracterul vag lipseste cu desavarsire,
de exemplu n matematica. Totusi, considerand regula: Daca e nnorat,
atunci va ploua realizam ca enuntul este vag, cel putin din cauza urmatoare:
notiunea de nnorat este vaga rareori cerul este n totalitate acoperit de
nori; vorbim de partial nnorat sau un pic nnorat sau foarte nnorat
si niciunul din acesti termeni nu are o caracterizare clara; daca nu luam
n considerare aceste nuante, atunci regula anterioara ar utilizabila doar
pentru cazul n care cerul e complet acoperit de nori. Chiar si ploaia poate
nuantata picura, ploua torential etc.
Logica fuzzy este asociata deci cu incertitudinea nestatistica. Trasatura
esentiala a teoriei multimilor si a logicii fuzzy este manipularea riguroasa a
incertitudinii. Se pun la dispozitie modalitati de denire, descriere si analiza
a caracteristicilor vagi.

7.2 Teoria multimilor fuzzy


In teoria clasica a multimilor, un element e face parte dintr-o multime, e
nu. In multimile fuzzy nsa, apartenenta la o multime se exprima printrun
7.2. TEORIA MULTIMILOR FUZZY 125

grad de apartenenta, pentru care valoarea este un numar cuprins ntre 0 si 1.


Putem vedea aceasta ca o generalizare a multimilor clasice: daca un element
apartine unei multimi clasice, atunci valoarea functiei de apartenenta este 1,
altfel 0 - de fapt, functia caracteristica a unei multimi.
Sa consideram de exemplu multimea oamenilor nalti. Evident, putem
spune ca o persoana care are naltimea de 2.10 metri face parte din aceasta
multime. La fel se poate spune si despre un om cu naltimea de 2 m sau
de 1.90 m; putem nuanta aici faptele, spunand ca ultimele doua persoane
apartin ntr-o masura mai mica acestei multimi. O persoana de 1.80 m sau
mai putin nu mai poate considerata ca facand parte din multimea oamenilor
nalti. Solutia schitata aici este asignarea unor grade de apartenenta la o
multime pentru elementele n discutie. Sa consideram tabelul 7.1 n care
pentru diferite exemple de naltimi vom specica gradul de apartenenta la
multimea considerata. Multimea oamenilor nalti este considerata din acest
moment o multime fuzzy (nuantata).

Persoana Inaltime Grad de apartenenta


A 2.10 m 1
B 2m 0.8
C 1.90 m 0.4
D 1.80 m 0
E 1.70 m 0

Tabela 7.1: Inaltimi si gradul de apartenenta la multimea fuzzy a oamenilor


nalti.

Observam ca o multime fuzzy se poate specica prin perechi de elemente


de grad de apartenenta/element. O notatie mai compacta pentru tabelul 7.1
este:
Inalt = {1.0/2.10, 0.8/2, 0.4/1.90, 0/1.80, 0/1.70}
Valorile extreme 0 si 1 se pot interpreta astfel: daca A (x) = 1 atunci spunem
ca x cu certitudine apartine lui A, daca A (x) = 0 atunci x cu certitudine
nu apartine lui A.
126 CAPITOLUL 7. SISTEME FUZZY

O alta varianta este specicarea unei functii de apartenenta A (x), unde


A este o functie cu valori n intervalul [0, 1], A este o multime fuzzy, x
este un element din universul discursului pentru care se stabileste gradul de
apartenenta la multimea A. Astfel, (2.10 m) = 1, (1.90 m) = 0.4
Inalt Inalt
etc.
Functiile de apartenenta se pot reprezenta grac, pe axa orizontala ind
valori al elementelor, iar pe verticala valoarea functiei de apartenenta, precum
n gurile 7.1 sau 7.2.

Figura 7.1: Reprezentarea graca a functiei de apartenenta pentru multimea


nalt

Figura 7.2: Reprezentarea graca a functiei de apartenenta pentru multimea


cald

Formele poligonale date n gracele din gura 7.1 si 7.2 nu sunt singurele
care se pot folosi. Se poate de exemplu utiliza o functie de tip Gaussian
pentru modelarea gradului de apartenenta:

(T 25 )2
Cald (T ) = e 50
7.3. OPERATII CU MULTIMI FUZZY 127

unde T este temperatura exprimata n grade Celsius. Totusi, functiile for-


mate cu portiuni liniare sunt mai usor de calculat si n practica au un compor-
tament bun; eventuala lor nederivabilitate nu este o problema. Din ratiuni
evidente, spunem ca functia din gura 7.2 este triunghiulara.
In sistemele fuzzy un element poate sa apartina la doua multimi fuzzy,
simultan. De exemplu, o persoana cu naltimea de 1.83 metri face parte
din multimea oamenilor nalti n masura 0.13 si totodata apartine multimii
oamenilor de naltime medie n masura 0.8 - a se vedea gracele din gura
7.3. Remarcam ca notiunile nu se exclud reciproc.

Figura 7.3: Valorile fuzzy mediu si nalt reprezentate simultan

7.3 Operatii cu multimi fuzzy


Rationamentul presupune operatii logice; o mare parte din notiunile si
operatiile din algebra booleana au fost preluate si adaptate la logica fuzzy.
Inainte de a deni aceste operatii, este cazul sa enumeram doua parado-
xuri din logica binara:

1. (Paradoxul mincinosului, paradoxul cretanului) O persoana spune: eu


mint. Daca presupunem ca aceasta propozitie este adevarata, atunci
nseamna ca spusele persoanei sunt false, deci de fapt ea nu minte,
ceea ce e o contradictie cu presupunerea initiala. Daca presupunem ca
armatia persoanei este falsa, atunci nseamna ca dimpotriva, persoana
3
Valoarea exacta se afla intersectand o dreapta verticala care trece prin valoarea 1.83
de pe abcisa cu graficul functiei de apartenenta.
128 CAPITOLUL 7. SISTEME FUZZY

nu minte, deci din nou contradictie cu presupunerea noastra. Oricare


din cele doua valori de adevar am vrea sa asociem armatiei eu mint,
ajungem la o contradictie. Ori, cum doar una din valorile Adevarat si
Fals pot asociate unei propozitii4 , avem un paradox.

2. (Paradoxul barbierului) Intrun sat exista un barbier care barbiereste


pe toti barbatii care nu se barbieresc singuri. Care este valoarea de
adevar a propozitiei Barbierul se barbiereste singur? Printr-un pro-
cedeu asemanator cu cel anterior, se ajunge la concluzia ca niciuna din
cele doua valori de adevar nu pot asociate propozitiei, pentru ca sar
ajunge la contradictie.

Aceste probleme sunt rezolvate de catre logica fuzzy, putanduse da valori


de adevar pentru propozitiile discutate. Intuitiv, pentru ambele armatii am
putea spune ca ele sunt tot atat de adevarate pe cat sunt de false.
Vom trece acum la denirea operatiilor pentru multimi fuzzy. Denitiile
i apartin lui Zadeh.

7.3.1 Egalitatea multimilor fuzzy


In teoria clasica a multimilor, doua multimi sunt egale daca au exact
aceleasi elemente. Pentru ca o multime fuzzy nseamna elemente cu grad de
apartenenta la ea, spunem ca doua multimi fuzzy sunt egale daca pentru do-
menii de valori identice au exact aceleasi valori ale functiilor de apartenenta.

7.3.2 Incluziunea multimilor fuzzy


In teoria clasica a multimilor, o multime A este o submultime a multimii
B daca orice element din A se gaseste si n B. Pentru cazul multimilor
fuzzy, folosim urmatorul exemplu ca suport intuitiv pentru denirea inclu-
ziunii: multimea oamenilor foarte nalti este inclusa n multimea oamenilor
4
Conform principiului tertului exclus, a treia varianta nu este posibila.
7.3. OPERATII CU MULTIMI FUZZY 129

nalti. Evident, pentru un element x pentru care foarte nalt (x) = m, va-
loarea asociata lui fata de de multimea oamenilor nalti este chiar mai mare:
nalt (x) = m + , > 0. Ca atare, spunem ca multimea fuzzy A este in-
clusa n multimea fuzzy B daca cele doua multimi contin aceleasi elemente
si A (x) B (x), x. Desigur, si alte denitii sunt posibile.

7.3.3 Complementara unei multimi fuzzy


In teoria clasica a multimilor, complementul unei multimi A este multimea
formata din toate elementele care nu apartin lui A.
Pentru denitia relativ la multimi fuzzy, pornim de la un exemplu: consi-
deram multimea oamenilor de naltime medie, pentru care functia de apartenenta
este data n gura 7.3. Se pune problema: cand spunem ca o persoana nu
este de naltime medie? Daca persoana are naltimea 1.80 m, evident ca face
parte din multimea oamenilor de naltime medie; daca are 1.90 m sau 1.70
m, atunci e evident ca nu face parte din ea. Pentru o persoana pentru care
gradul de apartenenta la multimea oamenilor de naltime medie este, sa spu-
nem, 0.7, pare rezonabil sa spunem ca ea nu apartine la aceasta multime cu
masura 1 0.7 = 0.3. Putem deci deni valoarea de apartenenta a comple-
mentului multimii ca ind unu minus valoarea de apartenenta la multime.
Desigur, si alte denitii sunt posibile.
Denitia data contrazice principiul tertului exclus: in logica clasica se
spune ca ceva e este A, e este non-A. Gradul de adevar pentru armatiile
discutate n cele doua paradoxuri poate luat 0.5, deci ecare propozitie are
aceeasi valoare de adevar ca si contrara ei.

7.3.4 Intersectia a doua multimi fuzzy


In varianta clasica, intersectia a doua multimi este o multime formata din
elementele comune celor care se intersecteaza.
Denirea pentru multimi fuzzy nu este unica; oricare ar varianta folo-
sita, trebuie sa se respecte urmatoarele:
130 CAPITOLUL 7. SISTEME FUZZY

1. operatia sa e comutativa: AB (x) = BA (x)

2. de asemenea, sa avem asociativitate: (AB)C (x) = A(BC) (x)

3. monotonie: daca valoarea functiei de apartenenta a unui element la o


multime scade, atunci valoarea functiei de apartenenta pentru multimea
respectiva intersectata cu o alta nu trebuie sa creasca.

In practica, cel mai mic grad de apartenenta relativ la cele doua multimi
determina gradul de apartenenta la intersectie. Varianta de operator de
intersectie data de catre Zadeh este:

AB (x) = min {A (x), B (x)}

Se poate arata usor ca daca A B, atunci A B = A, n sens fuzzy, ceea ce


este n concordanta cu ceea ce avem si n teoria clasica a multimilor. Desigur,
si alte denitii sunt posibile pentru acest operator.

7.3.5 Reuniunea a doua multimi fuzzy


In teoria clasica a multimilor, reuniunea a doua multimi este o multime
formata din toate elementele care se regasesc n ele. Pentru denirea rela-
tiv la multimi fuzzy, se iau n considerare proprietati similare cu cele de la
intersectie (doar la monotonie apare diferenta), iar varianta data de catre
Zadeh este:
AB (x) = max {A (x), B (x)}

Se pot da si alte denitii pentru acest operator.

7.3.6 Operatori de compensare


In timp ce operatiile din cadrul teoriei clasice a multimilor sunt unic
denite, pentru multimile fuzzy exista si alte posibilitati de denire a lor
decat cele date mai sus. Operatorii de compensare trateaza n special cazul
reuniunii si al intersetiei de multimi fuzzy. Intersectia este des ntalnita n
cadrul regulilor fuzzy.
7.4. REGULI FUZZY 131

Folosind denitia intersectiei data de Zadeh, valoare functiei de apartenenta


pentru intersectia a 2 multimi fuzzy este controlata de cea mai mica din va-
lorile existente. De exemplu, pentru regula daca A si B si C atunci D, daca
valorile de apartenenta ale lui A, B si C sunt respectiv 0.2. 0.8, 0.9, efectul
pe care l are A asupra rezultatului nal este prea pronuntat. In practica,
denitia intersectiei data de Zadeh nu e ntotdeauna adecvata.
Sau denit mai multi operatori de compensare. Ei formuleaza raspunsuri
la ntrebarea: cat de mult poate sa compenseze cresterea unor variabile va-
lorile mici ale altora? Vom prezenta doua variante ale acestor operatori:
operatorul de medie si operatorul gama.
Prin operatorul de medie se stabileste ca valoarea functiei de apartenenta
este media valorilor individuale:
n
Xi (x)
P
i=1
X1 X2 ...Xn (x) =
n
Operatorul gama este mai complex si pare sa reprezinte mai bine procesul
de decizie umana decat denitiile lui Zadeh. El este denit ca:
n
!1 n
!
Y Y
= i 1 (1 i )
i=1 i=1

unde 0 1, iar n este numarul de valori fuzzy implicate n intersectie.


In practica, cel mai frecvent valorile lui sunt ntre 0.2 si 0.4.

7.4 Reguli fuzzy


Regulile clasice au forma urmatoare:

Daca A1 si A2 si si An atunci C

unde A1 si A2 si si An se numeste antecedent sau premisa iar C este


consecvent sau consecinta sau concluzie. De exemplu:
Daca naltimea barbatului este mai mare de 1.80 m, atunci masa lui este mai
mare de 50 kg.
132 CAPITOLUL 7. SISTEME FUZZY

Regulile fuzzy pastreaza aceasta forma generala, dar pot sa apara diferente
pe partea de consecvent. Cele doua variante des folosite sunt datorate lui
Mamdani:
Daca X1 este A1 si . . . si Xn este An atunci Y este B
si respectiv lui Takagi, Sugeno si Kang:
Daca X1 este A1 si . . . si Xn este An atunci Y = p0 + p1 X1 + + pn Xn
unde Xi sunt variabile fuzzy de intrare, Ai sunt multimi fuzzy peste variabi-
lele Xi (1 i n), Y este o variabila fuzzy de iesire, B este o multime fuzzy
denita peste valorile lui Y iar pj sunt coecienti reali (0 j n).
Pentru probleme de clasicare exista urmatoarea forma de regula:
Daca X1 este A1 si . . . si Xn este An atunci Y face parte din clasa i n masura
GCi .
Nuantarea5 este pasul prin care se combina valorile din antecedentul unei
reguli, folosind operatiile cu multimi fuzzy; pasul se aplica pentru ecare
regula n parte. Prin combinarea regulilor date la pas de denuantare se
obtine o iesire care poate folosita ca rezultat inferential sau ca indicatie de
control al unui sistem.
Exemplicarea acestor reguli se face pentru cazul unei centrale de ncalzire,
pentru care sunt date niste reguli privind reglarea debitului de gaz astfel ncat
sa se obtina o temperatura potrivita. Se pleaca de la reguli n care se folosesc
notiuni vagi (temperatura potrivita, variatie mare, mareste debitul etc) si se
obtine o indicatie pentru regulatorul de gaz.
Vom considera ca avem valori de intrare precum temperatura interioara
(notata T empIn), cea exterioara (T empExt), modicarea de temperatura
interioara n ultimele 5 minute (DeltaT empIn); ca valoare de iesire avem
M odif icareDebit. Fiecare valoare de intrare concreta va avea un grad de
apartenenta fuzzy la diferite multimi (de exemplu, pentru T empIn avem
apartenenta la multimi precum foarte cald, foarte frig etc.
Pentru valoarea T empIn avem trei multimi fuzzy: rece, confortabil, prea
cald. Pentru T empExt avem multimile fuzzy foarte rece, rece, cald, foarte
5
In original: fuzzyfication.
7.4. REGULI FUZZY 133

cald si erbinte. Pentru DeltaT empIn denim multimile fuzzy: larg ne-
gativ, mic negativ, aproximativ zero, pozitiv mic, pozitiv mare, iar pentru
M odif icareDebit avem seturile fuzzy scade mult, scade putin, nu schimba,
creste putin, creste mult.
Vom considera doar cateva reguli, suciente pentru exemplicarea nuantarii
si denuantarii:

Regula 1: Daca T empIn este confortabila si DeltaT empIn este aproximativ


zero, atunci M odif icareDebit este nu schimba;

Regula 2: Daca T empExt este rece si DeltaT empIn este mic negativ, atunci
M odif icareDebit este creste putin;

Regula 3: Daca T empIn este prea cald si DeltaT empIn este larg pozitiva,
atunci M odif icareDebit este scade mult;

Regula 4: Daca T empIn este rece si DeltaT empIn este aproximativ zero,
atunci M odif icareDebit este creste putin.

Pentru T empIn, multimea confortabil se deneste ca {0/15 , 1/21 , 0/27 },


interpretata ca o functie de apartenenta de tip triunghiular. De exemplu,
pentru 18 si 24 gradul de apartenenta este 0.5. Pentru rece avem multimea
fuzzy {1/10 , 1/16 , 0/21 }, iar prea cald este multimea {0/21 , 1/27 , 1/33 }.
Pentru DeltaT empIn:

negativ mic = {0/ 4 , 1/ 2 , 0/0 }


aproape zero = {0/ 2 , 1/0 , 0/ + 2 }
larg pozitiv = {0/2 , 1/4 , 1/6 }

Pentru T empExt, rece={0/ 1 , 1/10 , 0/21 }.


Sa presupunem ca temperatura interioara este de 20 , diferenta de tem-
peratura din ultimele 5 minute este 1.5 iar temperatura exterioara este de
11 .
Conform multimilor fuzzy date anterior, avem:
134 CAPITOLUL 7. SISTEME FUZZY

pentru T empIn, rece (20 ) = 0.25, conf ortabil (20 ) = 0.75, prea cald (20 ) =
0;

pentru DeltaT empIn, mic negativ (1.5 ) = 0.80, aproximativ zero (1.5 ) =
0.20, larg pozitiv (1.5 ) = 0

pentru T empExt, rece (11 ) = 0.90


Aplicam aceste valori celor 4 reguli fuzzy de mai sus. Tinem cont de faptul
ca antecedentele din reguli sunt exprimate cu conjunctie, corespunzatoare
intersetiei de multimi, ceea ce n logica fuzzy se implementeaza prin functia
min. Obtinem:
Regula 1: 0.75 0.20 = 0.20 = nu schimba (M odif icareDebit)

Regula 2: 0.90 0.80 = 0.80 = creste putin (M odif icareDebit)

Regula 3: 0 0 = 0 = scade mult (M odif icareDebit)

Regula 4: 0.25 0.20 = 0.20 = creste putin (M odif icareDebit)


Activarea acestor reguli se face n paralel. Observam ca pentru regula a
treia iesirea este zero, deci ea nu se va aplica. Din regulile 2 si 4 avem doua
valori pentru apartenenta creste putin (M odif icareDebit); se va lua maximul
celor doua valori, deci creste putin (M odif icareDebit) = 0.8.
Variatia de debit este modelata la randul ei fuzzy, asa cum se arata n
gura 7.4.
Denuantarea este operatia prin care se obtine un raspuns concret la pro-
blema, adica se furnizeaza o valoare exprimata n metri cubi pe secunda
pentru debitul de gaz. Plecand de la gracul anterior, se traseaza conturul
marginit de orizontalele y = 0.2 - pentru nu schimba - si y = 0.8 - pentru
creste putin. Se obtine gura geometrica desenata cu linie continua n gura
7.5, pentru care se determina centrul de greutate; verticala dusa prin acest
centru de greutate interesecteaza axa debitului la valoarea +0.76, aceasta
ind indicatia data regulatorului de gaz: creste cu 0.76 m3 /s debitul de gaz.
Exista mai multe metode care se pot folosi pentru denuantare; a se vedea
[8] pentru detalii.
7.4. REGULI FUZZY 135

Scade mult Scade putin Nu schimba Creste putin Creste mult


1

3 2 1 0 1 2 debit (m cubi/sec)

Figura 7.4: Multimi fuzzy pentru debitul de gaz

Scade mult Scade putin Nu schimba Creste putin Creste mult


1

3 2 1 0 0.76 1 2 debit (m cubi/sec)

Figura 7.5: Procesul de denuantare.


136 CAPITOLUL 7. SISTEME FUZZY

7.5 Masuri ale gradului de nuantare

In cazul unei multimi fuzzy se poate pune ntrebarea: cat este ea de


nuantata? Pentru o multime fuzzy discreta, se pot introduce cateva masuri
care cuantica gradul de nuantare. Acestea au ca scop masurarea gradului de
incertitudine, care apare, de exemplu, n cazul exprimarii vagi. In continuare,
prezentarea merge pe exemplele din [8].
Daca consideram multimea pestilor, atunci pentru diferite elemente de
mai jos avem gradele exprimate: pesti (biban) = 1.0, pesti (pestisor auriu) =
1.0, pesti (calut de mare) = 0.8, pesti (balena) = 0.0. Pentru multimea fu-
zzy ori, gradul de apartenenta ar putea : f lori (trandar ) = 1.0, f lori (paine) =
0.0, f lori (lemn cainesc) = 0.5. Intuitiv, putem spune ca multimea de ori
exemplicata este mai vaga decat multimea pestilor: n ultimul caz, valorile
de apartenenta sunt mai apropiate de cele ale unei functii de apartenenta din
cazul unei multimi clasice, 0 si 1.
Se preia din zica si din teoria informatiei notiunea de entropie, care
masoara gradul de dezorganizare a unui sistem. Spre deosebire de teoria
informatiei unde masura entropiei este unic determinata6 , n teoria multimilor
fuzzy sunt mai multe variante acceptate. Se pleaca de la o suma de proprietati
pe care ar trebui sa le respecte o astfel de masura entropica si se introduc mai
multe functii care respecta o parte sau toate aceste proprietati. De exemplu,
pentru o multime clasica, din care un element e face parte, e nu, masura
gradului de nuantare ar trebui sa dea rezulatul 0 - i.e. o multime clasica nu
este vaga. De asemenea, cu cat sunt mai multe valori pentru care valoarea
functiei de apartenenta este 0.5 sau apropiata de aceasta, cu atat multimea
este mai vaga: un element care apartine cu masura 0.5 la o multime fuzzy
face si nu face parte din multimea data n aceeasi masura.
Inainte de a da diferite variante de masurare a gradului de nuantare,
se introduce notiunea de multime mai ascutita, ce exprima relatia ntre
doua multimi fuzzy: spunem ca o multime S este mai ascutita decat o alta

6
Abstractie facand de o constanta multiplicativa
7.5. MASURI ALE GRADULUI DE NUANTARE 137

multime fuzzy S ambele denite peste acelasi univers al discursului daca


S (x) S (x) pentru cazul n care S (x) < 0.5 si S (x) S (x) daca
S (x) > 0.5; pentru S (x) = 0.5 valoarea S (x) poate oricat.
Proprietatile de mai jos sunt punct de plecare pentru determinarea dife-
ritelor functii de masurare a gradului de nuantare.

caracterul exact: H(A) = 0 daca si numai daca A este o multime clasica;

maximalitatea: H(A) este maxima daca A (x) = 0.5, x din universul


discursului;

ascutirea: H(A) H(A ) daca A este mai ascutita decat A;

simetria: H(A) = H(A);

principiul includerii si excluderii: H(AB) = H(A)+H(B)H(AB)

O varianta de functie de masurare a gradului de nuantare, introdusa de


DeLuca si Termini si care respecta toate cele 5 proprietati de mai sus este:
n
X
HDT (A) = K (i log i + (1 i ) log(1 i )) (7.1)
i=1

unde K este un numar pozitiv oarecare. Varianta introdusa de Pal si Pal


este: n  
i e1i + (1 i )ei
X
HP P (A) = K (7.2)
i=1

Desigur, utilizatorul poate sa deneasca alte variante de masurare a gradului


de nuantare a unei multimi vagi.
138 CAPITOLUL 7. SISTEME FUZZY
Bibliografie

[1] Articial Intelligence. A Modern Approach, Prentice Hall, Stuart Russel,


Peter Norvig, 3rd edition, 2009

[2] Principiile inteligentei articiale, Editura Albastra, D. Dumitrescu, 2004

[3] Pattern Classication, 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 and Learning Machines, editia a treia, Simon


Haykin, Prentice Hall, 2008.

[7] Understanding Intelligence, Rolf Pfeifer and Christian Scheier, MIT


Press, 1999

[8] Computational Intelligence. Concepts to Implementations, Rus-


sell C. Eberhart and Yuhui Shi, Morgan Kaufmann, 2007

[9] Fuzzy Sets, Lot Zadeh, Information and Control, Vol. 8, 1965

139

You might also like