Documente Academic
Documente Profesional
Documente Cultură
2010-2011
Universitatea Transilvania din Brasov
Facultatea de Matematica si Informatica
Cuprins
1 Definitii. Rezolvarea problemelor prin c
autare
1.1
Denitii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.1.1
1.1.2
1.1.3
1.1.4
1.2
1.3
Starea actuala . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.4
1.5
1.6
Probleme de jucarie . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.6.2
. . . . . . . . . . . . . . . . . . . . . . 13
1.7
Cautarea solutiei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.8
2 Strategii de c
autare neinformat
a
19
2.1
2.2
2.3
2.4
2.5
2.6
Cautare bidirectionala . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.7
. . . . . . . . . . . . . . . . . . . . . . . . 25
3 C
autare informat
a
31
3.1
3.2
3.3
Algoritmul A* . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3
CUPRINS
3.4
3.5
Functii euristice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
3.6
3.6.2
Recoacerea simulata . . . . . . . . . . . . . . . . . . . . . . . . . . 48
3.6.3
Algoritmi genetici . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
3.6.4
55
4.1
4.2
4.2.2
4.3
4.4
Structura problemei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
5 Agenti logici
69
5.1
Motivatie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
5.2
5.3
5.4
Logica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
5.5
Logica propozitionala . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
5.6
5.5.1
Sintaxa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
5.5.2
Semantica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
5.5.3
5.5.4
Inferenta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
5.5.5
5.7
Rezolutia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
5.8
Algoritmul de rezolutie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
5.9 Inlantuirea nainte si napoi . . . . . . . . . . . . . . . . . . . . . . . . . . 82
5.10 Inferenta propozitionala efectiva . . . . . . . . . . . . . . . . . . . . . . . . 84
5.10.1 Algoritm bazat pe backtracking . . . . . . . . . . . . . . . . . . . . 84
5.10.2 Algoritm bazat pe cautare locala . . . . . . . . . . . . . . . . . . . 89
6 Logica de ordinul nt
ai
6.1
91
Introducere . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
CUPRINS
6.2
6.2.2
Simboluri si interpretari . . . . . . . . . . . . . . . . . . . . . . . . 93
6.2.3
Termeni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
6.2.4
Propozitii atomice . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
6.2.5
Enunturi complexe . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
6.2.6
Cuanticatori . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
6.3
6.4
6.4.2
Bibliograe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
CUPRINS
Capitolul 1
Definitii. Rezolvarea problemelor prin
c
autare
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 pentru sistemele cu
inteligenta articiala: sisteme care gandesc precum oamenii, sisteme care gandesc rational,
sisteme care actioneaza precum oamenii, sisteme care actioneaza rational. Remarcam ca
exista o diferenta ntre a actiona ca un om si a actiona rational; desi inteligenta umana
si rationalitatea nu sunt disjuncte, actiunile oamenilor nu sunt ntotdeauna nscrise n
totalitate n legile ratiunii.
1.1.1
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.
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
7
CAPITOLUL 1. DEFINITII.
REZOLVAREA PROBLEMELOR PRIN CAUTARE
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 detecta modele
sau sabloane (pattern-uri).
Testul de mai sus nu presupune un contact direct ntre om si sistemul articial. Daca
1.1.2
Sisteme care g
andesc ca oamenii
1.1.3
Sisteme care g
andesc rational
1.1.4
1.2
10 CAPITOLUL 1. DEFINITII.
REZOLVAREA PROBLEMELOR PRIN CAUTARE
1.3
Starea actual
a
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 camionul mondial, Garry Kasparov
control autonom - folosit pentru a conduce o masina de-a lungul SUA, realizand o
conducere autonoma pentru 98% din perioada totala.
diagnostic - diagnostic medical bazat pe sisteme expert
robotica - se folosesc roboti asistenti n microchirurgie, implant de proteze.
ntelegerea limbajului si rezolvarea problemelor - rezolvare de cuvinte ncrucisate.
1.4
Rezolvarea de probleme de c
atre agenti
1.5. FORMULAREA UNEI PROBLEME DE CAUTARE
11
1.5
O problema de cautare poate abstractizata precum mai jos, prin intermediul a patru
atribute.
1. Starea initiala - starea din care se porneste cautarea; de exemplu, pentru problema
drumului de la Arad la Bucuresti starea initiala este In(Arad).
2. O descriere a actiunilor pe care le poate ndeplini agentul. Acestea se pot formaliza
sub forma de operatori sau a unei functii succesor ce se aplica pe multimea starilor
si produce ca rezultat o multime de perechi de forma (actiune, stare):
x f unctie succesor(x) = {(actiune1 , stare1 ), . . . , (actiunen , staren )}
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.
12 CAPITOLUL 1. DEFINITII.
REZOLVAREA PROBLEMELOR PRIN CAUTARE
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 este atacat si nu se mai poate misca fara a atacat.
4. O functie de cost a caii care asigneaza o valoare numerica ecarei cai. Functia
serveste ca masura a performantei succesiunii de actiuni (a solutiei); vom presupune
ca costul unei cai este dat de suma costurilor actiunilor continute, iar costul unei
actiuni este o cantitate 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 c
autare
1.6.1
Probleme de juc
arie
(a)
initiala
Starea
(b)
Starea
scop
1.6. EXEMPLE DE PROBLEME DE CAUTARE
13
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 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 goala; functia succesor este adauga o regina
Tabela 1.1: Problema dispunerii reginelor pe o tabla de 5x5
,
,
,
,
,
ntr-o celula goala (dar se pot gasi si alte formulari mai inspirate); o stare scop este
aceea n care reginele nu se ataca reciproc.
1.6.2
1. Problema determinarii rutei: acest tip de problema apare ntr-o varietate 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 factori 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 momentul curent;
starea initiala: locul si momentul plecarii;
functie succesor: dependenta de lista zborurilor care sunt programate dintr-o
anumita locatie, la un moment ulterior;
testul scop: se poate ajunge la destinatie ntr-o perioada de timp 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
14 CAPITOLUL 1. DEFINITII.
REZOLVAREA PROBLEMELOR PRIN CAUTARE
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 alternative si solutii de rezerva, mpreuna
cu costurile suplimentare.
2. Problema comis-voiajorului - o persoana trebuie sa faca un tur al unei multimi de
orase, fara a trece de doua ori prin acelasi loc, cu revenire n locatia initiala si cu un
cost al drumului minim (ciclu Hamiltonian de cost minim). Se cunoaste faptul ca
problema este NP-completa, dar exista foarte multe studii care ncearca sa rezolve
problema cat mai 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 extrem de complexe
datorita interdependentelor sau restrictiilor.
4. Roboti software pentru cautarea pe Internet; pe langa faptul ca trebuie sa trateze
operarea ntr-o imensa baza de date cu grad mic de structurare, trebuie sa rezolve
probleme care nu sunt simple nici pentru un om: raspunsuri la ntrebari, gasirea
preturilor cele mai convenabile, gasirea informatiilor nrudite cu ceva specicat, etc.
1.7
C
autarea solutiei
Rezolvarea problemei este facuta prin cautare n spatiul starilor. Tehnicile de cautare
prezentate n acest capitol si n capitolul 2 folosesc un arbore de cautare care are drept
radacina un nod corespunzand starii initiale a problemei, iar nodurile sunt generate pe
baza actiunilor permise din starea curenta.
Vom considera ca exemplu problema gasirii drumului minim de la Arad la Bucuresti;
pentru moment, permitem existenta unor noduri diferite, dar care au stari identice; o
discutie asupra acestui aspect este prezentata n sectiunea 2.7.
Considerand cate o stare la un moment dat, vom proceda astfel: testam sa vedem daca
starea curenta este stare scop; daca da, oprim cautarea, construim solutia si o raportam2 .
Daca raspunsul este nsa negativ, atunci se va expanda starea curenta pe baza functiei
succesor, obtinand un nou set de stari. Modul de alegere a nodului determina strategia
de cautare.
1
2
VLSI: Very Large Scale Integration, crearea de circuite integrate prin combinarea de tranzistoare.
De remarcat ca nu ne propunem determinarea tuturor sau macar a mai multor solutii, ci doar a
1.7. CAUTAREA
SOLUTIEI
15
Arborele de cautare este format din noduri; un nod consta din urmatoarele componente:
Stare: starea caruia i corespunde nodul curent
Nod-Parinte: nodul din arborele de cautare care a generat nodul curent
Actiune: actiunea care a fost aplicata nodului parinte pentru a produce nodul
curent
Costul-caii: costul cumulat al actiunilor care duc de la nodul initial la nodul
curent;
Adancime: numarul de pasi de-a lungul caii de la nodul initial
Nodul initial corespunde starii initiale, parintele si actiunea aferente acestui nod sunt
codicate convenabil (null, valoare neaplicabila, etc). Componenta Costul-caii poate
n unele cazuri omisa, deoarece nu toate problemele cer determinarea unei solutii de cost
optim.
Un exemplu al arborelui de cautare generat pentru a cauta drumul de la Arad la
Bucuresti este dat n 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.
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 element 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 anterioare nu au descoperit
16 CAPITOLUL 1. DEFINITII.
REZOLVAREA PROBLEMELOR PRIN CAUTARE
1.7. CAUTAREA
SOLUTIEI
17
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.
18 CAPITOLUL 1. DEFINITII.
REZOLVAREA PROBLEMELOR PRIN CAUTARE
starea scop printre starile explorate. Trebuie 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
M
asurarea performantelor algoritmilor de c
autare
Capitolul 2
Strategii de c
autare neinformat
a
2.1
C
autarea mai nt
ai n l
atime
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 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 de tip 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.
Algoritmul este optimal doar daca functia de cost a caii este nedescrescatoare2 fata de
numarul de arce (adancimea nodului). Acest lucru se ntampla, de exemplu, daca costul
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.
Pana acum comportamentul acestui algoritm este ncurajator. Pentru a vedea de ce
1
2
19
20
B
D
C
E
B
G
D
(b)
E
Dupa
expandarea
nodului
schimb
sunt
adaugate nodurile B si C.
B
D
C
E
C
E
D si E.
G.
Figura 2.2: Exemplu de functie de cost care nu este nedescrescatoare fata de numarul de
arce. Pe ecare arc este scris costul sau.
COSTUL UNIFORM
2.2. CAUTAREA
DUPA
21
nu este o alegere buna n toate cazurile facem analiza complexitatilor. 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:
1 + b + b2 + . . . + bd + (bd+1 b) = O(bd+1 ).
Fiecare nod generat trebuie de asemenea sa e pastrat n memorie, pentru a putea
folosit la reconstituirea drumului - nu avem de unde sa stim care din acestia sunt efectiv
folositi n refacerea drumului, deci nu ne permitem sa stergem din memorie pana cand se
reface drumul de la starea initiala la cea nala; alfel zis, complexitatea n spatiu este tot
O(bd+1 ).
Complexitatile nu sunt ncurajatoare, deoarece pentru un factor de ramicare 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
C
autarea dup
a costul uniform
Cautarea mai ntai n latime alege spre expandare cel mai putin adanc nod care nu
este expandat. Pentru cazul n care costul caii nu este nedescrescator fata de adancimea
nodului, strategia de alegere poate sa rateze gasirea caii optime. Se poate nsa corecta
acest aspect daca la 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
22
nodului; n schimb
este
de timp si
implicat costul solutiei optime, C . Complexitatea
C
spatiu este O b1+[ ] care este deseori mai mare decat O bd+1 .
2.3
C
autarea mai nt
ai n ad
ancime
Cautarea mai ntai n adancime 3 va alege pentru expandare cel mai adanc nod
din arbore care nu a fost expandat. Colectia de noduri neexpandate din algoritmul
Cautare-in-arbore se poate implementa ca o stiva (structura de date cu politica de
acces LIFO - Last In, First Out sau ultimul intrat, primul iesit). Pentru cazul unui
arbore binar ordinea de parcurgere este exemplicata n gura 2.3.
Necesarul de memorie pentru acest algoritm este deosebit de modest: daca factorul de
ramicare este b si adancimea maxima e m atunci numarul de noduri ce trebuie retinute
n colectieNoduri este 1 + b m, deci complexitatea este O(b m).
Exista o varianta si mai redusa ca necesar de memorie bazat pe acest tip de cautare;
algoritmul este cunoscut sub numele de backtracking si are particularitatea ca nu face
expandarea tuturor nodurilor copil pentru nodul extras din stiva, ci doar a unui copil;
daca explorarea pe acest copil este nefructuasa, atunci se ncearca al doilea copil, etc.
Avantajul vine din faptul ca stiva nu se ncarca decat cu nodurile care chiar fac parte din
calea de cautare curenta. Complexitatea n spatiu este O(m). Mai mult, se poate doar
mentine nodul curent (daca pasul napoi, de la copil spre parinte este usor de refacut)
si atunci complexitatea n spatiu este O(1) memorie constanta ocupata, indiferent de
adancimea curenta a nodului.
Problema cu acest tip de cautare este ca poate sa parcurga un numar mare de arce
pana la gasirea nodului solutie, daca ordinea de alegere a nodurilor este neinspirata;
de exemplu, strategia de cautare poate sa duca la descoperirea unui nod scop de cost
suboptimal, dar daca nscrierea n stiva a nodurilor copil obtinute la expandare 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 evitarea starilor duplicat. Pentru problema oraselor, este posibila urmatoarea
parcurgere: Arad, apoi Sibiu, apoi Arad, iar Sibiu, etc. Putem deci spune ca algoritmul
nu este complet, nici optimal, iar daca se termina atunci n cel mai defavorabil caz are
complexitatea n timp O(bm ), unde m este lungimea maxima a unei cai n arborele de
cautare. Mai trebuie zis ca m poate sa 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
compexitatea de memorie ceruta: liniara sau chiar constanta.
3
IN ADANCIME
2.3. CAUTAREA
MAI INTAI
23
D
H
E
J
F
K
G
M
D
O
(b)
E
I
Dupa
radacina;
G
M
expandarea
nodului
colectieNoduri,
schimb
sunt
A
B
D
H
E
I
F
L
G
M
E
I
G
M
subfigura anterioara).
D
H
E
I
F
K
G
M
D
O
E
I
F
K
G
M
24
D
H
E
I
F
L
G
N
D
O
E
I
F
L
G
N
J.
D
H
E
I
F
K
G
M
D
O
E
I
F
L
G
M
D
H
E
I
F
K
G
M
D
O
E
I
F
K
G
M
2.4. CAUTAREA
CU ADANCIME
LIMITATA
2.4
25
C
autarea cu ad
ancime limitat
a
Cautarea mai ntai n adancime din sectiunea 2.3 are un mare atu: foloseste extrem
de putina memorie. Dar are si un dezavantaj major, posibilitatea de a cauta la innit
n arbore, datorita starilor duplicat. Acest dezavantaj este eliminat simplu: vom limita
adancimea maxima la care poate sa coboare explorarea n arbore. Vom folosi deci un
parametrul l (numar ntreg) reprezentand adancimea maxima de explorare. Nodurile de la
adancimea l sunt tratate ca si cum nu ar avea succesori. Insa acest algoritm mai introduce
un tip de rezultat: taiere4 , pentru cazul n care avem d > l iar cautarea epuizeaza toate
nodurile din subarborele de adancime l; n acest caz nu se poate spune ca se esueaza,
pentru ca o adancime de cautare mai mare ar permis gasirea nodului scop (si deci
problema sar putut rezolva).
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 16).
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 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 nsasi enuntul lor se poate deduce care
este o valoare rezonabila pentru limita maxima. De exemplu, pentru problema Arad
Bucuresti 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 pasi, deci adancimea poate si mai mult
redusa.
2.5
C
autarea mai nt
ai n ad
ancime cu ad
ancire iterativ
a
26
(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
IN ADANCIME
2.5. CAUTAREA
MAI INTAI
CU ADANCIRE
ITERATIVA
28
modeste si complexitate n timp mai mica decat cea a algoritmilor anterior prezentati. In
practica se considera ca algoritmul de cautare mai ntai n adancime cu adancire iterativa
este algoritmul preferat de cautare atunci cand spatiul de cautare este mare iar adancimea
nodului solutie este necunoscuta.
2.6
C
autare bidirectional
a
Start
Goal
La ecare expandare de nod se verica daca acesta nu a fost cumva atins de cautarea
din sens contrar. Daca da, atunci solutia (secventa de actiuni care duce dinspre nodul
6
2.7. PROBLEMA STARILOR
DUPLICAT
29
de start spre cel de scop) se reface pe baza drumurilor construite spre nodul comun.
Determinarea faptului ca un nod se gaseste ntr-o lista de noduri se face n timp 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
originale. Daca multimea starilor scop este foarte larga sau validarea nodurilor scop se
face fata de un predicat, atunci cautarea bidirectionala este greu sau imposibil de aplicat,
n lipsa unei descrieri compacte a proprietatii de a stare scop.
2.7
Problema st
arilor duplicat
Detectarea se face prin cautarea starii nodului ce urmeaza a expandat n lista starilor
7
30
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.
Capitolul 3
C
autare informat
a
3.1
Strategii de c
autare informat
a
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.
31
CAPITOLUL 3. CAUTARE
INFORMATA
32
3.2
C
autarea euristic
a lacom
a
Cautarea euristica lacoma2 alege pentru expandare nodul care are valoarea calculata
pentru functia h cea mai mica. Altfel spus, 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 minimizarea 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 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 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.
75
Oradea
Neamt
Zerind
87
151
Iasi
Arad
140
92
Sibiu
99
Fagaras
118
Vaslui
80
Rimnicu Vilcea
Timisoara
111
Lugoj
Pitesti
97
142
211
70
98
Mehadia
75
Dobreta
146
85
101
138
120
Hirsova
Urziceni
86
Bucharest
90
Craiova
Giurgiu
Eforie
Straightline distance
to Bucharest
Arad
366
Bucharest
0
Craiova
160
Dobreta
242
Eforie
161
Fagaras
178
Giurgiu
77
Hirsova
151
Iasi
226
Lugoj
244
Mehadia
241
Neamt
234
Oradea
380
Pitesti
98
Rimnicu Vilcea 193
Sibiu
253
Timisoara
329
Urziceni
80
Vaslui
199
Zerind
374
LACOMA
3.2. CAUTAREA
EURISTICA
71
Figura 3.1: Harta Romaniei si distantele pe drum drept dintre orase si Bucuresti.
33
34
radacina
Figura 3.2: Pasi n executarea algoritmului de cautare euristica lacoma. Valorile scrise sub noduri provin din gura 3.1
CAPITOLUL 3. CAUTARE
INFORMATA
(c) Dupa expandarea nodului Sibiu; nodul ce urmeaza a fiu expandat este
3.3. ALGORITMUL A*
3.3
35
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 optim si complet; 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) niciodata 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 Bucuresti este reprezentata n gurile 3.3 si 3.4.
Aceasta este definitia pentru problema n care se cere minimizarea caii; pentru probleme de maximi-
36
radacina
(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.
CAPITOLUL 3. CAUTARE
INFORMATA
(c) Dupa expandarea nodului Sibiu; nodul ce urmeaza a fiu expandat este
3.3. ALGORITMUL A*
(b) Dupa expandarea nodului Pitesti. Bucuresti este urmatorul nod expandat, dar si nod scop,
deci cautarea se opreste
CAPITOLUL 3. CAUTARE
INFORMATA
38
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, G2 suboptimal (adica
cu valoarea drumului pana la el mai mare decat este necesar) si G optimal. Avem
urmatoarele:
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)
Apoi:
g(G2 ) > g(G)
deoarece G2 este suboptimal. Din cele de mai sus avem ca:
f (G2 ) > f (G)
deci G va expandat naintea lui G2 de catre algoritmul A*.
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 parcurgerii pe graf
evita starile repetate astfel: un nod din colectia de noduri se expanda doar daca starea sa
nu se regaseasca ntr-o lista de stari deja parcurse. Problema cu aceasta abordare este ca
se poate astfel ca prima ajungere ntr-o anumita stare sa se faca cu un cost suboptimal,
iar urmatoarele drumuri care conduc la aceeasi stare sunt neglijate, chiar daca ar duce la
mbunatatirea costului pentru acea stare.
Exista doua solutii care se pot aplica. Prima consta n mentinerea caii care are costul
cel mai bun. Se poate scrie asemenea algoritm, chiar daca este mai complex (presupune
de exemplu ca sa se 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 varianta.
Definitia 9 O functie h se numeste consistenta daca pentru orice nod n si orice succesor
n generat de o actiune a avem ca:
h(n) c(n, a, n ) + h(n )
(3.1)
3.3. ALGORITMUL A*
39
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)
n
h(n)
h(n)
G
Figura 3.5: Inegalitatea triunghiului pentru o functie consistenta
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)
O functie consistenta se mai numeste deci 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 adevarata, dar trebuie destul de multa ingeniozitate pentru
a crea o functie care este admisibila si nu este si monotona.
Pentru problema drumului AradBucuresti, functia euristica data de distanta pe drum
drept de la orasul curent la Bucuresti este de asemenea si consistenta, deoarece satisface
inegalitatea triunghiului din geometria plana.
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 care au f (n) = C nainte ca sa expandeze
nod scop (si deci sa se termine algoritmul);
CAPITOLUL 3. CAUTARE
INFORMATA
40
3.4
Exista cateva variatii ale algoritmului A*, recent obtinute, care determina solutia
optima cu un necesar de memorie neprohibitiv. Primul dintre ele este Recursive best
rst 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 memorybounded 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
3.5. FUNCTII
EURISTICE
41
buna solutie (suboptimala) pe care a putut-o descoperi. Pe de alta parte, nsa, o problema
poate deveni intratabila datorita complexitatii de timp crescute.
3.5
Functii euristice
Vom studia functii euristice pentru problema puzzle-ului (a se vedea denitia problemei
de la pagina 12). Pentru un puzzle de 3x3, factorul mediu 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 acceptabil,
dar pentru un puzzle de 4x4, un calcul asemanator duce la aproximativ 1013 stari distincte.
Ca atare, ne ntrebam ce functie euristica am putea folosi si cat de buna este ea.
Cele mai populare euristici sunt:
h1 numarul de piese pozitionate gresit. h1 este o euristica admisibila, deoarece
este clar ca orice casuta cu pozitionare gresita trebuie sa suporte cel putin o mutare.
h2 suma distantelor dintre pozitiile actuale si cele din starea 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 mutarea unei
piese la pozitia corecta se fac cel putin mutarile pe orizontala si pe verticala.
O modalitate de a caracteriza calitatea unei euristici este factorul efectiv de ramicare,
b . Daca numarul de noduri create de algoritmul decautare pentru o instanta particulara
CAPITOLUL 3. CAUTARE
INFORMATA
42
De exemplu, pentru instante n care numarul de pasi este 12, numarul de noduri generat pentru cautarea mai ntai n adancime cu adancire iterativa genereaza 3.644.035
noduri, algoritmul A*(h1 ) genereaza 227 noduri, iar A*(h2 ) genereaza 73 noduri. Pentru adancime 24, algoritmul de cautare oarba clacheaza din lipsa de memorie, A*(h1 )
genereaza 39135 noduri, iar A*(h2 ) genereaza 1641 noduri.
Daca exista mai multe euristici ne putem pune problema daca e vreuna mai buna
decat celelalte. Pentru h1 si h2 , de pilda, avem ca h2 (n) h1 (n), n. Din cauza ca A*
expandeaza ecare nod care are f (n) < C (echivalent: h(n) < C g(n)), rezulta ca
orice nod expandat pentru functia h2 este sigur expandat si pentru functia h1 . Asta ne
ndeamna a cauta functii euristice care sa aibe valori cat mai mari, dar sa ramana nca
admisibile (sub valoarea reala). Problema cu o asemenea abordare este ca functia, desi
devine mai buna, poate cere de asemenea resurse computationale prea mari. Pentru
cazul n care ntre doua euristici exista relatia h2 h1 spunem ca h2 domina pe h1 4 .
Se pune ntrebarea: cum se pot inventa functii euristice? Este posibil a se inventa
asemenea functii n mod automat? Modul n care sau descoperit este simplu: sau
relaxat restrictiile problemei. Daca problema se enunta sub forma unor conditii, precum:
o piesa se muta din locatia A n B daca A este vecin orizontal sau vertical al lui B si
B este spatiu liber atunci putem realiza trei variante relaxate prin eliminarea la o parte
din conditii:
1. o piesa se poate muta de la pozitia A la B daca A este vecin cu B
2. o piesa se poate muta de la pozitia A la B daca B este spatiu
3. o piesa se poate muta de la pozitia A la B
Prima varianta corespunde euristicii h2 , iar cea de-a treia este pentru euristica h1 .
Folosind aceasta tehnica de relaxare a conditiilor (si alte strategii), sa obtinut un program
capabil de a gasi variante relaxate de probleme, unele conducand la euristici superioare
celor cunoscute.
Ce se ntampla cand avem mai multe euristici, dar niciuna nu domina pe toate celelelate
(adica: avem h1 , h2 , . . . , hm si pentru orice i, j, 1 i, j m, i 6= j exista x, y astfel ncat
hi (x) hj (x) dar hi (y) > hj (y))? Putem considera functia h 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!
4
Reamintim ca ne-am fixat pe probleme n care dorim sa obtinem solutie de cost minim. Pentru
S I PROBLEME DE OPTIMIZARE
3.6. ALGORITMI DE CAUTARE
LOCALA
43
3.6
Algoritmi de c
autare local
a si probleme de optimizare
Algoritmii precedenti fac o cautare mai mult sau mai putin sistematica pentru a descoperi daca un nod scop poate 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 12) nu ne intereseaza cum sa ajuns la plasarea acestor regine, ci doar dispunerea lor
efectiva pe tabla de sah. In aceeasi categorie intra si designul circuitelor integrate, programarea itinerarului optim prin magazine, stabilirea rutelor pentru vehicule, optimizarea
retelelor de telecomunicatii, etc.
Pentru asemenea cazuri vom considera o clasa diferita de algoritmi. Cautarea locala
foloseste doar o singura stare, cea curenta ceea ce din start nseamna ca memoria
consumata este redusa; mutarile se fac doar n stare vecina cu cea curenta, iar caile
urmate nu se memoreaza. Pe langa cantitatea mica de memorie ceruta (de obicei o
cantitate constanta), se pot aborda si probleme unde cautarea sistematica sau euristica
nu sunt fezabile (de exemplu probleme pe spatii continue).
De asemenea, se pot folosi algoritmii prezentati n aceasta sectiune si pentru cazul
problemelor de optimizare, unde sa da o functie obiectiv. Desi nu totdeauna solutiile
obtinute sunt optime, rezultatele practice sunt satisfacatoare.
Optimul poate sa e minim sau maxim; avem n vedere ca:
min(f ) = max(f )
5
CAPITOLUL 3. CAUTARE
INFORMATA
44
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 (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 gaseste un scop, daca acesta acesta exista;
optimal, daca gaseste un minim/maxim global
Figura 3.6: Prolul unei functii obiectiv; se doreste obtinerea unsi stari n care valoarea
functiei obiectiv este maxima. Punctul marcat pe grac reprezinta valoarea aferenta starii
curente, pentru care o modicare poate sa duca la cresterea sau scaderea valorii functiei
obiectiv.
3.6.1
C
autarea prin metoda ascensiunii
S I PROBLEME DE OPTIMIZARE
3.6. ALGORITMI DE CAUTARE
LOCALA
45
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 damelor pe o tabla de sah (a se vedea
sectiunea 1.6.1, pagina 12). 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, ideal 0. Daca pentru o stare (dispunere a reginelor) oarecare exista mai multe
cele mai bune mutari se poate alege aleator oricare dintre ele.
Problemele pe care le are algoritmul bazat pe ascensiune sunt:
1. maximele locale: un maxim local este un varf care este mai nalt decat punctele
situate ntr-o vecinatate a lui, dar este mai mic decat maximul global. Algoritmul
se termina atunci 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 corecta este dicil
de ales (gura 3.9).
CAPITOLUL 3. CAUTARE
INFORMATA
46
h=5
h=2
h=0
(c) Rezolvarea problemei celor 4 regine. Solutia obtinuta este de cost 0, deci dispunerea este corecta.
Figura 3.8: Rezolvarea problemei reginelor pe tabla de sah prin cautare prin ascensiune.
Se cauta un minim al functiei care contorizeaza numarul de atacuri reciproce pe tabla.
S I PROBLEME DE OPTIMIZARE
3.6. ALGORITMI DE CAUTARE
LOCALA
47
Figura 3.9: Creste, una din conguratiile problematice pentru un algoritm de ascensiune.
Pentru problema celor opt regine, cautarea prin ascensiune duce la un optim local n
86% din cazuri; rezolvare cu functia de cost nula se atinge doar n 14% din cazuri. Trebuie
sa mentionam totodata ca numarul mediu de mutari n care se ajunge la un minim local
este 3 iar din 4 mutari se ajunge la o rezolvarea a problemei.
Algoritmul, asa cum a fost enuntat, se opreste atunci cand ajunge n zona de platou
sau de coama. Pentru coama, nsa, daca s-ar permite cautarea pe zona plata, s-ar putea
ajunge din nou la o situatie de urcus. O varianta a algoritmului din 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
damelor se gaseste rezolvare corecta n 94% din cazuri. Numarul mediu de pasi creste,
nsa: 21 de pasi pentru o rezolvare si 64 pentru esuare n minim local.
De asemenea mai exista varianta ascensiunii stochastice: dintr-un punct se alege probabilist panta pe care se face urcarea; cu cat panta este mai abrupta, cu atat este 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 mereu, deoarece
7
CAPITOLUL 3. CAUTARE
INFORMATA
48
3.6.2
Recoacerea simulat
a
S I PROBLEME DE OPTIMIZARE
3.6. ALGORITMI DE CAUTARE
LOCALA
49
Figura 3.10: Algoritmul coacerii simulate. Perturbarile vor permite scoaterea bilei din
minimele locale.
Figura 3.11: Algoritmul de coacere simulata. Pasii defavorabili sunt permisi, dar probabilitatea acestora este controlata. Parametrul planiare determina valoarea temperaturii
T pentru timpul t.
CAPITOLUL 3. CAUTARE
INFORMATA
50
3.6.3
Algoritmi genetici
ba
[a, b].
2k 1
NR
X
i=1
vi
S I PROBLEME DE OPTIMIZARE
3.6. ALGORITMI DE CAUTARE
LOCALA
51
vi
, 1 i NR
S
j
X
pi , 1 j N R
i=1
CAPITOLUL 3. CAUTARE
INFORMATA
52
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 schimbul de
informatie ntre indivizi. Avantajul primar al algoritmilor genetici consta n acest schimb
de informatie, adica schimbarea de blocuri de date care au evoluat astfel ncat sa se
mbunatateasca valoarea produsa. O utilizare ecienta a algoritmilor genetici prespune
crearea unor structuri de date pentru gene si a unor operatori adecvati problemei ce
trebuie rezolvate9 .
3.6.4
C
autare local
a n spatii continue
f
f
,...,
x1
xn
De cele mai multe ori acest gradient se poate calcula doar local, nu si global, deci abordarea aceasta directa nu este ntotdeauna posibila. Chiar si asa, se poate aplica metoda
ascensiunii, luand ca stare urmatoare:
x x + f (x)
unde este o constanta mica, a carei valoare poate stabilita printr-o multitudine de
metode (volumul de studiu dedicat este impresionant).
Pentru multe probleme, cel mai bun algoritm este bazat pe metoda NewtonRaphson,
folosita pentru determinarea radacinilor ecuatiilor de forma g(x) = 0 (g ind functie de o
8
9
Sau se foloseste strategia elitista: se returneaza cel mai bun individ al tuturor generatiilor.
S-a stabilit ecuatia Algoritmi genetici + structuri de date = programare evolutionista, [4].
S I PROBLEME DE OPTIMIZARE
3.6. ALGORITMI DE CAUTARE
LOCALA
53
g(x)
g (x)
Pentru a gasi un maxim al lui f (functie de mai multe variabile) urmatoarea valoarea a
lui x se determina astfel:
x x Hf1 (x)f (x)
unde Hf (x) este matricea hessiana, cu Hij = 2 f /xi xj . Totusi, inversarea matricilor
este computational intensiva pentru un numar mare de variabile.
54
CAPITOLUL 3. CAUTARE
INFORMATA
Capitolul 4
Probleme de satisfacere a
constr
angerilor
Prezentul capitol trateaza probleme n care starile se supun unor restrictii impuse.
Spre deosebire de reprezentarile date la metodele de cautare din capitolele anterioare
(reprezentari care tin cont de particularitatile problemei pentru care se face cautarea
solutiei), problemele de satisfacere a constrangerilor au o forma mult mai generala, iar
euristicile sunt larg aplicabile.
4.1
56
variabile este {rosu, verde, albastru}, iar restrictiile se pot exprima sub forma unor perechi
de forma X 6= Y unde X, Y W A, N T, Q, N SW, V, SA, T si X, Y vecine pe harta.
Northern
Territory
Queensland
Western
Australia
South
Australia
Victoria
Tasmania
NT
Q
WA
SA
NSW
Victoria
4.1. PROBLEME DE SATISFACERE A CONSTRANGERILOR
57
u + u = i + 10x1
n + r + x1 = c + 10x2
u + t + x = n + 10x3
a + x3 = i + 10x4
(4.1)
p + x4 = c
unde xi reprezinta (eventualul) transport de la suma de cifre. Restrictiile pot reprezentate sub forma de hipergraf, precum in gura 4.3. Se poate arata ca problemele cu
domenii nite pot reduse la probleme cu restrictii binare prin introducerea unor variabile auxiliare. Din acest motiv ne vom concentra asupra problemelor cu constrangeri
binare.
1
Problema de criptaritmetica.
CAPITOLUL 4. PROBLEME DE SATISFACERE A CONSTRANGERILOR
58
4.2
C
autare backtracking pentru PSC
Formularea data pentru PSC (n special prezenta unei functii succesor) ne permite
sa speram ca putem trata problemele de acest tip prin orice algoritm de cautare de care
dispunem. Totusi, acest tip de probleme trebuie abordat cu o anumita schema de cautare.
Sa plecam de la o PSC n care avem n variabile care pot lua valori dintr-o multime
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 n d
posibilitati de a continua, deoarece avem n variabile si pentru ecare poate stabilita
o valoare din cele d;
la nivelul urmator avem (n 1)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 enumerarea tuturor
posibilitatilor de asignare de valori pentru cele n variabile. Ca atare, aplicarea unei metode
de cautare oarecare poate sa nu e o idee buna.
Numarul supraestimat de frunze a aparut din cauza ca la ecare pas permitem luarea
n considerare a tuturor variabilelolor posibile, pe cand solutia unei PSC nu este senzitiva
la ordine. Este admisibil ca la ecare pas sa se ia n considerare doar o variabila. Asa
numarul de frunze devine dn .
Cautarea de tip backtracking este de fapt o cautare de tip mai intai n adancime care
genereaza un singur nod descendent. Deoarece reprezentarea PSC este standardizata, ea
se poate aplica independent de specicul domeniului. Algoritmul este dat n gura 4.4.
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
4.2. CAUTARE
BACKTRACKING PENTRU PSC
59
4.2.1
CAPITOLUL 4. PROBLEME DE SATISFACERE A CONSTRANGERILOR
60
n calea de cautare curenta, astfel ca sa se reteze caile care nu duc la solutii. De exemplu,
daca avem o variabila care are 0 valori ramase, atunci algoritmul o va alege pe aceasta
si se va detecta esuare. Acest lucru este corect, deoarece oricum mai devreme sau mai
tarziu se ajunge la imposibilitatea de a da valoare pentru variabila n cauza, deci astfel
se evita niste cautari care nu ar putea produce solutie.
In practica, aceasta strategie simpla duce la mbunatatiri ale vitezei de 3 pana la
3000 de ori. Se discuta n sectiunea 4.2.2 modul n care contorizarea numarului de valori
disponibile ramase se poate face ecient.
Euristica nu este utila la alegerea primei variabile, deoarece ecare regiune poate avea
trei culori. Intr-un asemenea moment se foloseste euristica gradului care indica alegerea
acelei variabile care are cele mai multe contrangeri cu alte variabile fara valori asignate.
Notiunea de grad face aici referire la valori denite 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 este utila la deciderea urmatorului pas ntr-o situatie
de egalitate.
Odata ce sa ales variabila pentru care se va da valoare trebuie determinat care este
ordinea de considerare a valorilor. Pentru asta se aplica strategia celei mai putin constrangatoare valori. Concret, se prefera valorile care produc cele mai putine eliminari
de valori pentru alte varibile neasignate. Ideea este de a se lasa maximum de exibilitate (posibilitati) pentru alegerile urmatoare. De exemplu, daca luam W A = verde si
N T = verde, 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
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 restrictie se sterge din domeniul lui Y valorile care sunt
inconsistente cu proaspata valoare a lui X. Tabelul 4.1 arata evolutia cautarii cu vericare
4.2. CAUTARE
BACKTRACKING PENTRU PSC
61
NT
N SW
SA
RVA
Dupa W A = rosu
VA
RVA
RVA
RVA
VA
RVA
Dupa Q = verde
RA
RVA
RVA
Dupa V = albastru
RVA
Tabela 4.1: Evolutia in problema colorarii hartilor folosind vericarea nainte. R este
rosu, V este verde, A este albastru.
Propagarea constr
angerilor
Cu toate ca vericarea nainte depisteaza inconsistente, ea nu le depisteaza pe toate.
De exemplu, sa consideram a treia linie a tabelului 4.1: cand W A = rosu si Q = verde,
atat N T cat si SA sunt limitate la culoarea albastra; dar intrucat ele sunt si regiuni vecine,
trebuie sa e de culori diferite. Deci vericarea nainte nu este sucient de patrunzatoare
n a detecta incompatibilitati. Propagarea constrangerilor este un termen general, desemnand propagarea restrictiilor pentru o variabila conform constrangerilor pentru alte
variabile. Mai clar, propagam de la W A si Q la N T si SA (precum la 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 care este mult
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 valori aferente, un
arc de la X la Y este consistent daca pentru orice valoare din domeniul lui X avem ca
exista macar o valoarea compatibila (consistenta) n domeniul lui Y . De exemplu, pentru
a treia linie din tabelul 4.1 se observa ca domeniul pentru SA este {albastru}, iar pentru
N SW este {rosu, albastru}. Pentru SA = albastru avem o asignarea consistenta a lui
N SW si anume N SW = rosu. Invers, nsa, nu este adevarat: pentru N SW = albastru
CAPITOLUL 4. PROBLEME DE SATISFACERE A CONSTRANGERILOR
62
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
restrictie): tot din linia 3 a tabelului 4.1 se observa ca amandoua variabilele au domeniul
{albastru}, si deci actionarea pentru a mentine consistenta oricarui arc (de la SA la N T
sau invers) duce la domeniu de valori vid pentru una din variabile. Se va produce deci
un pas napoi, datorita detectarii devreme a imposibilitatii de continuare. Consistenta
arcului vede mai departe decat propagarea nainte.
Procesul de 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 ) ce indica 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 primeasca o valoare
consistenta (pentru k = 2 avem obtinem chiar consistenta arcelor). Totusi, cu cat k este
mai mare cu atat vericarile sunt mai complexe.
4.3
C
autare local
a pentru PSC
PENTRU PSC
4.3. CAUTARE
LOCALA
63
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).
Figura 4.6: Algoritmul corespunzator euristicii conicte-minime. Functia conicte contorizeaza numarul de constrangeri ncalcate de o valoare particulara.
CAPITOLUL 4. PROBLEME DE SATISFACERE A CONSTRANGERILOR
64
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
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; de exemplu, pentru problema colorarii hartii
Australiei, Tasmania este o subproblema care poate rezolvata separat. Reducerile de
complexitate pot mari, iar timpii de rulare obtinuti sunt acceptabili. Singura problema
65
66
NT
Q
WA
NSW
V
Victoria
T
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.
Figura 4.8: O descompunere sub forma de arbore a grafului de constrangeri din gura 4.2
arata descompunerea problemei de colorare a 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 ele trebuie sa apara mpreuna n cel putin una dintre subprobleme;
3. daca o variabila apare n doua subprobleme din arbore, atunci ele trebuie sa apara
n ecare subproblema de-a lungul unei cai care conecteaza aceste subprobleme.
Fiecare din subprobleme se rezolva independent; daca una dintre ele nu are solutie,
67
atunci ntreaga problema nu are solutie. Constrangerile care trebuie respectate se rezolva
prin interpretarea ecarei subprobleme ca o variabila mai mare si aplicarea algoritmului
ecient de rezolvare pentru arbore. Constrangerile pentru acest graf arbore reprezinta
conditia ca subprobleme cu variabile comune sa aibe aceeasi valoare pentru variabilele
partajate.
68
Capitolul 5
Agenti logici
5.1
Motivatie
70
CAPITOLUL 5. AGENTI
LOGICI
5.2
Componenta centrala a unui agent este baza de cunostinte (BC), adica un set de
enunturi care fac parte din domeniul de lucru al agentului. Fiecare enunt este exprimat
ntrun limbaj numit limbaj de reprezentare a cunostintelor si reprezinta niste asertiuni
despre lume.
Mai este nevoie de un mecanism care sa adauge noi propozitii la BC si unul care sa
determine ce se cunoaste (sau ce anumte trebuie sa se faca la pasul 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.
5.3
71
72
CAPITOLUL 5. AGENTI
LOGICI
Cunostintele date mai sus se introduc ntro BC. De ecare data cand agentul viziteaza
o camera se primeste vectorul de perceptii si se pot face deductii de tipul: e posibil ca n
camera [2, 1] sa e o groapa, sau sigur n camera [3, 3] nu se aa monstru, deductii care
se adauga la BC (pentru a evita redescoperirea rotii).
5.4
Logica
Sectiunea prezenta contine generalitati despre reprezentari logice si rationament. Detaliile sunt specice logicilor concrete ce se studiaza (logica propozitiilor, logica predicatelor, logica temporala, logica fuzzy).
Orice logica trebuie sa clarice doua aspecte: sintaxa si semantica. Sintaxa reprezinta
o specicare a ceea ce este corect exprimat n logica respectiva si se poate reprezenta sub
forma de diagrame sau propozitii folosind simboluri.
Semantica deneste n general semnicatia unui enunt. In cadrul logicii ea permite
stabilirea unei valori de adevar pentru un enunt care este corect formulat din punct de
vedere sintactic. Mai mult, semantica trebuie sa specice valoarea de adevar pentru ecare
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 (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 n lumea m.
Rationamentul logic (sau deductia, adica partea de interes major ntr-o logica) reprezinta modul n care se poate deduce un enunt dintr-un altul. 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 presupunem 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 gauri. Fiecare din camere poate sa contina sau nu gaura, deci n total avem
8 modele posibile. Vom considera acele modele pentru care baza de cunostinte nu este
contrazisa; exista trei asemenea cazuri din cele 8 posibile si n toate propozitia nu exista
groapa n [1, 2] este adevarata, pe cand nu exista groapa n [2, 2] si nu exista groapa
1
Pentru moment nu ne intereseaza cum anume se exprima formalizat aceste reguli, vom presupune ca
5.5. LOGICA PROPOZITIONAL
73
n [3, 1] nu sunt adevarate pentru toate cele trei cazuri; si negatiile lor sunt n situatie
similara.
Aceasta metoda de vericare a posibilitatii de deducere se numeste algoritmul vericarii modelelor. Vom dezvolta mai multi algoritmi de dedutie; daca avem un astfel de
algoritm i, atunci vom scrie |=i si vom citi este dedus (sau derivat) din prin i
sau i l deriveaza pe din .
Un algoritm inferential se numeste temeinic 2 daca obtine numai enunturi care sunt
derivabile din baza de cunostinte. Este evident ca algoritmul de vericare a modelelor
este temeinic.
O alta proprietate pentru un algoritm inferential este cea de completitudine daca
poate sa deduca toate enunturile care sunt derivabile din baza de cunostinte. O examinare
sistematica n cazul unei probleme n care multimea de concluzii posibile este nita duce,
evident, la un algoritm complet; proprietatea este nsa esentiala pentru problemele n care
multimea concluziilor posibile este innita.
5.5
Logica propozitional
a
5.5.1
Sintaxa
74
CAPITOLUL 5. AGENTI
LOGICI
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 echivalent cu B.
Tabelul 5.1 da sintaxa folosita n logica propozitionala n forma BNF (Backus-Naur
Form).
Enunt
Enunt atomic
Simbol
Enunt complex
(Enunt Enunt)
(Enunt Enunt)
(Enunt Enunt)
(Enunt Enunt)
5.5.2
Semantica
5.5. LOGICA PROPOZITIONAL
75
Pentru propozitiile compuse se foloseste tabela de adevar (data n tabelul 5.2) care
arata cum se calculeaza valoarea propozitiei plecand de la elementele care o formeaza.
Pe baza celor de mai sus se poate scrie o functie (Este-Adevarat) care stabileste daca
valoarea de adevar a unei expresii s, plecand de la un model dat m este adevarat.
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
5.5.3
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
76
CAPITOLUL 5. AGENTI
LOGICI
5.5.5
Echivalent
a, validitate si satisfiabilitate
IN LOGICA PROPOZITIONAL
77
( ) comutativitatea lui
( )
( ) comutativitatea lui
(( ) )
( ( )) asociativitatea lui
(( ) )
( ( )) asociativitatea lui
()
( )
( ) contrapozitie
( )
( ) eliminarea implicatiei
( )
(( ) ( )) eliminarea biconditionala
( )
( ) de Morgan
( )
( ) de Morgan
( ( ))
( ( ))
5.6
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:
,
78
CAPITOLUL 5. AGENTI
LOGICI
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 oricare 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
( ) ( )
IN LOGICA PROPOZITIONAL
5.6.1
79
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 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 algoritm 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
unde ecare l este un literal iar li si m sunt literali complementari (unul este negarea
celuilalt). Deci regula rezolutiei unitate preia o clauza (o disjunctie de literali) si un
literal si produce o noua clauza.
Regula de mai sus admite o generalizare imediata:
l1 lk , m 1 m n
l1 li1 li+1 lk m1 mj1 mj+1 mn
80
CAPITOLUL 5. AGENTI
LOGICI
adica se pleaca de la doua clauze si se ajunge la una noua n care avem toti literalii clauzelor
initiale, mai putin cei doi termeni care sunt complementari. Desigur, se presupune ca se
aplica si factorizare, adica o expresie de forma A A este redusa la A .
Este usor de vazut ca regula de rezolutie este temeinica: daca li este adevarata, atunci
mj este falsa si deci m1 mj1 mj+1 mn trebuie sa 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 automat ca si A B 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 normal
a conjunctiv
a
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 asemenea forme. Se poate arata
ca orice expresie din logica propozitionala poate rescrisa sub forma unei conjunctii de
disjuntii, asa numita forma normala conjunctiva (FNC).
De exemplu, pentru propozitia: B1,1 (P1,2 P2,1 ) se obtine FNC echivalenta prin
pasii:
1. Se aplica eliminarea biconditionala:
(B1,1 (P1,2 P2,1 )) ((P1,2 P2,1 ) B1,1 )
2. Se elimina , prin
(B1,1 P1,2 P2,1 ) ((P1,2 P2,1 ) B1,1 )
3. 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 )
81
5.8
Algoritmul de rezolutie
82
CAPITOLUL 5. AGENTI
LOGICI
5.9
Inl
antuirea nainte si napoi
De multe ori, bazele de cunostinte din lumea reala contin clauze ntro forma particulara numita clauza Horn. O clauza Horn este o 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, AB C
este echivalenta cu A B C am aplicat eliminarea implicatiei si regula lui de
Morsgan. 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: AB), 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 dimensiunea BC.
Algoritmul de nlantuire nainte LP-InlantuireInainte(BC, q) determina daca un
simbol propozitional q poate dedus din baza de cunostinte aate n forma Horn. Daca
TUIREA
INAINTE S I INAPOI
5.9. INLAN
83
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.
P Q
LM P
BLM
AP L
AB L
A
B
84
CAPITOLUL 5. AGENTI
LOGICI
Acestei baze de cunostinte i se poate asocia un graf de tipul sisau, construit astfel:
nodurile lui sunt simbolurile propozitionale, arcele de graf unite reprezinta operatorul
, n timp ce arcele neunite corespund disjunctiei. Figura 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 codus de date, adica al unui
rationament n care demonstrarea unei concluzii se face pornind dinspre 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 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 dimensiunea bazei
de cunostinte (desi o implementare ecienta are costul liniar, n cel mai defavorabil caz).
5.10
Inferenta
propozitional
a efectiv
a
Descriem aici doua variante de algoritmi ecienti pentru inferenta propozitionala bazate pe vericarea de modele: unul este bazat pe cautare backtracking, altul 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 rezultate incorecte.
5.10.1
PROPOZITIONAL
EFECTIVA
5.10. INFERENT
A
85
Q
1
1
P
P
2
2
M
M
2
2
A
1
A
Q
1
1
P
1
M
M
1
0
A
0
A
Se aplica premisa M .
premisa L.
86
CAPITOLUL 5. AGENTI
LOGICI
Q
0
M
M
0
0
A
0
A
aplica premisa P .
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
conjuntie de clauze este falsa daca o clauza este falsa, indiferent de valorile celorlalte
clauze.
Euristica simbolurilor pure: un simbol este pur daca apare cu acelasi semn n ecare
clauza. Este usor de vazut ca daca o propozitie are un model, atunci acesta are
proprietatea ca simbolul pur are valoarea adevarat.
PROPOZITIONAL
EFECTIVA
5.10. INFERENT
A
87
M
L
(b) Demonstrarea ca Q
P = adevarat.
adevar adevarat.
A
(c) Demonstrarea ca P
88
CAPITOLUL 5. AGENTI
LOGICI
a demonstra ca A si B sunt
adevarate.
adevarata.
adevarata.
PROPOZITIONAL
EFECTIVA
5.10. INFERENT
A
89
Figura 5.10: Algoritmul Walksat pentru vericarea satisabilitatii unui set de clauze.
5.10.2
Algoritm bazat pe c
autare local
a
90
CAPITOLUL 5. AGENTI
LOGICI
Capitolul 6
Logica de ordinul nt
ai
6.1
Introducere
CAPITOLUL 6. LOGICA DE ORDINUL INTAI
92
6.2
6.2.1
6.2. SINTAXA S I SEMANTICA LOGICII DE ORDINUL INTAI
6.2.2
93
Simboluri si interpret
ari
Enunt Atomic
Enunt
Enunt Atomic
Termen
Constanta
Variabila
Conectiva
|||
Cuanticator
Constanta
A | X1 | John | . . .
Variabila
a | x | ...
Predicat
Frate | . . .
Functie
TatalLui | PiciorulStang | . . .
CAPITOLUL 6. LOGICA DE ORDINUL INTAI
94
6.2.3
Termeni
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 complesi obtinuti prin aplicare de functii: Casatorit(Tata(John),
Mama(Richard)).
Un enunt atomic este adevarat ntrun model dat si sub o anumita interpretare 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, precum n calculul
propozitional. Semantica enunturilor complexe formate cu conective logice este identica
cu cea din logica propozitiilor.
6.2.6
Cuantificatori
95
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 un pic 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 ntr
un model si sub o intepretare data daca este adevarata pentru cel putin o intepretarea
extinsa.
Cuanticatorii pot imbricati, iar ordinea de precizare a lor este importanta. De
exemplu, enuntul x y Iubeste(y, x) nseamna ca exista cel putin un obiect care este
iubit de toata lumea, pe cand daca se inverseaza cuanticatorii, atunci se obtine ceva
diferit: y x Iubeste(y, x) nseamna ca oricine iubeste pe cineva (dar acel cineva poate
sa difere pentru doua persoane y diferite).
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))
6.3
CAPITOLUL 6. LOGICA DE ORDINUL INTAI
96
6.4
Inferenta propozitional
a comparat
a cu inferenta de
ordinul nt
ai
Introducem o tehnica care permite realizarea de inferente care pot aplicate unor
enunturi cu cuanticatori obtinanduse enunturi fara cuanticatori. Se poate intui astfel
ca inferenta de ordinul ntai are o varianta: trecerea la enunturi din logica propozitionala
si folosirea unui mecanism inferential adecvat.
1
COMPARATA
CU INFERENTA
6.4. INFERENTA
PROPOZITIONAL
A
DE ORDINUL INTAI97
6.4.1
Reguli de inferent
a pentru cuantificatori
6.4.2
98
Se aplica instanc tierea universala primului enunt folosind toate substituirile 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 originala, 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 deductibil 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 enunt care este deductibil din BC, dar nu exista algoritm care de asemenea sa
raspunda negativ la ecare enunt nedeductibil.
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. A comprehensive foundation, Ed. Prentice Hall, Simon Haykin, 1999
99