Sunteți pe pagina 1din 244

UNIVERSITATEA TITU MAIORESCU

Facultatea de INFORMATIC
Prof. univ. dr.
VASILE PODARU
Curs pentru nv mntul la distan
BUCURETI 2011
2
UNIVERSITATEA Titu MAIORESCU Bucureti
Facultatea de Informatic
nvmnt la Distan
INTELIGEN ARTIFICIAL
Inteligena artificial este una din disciplinele de pregtire fundamental care, pentru
profilul INFORMATIC, este esenial pentru pregtirea studenilor i pentru obinerea
creditelor transferabile prin procedurile de evaluare. Modul de prezentare a acestui material
are n vedere particularitile nvmntului la distan, la care studiul individual este
determinant. Pentru orice nelmuriri fa de acest material v rugm s contactai tutorele de
disciplin care are datoria s v ajute oferindu-v toate explicaiile necesare.
Disciplina de Inteligena artificial i propune urmtoarele obiective specifice:
nsuirea noiunilor fundamentale din domeniile Inteligenei artificiale.
Formarea deprinderilor de modelare matematic i de transpunere n programare a
unor probleme de natur tehnic, social sau economic, cu utilizarea cunotinelor
nsuite.
Formarea i dezvoltarea aptitudinilor i deprinderilor de analiz logic, formulare
corect i argumentare fundamentat, n rezolvarea problemelor tehnico-economice i
de specialitatecu cu utilizarea cunotinelor nsuite prin intermediul metodelor i
modelelor specifice inteligenei artificiale;
Insusirea principiilor generale ale programarii logice si insusirea limbajului Prolog;
O comparaie critic a metodelor de rezolvare evideniind, eventual, calea optim de
soluionare.
Accentul se va pune pe problemele de cautare si reprezentare a cunostintelor si
respectiv pe programarea logica, limbajul de programare utilizat la laborator fiind
limbajul Prolog (n anex, modulul 5, se gsete un ndrumar privind programarea n
PROLOG). Cursul trebuie sa trateze aspecte ale rezolvarii problemelor prin
intermediul cautarii, descriind cele mai importante tehnici de cautare informata si
neinformata. Se vor da exmple de aplicatii ale cautarii, cum ar fi jocurile, tratate ca
probleme de cautare. Se vor prezenta principalele tipuri de cunostinte si principalele
metode de reprezentare a cunostintelor. Se va face legatura dintre reprezentarea
cunostintelor si sistemele expert. Se va da un exemplu de baz de cunotine de sistem
expert cu implementare in Prolog. Vor mai fi tratate, ca modalitati de reprezentare a
cunostintelor, retelele semantice si retelele Bayesiene (cu introducerea rationamentului
statistic). Metodele de nvare i reelele neuronale sunt alte domenii importante pe
care le vom trata n acest material.
V precizm de asemenea c, din punct de vedere al verificrilor i al notrii
(elemente ce vor fi comunicate i prin fia disciplinei, calendarul disciplinei i programarea
orar), cu adevrat important este capacitatea pe care trebuie s o dobndii i s o probai de
a rezolva toat tipologia de probleme aplicative aferente materialului teoretic prezentat n
continuare. De aceea v recomandm s parcurgei cu atenie toate aplicaiile rezolvate, s
rezolvai aplicaiile propuse prin testele de autoevaluare i temele de control (pentru fiecare
modul n parte trebuie s predai tutorelui de disciplin rezolvarea acestor teme, pentru
verificare i evaluare); fii convini c examenul final apeleaz la tipurile de aplicaii prezente
n seciunile menionate anterior.
Timpul mediu necesar nsuirii noiunilor teoretice, formrii deprinderilor de calcul i
utilizrii metodelor de rezolvare a problemelor specifice acestui modul este estimat la
3
aproximativ 6-8 ore pentru ntregul modul , ntr-un ritm de 3-4 ore pentru fiecare din cele
dou uniti ale modulului.
ntru-ct modulul este privit ca un tot unitar exerciiile aferente acestui modul se
gsesc la sfritul acestui modul. La terminarea parcurgerii acestui modul studenii trebuie s
prezinte tutorelui de disciplin rezolvarea temei de control propus spre rezolvare la sfritul
modulului.
Cursul se finalizeaz prin examen care const din:
1) o lucrare scris sub forma de text grila constnd din 9-18 subiecte (ponderea lucrrii
scrise este de 70% din nota final);
2) rezolvarea corect a temelor de control din cele 4 module (minimum nota 5 pentru
fiecare tem, ponderea mediei celor 5 note n nota final este de 20%);
3) participarea activ la activitile tutoriale (apreciat printr-o not a crei pondere in
nota final este de 10%).
Coordonator disciplin: Prof. univ. dr. Vasile PODARU, email: podaruv@gmail.com
Tutori: Prof. univ. dr. Vasile PODARU,
4
MODULUL 1
REPREZENTAREA CUNOATERII. PROBLEMATICA
REZOLVRII PROBLEMELOR.
ndrumri metodice.
n acest modul sunt prezentate principalele noiuni referitoare la reprezentarea
cunoaterii i de rezolvarea problemelor, eseniale n domeniul inteligenei artificiale.
n prima parte a acestui modul sunt prezentate informaii referitoare la domeniul
inteligenei artificiale, istoric i domenii de activitate, legtura cu alte discipline. Sunt
prezentate apoi principalele metode de reprezentare a cunoaterii n contextul transpunerii
acestora n programe pe calculator.
Rezolvarea problemelor este obiectivul fiecrui sistem inteligent i se va face att prin
cutarea unor rspunsuri predefinite la unele ntrebri, dar mai ales prin procese complexe de
deducie, de calcul simbolic i evaluri numerice, care se bazeaz pe faptele specificate n
enunul problemelor i pe fapte nregistrate a priori n baza de cunotine.
n partea a doua a acestui modul se prezint problematica rezolvrii problemelor.
Timpul mediu necesar nsuirii noiunilor teoretice, formrii deprinderilor de calcul i
utilizrii metodelor de rezolvare a problemelor specifice acestui modul este estimat la
aproximativ 6-8 ore pentru ntregul modul , ntr-un ritm de 3-4 ore pentru fiecare din cele
dou uniti ale modulului.
ntru-ct modulul este privit ca un tot unitar exerciiile aferente acestui modul se
gsesc la sfritul acestui modul. La terminarea parcurgerii acestui modul studenii trebuie s
prezinte tutorelui de disciplin rezolvarea temei de control propus spre rezolvare la sfritul
modulului.
Cursul se finalizeaz prin examen care const din:
1) o lucrare scris sub forma de text grila constnd din 9-18 subiecte (ponderea lucrrii
scrise este de 70% din nota final);
2) rezolvarea corect a temelor de control din cele 5 module (minimum nota 5 pentru
fiecare tem, ponderea mediei celor 5 note n nota final este de 20%);
3) participarea activ la activitile tutoriale (apreciat printr-o not a crei pondere in
nota final este de 10%).
5
Unitatea de nvare nr.1
Elemente de reprezentare a cunoaterii
Cuprins:
1.0. Domeniul inteligenei artificiale.................................................................. pag. 5
1.0.1. Scurt prezentare .................................................................................. ... pag. 5
1.0.2. Testul Turing ........................................................................................... pag. 6
1.0.3. Scurt istoric .............................................................................................. pag. 7
1.0.4. Domenii de interes i de cercetare pentru IA ........................................... pag. 8
1.0.5. Fundamentele matematice.Domeniile principale de studiu i
de aplicabilitate ale IA ....................................................................................... pag. 9
1.0.6. Limbaje de programare specifice domeniului .......................................... pag. 9
1.1. Reprezentarea cunoaterii............................................................................ pag. 9
1.1.0. Introducere ............................................................................................... pag. 9
1.1.1. Reprezentarea cunoaterii n limbajul calculului cu predicate
de ordinul I. ....................................................................................................... pag.11
1.1.2. Metode procedurale de reprezentare a cunoterii .................................... pag.15
1.1.3. Reprezentarea cunoterii prin reguli de producie.................................... pag.16
1.1.4. Reele semantice ...................................................................................... pag.19
1.1.5. Reprezentarea cunoaterii cu ajutorul cadrelor ........................................ pag. 25
1.0. Domeniul inteligenei artificiale.
1.0.1. Scurt prezentare.
Domeniul de studiu al inteligenei artificiale (IA) l reprezint nelegerea entitilor
inteligente. Datorit acestui fapt, unul dintre motivele pentru care se fac cercetri n acest
domeniu este acela de a nva mai multe despre noi nine. Spre deosebire de filozofie i
psihologie, care studiaz de asemenea inteligena, IA se ocup n principal cu crearea i
nelegerea entitilor inteligente.
Inteligena artificial a dus la obinerea unor produse foarte interesante, nc din
primele momente ale existenei sale. Cu toate c nimeni nu poate prezice viitorul IA, este
evident c apariia unor calculatoare cu un nivel de inteligen comparabil cu cel uman ar avea
un impact uria asupra societii noastre dar care din nefericire nc nu a ajuns la un astfel de
nivel.
n momentul de fa IA conine numeroase subdomenii de studiu, de la cele generale
care se ocup cu gndirea logic pn la unele particulare cum ar fi jocurile, demonstrarea
unor teoreme matematice, scrierea de poezii sau diagnosticarea unor boli, recunoaterea
formelor i procesarea limbajului natural, traduceri automate, reele neuronale, biometrie i
algorimi genetici, etc.
Exist numeroase definiii ale inteligenei artificiale. Formele acestora difer n funcie
de punctul de vedere din care este privit domeniul. Unele se axeaz pe procesele de gndire i
pe raionamente, n timp ce altele se axeaz pe comportamente. De asemenea, unele folosesc
pentru comparaie inteligena uman, n timp ce altele se bazeaz pe un concept ideal de
inteligen. Folosind aceste dou criterii, obinem patru clase de definiii.
Definiiile din prima clas se pot rezuma la sisteme care gndesc ca oamenii. Iat
dou dintre aceste definiii:
ncercarea de a construi calculatoare care gndesc n ntregul sens al
cuvntului;
automatizarea activitilor pe care le asociem cu gndirea uman i anume
luarea deciziilor, rezolvarea problemelor, nvarea etc.
6
Definiiile din a doua clas se pot rezuma la sisteme care gndesc raional. Dou
dintre aceste definiii sunt:
studiul facultilor mintale folosind modele computaionale;
studiul operaiilor computaionale care permit percepia, raiunea i aciunea.
Definiiile din a treia clas se pot rezuma la sisteme care acioneaz ca oamenii. Iat i
acest gen de definiii:
arta crerii mainilor care efectueaz operaii pentru care este nevoie de
inteligen atunci cnd sunt efectuate de oameni;
construirea unor calculatoare care s efectueze operaii pe care oamenii le
realizeaz acum cu mai mult succes.
Definiiile din a patra clas se pot rezuma la sisteme care acioneaz raional. Dou
dintre aceste definiii sunt:
un domeniu care ncearc s explice i s emuleze comportamentul inteligent
n termeni de procese computaionale;
ramura informaticii care se ocup cu automatizarea comportamentului
inteligent.
Toate cele patru abordri au fost urmate de cercettori de-a lungul ultimelor decenii.
Normal, exist disensiuni ntre cei care folosesc abordri care se bazeaz pe inteligena uman
i cei care folosesc abordri care se bazeaz pe raiune.
Exist i numeroase alte definiii:
construirea de algoritmi accesibili (polinomiali) care s reprezinte aproximri
ale unor probleme inaccesibile (pentru care nu exist soluii polinomiale);
construirea unui sistem fizic care s fie capabil s treac testul Turing;
ramura informaticii care studiaz modul n care pot fi create maini care
acioneaz inteligent;
un domeniu care folosete tehnici computaionale pentru a efectua sarcini care,
aparent, necesit inteligen atunci cnd sunt realizate de oameni
1.0.2. Testul Turing
Testul Turing a fost propus de matematicianul englez Alan Turing n anul 1950 i a
fost creat pentru a obine o definiie satisfctoare a inteligenei. Testul Turing const n
principiu din urmtorul experiment. Un om comunic prin intermediul unui terminal al
calculatorului cu alte dou terminale, situate n camere nvecinate, punnd ntrebri i
obinnd rspunsuri. Rspunsurile sunt date de o persoan la unul din cele dou terminale
ascunse celui de la care se ntreab i de un program la cellalt terminal. Dac persoana care
ntreab nu poate stabili n urma dialogului care este terminalul de unde i-a rspuns omul i
care este cel de la care i-a rspuns programul atunci programul are o comportare inteligent.
Pentru a putea trece de un astfel de test, un calculator ar trebui s aib urmtoarele
caracteristici:
s realizeze procesarea limbajului natural pentru a permite comunicarea ntr-o
anumit limb;
s realizeze reprezentarea cunoaterii pentru a putea pstra informaii primite
naintea sau n timpul interogrii;
s realizeze raionarea automat pentru a folosi informaiile stocate pentru a
rspunde la ntrebri i pentru a trage noi concluzii;
s realizeze nvarea pentru a se putea adapta la noi circumstane i pentru a
detecta i extrapola anumite abloane.
La nceputul anilor 90 se spera c reelele neurale vor oferi o nou mare posibilitate de
a nelege inteligena biologic, ns acest lucru a fost contrazis de ctre cercetrile ulterioare.
Cutarea IA este subiect de discuie i pentru dezbateri care au loc n afara cmpului
7
tiinei calculatoarelor. n fizic, de exemplu, au fost descoperite n natur structurile formale,
i fiecare din aceste sisteme formale pot s fie interpretate ca o main natural. Opinia unor
savani c ntregul univers este o main gigantic vine n complementarea credinei c
adevrata inteligen a mainilor, precum i contiina de sine, ar trebui s survin numai dup
ce maina ar atinge un anumit grad de complexitate.
Acest lucru ns conduce la o serie de dificulti. Din moment ce mainile urmeaz
doar instruciuni, nu este credibil faptul c ele ar putea dintr-o dat, pe baza unui mare numr
de legturi dintre unitile de calcul, s fie nzestrate cu contiin de sine. Pe de alt parte,
dac se concluzioneaz c mainile nu vor deveni niciodat contiente de sine, s-ar putea pune
ntrebarea de ce este contient creierul uman, n timp ce computerul de silicon nu este?
Probabil c rspunsul la aceast enigm este faptul c creierul este un sistem care se auto-
organizeaz i care rspunde la natura i la calitatea interaciunii sale cu mediul, n timp ce
calculatoarele nu o fac. Dar i alte sisteme ecologice, care sunt comuniti biologice cu
interaciuni complexe ntre componente, se auto-organizeaz, dar fr s fie contiente de
sine. Acest fapt sugereaz c dei auto-organizarea este necesar pentru contiin, ea nu este
i suficient.
1.0.3. Scurt istoric
Locul oficial al naterii inteligenei artificiale este Darthmounth College. Aici, n 1956
a avut loc un simpozion care a durat dou luni i la care au fost invitai numeroi oameni de
tiin care se ocupau cu teoria automatelor, cu studiul reelelor neuronale sau cu studiul
inteligenei. Dei la acea vreme tehnologia informaiei nu avea o dezvoltare deosebit iar
constucia sistemelor de calcul era n faza de pionerat concluziile participanilor la acel
simpozion au fost optimiste i chiar ndrznee n ceea ce privete viitorul sistemelor
inteligente.
Primul program care a fost considerat a se ncadra n categoraia programelor de IA a
fost Logic Theorist care era capabil s efectueze raionamente. Programul a reuit s
demonstreze o mulime de teoreme care apreau n lucrarea de referin a lui Isaac Newton
numit Principia Mathematica. Pentru una dintre teoreme, programul a gsit o demonstraie
mai scurt chiar dect cea care aprea n lucrarea amintit.
Dup apariia programului Logic Theorist a aprut GPS (General Problem Solver).
Acest nou program a fost proiectat n aa fel nct s simuleze raionamentele umane efectuate
pentru rezolvarea unei probleme. S-a observat c acest program rezolv subproblemele care
apreau ntr-o ordine similar cu cea pe care o folosesc oamenii. Se poate spune c GPS a fost
primul program care a folosit abordarea gndirii umane a inteligenei artificiale.
Perioada anilor 1970-1990 a fost caracterizat de preocuparea cercettorilor din
domeniu de a pune bazele teoretice i practice ale majoritii subdomeniilor inteligenei
artificiale, de a proiecta i implementate limbaje de programare specifice domeniului (LISP
bazat n principal pe procesarea listelor al crui autor este matematicianul american Winston,
PROLOG autor francezul Colleman aprut ca o necesitate de apropiere de programarea
logic dar i ca un orgoliu al europenilor de a scoate un limbaj diferit de cel al americanilor,
CLIPS elaborat de NASA pentru proiectarea sistemelor expert, etc.) i de asemenea de a
scoate pe pia produse specifice (sisteme expert, programe inteligente pentru rezolvarea
unor jocuri, etc.). Tot n aceast perioad Inteligena artificial a aprut ca disciplin de
studiu n toate mediile universitare cu preocupri n domeniul tiinei calculatoarelor.
i la noi n ar au existat preocupri timpuri n domeniu att n mediile universitare
ct i n institute de cercetare n domeniul informaticii. Este de menionat aici UPB - prin
academicianul Mihai Dragnescu (cu o serie de lucrri n domeniu), prin profesorul Cristian
Giumale (care n perioada menionat i-a pregtit i susinut doctoratul n Anglia n domeniul
inteligenei artificiale dup care rentors n ar a susinut o serie de cursuri n domeniu la
8
secia de calculatoare a UPB i a publicat o serie de materiale specifice domeniului), Institutul
Central de Informatic (prin actualul academician Filip preedintele seciei de Inteligen
artificial din Academia Romn - i cercettorul Ioan Georgescu cu o prim carte n limba
romn de inteligen artificial), Universitatea Bucureti (prin preocuprile academicianului
Mircea Malia i a altor cadre didactice) i alte instituii de nvmnt superior i de cercetare
din ar.
Perioada anilor de dup 1990 a nsemnat o explozie a preocuprilor i produselor
inteligente, de apariie a unei vaste bibliografii, de nfiinare a unor firme de profil i a unor
institute i asociaii profesionale. Evident c aceast explozie a fost facilitat i de dezvoltarea
fr precedent a tehnologiei informaieia, a produselor soft i hard, de aparii a internetului.
1.0.4. Domenii de interes i de cercetare pentru IA
Iat cteva zone tiinifice i de cercetare asupra crora s-au concertat preocuprile
cercettorilor din domeniul inteligenei artificiale:
vedere artificial ce presupune cunoaterea formelor, identic cu vederea
uman;
robotica focalizeaz producerea dispozitivelor mecanice capabile s
reproduc micarea;
prelucrarea vocii ce privete constituirea i sinteza vocii umane;
prelucrarea n limbaj natural nelegerea i vorbirea n limbaj natural;
demonstrarea teoremelor n matematic i logic;
General Problem Solving rezolvarea unei clase generale de probleme
exprimate n limbaje formale;
recunoaterea formelor rezolvarea i clasificarea diferitelor forme;
teoria jocurilor;
nvarea automat maini ce acumuleaz cunotine prin observarea
exemplelor ;
sisteme expert;
data mining:
biometrie;
reele neuronale;
algoritmi genetici.
1.0.5. Fundamentele matematice.Domeniile principale de studiu i de aplicabilitate
ale IA.
IA se bazeaz pe o puternic construcie matematic prin folosirea unor diverse
discipline ale acesteia:
- logica matematic (calculul propoziional, calculul cu predicate, teoria inferenelor
logice);
- teoria probabilitilor (cu utilizare n mod deosebit n reprezentarea cunoaterii
incerte spre exemplu n reelele Bayesiene care modeleaz incertitudinea prin
reprezentarea explicit a dependenelor condiionale ntre diferite componente);
- teoria algorimilor (algoritmi de cutare, algoritmi de control, etc.)
- teoria reelelor neuronale (cu aplicabilitate n recunoaterea formelor, a sintezei
vorbirii, etc.);
- lingvistica matematic (pentru nelegerea limbajului natural, a traducerilor
automate, etc.);
- teoria grafurilor (prin posibilitatea reprezentrii cunotinelor cu ajutorul arborilor)
Principalele domenii de studiu ale IA sunt:
- reprezentarea cunoaterii i modalitatea de acces la aceasta
9
- rezolvarea problemelor
- strategii i metode de cutare n spaiul strilor
- metode i algoritmi de inferen
1.0.6. Limbaje de programare specifice domeniului
Dezvoltarea aplicaiilor din domeniul IA a condus n mod firesc la apariia unor medii
de programare specifice domeniului. n general aceste medii au aprut i sau dezvoltat n
primul rnd pentru a se gsii o modalitate de reprezentare a cunoaterii dar i ca o necesitate
de a transpune n programe de calcul aplicaii specifice IA.
Dintre aceste medii de programare menionm ca cele mai relevante din punct de
vedere al utilizrii lor LISP, PROLOG i CLIPS.
Limbajul LISP este un limbaj de programare funcional cu un lung istoric. . Conceput
iniial ca un model de calcul (asemntor celui construit de Turing), a devenit limbajul cel mai
folosit la crearea aplicaiilor de inteligen artificial n anii de glorie ai acestui domeniu
(1970-1980). Denumirea provine de la "LISt Processing". Specificat iniial n 1958, LISP este
cel de-al doilea ca vechime limbaj de programare de nivel nalt; doar FORTRAN este mai
vechi. Precum FORTRAN, LISP s-a schimbat mult fa de forma iniial,existnd de-a lungul
vremii o serie de dialecte. Astzi, cele mai rspndite dialecte LISP sunt COMMON LISP i
SCHEME. A fost inventat de ctre John McCarthy n 1958 la MIT. Steve Russell a
implementat primul LISP pe un calculator IBM 704. LISP a fost conceput ca o necesitate de
procesare a listelor, lista fiind o prim form de reprezentare a cunoaterii acceptat de
comunitatea IA. Se caracterizeaz prin faptul c este dotat cu foarte multe funcii care rezolv
majoritatea operaiilor legate de liste, dar nu numai, i este i uor de neles de ctre
programatori.El s-a aplicat cu succes i se mai aplic i n prezent n special n SUA.
Limbajul PROLOG (PROgramming in LOGic) a aprut i ca o necesitate a
prelucrrii informaiilor furnizate de reprezentarea cunoaterii prin intermediul instrumentelor
puse la dispoziie de logica matematic (limbajul calcului cu predicate, teoria inferebnelor
logice, etc.) dar i ca o contrapondere a cercettorilor europeni fa de cei americani. A fost
conceput de profesorul francez Alain Calmaureur de la Universitatea din Marsilia, Frana i
folosit cu succes n Europa i Japonia, dar nu numai. Iniial a fost conceput pentru analiza
lexical. Azi n mod curent exist mai multe implementri att open source ct i proprietare.
Printre cele mai bune implementari existente azi se numr SWI-PRO, VISUAL PROLOG i
altele.
CLIPS a fost conceput de NASA pentru asistarea programatorilor n proiectarea,
implementarea, utilizarea i punerea la zi a sistemelor expert. Este un limbaj modular, uor de
aplicat i utilizat. CLIPS este un sistem expert. CLIPS este un acronim pentru C Language
Integrated Production System. Sintaxa i numele au fost inspirate de OPS (sistem de
producie oficial - Official Production System, n eng.) creat de Charles Forgy. Primele
versiuni de CLIPS au fost dezvoltate ncepnd cu 1984 la NASA-Johnson Space Center (ca o
alternativ la sistemul existent numit ART*Inference) pn la nceputul anilor 1990 cnd
subvenia a ncetat din cauza problemelor bugetului Federal, i a unui ordin conform cruia
NASA trebuia s cumpere software comercial n loc s-l dezvolte.
1.1. Reprezentarea cunoaterii
1.1.0. Introducere.
Reprezentarea cunotinelor ntrun calculator const n gsirea unei corespondene
ntre lumea exterioar i sistemul simbolic ce permite execuia raionamentelor.
n transpunerea de la subiecii umani la subiecii cunosctori de tip program pentru
calculator deci de la psihologia gndirii la inteligena artificial, conceptul de cunoatere i
10
conserv calitile, n sensul c, n vederea utilizrii unui program cunoaterea este memorat
sub forma unor piese de cunoatere ce descriu fapte, fenomene, procese, evenimente dintro
parte a lumii reale ce constituie domeniul de competen al programului inteligent. Piesele de
cunoatere alctuiesc un model al lumii la care programul are acces prin intermediul
procedurilor de organizare, clasificare, cutare i recunoatere.
Se poate defini un sistem cognitiv ca totalitatea pieselor de cunoatere, a modului de
stocare i a procedurilor de acces la acestea.
Problema fundamental a inteligenei artificiale este cea de definire a unor metode
pentru reprezentarea unei mari cantiti de cunotine ntro form ce permite stocarea i
utilizarea eficient a acestora.
Reprezentarea cunoaterii poate fi conform celor de mai sus considerat ca o relaie de
definiie AB ce stabilete o legtur ntre un simbol identificator A (numele entitii
reprezentate) i o expresie B formulat n limbajul de reprezentare al sistemului, ce descrie
caracteristicile entitii i structura sa cu ajutorul unor termeni primari, termeni purttori de
semnificaie ai limbajului. Expresia B este o reprezentare a entitii A sau a piesei de
cunoatere A n sistemul cognitiv considerat ca gazd a reprezentrii cunoaterii.
Unul din conceptele de baz de reprezentare a cunotinelor este cel de entitate. O
entitate este un obiect al lumii reale, cu o existen independent. O entitate este un obiect cu
existen fizic: persoan particular, automobil, companie, activitate, curs universitar, etc.
Orice entitate are o serie de proprieti numite atribute ce particularizeaz entitatea respectiv.
De exemplu, pentru o entitate automobil se pot enumera o serie de atribute cum sunt marca,
combustibilul utilizat, capacitatea cilindric etc. Valorile acestor atribute au ca scop
identificarea entitii.
Unele atribute pot fi mprite n pri mai mici cu semnificaie independent. Un
astfel de atribut este un atribut complex. Un exemplu este cel al atributului adresa, ce poate fi
subdivizat n atributele componente Ora, Jude, Cod potal, Strad. La rndul su atributul
Strad este definit prin atributele Nume strad, Numr, Scar, Numr apartament.
Atributele ce nu sunt compuse se numesc atomice. Valoarea atributelor compuse se
formeaz prin compunerea valorilor atributelor atomice.
Multe atribute au o valoare unic pentru o entitate particular i sunt numite atribute
cu o singur valoare. Spre exemplu, vrsta unei persoane. Exist atribute ce pot lua mai multe
valori, spre exemplu, culoarea unui automobil. Fiecare atribut al unei entiti tip are asociat un
set de valori V, numit i domeniu, ce specific valorile posibile pe care le poate lua.
Matematic, atributul A al entitii tip E poate fi definit ca o funcie de la E la mulimea
valorilor posibile ale lui V, sau la toate submulimile lui V.
A: E (V)
(prin (V) s-a notat mulimea prilor lui V).
Valoarea atributului A pentru entitatea (e), se va nota A(e). Pentru un atribut simplu
A(e) este o valoare cu un singur element, un atribut nul nu are valoare sau altfel spus are
valoarea null. Pentru un atribut compus A mulimea de valori este format ca produsul
cartezian dintre (V
1
), (V
2
), , (V
n
) unde V
1,
V
2,
,V
n
reprezint mulimea valorilor unei
componente simple a lui A, deci
(V) = (V
1
) (V
2
) (V
n
).
ntre entiti se pot stabili o serie de relaii ce pot avea la rndul lor atribute ce le
caracterizeaz denumite atribute relaie.
Pentru aplicaiile de inteligen artificial se pot distinge urmtoarele clase de metode
de reprezentare:
a) metode logice sunt acele metode ce privesc cunoaterea ca o serie de aseriuni
(enunuri adevrate) privind cunotinele i relaiile dintre ele. Metoda permite
11
folosirea regulilor de inferen direct asupra pieselor de cunoatere din baza de
cunotine. Are ns dezavantaje prin soluiile nesatisfctoare de sistematizare a
bazei de cunotine, prin inadecvana reprezentrii cunoaterii despre aciuni,
precum i a reprezentrii regulilor euristice;
b) metode relaionale sunt metodele prin care cunoaterea este reprezentat pornind
de la relaiile dintre obiecte sub form de grafuri i reele. Ele permit organizarea
cunotinelor funcie de omogenitatea acestora ce conduc la clase i sorturi.
c) metode procedurale n care cunoaterea este reprezentat sub form de proceduri
ce permit obinerea strilor la momentele specificate pornind de la strile iniiale
sau intermediare.
Descrierea formal a unui concept n termenii limbajului de reprezentare, prin care se
difereniaz de alte concepte sau prin care se poate aprecia echivalena cu alte concepte
similare poart numele de definiie. Definiia are ca obiectivitate modelarea obiectelor i a
relaiilor dintre ele astfel nct s fie specificate caracteristicile eseniale ale acestora ct i
posibilitatea de a facilita operaiile n care obiectele i relaiile sunt frecvent implicate. Este
normal ca pentru un concept s poat fi date mai multe definiii, fiecare definiie fiind o
descriere parial dependent de perspectiva din care este privit.
Alt informaie privind un concept este dat de relaiile acestuia cu entiti de tip
aciune. n general un obiect poate s ocupe n cadrul unei aciuni poziia de argument, deci
asupra cruia se acioneaz ct i poziia de rezultat al aciunii.
Se va numi generalizare a unui concept (C) o definiie mai puin restrictiv a acestuia
(D), n care orice instan a conceptului (C) este i o instan conceptului (D), concept mai
general. O serie de proprieti sunt exprimate printrun predicat P(x, C, D) n care (x) este o
instan de concept, care dac satisface i predicatul pentru generalizare va satisface i
definiia conceptului C.
DEF(x, D) . P(x, D, C) DEF(x, C)
n care, DEF(x, y) este un predicat ce semnific faptul c (x) satisface definiia.
Pornind de la aceste observaii o structur de concepte poate fi reprezentat
arborescent, naintarea spre frunz reprezentnd o specializare, pe cnd apropierea de rdcin
o generalizare a conceptului.
1.1.1. Reprezentarea cunoaterii n limbajul calculului cu predicate de ordinul I
Metoda de reprezentare a cunoaterii n limbajul calculului cu predicate de ordinul
nti descrie piesele de cunoatere cu ajutorul unor expresii, ale cror constituente sunt
formule ale acestui limbaj.
Avantajele oferite de aceast modalitate de reprezentare:
piesele de cunoatere pot fi introduse direct n sistemul rezolutiv pentru a putea fi
folosite la efectuarea de inferene.
condiia ca sistemul s fie conceput pe baza unor mecanisme infereniale definite
n limbajul calculului cu predicate de ordinul nti.
Dezavantajul apare n practic, unde utilizarea acestei modaliti se dovedete dificil,
presupunnd o anumit experien privind captarea trsturilor ale pieselor de cunoatere n
predicate.
La baza metodei de cunoatere st caracteristica de funcie propoziional a
predicatului. De aceea, descrierea unor piese de cunoatere este descompus n propoziii
elementare adevrate, numite aseriuni, care specific fapte (proprieti, relaii) legate de
piesa de cunoatere rezultnd astfel reprezentarea propoziional.
Fiecare propoziie elementar este generat de un predicat cu un numr finit de
argumente, n care sunt specificate variabile formale sau obiective din mulimea suport,
rezultnd reprezentarea predicativ.
12
1.1.1.1. Reprezentarea propoziional
Exemplu: S considerm urmtoarea descriere (incomplet) n limbajul natural a
piesei de cunoatere avionul xyz.
Avionul xyz este compus dintrun fuselaj, arip, sistem de propulsie, sistemul de
comand i sistemul de rulare. Avionul zboar dac viteza relativ de deplasare fa de
curentul de aer este mai mare dect 180 km/h. Motorul funcioneaz dac are combustibil n
rezervor iar contactul de pornire este nchis.
Se disting urmtoarele fraze ce sunt propoziii elementare:
I. A
1
= avionul xyz
II. A
2
= avionul zboar
A
3
= viteza relativ de deplasare fa de curentul de aer este mai mare dect
180 km/h
III. A
4
= motorul funcioneaz
A
5
= are combustibil n rezervor
A
6
= contactul de pornire este nchis
Presupunem c nu cunoatem alte fapte despre acest avion. Atunci cunoaterea despre
acest obiect este dat de urmtoarele formule ale calculului propoziional:
i) A
1
ii) A
3
A
2
iii) (A
5
. A
6
) A
4
Reprezentarea nu cuprinde o serie de detalii date n descrierea iniial, deoarece aceste
detalii nu sunt propoziii ci componente ale acestora.
1.1.1.2. Reprezentarea predicativ.
Pentru a surprinde semnificaia componentelor fiecrei propoziii vom trece la faza de
reprezentare predicativ prin efectuarea unei analize care se bazeaz pe urmtoarele
observaii:
orice propoziie are structura gramatical de forma subiectpredicat sau analog
grup nominalgrup predicativ;
se poate considera grupul predicativ ca avnd semnificaia abstractizat printrun
simbol de predicat, n ale crui locuri sunt plasate obiectele din grupul nominal;
unele componente ale propoziiei au rolul de a modifica valoarea de adevr n
funcie de acoperirea domeniului n care variabilele iau valori.
Analiza aser iunilor
A
1
Grupul predicativ determin un predicat de tipul ESTECOMPUS avnd ca
numr de locuri, numrul de obiecte din grupul nominal, n acest caz de 6 locuri;
Prin convenie, primul loc este ocupat de obiectul compus, iar urmtoarele locuri
vor fi ocupate de componentele sale.
ESTECOMPUS (AVIONXYZ, FUSELAJ, ARIPA, SISTEMPROPULSIE, SISTEM
COMAND, SISTEMRULARE)
Dezavantajele acestei forme sunt:
13
la efectuarea raionamentelor rareori se trateaz simultan toate componentele, cele
mai frecvente situaii sunt cele care implic o singur component;
numrul de predicate fiind prestabilit, eventuala rafinare ulterioar a cunoaterii ar
aduga noi componente, care vor implica redefinirea predicatului, mrindui
unitatea la un numr de locuri (argumente) corespunztor noii descrieri.
Pentru evitarea acestor dezavantaje se reformuleaz aseriunea:
A
1
: (fuselajul este component al avionului xyz) .
(aripa este component a avionului xyz) .
(sistemul de propulsie este component al avionului xyz) .
(sistemul de comand este component al avionului xyz) .
(sistemul de rulare este component al avionului xyz).
Noul grup predicativ determin un predicat cu dou locuri:
(1) ESTECOMPONENT (AVIONXYZ, FUSELAJ)
(2) ESTECOMPONENT (AVIONXYZ, ARIPA)
(3) ESTECOMPONENT (AVIONXYZ, SISTEMPROPULSIE)
(4) ESTECOMPONENT (AVIONXYZ, SISTEMCOMAND)
(5) ESTECOMPONENT (AVIONXYZ, SISTEMRULARE)
Orice instan ulterioar a cunoaterii despre componentele care intr n alctuirea
avionului se prezint prin noi instane ale aceleiai expresii predicative, cum ar fi:
ESTECOMPONENT (AVIONXYZ, SISTEMRADIO)
2
" "
: ( _ )
1
camp predicativ zboara
A ZBOARA nume obiect
camp nominal singur loc

)
Instana variabilei formale care se regsete n A
2
face adevrat predicatul care reflect
aseriunea
(6) ZBOAR (AVIONXYZ)
A
3
: Predicatul definit de grupul predicativ, avnd semnificaia este mai mare, va
avea dou locuri corespunztoare celor dou variabile formale ale relaiei x y care este de
fapt reprezentat prin aseriunea A
3.
MAIMARE (x, y) instanele pentru variabilele formale x i y.
(7) MAIMARE (VITEZAAVION, 180)
4
: ( )
:
:
(8) ( )
Predicat FUNCTIONEAZA X
A
Subiect MOTOR
FUNCTIONEAZA MOTOR

`
)
14
A
5
: Predicatul are dou locuri: ARE (recipient, coninut)
(9) ARE (REZERVOR, COMBUSTIBIL)
A
6
: NCHIS (contactelectric)
(10) NCHIS (CONTACTPORNIRE)
n acest fel relaiile i iii devin:
(i) ESTECOMPONENT (AVIONXYZ, FUSELAJ).
ESTECOMPONENT (AVIONXYZ, ARIPA) .
ESTECOMPONENT (AVIONXYZ, SISTEM PROPULSIE) .
ESTECOMPONENT (AVIONXYZ, SISTEM COMAND) .
ESTECOMPONENT (AVIONXYZ, SISTEM RULARE) .
(ii) MAIMARE (VITEZAAVION, 180) ZBOAR (AVIONXYZ) .
(iii) (ARE (REZERVOR, COMBUSTIBIL) . (NCHIS (CONTACTPORNIRE))
FUNC IONEAZ ( MOTOR)
Rezult de mai sus c:
avionul este un concept generic care se instaniaz n obiecte individuale ca XYZ,
IAR213, AIRBUS, etc, i orice avion are un fuselaj, .a.m.d.
avion este o caracteristic a obiectului respectiv pe care o exprimm printrun
predicat, fie acesta AVION (X).
Exemplu: AVION (XYZ), AVION (IAR-213), etc.
Dar numrul avioanelor reale este foarte mare i a scrie pentru fiecare n parte c are
un fuselaj nu reprezint o soluie convenabil. Vom evita acest inconvenient prin cuantificare
universal.
Utilizarea cuantificatorilor este legat de transcrierea n calculul cu predicate de
ordinul nti a unor propoziii n care aceti cuantificatori acioneaz ca operatori unari asupra
variabilelor pe care le prefixeaz.
Aadar cunoaterea despre avion poate fi exprimat printro singur formul,
adevrat pentru oricare element al mulimii avioanelor.
(1') ()x AVION (x) ARE (x, FUSELAJ)
(2') ()x AVION (x) ARE (x, ARIPA)
(3') ()x AVION (x) ARE (x, SISTEMPROPULSIE)
(4') ()x AVION (x) ARE (x, SISTEMCOMAND)
(5') ()x AVION (x) ARE (x, SISTEMRULARE)
Dac considerm c toate obiectele fizice nu sunt individuale, ci concepte generice
atunci se vor nlocui obiectele FUSELAJ, ARIPA, etc, cu variabile simbolice iar caracteristica
de a fi fuselaj, aripa, etc., se ve specifica prin predicate. Vom defini deci alte expresii
predicative primare care s caracterizeze proprietile conceptului:
(1') ()x AVION (x) ESTEELEMENT (x, F)
15
unde F este o notaie: mulimea de descrieri de fuselaje, diferite ca form i caracteristici.
Predicatul ESTEELEMENT folosit, semnific apartenena obiectului ataat variabilei
formale x la mulimea de fuselaje F.
Rezult deci definiia simbolului unar: FUSELAJ : x F i atunci
(1'') ()x AVION (x) ARE (x, FUSELAJ(x))
Puterea de reprezentare a cunoaterii, pe care o au formulele limbajului calculului
propoziional de ordinul I se poate cel mai bine aprecia prin considerarea unor exemple
complexe de la sfritul acestui modul n care este folosit i forma clauzal care reprezint un
concept nou numit programare logic, care st la baza limbajului de programare PROLOG.
1.1.2. Metode procedurale de reprezentare a cunoterii
Acest mod de reprezentare a aprut ca o consecin a modului de reprezentare prin
programe de calcul a pieselor de cunoatere cu ajutorul unor algoritmi.
Reprezentarea cunoaterii asupra acestor entiti utiliznd limbajul calculului cu
predicate de ordinul I are dificulti datorate caracterului declarativ al metodei, caracter ce nu
corespunde cu natura procedural a pieselor de cunoatere.
Metodele procedurale se bazeaz pe aspectele dinamic ale cunoaterii asupra modului
de folosire a pieselor de cunoatere pentru efectuarea inferenelor, asupra determinrii de noi
fapte prin executarea unor noi operaii asupra pieselor de cunoatere.
Realizarea prin aceste metode este realizat n termenii unor simboluri prin care se
identific proceduri (care sunt evaluate de procesoarele interpretative ale limbajelor de nivel
nalt, spre exemplu LIPS) sau chiar programe de calcul (evaluate direct de procesorul
calculatorului electronic).
S considerm urmtoarea reprezentare declarativ a unei probleme cu pinguin:
Pinguinul are aripi, pene dar nu zboar ci noat.
Reprezentarea procedural ar putea arta astfel:
PENTRUASTABILI PINGUIN (x)
DECLARPREDICATE (x)
DOVEDETEPASRE (x)
DOVEDETE NU ZBOAR (x)
DOVEDETE NOAT (x).
n aceast pies de cunoatere simbolurile PENTRUASTABILI, DECLAR i
DOVEDETE sunt identificatori de proceduri,cu urmtoarea semnificaie:
PENTRUASTABILI _ procedur de determinare a apartenenei unui obiect la o
clas.
DECLARA _ procedur de nscriere sub form de predicate a proprietilor obiectului
x
DOVEDETE _ procedur de determinare a valorii unui atribut al unei piese de
cunoatere.
Prima procedur le folosete pe celelalte drept componente n corpul reprezentrii
procedurale a cunoaterii. Ordinea de parcurgere este cea specificat, efectul fiind c pentru a
arta c x este pinguin, este necesar mai nti s se descrie piesa de cunoatere x prin
16
intermediul predicatelor ce i stabilete proprietile, apoi se apeleaz procedura de
determinare a valorii atributelor lui x.
Pentru folosirea reciprocei piesei de cunoatere, adic dac se dau faptele: x este
pasre, nu zboar, noat, atunci se definete o nou pies de cunoatere n reprezentare
procedural cu urmtorul coninut:
OBIECTIV SPECIE (x)
DECLAR PREDICATE (x);
ANALIZEAZ CLASA (x);
DAC PASRE (x) ATUNCI
DAC NUZBOAR (x) ATUNCI
DAC NOAT (x) ATUNCI
REZULT SPECIE (x) = PINGUIN;
ALTFEL APLIC PROCEDURA CLASIFICARE
PSRI NEZBURTORE
ALTFEL APLIC PROCEDURA CLASIFICARE PSRI
ZBURTOARE
ALTFEL APLIC PROCEDURA CLASIFICARE ALTE CLASE.
ntro reprezentare procedural se folosesc dou operaii primitive:
operaii asupra memoriei: nscriere, tergere, extragere, cutare, coresponden,
modificare;
operaii care returneaz valori ale unor funcii, sau valori de adevr unor predicate.
Reprezentarea procedural este dependent de tipul problemei ce se rezolv cu piesele
de cunoatere reprezentate. n msura n care cunoaterea devine tot mai complex, piesele de
cunoatere devin tot mai numeroase.
Avantajele metodei sunt:
uurina de a specifica i aplica regulile existente, specifice domeniului de
competen aplicativ ales pentru programele inteligente;
interpretarea cunoaterii este este direct rezultnd performane de timp foarte
bune.
Dezavantajele metodei:
lipsa de flexibilitate n utilizarea pieselor de cunoatere pentru efectuarea altor
inferene dect cele specificate explicit prin procedurile aferente.
1.1.3. Reprezentarea cunoterii prin reguli de producie
Acest mod de reprezentare a cunoaterii este unul dintre cele mai utilizate n sisteme
expert. Metoda se bazeaz pe separarea componentelor obinuite ale calculului, n scopul
manipulrii uoare n procesele la care sunt utilizate. Cunoaterea n reelele de producie este
de natur procedural i pot fi definite urmtoarele componente:
cunoatere declarativ sau factual ce reprezint piese de cunoatere stocate
sub forma unor structuri de date ntro colecie numit i context;
cunoatere procedural reprezentat sub forma unei colecii de tip condiie
aciune numite i reguli de producie, colecie ce formeaz baza de reguli;
cunoaterea strategic sau de control format din reguli ce privesc secvenele
de aciuni n procesul de rezolvare.
Sistemul construit n jurul regulilor de producie se bazeaz pe structura specific
compus din cele dou pri <partea de premis> <partea de aciune>. ntro alt
exprimare, un sistem de producie este compus dintro baz de date i un set de reguli.
Condiiile unei reguli pot fi considerate ca o baz de date, ce returneaz un indicator de succes
17
sau eroare. Concluzia unei reguli este o aciune ce manipuleaz date din baza de date i n
plus, un control al sistemului determin secvena regulilor utilizate.
n descriere general se poate meniona faptul c sistemele de producie sunt similare
gramaticilor i apar chiar n definiia gramaticilor Chomsky.
Astfel G = (V, E, P, S) este o gramatic de structur a frazei, unde:
V reprezint un set finit de simboluri numit adesea i alfabet total;
E s V reprezint un set finit de simboluri ale alfabetului numite simboluri
terminale sau, simplu, terminale;
P o submulime a produsului cartezian (VES) V. Elementele lui P, deci
perechile ordonate (u, w), se mai scriu n mod obinuit sub forma u w i sunt
numite producii sau reguli de rescriere;
(S) un simbol iniial sau simbol de start.
n concluzie, un sistem de producie R poate fi considerat un dublet R= (D, P), n care:
D este o baz de date;
P un set finit de reguli.
Baza de date este constituit dintrun set de termeni, iar o regul are forma general
IF c THEN t, n care condiia c este constituit din termeni, paranteze, conective , , , iar
concluzia t, este format dintrun singur termen. Termenii sunt constituii din parametrii
xeP(R) i din valori aeV(R). Se presupune c P(R) i V(R) sunt mulimi finite i
P(R)V(R)=|.
Sintaxa x = a, respectiv x = a cu xeP(R) i aeV(R) va trebui interpretat c x este
mrginit de a i respectiv c x nu este mrginit de a. Un termen t este adevrat pentru baza de
date D dac i numai dac t|D (reamintim c | este functonul lui Sheffer, sau
nonconjuncia, o expresie A|B,semnifica c A i B nu sunt ambele adevrate). Succesul sau
eecul unui termen arbitrar n condiia c este redus la succesul sau eecul termenilor
componeni.
Structura general a unei reguli de producie este urmtoarea:
< partea condiie> <partea aciune>
avnd interpretarea:
IF <partea condiie> este ndeplinit,
THEN se execut <partea aciune>
sau n forma mai general:
IF < partea condiie> este ndeplinit,
THEN se execut <partea aciune_1>
ELSE se execut < partea aciune_2>.
Dac ntro regul condiia este satisfcut, se spune c regula este selectat pentru
declanare sau regula este aplicabil. Regulile aplicabile intr ntro mulime a regulilor
aplicabile, mulime din care este selectat regula cu cea mai mare prioritate dup diverse
criterii. Mecanismul regulilor de producie este mprumutat din teoria limbajelor formale, este
de natur procedural i poate cel mai apropiat de modul de realizare a programelor clasice.
Mecanismul interpretativ al regulilor de producie conine urmtorii pai:
18
selectarea tuturor regulilor ce conin piese de cunoatere ce satisfac partea de
condiie numit i corespondent. Mulimea acestor reguli formeaz mulimea
candidat, denumire ce are originea n faptul c elementele acestei mulimi intr
ntro competiie n urma creia se decide care regul este efectiv aplicat.
Rezolvarea conflictelor prin care din mulimea regulilor aplicabile se elimin mai
nti regulile care duc la aceleai rezultate, dup care n conjuncie cu
mecanismulde asertare a prioritii pentru problema respectiv se selecteaz regula
ce va fi aplicat;
Execuia prii aciune a regulii cu cea mai mare prioritate, n situaia n care sunt
producii aplicabile;
Pornind de la contextul modificat n urma aplicrii regulilor anterioare se reia ciclu
ncepnd cu faza de coresponden, atta timp ct ciclul produce aciuni
materializate prin modificarea contextului.
Oprirea mecanismului interpretativ poate avea loc dac aciunea unei producii
specific concret oprirea, sau se selecteaz o producie vid.
Concluzionnd, putem da urmtoarea definiie:
Un sistem de producie este un cvintuplu:
SP = ( K, P, o, , p
S
)
n care:
K reprezint contextul ca o mulime de piese de cunoatere factual recunoscute de
celelalte componente ale sistemului;
P baza de reguli ca mulime finit de reguli de producie;
o funcia succesor la ndeplinirea cu succes a condiiei;
o :P P { };
funcia succesor n caz de eec a condiiei,
: P P { };
p
S
regula de producie iniial de la care pornete procesul de selectare a regulilor.
Sa notat cu producia vid.
ntruct partea_condiie i partea_aciune sunt forme complexe ce conin mai multe
condiii i mai multe aciuni forma cea mai general a unei reguli de producie este:
p=(c
1
.c
2
. .c
i
) (a
1
; a
2
; ... ;a
p
)
n care c
j
, 1sjsi sunt condiiile i a
k
, 1sksp sunt aciunile.
Pentru ca o producie (p) s fie selectat, innd cont de conectiva logic dintre
condiiile c
j
, este necesar ca n context s existe piese de cunoatere ce satisfac toate aceste
condiii. Dac regula este selectat atunci aciunile a
k
, 1 s k s p sunt executate.
Controlul sistemelor de producie este specificat complet de cele trei componente ale
sale o, i p
S
putndu-se furniza strategii de control adecvate.
O metod de strategie de control este inspirat din algoritmi normali Markov:
K = { k
1
, k
2
,..., k
n
}
P = { p
1
, p
2
,..., p
m
}
o(p
i
) = p
1
, 1 s i s n
(p
i
) = p
i+1
, 1 s i s n-1
(p
n
) =
p
S
=p
1
.
Conform acestei strategii sistemul cerceteaz condiiile din context ncepnd cu prima
regul, iar la ntlnirea primei reguli aplicabile o aplic dup care comut controlul de regul
p
1
cu noul context. n situaia de succes controlul este comutat la regula p
i+1
realiznd astfel o
19
explorare succesiv. n condiiile n care nici o regula nu este aplicabila se selecteaz,
conform funciei succesor la eec, producia vid.
O metod des ntlnit este i cea utilizat n sistemul expert EXSYS, prin care se
alege din mulimea candidat producia cu cel mai mare ctig informaional. Logica de mai
sus se bazeaz pe faptul c o astfel de regul conine mai mult informaie, fapt ce va
determina atingerea mai repede a obiectivului.
1.1.4. Reele semantice
Acest mod de reprezentare a aprut ca o consecin a modului de surprindere a
structurilor relaionale de mare complexitate. Aspectul de graf al reprezentrii constituie doar
o variant de evoluie pentru caracteristicile puse n relief prin reprezentarea cunoaterii cu
predicate de ordinul nti.
Elementele primitive constituente ale unei reele semantice sunt:
- noduri - reprezentnd abstractizri structurate pentru concepte, evenimente, stri, alte
obiecte suport;
- arce (legturi) - reprezentnd abstractizri ale relaiilor propriu-zise.
Primitivele de acest fel sunt utilizate n limbajele de nivel nalt ce se folosesc, pentru
reprezentarea structurilor de date, de spaii de memorie numite i celule, legate ntre ele prin
pointeri (de exemplu LISP). Simbolurile i valorile asociate structurilor de date permit
exprimarea unor semnificaii i apropierea de cerinele sistemelor de reprezentarea
cunoaterii.
Modelul de reprezentare prin reele semantice a fost propus n 1966 de Ross
Quillian. Denumirea se explic prin faptul c reproduce din punct de vedere conceptual
structura semantic a dicionarelor explicative, cele dou componente fiind:
- noduri - concepte reprezentate prin cuvinte;
- arce - relaii cu alte concepte.
Se poate utiliza noiunea de limbajul unei reele ce exprim concepte, evenimente,
stri, episoade i relaii ntre acestea. Pentru limbajul unei reele se utilizeaz o serie de
simboluri care sunt nelese de interpretorul reelei, simboluri ce formeaz primitivele
semantice.
Combinarea primitivelor conform regulilor limbajului determin expresii.
Descrierea este fcut prin obiecte formale intensionale denumite i concepte ct i
prin obiecte extensionale denumite instane. Relaia ntre obiecte i instan este denumit i
instaniere sau denotare i are caracter extensional pe cnd relaia ntre instane i concepte
denumit i conceptualizare are un caracter intensional.
CONCEPT
X
INSTAN A
W
CONCEPTUALIZARE
(intensiune)
INSTAN IERE
(extensiune)
20
O instan poate reprezenta un obiect din lumea real sau un alt concept. Atunci cnd
instana este un concept poate avea la rndul su instane. Se obine astfel o ierarhie
conceptual de mai multe nivele.
Conceptul fiind de fapt un obiect cu structur este alctuit din entiti formale numite
componente mpreun cu relaiile dintre acestea.
De multe ori este greu a se formula un concept dar se pot descrie clase ce aparin
mulimii instanelor unui concept. Asemntor ierarhiei conceptuale se poate defini o ierarhie
de clasificare ntre componentele crora se stabilesc relaii taxonomice. Descrierea relaiilor
taxonomice ntre obiectele plasate n nodurile reelei se face cu ajutorul primitivelor
taxonomice ce asigur interpretarea uniform a acestor legturi n toat reeaua. Primitivele
taxonomice sunt specificate ca simboluri relaionale (predicate) ce eticheteaz arcele reelei,
la a cror capete se gsesc noduri ntre care se definete o relaie de apartenen de la obiect la
clas. Iat principalele primitive taxonomice:
- relaia de apartenen a obiectului la clas, specificat de regul printr-un predicat
de forma:
ESTE (<element>, <clasa>)
cu semnificaia cunoscut n algebr <element> e <clasa>.
- relaia de incluziune a unei submulimi ntr-o mulime se specific printr-un predicat
de forma:
ESTE_SUBMUL IME (<mulime1>, <mulime2>)
cu semnificaia <mulime1> c <mulime2>.
n anumite situaii cnd aplicaia o cere se pot rafina aceste relaii nct pentru relaia
de incluziune s se specifice submulimile disjuncte. Spre exemplu apartenena persoanei cu
numele POPESCU la clasa oamenilor ce se exprim cu ajutorul propoziiei POPESCU ESTE
OM se va transpune n reeaua semantic
POPESCU OM
ESTE
Relaie de
intensiune
CONCEPT INSTAN
Apartenena persoanei cu numele POPESCU la mai multe clase cum sunt mulimea
informaticienilor, a cercettorilor i a oamenilor este reprezentat de reeaua
POPESCU
OM
ESTE
ESTE
ESTE
INFORMATICIAN
CERCETTOR
21
Utilizarea primitivei taxonomice ESTE permite reprezentarea i n cazul n care mai
multe persoane sunt membre ale unor clase, de exemplu mulimea oamenilor,
informaticienilor, cercettorilor cu reprezentarea
ADRIAN
OM
ESTE
INFORMATICIAN
CERCETTOR
POPESCU
ION
ESTE_SUBMUL IME
Cu toate c reprezentarea este sugestiv este ns dificil de regsit direct propoziia
POPESCU ESTE OM sau alt propoziie corespunztoare relaiilor specificate.
Relaia taxonomic nu epuizeaz toate posibilitile pe care primitiva le ofer
reprezentrii cunoaterii. Pentru aplicaiile de inteligen artificial au fost elaborate o serie
de primitive semantice din care mai cunoscute sunt cele elaborate de Yorrick Wilks i Roger
Schank.
Sistemul lui Wilks pornete de la premisa c n limbajul natural exist cuvinte cu
semnificaii primitive ct i cuvinte fr semnificaii primitive. Wilks definete urmtoarele
clase de primitive semantice:
- primitive ce semnific entiti de tip om, lucru, substan, parte;
- primitive ce specific semnificaii cu care se reprezint aciuni cum sunt cauz,
mutare, curgere, lovire;
- primitive ce specific semnificaii cu care se reprezint relaii ntre entiti de tip
obiect, instrument;
- primitive ce specific semnificaii cu care se reprezint calificative ale entitilor i
aciunilor cum sunt: mult, puin, bun, ru, mic, mare;
- primitive ce specific semnificaii cu care se reprezint tipuri de entiti;
- primitive ce specific clase de primitive, obiecte fizice, oameni, obiecte n interior,
exterior.
Pentru cuvintele ce nu sunt primitive se dau definiii cu ajutorul primitivelor
semantice. Primitivele semantice trebuie s fie independente n sensul c nu se pot defini cu
ajutorul altor primitive semantice asigurnd astfel consistena (n sensul c nu sunt definite
circular).
Sistemul lui Schank sau teoria dependenelor conceptuale folosete reprezentarea fr
ambiguiti a semnificaiei utiliznd 11 aciuni elementare grupate n categorii. ntr-o astfel de
reea semantic conceptele sunt legate prin relaii numite dependente, ce se disting prin tip i
etichet. Pot exista mai multe tipuri de dependene cum sunt:
- dependena de tip cauzal materializat prin descrierea relaiilor conceptuale ale
obiectului i legtura sa cu actul primitiv;
- dependen de tip subiectival care leag aciunea primitiv de agentul su numit i
concept actor;
- dependen de tip predicativ ce leag un concept de un predicat.
Cele trei tipuri de dependene se pun n eviden prin mascarea cu linii diferite,
etichetele fiind cele ce denumesc arcele cu tipul dependenei.
Funcie de structur i tipul de reprezentare reelele semantice se pot clasifica n:
- reele semantice simple;
- reele semantice sortate;
- reele semantice extinse.
22
1.1.4.1. Reele semantice simple
Sunt acele entiti n care nodurile sunt entiti individuale, iar arcele relaii ale
acestora. n aceste reele nu se introduc specializri ale arcelor i nodurilor, fapt ce determin
c interpretarea este dat de coninutul descrierii ce este asociat fiecrui simbol ce figureaz
ca etichet de nod sau arc. La interpretare se asociaz fiecrui simbol de etichet o procedur
proprie de determinare a semnificaiei, singura trstur comun a elementelor reelei fiind
legat de structur i se manifest sub form de proceduri fizice de parcurgere a reelei. Cu
ajutorul reelelor semantice simple se pot reprezenta aseriuni libere de orice variabil ntruct
nu se admit noduri specializate aferente reprezentrii variabilelor.
S presupunem reprezentarea piesei de cunoatere ce specific faptul c LA
SUS INEREA TEZEI DE DOCTORAT DE CTRE ION CARE ESTE UN BUN SPECIALIST,
COLEGUL SU VASILE I OFER UN FRUMOS CADOU. Se obine urmtoarea reea
semantic simpl:
SUS INERE TEZ
EVENIMENT 2
EVENIMENT 1
OFER
VASILE
ION
OM
SPECIALIST
CADOU FRUMOS
ESTE
CAUZEAZ
AC IUNE OBIECT
agent
ESTE
ESTE
COLEG
Referitor agent
receptor
ESTE
CALITATE
Se observ din studiul reprezentrii de mai sus c aceasta nu este realizat n form
propoziional. Se cunoate faptul c ION i VASILE sunt oameni, adic aparin clasei OM.
Aciunea de oferire a cadoului de ctre VASILE este un eveniment pentru care VASILE este
agent i ION este receptor. Pentru ION susinerea tezei de doctorat este de asemenea un
eveniment. Acest eveniment este n relaie cauzal cu evenimentul oferirii cadoului.
Reelele semantice simple nu ofer noduri prefereniale n iniierea procesului de
interpretare, selecia unui nod ca nod iniial este determinat de aplicaia pentru care este
construit baza de cunotine. Candidaii pentru poziia de nod iniial sunt selectai dup
diverse criterii dintre care cele mai ntlnite sunt:
- nodul etichetat cu un simbol identic numelui piesei de cunoatere;
- selecia candidailor dintre nodurile ce au proprietatea de a fi noduri surs pentru toate
relaiile n care sunt implicate.
Pentru descrierea unei reele semantice simple aceasta este descompus n triplete de
forma
(<nod_surs> <relaie> <nod_destinaie>).
Descompunerea sugereaz utilizarea de liste n LISP pe care le putei vedea n
exerciiul 3, probleme rezolvate, de la sfritul acestui modul.
23
1.1.4.2. Reele semantice sortate
Se caracterizeaz prin aceea c folosesc specializarea nodurilor i/sau arcelor pentru a
specifica unele diferene de natur structural ntre entiti ce nu pot fi relevate prin
etichetare. Pentru aplicaii de dialog n limbaj natural se folosete reprezentarea
propoziional a cunoaterii, asociind la aceasta relaii cauzale. n elaborarea tehnicilor de
etichetare a nodurilor i tipurilor de relaii se cunosc mai multe abordri dintre care cea mai
utilizat este cea definit de Fillmore, care stabilete un numr restrns de relaii primitive ce
pot acoperi o varietate semantic larg. Iat cteva exemple de relaii cauzale:
- PREDICA IE - stabilete c nodul surs este de tip propoziional, indicnd o
instaniere a predicatului specificat n eticheta nodului
destinaie ce reprezint o instaniere sau o stare (echivalent cu
verbul ntr-o propoziie);
- AGENT - are ca nod destinaie o entitate cu capacitatea de a efectua
aciunea. Entitatea este numit i actor i are rolul de subiect
logic;
- RECEPTOR - indic un nod destinaie ce are capacitatea de a participa la
aciune;
- OBIECT - indic ca nod destinaie o entitate ce este afectat de aciunea
specificat pentru propoziia din nodul surs;
- INSTRUMENT - are ca nod destinaie o entitate ce este folosit de agent la
efectuarea aciunii suportate de obiect;
- LOC - are ca nod destinaie o entitate ce exprim o propoziie ce
indic locul desfurrii aciunii;
- TIMP - indic un nod destinaie ce specific timpul sub o anumit
form. Poate fi exprimat durata prin dou relaii momentane
(moment_iniial, moment_final), fie ca o relaie durat ce arat
valoarea intervalului fr a specifica scara timpului.
Esenial pentru reprezentarea propoziional este predicia, care poate fi exprimat cu
ajutorul unui simbol predicat, cu argumentele plasate n dou clase i anume:
- argumente de baz - obligatorii pentru a defini o instan valabil a
predicatului i
- argumente periferice - ce aduc n reea relaii suplimentare prin care se
contureaz cunoaterea sub aspecte ce nu depind
exclusiv de predicia considerat.
Se definesc urmtoarele sorturi de expresii predicative corespunztoare la categoriile
sintactice ale limbajului natural:
- sortul expresiilor predicative verbale (V) ce apar n instane ca predicate ale
propoziiilor;
- sortul expresiilor predicative adjectivale (A) ce apar n instane ca modificatori de
termeni;
- sortul expresiilor predicative nominale (N) ce apar n instane ca definiii de
termeni.
Cadrul definitoriu pentru predicate cuprinde urmtoarele date iniiale:
- formatul predicatului compus din numele identificator, lista argumentelor de baz
i a argumentelor periferice;
- sortul predicatului;
24
- funcia semantic a argumentelor exprimate sub forma relaiilor cauzale;
- restricii de selecie a termenilor ce candideaz pe poziia de argumente ale
predicatului.
Starea de lucruri descris de o predicie d o valoare de adevr predicatului. Strile de
lucruri ce nu se modific n timp se numesc statice, spre deosebire de cele dinamice ce sunt
caracterizate de schimbri de timp.
Dac n cadrul predicatului exist un argument numit controlor ce are proprietatea de
a determina starea de lucruri asociat prediciei se spune c starea este controlat. Dinamismul
i controlul determin noi sorturi ale prediciei i anume:
- aciunea - stare dinamic i controlat;
- procesul - corespunde unei stri de lucruri dinamice i necontrolate;
- poziia - corespunde unei stri de lucruri statice i controlate;
- situaia - corespunde unei stri de lucruri statice, dar necontrolate.
Relaiile cauzale se pot extinde fr restricii putnd fi definite urmtoarele tipuri de
relaii:
- relaii ce extind specificarea strii de lucruri: calitate, modalitate;
- relaii ce refer predicia la ali participani: iniiator, cunosctor, executor,
terminator;
- relaii ce extind dimensiunile spaiale: sub, lng, deasupra;
- relaii ce extind dimensiunile temporale: durata, frecvena;
- relaii de interpoziionare ntre o stare i alte stri: cauz, motiv, scop, rezultat,
circumstan.
n procesul de instaniere a pieselor de cunoatere individuale dintr-o reea semantic
prin care s reprezentm cunoaterea sub toate aspectele sale conceptuale i factuale, apare
necesar organizarea reelei semantice n vederea stabilirii ierarhiei ntre diferitele
componente ale reelei.
Cea mai simpl organizare mparte reeaua n dou pri:
- reeaua conceptual, n care sunt descrise piesele de cunoatere care reprezint
obiecte, aciuni, procese, stri de lucruri cu caracter generic;
- reeaua factual, n care sunt descrise instanele acestor concepte.
1.1.4.3. Reele semantice extinse
Caracteristica pentru reele semantice extinse este specializarea nodurilor i arcelor,
corespunztoare cerinelor programrii logice, definindu-se:
- sorturi pentru noduri (simboluri funcionale, variabile, constante);
- sorturi pentru arce (relaii condiionale i conclusive).
Reeaua semantic extins este o reprezentare grafic echivalent cu forma cauzal a
formulelor logice.
Piesa de cunoatere cine se scoal de diminea, departe ajunge ce se poate scrie cu
formula
x (este(x, om) . se_scoal (x, diminea) ajunge(x, departe)),
se poate reprezenta sub forma unei reele semantice extinse astfel:
25
DIMINEA A
OM
Relaii
condiionale
X
DEPARTE
AJUNGE
Relaie conclusiv
Reelele semantice extinse sunt de fapt reele sortate pe baza unor criterii de logic a
programrii.
Diferene ntre reelele semantice extinse sunt date de criteriile:
- setul primitivelor semantice i metodele de tratare a neprimitivelor;
- stabilirea sorturilor pentru noduri i arce;
- mecanismele de definire a altor sorturi (definirea pieselor de metacunoatere);
- conveniile de reprezentare grafic.
Reelele semantice extinse ofer un instrument de realizare mai apropiat dect reelele
semantice simple.
Prin sortarea nodurilor i arcelor se introduc mecanisme descriptive puternice capabile
s specifice restricii implicite, ceea ce au efect favorabil asupra: eficienei utilizrii spaiului
de reprezentare, simplific accesul la piesele de cunoatere i reduce timpul necesar pentru
procesele infereniale.
1.1.5. Reprezentarea cunoaterii cu ajutorul cadrelor
A fost introdus de Marvin Minsky i ncearc s reuneasc o parte din conceptele de
baz ale metodelor de reprezentare procedural, sisteme de producii i reele semantice.
Conceptul de cadru este o generalizare a gramaticii de cazuri din lingvistic ce cuprinde
informaia declarativ i procedural. Un cadru este reprezentat printr-o structur stereotip ce
utilizeaz categoriile sintactice:
- identificator - are asignat un nume care asociat cu alte descrieri specific structura
cadrului la care este ataat;
- forma - categorii de caracteristici la care se asigneaz simboluri relaionale
specifice conceptului;
- faeta - sunt reprezentate de perechi simbol-valoare cu care se descriu obiectele din
relaiile specificate de formele reprezentrii.
Cadrul este format dintr-o structur arborescent de locuri n care piesa de cunoatere
va plasa simbolurile purttoare de semnificaie. Un formalism metalingvistic de reprezentare a
cadrelor este:
<cadru> = (<identificator_cadru> <descriere_form>).
<descriere_form> = ((<identificator_form> <descriere_faet>),...
...,(<identificator_form> <descriere_faet>)).
<descriere_faet> = ((<identificator_faet> <descriere_dat>),...
...,(<identificator_faet> <descriere_dat>)).
<descriere_dat> = (<valoare> <descriere_date> <valoare>).
<valoare> = (<date> <etichet> <mesaje> <comentariu>).
Simbolurile pot reprezenta proprieti ale obiectelor sau relaiilor, nume de alte cadre,
identificatori de proceduri ataate. Se disting n reprezentarea prin cadre o serie de primitive
26
semantice ce fac s plaseze cunoaterea n conceptul mai larg oferit de structura cadrului cum
sunt:
- forme utilizate la descrierea piesei de cunoatere;
- forme ce exprim elemente reprezentate de utilizarea cadrului;
- forme corespunznd prezumiilor considerate adevrate;
- forme corespunznd reorientrii continurii n situaia eecului.
Relaiile aferente utilizrii formelor, relaii ce caracterizeaz piesa de cunoatere i
legturile sale cu universul problemei se pot mpri dup tip n :
- generalizare - specific concepte cu definiii mai puin restrictive;
- specializare - specific concepte cu descrieri ce satisfac o condiie dat;
- apartenena - indic clasa din care face parte piesa de cunoatere i prin care se
motenesc proprietile;
- compoziia - indic obiectele ce intr n alctuirea obiectului;
- proprietile - reprezint proprietile specifice ale obiectului reprezen-tat.
Un exemplu de reprezentare cadru pentru o universitate cu profil tehnic care folosete
forme cadru specifice de descriere se gsete la sfritul acestui modul, probleme rezolvate.
O facilitate puternic este cea a introducerii n cadre a reprezentrii regulilor de
producie. Transpunerea unei reguli n cadre pornete de la obiectivele:
- regula conine dou aciuni distincte, deci dou forme procedurale diferite;
- prima form cea de evaluare a condiiilor are ca efect autorizarea execuiei celei
de-a doua forme procedurale sau ieirea din regula de eec;
- a doua form determin corpul propriu-zis al aciuni ce se execut cnd condiia
este ndeplinit;
- contextul operaional este reprezentat de celelalte forme cu caracter declarativ.
Structura implicit ierarhizat a conceptului de cadru face posibil organizarea sub
form de arbori de clasificare. Structura arborescent deriv din cadre prototip ale claselor i
subclaselor.
27
Unitatea de nvare nr.2
Problematica rezolvrii problemelor
(sisteme rezolutive)
Cuprins:
2.1. Probleme, raionamente, strategii ................................................................ pag. 27
2.1.1. Strategia de control nainte..... .................................................................. pag. 28
2.1.2. Strategia de control napoi ..... .................................................................. pag. 29
2.1.2. Strategia de control combinat nainte-napoi ..... ...................................... pag. 30
2.2. Tipuri reprezentative de probleme ............................................................... pag. 31
2.3 Cunoaterea despre problem n procesul rezolvrii .................................... pag. 32
2.4. Reprezentarea problemelor n limbajul calculului cu predicate
de ordinul nti .................................................................................................... pag. 33
2.4.1. Skolemizarea formulelor ........................................................................... pag. 35
2.5. Reprezentarea problemei n spaiul strilor .................................................. pag. 38
2.6. Utilizarea grafurilor I/SAU ........................................................................ pag. 41
2.6.1. Rezolvarea problemelor prin decompoziie .............................................. pag. 42
2.7. Aplicaii. Exerciii rezolvate, teste de autoevaluare, teme de control ..... .... pag. 43
2.8. Bibliografie modul 1 .................................................................................... pag. 47
2.1. Probleme, raionamente, strategii
Rezolvarea problemelor este obiectivul fiecrui sistem inteligent i se va face att prin
cutarea unor rspunsuri predefinite la unele ntrebri, dar mai ales prin procese complexe de
deducie, de calcul simbolic i evaluri numerice, care se bazeaz pe faptele specificate n
enunul problemelor i pe fapte nregistrate a priori n baza de cunotine.
Totalitatea componentelor unui astfel de sistem destinat rezolvrii de probleme
formeaz un sistem rezolutiv.
Problema reprezint o dificultate de natur cognitiv dat de:
- insuficiena sau inadecvarea unor rspunsuri la ntrebri privind o entitate
necunoscut;
- incapacitatea sistemului rezolutiv de a construi un rspuns prin aplicarea
procedeelor cunoscute.
Problema prezentat spre rezolvare sistemului de inteligen artificial este un enun
de problem potenial. Confirmarea ca problem real e dat de apariia n cadrul sistemului
a unei situaii problematice.
Constituentele primitive ale problemei sunt:
- aseriuni ce descriu obiectele ce alctuiesc universul discursului, numite i date ale
problemei (aspectul factual);
- aseriuni referitoare la operaiile permise sau condiiile problemei (aspectul
procedural);
- obiecte, proprieti sau condiii reformulate explicit, consecin a enunului sau
necunoscutele problemei.
Obiectivul rezolvrii l reprezint asocierea unei determinri fiecrei necunoscute.
Indiferent de modul de raionare utilizat ciclul de baz al unui mecanism de inferene cuprinde
patru faze i anume:
- faza de selecie a unui subansamblu al bazei de fapte i reguli ce merit atenia fa
de restul bazei. Selecia ofer o economie de timp considerabil pentru fazele
urmtoare;
28
- faza de filtrare ce are ca efect comparaia ntre partea de premis a regulii
considerate i faptele bazei de fapte pentru determinarea regulilor aplicabile;
- faza de rezolvare a conflictelor are ca obiectiv alegerea acelor reguli ce sunt
aplicate efectiv;
- faza de execuie const din aplicarea regulilor alese mai nainte, aciunea constnd
n general n adugarea de noi fapte n baza de fapte.
Raionamentul reprezint constituirea lanurilor sau a reelelor infereniale ntre
premise i concluzie. El este fundamentat pe faptele furnizate de enun i pe cele din baza de
cunotine. Dac acestea sunt suficiente raionamentul este direct, altfel se ajunge la impas i
necesit folosirea altor raionamente cum ar fi cel metaforic sau prin analogie.
Raionamentele ce pornesc de la premise la concluzie (se numesc formale) i studiaz
transformrile structurale. Raionamentele informale pornesc de la semnificaiile factuale i
procedurale cuprinse n enunuri. Aceste metode de raionament surprind interpretri
structurale, semnificaii de natur relaional, proprieti primitive, structuri ierarhice bazate
pe primitive semantice. Raionamentul informal este necesar s se valideze prin aplicarea
regulilor specifice simbolurilor folosite actual. Desfurarea raionamentelor are loc pe baza
unei strategii ce asigura succesiunea inferenelor.
Iat cteva strategii de control al raionamentelor.
2.1.1. Strategia de control nainte
Aceast strategie pornete de la starea iniial descris de enun i genereaz succesiv
candidai la soluie pn la obinerea rspunsului corespunztor obiectivului problemei.
Regulile ce se utilizeaz pot fi reguli de inferen ale mecanismelor logice de baz,
reguli specifice definite prin enun referitoare la generarea termenilor, simboluri relaionale,
restricii ce reduc spaiul problemei. Se mai spune despre strategiile de control nainte c
pornesc de la fapte pentru a ajunge la obiectiv. n consecin se vor selecta regulile a cror
parte de condiie este verificat (faza de selecie i filtrare). Pentru faza de rezolvare a
conflictelor din ansamblul regulilor selectate se vor alege acelea ce au prioritate maxim. Se
obine astfel strategia general de control:
< contextul de stare iniial >
+ regula 1 (operatorul 1)
< contextul de stare succesiv 1>
+ regula 2 (operatorul 2)

+ regula n (operatorul n)
< contextul de stare final > < obiectivul problemei >
Succesiunea regulilor de obinere a cilor de rezolvare sugereaz un arbore ale crui
noduri sunt stri n spaiul strilor, soluia problemei fiind dat printr-o procedur de cutare
n spaiul strilor. Metodele ce adopt aceast strategie se numesc metode productive, iar
strategia se numete de jos n sus sau de cutare dirijat prin date.
Se consider un exemplu de baz de cunotine reprezentat prin reguli de producie:
R
1
: IF B and D and E THEN F
R
2
: IF D and G THEN A
R
3
: IF C and F THEN A
R
4
: IF B THEN X
R
5
: IF D THEN E
29
R
6
: IF A and X THEN H
R
7
: IF C THEN D
R
8
: IF X and C THEN A
R
9
: IF X and B THEN D
Dac se presupune baza de fapte iniial B, C i obiectivul H, construcia arborelui de
decizie pornind de la prima regul prin secvenierea regulilor n ordinea n care apar n baza
de cunotine este urmtoarea:
B, C
R
4
(B)
B, C, X
R
9
R
8
R
7
(C)
B, C, X, D
B, C, X, D,E
B, C, X, D, E, F
B, C, X, D, E, F, A,
B, C, X, D, E, F, A H
R
9
R
8
R
9
R
8
R
9
R
8
R
9
R
8
R
5
(D)
R
1
(E)
R
3
(F)
R
6
R
7
(C)
S considerm acum o strategie prin care se selecteaz din mulimea regulilor
aplicabile acelea pentru care numrul de condiii din partea de premis este mai mare. Se
observ c regula R
8
este preferabil fa de regula R
7
ntruct are n premis dou condiii
fa de R
7
care are doar una. Cu aceast strategie se obine arborele:
B, C
R
4
B, C, X
R
6
B, C, X, A B, C, X, A, H
R
8
R
7
R
9
R
7
R
9
R
8
Se observ c printr-o astfel de strategie numrul de inferene se reduce la trei fa de
ase anterior. n plus trebuie reinut faptul c o inferen aplicat o dat nu se mai aplic
ntruct nu servete la nimic ca s se deduc un fapt ce a fost deja dedus. Eficacitatea
ajungerii la scop este dat de numrul de inferene necesare, numr de inferene ce depinde n
mare msur de faza de eliminare conflicte.
2.1.2. Strategia de control napoi
Aceast strategie de control pornete de la obiectivul problemei care prin aplicarea
regulilor de descompunere se transform n subprobleme de complexitate mai mic.
30
Structura general a inferenierii este:
< Obiectivul problemei > < contextul de stare final >
+ regula 1
< contextul de stare precedent 1 >
+ regula 2

+ regula n
< contextul de stare iniial >
Modul de control specificat mai poart denumirea i de control dirijat prin obiectivul
problemei sau control de sus n jos. Metoda se mai numete i reductiv.
Raionarea pornete de la scop, selectnd acele reguli ce au partea dreapt n
coresponden cu obiectivul problemei. Condiiile necunoscute (partea stng) devin n acest
mod subscopuri ce se vor demonstra. Procesul continu pn cnd toate subscopurile se
verific. n acest caz sistemul poate cere utilizatorului s rspund la ntrebri i procesul
rencepe dup primirea rspunsurilor. n momentul n care sistemul nu mai poate selecta
reguli, formula ntrebri utilizatorului sau utilizatorul nu mai poate rspunde la ntrebri se
ajunge la situaia de eec.
Pentru exemplul considerat la strategia de control nainte, se poate observa c regulile
R
2
, R
3
, R
8
pot fi utilizate pentru a verifica scopul A. n acest sens regulile sunt aplicate n
ordinea numerotrii lor, pentru a ncerca s verifice din unul n altul subscopurile produse. n
caz de eec, cum este subscopul G care nu poate fi dedus, se revine n arbore pentru a selecta
regulile lsate la prima trecere. n acest fel explorarea nceteaz atunci cnd fie a fost
demonstrat obiectivul iniial, fie cnd toate seleciile posibile au condus la eec. n diversele
faze sistemul poate recurge la chestionri ale utilizatorului asupra subobiectivului nerezolvat.
Avantajele strategiei de cutare napoi:
- arborele de cutare este adesea mai puin adnc dect cel aferent strategiei de
control nainte;
- sistemul poate recurge la ntrebri adresate utilizatorului, procesul de raionare
fiind interactiv.
Strategia are i un mare dezavantaj legat de faptul c exist pericolul buclrii.
2.1.3. Strategia de control combinat nainte-napoi
Aceast strategie este caracterizat de faptul c utilizeaz metode reductive pentru
descompunerea problemei n subprobleme care apoi sunt rezolvabile prin metode productive,
fie prin metode reductive. Succesiunea invers nu este posibil ntruct metodele productive
genereaz de la primul pas candidai la soluie ce nu reprezint subproblemele, fapt pentru
care odat selectat metoda productiv nu poate fi prsit pentru a continua rezolvarea prin
alte metode. Deci odat generat o metod productiv aceasta va fi utilizat pn la obinerea
soluiei finale.
Alegerea strategiei de control este dependent de tipul de raionament ales. Cert este
faptul c nici o strategie de control nu este bun n orice situaie. Strategia de control nainte
este indicat pentru tratarea cunotinelor empirice i este ineficient pentru probleme
complexe. Dac ns unul sau mai multe scopuri trebuie atinse sau verificate este mult mai
indicat s se utilizeze strategia de control napoi. Raionarea napoi este indicat n cazul
informaiilor incomplete sau cnd se poate angaja un dialog cu utilizatorul n vederea
mbogirii sistemului de informaii necesare inferenelor.
31
2.2 Tipuri reprezentative de probleme
Capacitatea de rezolvare a problemelor de ctre un sistem inteligent este apreciat
dup uurina cu care d soluii la probleme ce nu au fost stabilite n prealabil, precizarea lor
fiind fcut n momentul ncrcrii bazei de cunotine.
Din punctul de vedere al satisfacerii condiiilor de formulare se pot distinge trei mari
categorii de probleme:
- probleme bine formulate sunt acele probleme ce satisfac condiiile de necesitate
i suficien pentru toate componentele din structur, necunoscutele mpreun cu
datele alctuind un model consistent;
- problemele incomplet definite sunt problemele n a cror formulare se poate pune
n eviden lipsa unor date, a condiiilor acestora sau sunt lipsuri n specificarea
elementelor vzute ca necunoscute;
- probleme greit formulate pentru care pot fi puse n eviden contradicii i
inconsistene sau nu pot fi stabilite clar componentele problemei.
Problemele bine formulate pot fi clasificate n :
(1) probleme de tip interogativ
(2) probleme de tip predicativ
(3) probleme de tip inductiv
(1) O problem de tip interogativ este compus din trei pri:
- ipoteza =I= (alctuit din date)
- procesul =P= (la care sunt supuse datele)
- rezultatul =R= (obinut n urma aplicrii procesului).
Funcie de poziia necunoscutului =X= n componentele problemei se deosebesc
probleme interogative de tip IPX, IXR i XPR. Dac toate componentele problemei sunt
cunoscute enunul problemei este de tip IPR i aceasta reprezint un fapt. Se poate afirma c
atunci cnd unul din componentele unui fapt este necunoscut acesta devine o problem.
Problemele de tip IPX au enunul: Care este rezultatul X al aplicrii procesului P
asupra obiectelor din ipoteza I ?. Rezultatul se obine prin aplicarea efectiv a procesului P.
Problemele de tip IXR corespund enunului: Ce proces X trebuie aplicat asupra
obiectelor din ipoteze I pentru a obine rezultatul R ?. La acest tip se manifest caracterul
creator, rezolvarea putndu-se aborda astfel:
a) pe baza unor reguli euristice de forma:
IF (ipoteza este de tipul I) AND (rezultatul este de tipul R) THEN
se aplic (METODA_1) OR (METODA_2) OR OR (METODA_n)
b) pe baza raionamentelor prin analogie
c) pe baza unor metode de sintez procedural.
Problemele de tip XPR corespund formulrii: Ce obiecte X trebuie s fie prelucrate
de ctre procesul P pentru a obine rezultatul R ?.
Problema poate fi rezolvat direct doar dac P este o bijecie adic tiind c R = P(X)
soluia va fi X = P
-1
(R). Dac ns P nu este o bijecie atunci abordarea trebuie fcut prin
metode reductive.
32
(2) Problemele de tip predicativ se aseamn cu cele interogative, diferena fiind
c ipoteza i concluzia sunt entiti cu valoare de adevr. Componentele unei probleme de tip
predicativ sunt:
- ipoteza =I=
- procesul inferenial =R=
- concluzia =C=
Cele trei tipuri de probleme se vor numi astfel:
Problem de tip IPX denumit i deducie sau derivare. Se ntlnete frecvent n
aplicarea procedurilor ce vizeaz descompunerea problemelor n subprobleme;
Problem de tip IXC denumit i demonstraie. Soluia unei astfel de probleme este
format dintr-un lan de inferene ce pornete de la ipoteze i ajunge la concluzie. Aplicarea
unui lan inferenial este caracteristic sistemelor rezolutive pentru demonstrarea automat a
teoremelor.
Problem de tip XPC denumit i inducie sau nvare din exemple. Soluia
presupune descoperirea unor concepte iniiale, a cauzalitii sau a altor premise prin
interpretarea rezultatelor ce se obin pe baza unor reguli de inferen cunoscute.
(3) Problemele de tip imperativ. La aceste tipuri de probleme enunul nu conine
necunoscute i nici date de intrare. Rezultatul invocrii procesului este efectul actual, adic
producerea rezultatului cunoscut. O astfel de problem se poate descompune uneori n
subprobleme de primele dou tipuri.
Problemele incomplet formulate au soluie doar dac n urma aplicrii unor procedee
ce nu altereaz specificul problemei din enun, se obine o nou formulare ce satisface
condiia de bun formulare. Principalele procedee ce se aplic n astfel de cazuri sunt:
- reducerea enunului la o problem bine formulat, ce este fcut prin eliminarea
unor elemente lipsite de relevan ce alterau buna formulare;
- completarea enunului de date transmise prin motenire, aferente pieselor din
enun, cu date asimilate prin analogie;
- descompunerea problemei n subprobleme astfel nct anumite componente s fie
bine formulate;
- extinderea obiectivelor problemei asupra clasei ce cuprinde problema iniial,
introducerea de obiecte abstracte, a condiiilor suplimentare ce permit reformularea
enunului pentru a satisface condiiile de problem bine formulat.
Este de la sine neles c nu se pune problema rezolvrii problemelor incomplet
formulate.
2.3 Cunoaterea despre problem n procesul rezolvrii
Piesele de cunoatere pot fi clasificate n raport cu potenialul lor de implicare n
procesele de rezolvare a problemelor. Primul criteriu de clasificare se refer la rolul jucat de
piesa de cunoatere n procesul rezolvrii, n timp ce al doilea criteriu difereniaz calitativ
cunoaterea pentru fiecare dintre roluri.
Pe baza primului criteriu se obine urmtorul arbore:
33
Cunoatere
conceptual
procedural
factual
de control
pentru structuri
pentru raionamente
inferenial
transformaional
instanial
Dependenele reciproce dintre diferitele clase ce formeaz piesele de cunoatere
pornesc de la cunoaterea factual ce definete prototipuri ale unor fapte i instane ce descriu
fapte individuale. Asupra pieselor de cunoatere factual opereaz cunoaterea procedural ce
specific proceduri e transformare a pieselor de cunoatere factual. Cunoaterea de control
asupra procesului de rezolvare se bazeaz pe piese de cunoatere procedural i specific
modul de succesiune n care se nlnuie procedurile de transformare pentru obinerea de noi
structuri, modul de succesiune n aplicarea regulilor de inferen pentru raionamente.
O a doua clasificare se refer la piesele de cunoatere primitive. Se poate considera c
la fiecare nivel pot exista:
- piese ale cunoaterii directe;
- piese ale cunoaterii deduse, obinute din primele prin aplicarea regulilor de
inferen.
n domeniile n care cunoaterea depinde foarte mult de experiena personal a
specialitilor ce furnizeaz cunoaterea expert (deci domeniul sistemelor-expert), deosebim
piese aparinnd cunoaterii globale, pentru care exist mai multe opinii convergente i piese
ale cunoaterii personalizate, a fiecrui individ.
n continuare se vor trata moduri de reprezentare a problemelor dup diferite
formalisme specifice modurilor de reprezentare a cunotinelor.
2.4. Reprezentarea problemelor n limbajul calculului cu predicate de ordinul
nti
Transcrierea n formule a enunurilor presupune efectuarea unei analize cu obiectivele:
- descompunerea enunului n piese de cunoatere ce pot fi descrise cu ajutorul
predicatelor de ordinul nti;
- extragerea caracteristicilor structurale ale teoriei n care se plaseaz problema dat;
- definirea cunoaterii factuale prin asigurarea de simboluri constante la variabilele
predicatelor;
- definirea obiectivului problemei cu ajutorul formulelor din calcul cu predicate de
ordinul nti.
Enunul problemei este exprimat n general ntr-un limbaj apropiat de cel natural, ce
este transcris n formule ale calculului cu predicate de ordinul nti, problema prezentndu-se
sistemului rezolutiv n urmtoarea grupare de simboluri:
- suportul obiectual ce ataeaz piese de cunoatere ca variabile formale pentru
expresii predicative primare;
- simboluri funcionale formate din piese de cunoatere pentru definirea termenilor
din formule;
34
- simboluri predicative ce definesc piese cu valoare de adevr ce descriu proprieti
ale obiectelor sau relaii ntre obiecte;
- fapte expresii formale ce exprim adevruri despre obiectele implicate;
- obiectivul reprezentat printr-o expresie formal, prin care se exprim ce se
urmrete ca rezultat.
S considerm urmtorul exemplu de problem:
Un grup de excursioniti ajung pe malul stng al unui ru ce nu poate fi traversat
not. La acelai mal se gsesc doi copii cu o barc. n barc poate s fie la un moment dat un
singur excursionist sau doi copii. n final se cere ca grupul excursionitilor s se gseasc pe
malul drept, iar cei doi copii mpreun cu barca pe malul stng.
Se propune urmtoarea grupare de simboluri:
Suportul obiectual format din:
- mulimea copiilor C = { c
1
, c
2
}
- mulimea excursionitilor E = { e
1
, e
2
, , e
n
}
- elementul barc {b}
- cele dou maluri { d , s }
Simbolurile predicative ce se vor asocia proprietilor :
C(x) x este un copil
E(x) x este un excursionist
D(x) x este pe malul drept
S(x) x este pe malul stng
B(x) barca este n poziia xe{ d , s }
T(x, y, z) (x) trece cu barca din poziia (y) n poziia (z) n care xeC E,
y, ze{ s , d };
Faptele sunt organizate n fapte reprezentnd condiii ale problemei i fapte relevnd
proprieti ale obiectelor.
Condiiile i expresiile formale ce definesc problema traversrii sunt:
- Barca ajuns pe malul drept trebuie readus pe malul stng numai de ctre un copil,
un excursionist ajuns pe malul drept va rmne acolo tiind c numai aa obiectivul
problemei poate fi atins. Deci:
i) [D(x).C(x)].B(d)T(x, d, s)
- Dac barca este pe malul stng i pe malul drept exist un copil care s o readuc
napoi atunci un excursionist poate traversa rul;
ii) [S(x).E(x)].[D(y).C(y)].B(s)T(x, s, d)
- Dac cei doi copii se gsesc pe malul stng acetia pot traversa rul mpreun
utiliznd barca, fapt ce se exprim prin formula:
iii) [S(x).C(x)].[S(y).C(y)].B(s)T(x, s, d).T(y, s, d)
- Poziia brcii dup o traversare
iv) T(x, y, z)B(z)
- n urma unei traversri obiectele traversate vor fi plasate pe malul destinaie
v) T(x, s, d)D(x)
vi) T(x, d, s)S(x)
- Dac ambii copii sunt pe malul drept unul dintre ei va trebui s aduc barca pe
malul stng
vii) [D(x).C(x)].[D(y).C(y)].B(d)T(x, d, s)
- Faptele care exprim proprieti ale obiectelor sunt date de mulimea copiilor,
mulimea excursionitilor i de poziia iniial a acestora.
viii) C(c
1
), C(c
2
), E(e
1
), E(e
2
), , E(e
n
), S(c
1
), S(c
2
), S(e
1
), S(e
2
), , S(e
n
), B(s)
- Obiectivele problemei sunt date de poziia final a copiilor, brcii i
excursionitilor
35
ix) D(e
1
).D(e
2
)..D(e
n
)
i
x) S(c
1
).S(c
2
).B(s)
Forma general a formulelor n calculul cu predicate de ordinul nti nu este
convenabil pentru aplicarea formulelor cunoscute n logic. n acest sens o serie de
transformri sunt aplicate acestor formule pentru a fi aduse la forma convenabil
mecanismului de interpretare.
2.4.1. Skolemizarea formulelor
Activitatea de uniformizare a modului de scriere a formulelor se realizeaz n principal
dup urmtoarele etape:
- reducerea numrului de conective prin eliminarea implicaiei i echivalenei;
- aducerea formulelor la forma normal prenex (cuantificatorii sunt adui naintea
corpului formulei pe care o prefixeaz);
- rescrierea formulei ca formul universal pri eliminarea cuantificatorilor
existeniali utiliznd funciile Skolem;
- rescrierea formulelor utiliznd forma Skolem conjunctiv, mult mai convenabil
pentru demonstrarea automat.
Se spune c o formul f are o form Skolem f
S
ce nu este logic echivalent, dar este
adevrat dac i numai dac f este adevrat.
Reducerea numrului de conective are ca obiect aducerea formulelor la forma
convenabil aplicrii regulilor de inferen. Reamintim c n teoria inferenelor logice
reprezentarea regulilor se face n forma clauzal i anume:
A
1
.A
2
..A
m
B
1
vB
2
vvB
n
ceea ce este echivalent cu
A
1
.A
2
..A
m
B
1
vB
2
vvB
n
Vom prezenta n continuare reguli de calcul n formule ale limbajului calculului cu
predicate de ordinul nti:
Teorema 1. Fie A i B dou formule oarecare. Atunci sunt valabile urmtoarele reguli:
1) (AB) (AvB);
2) (AB) (A.B);
3) (AB) (AvB).(AvB).
Teorema 2. Dac x este o variabil, iar A, B, A(x) i B(x) formule, dar A i B nu conin
apariii libere ale variabilei x , atunci:
1) x (AB(x))AxB(x);
2) x (A(x)B)- xA(x)B;
3) -x (AB(x))A-xB(x);
4) -x (A(x)B)xA(x)B;
5) -x (A(x)B(x))xA(x)-xB(x);
Pornind de la o formul oarecare A se poate gsi o formul A numit i form prenex
a lui A cu proprietile:
1) A este echivalent cu A, adic AA.
2) n formula A, toi cuantificatorii (n cazul cnd exist) sunt plasai grupat n partea
cea mai din stnga a formulei prefixnd corpul formulei n care sunt plasate
36
celelalte simboluri logice (., v, , , n cazul cnd exist) care figurau n scopul
fiecrui cuantificator.
Teorema 3. Dac x i y sunt variabile distincte, iar A, B, A(x), B(x) i A(x, y) sunt
formule, dar A i B nu conin apariii libere ale variabilei x i dac x este liber pentru y n A(x,
y) (n formulele 5 i 6), atunci:
1) x AA;
2) -x AA;
3) x y A(x, y)y x A(x, y);
4) -x -y A(x, y)-y -x A(x, y);
5) x y A(x, y) x A(x, x);
6) -x A(x, x) -x -y A(x, y);
7) x A(x) -x A(x);
8) -x y A(x, y) y -x A(x, y);
9) -x A(x) x A(x);
10) x A(x)-x A(x);
11) x A(x)-x A(x);
12) -x A(x)x A(x);
13) x A(x).x B(x)x (A(x).B(x));
14) -x A(x)v-x B(x)-x (A(x)vB(x));
15) A.x B(x)x (A.B(x));
16) A.-x B(x)-x (A.B(x));
17) Av -x B(x) -x ( A v B(x) );
18) Av x B(x) x ( A v B(x) );
19) -x ( A(x) . B(x) ) -x A(x) . -x B(x);
20) x A(x) v x B(x) x ( A(x) v B(x) );
Obinerea formei prenex are loc dup urmtoarea succesiune de operaii:
(a) Tranzitarea nega iei de la formule la atomi
Teorema 4. Dac x este o variabil, iar A, B, A(x) i B(x) snt formule atunci:
1) x A(x) -xA(x);
2) -x A(x) xA(x);
3) (A . B) A v B;
4) (A v B) A . B;
5) A ) A;
(b) Transferul cuantificatorilor de la formule la atomi
Teorema 5 Dac x este o variabil, A(x) si B snt formule cu x liber n A dar legat n
B, atunci:
1) x (A(x) v B) x A(x) v B;
37
2) x (B v A(x)) B v x A(x);
3) x (A(x) . B) x A(x) . B;
4) x (B . A(x)) B . x A(x);
5) -x (A(x) v B) -x A(x) v B;
6) -x (B v A(x)) B v -x A(x);
7) -x (B . A(x)) B . -x A(x);
8) -x (A(x) . B) -x A(x) . B;
Teorema 6 Dac x este o variabil, A(x) i B(x) snt formule cu x liber att n A(x) ct
i n B(x), atunci:
1) x (A(x) . B(x)) x A(x) . x B(x);
2) -x (A(x) v B(x)) -x A(x) v -x B(x);
Teorema 7 Dac x i y snt variabile A(x, y) i B(x, y) snt formule, x este legat n cel
puin una din formulele A(x, y) i B(x, y), iar y este liber att n A(x, y) ct i n B(x, y),
atunci:
1) xy (A(x, y) v B(x, y)) yx (A(x, y) v B(x, y));
2) -x-y (A(x, y) . B(x, y)) -y-x (A(x, y) . B(x, y))
(c) Schimbarea numelor variabilelor
Cnd 2 cuantificatori prefixeaz acelai nume de variabil, numele variabilei este
nlocuit cu un simbol diferit de celelalte simboluri pentru variabilele utilizate. Procedeul se
mai numete i standardizarea variabilelor.
(d) Eliminarea cuantificatorului esen ial
Fie o formul n limbajul calculului cu predicate de ordinul nti avnd variabilele libere x
1
,
x
2
, .x
n
, y. Pentru o variabil oarecare, fie aceasta y, se poate asocia cu simbolul funcional
f

( x
1
, x
2
, .x
n
) denumit funcia Skolem a lui , ce satisface axioma Skolem a lui :
|= x
1
, x
2
, .x
n
(-y ( x
1
, x
2
, .x
n
) ( x
1
, x
2
, .x
n
, f

( x
1
, x
2
, .x
n
)
Astfel se elimin din formula dat cuantificatorul existenial prin nlocuirea variabilei
cuantificate cu un simbol funcional inexistent avnd ca argumente acele variabile ce snt
cuantificate universal.
(e) Tranzitarea n prefix a cuantificatorilor universali
ntruct simbolurile de variabile snt individualizate pot fi grupai n prefix toi cuantificatorii
universali obinnd astfel forma normal prenex a formulei.
n concluzie, o formul n forma normal prenex este alctuit din dou pri i
anume:
- partea din stnga, denumit i prefix, care cuprinde toi cuatificatorii universali ai
formulei
- partea plasat dup prefix numit i matricea formulei ce cuprinde literele libere de
cuantificatori i alctuiete corpul propriu-zis al formulei
Forma normal prenex permite transmiterea subformulelor componente n vederea
obinerii formei normale conjuctive, numit i forma Skolem conjunctiv, format din
conjuncii de disjuncii. Dac A, B, C snt formule, atunci:
|= A v ( B . C) (A v B) . (A v C);
38
|= (A . B) v C (A v C) . (B v C);
Astfel, forma Skolem conjunctiv trebuie eventual simplificat pentru a ajunge la cea
mai condensat form de exprimare a formulei.
2.5. Reprezentarea problemei n spaiul strilor
Reprezentarea problemei n spaiul strilor presupune luarea n considerare a strilor i
transformrilor acestora datorate unui numr finit de operatori. Reprezentarea se realizeaz
prin tripletul
P= ( S, G, R) n care S- reprezint mulimea strilor
G c S mulimea obiectivelor problemei
R c S X S mulimea de transformri de stare care indic un drum n graful
problemei
Se spune c secvena de stri (s
0
, s
1
, , s
n
) formeaz un drum n graf dac s
i
s
i+1
eR
() i=0, n, iar n-uplul (s
0
, s
1
, , s
n
) reprezint o soluie a problemei pentru s
0
dac s
n
eG.
Cunoaterea despre problem este definit prin:
- mulimea obiectivelor abstracte ale problemei;
- mulimea de operatori;
- starea iniial;
- starea final;
- starea final format din stri ce reprezint obiectivul problemei
Se definete obiectivul problemei, ca o structur simbolic ce reprezint o stare de
lucruri care odat atins confirm faptul c drumul ce a fost parcurs de la starea iniial prin
graful problemei este o soluie. Pot fi stabilite cteva obiective n procesul rezolvrii, i
anume:
- parcurgerea nainte n spaiul strilor cu scopul atingerii obiectivului
- parcurgerea napoi avnd ca scop revenirea la punctele anterioare pentru
comutarea procesului de rezolvare pe o alternativ de drum
Informaia de stare conine acele elemente ale cunoaterii prin care:
- se asigur tranziia de la o stare la alta, nainte i napoi;
- se asigur informaia de acces la memorie pentru oricare din strile curente;
- se asigur informaia de revenire pentru refacerea strii sistemului n punctele de
ramificaie importante ale grafului i selectarea unei alternative n caz de eec;
- se asigur informaia de acces la alte trasee ale grafului n situaia prelucrrilor
paralele;
- pstrarea informaiilor de justificare a pailor sistemului de rezolvare
Prin spaiul strilor se nelege o mulime finit de obiecte implicate n rezolvarea
problemei pornind de la starea iniial s
0
prin aplicarea unui numr finit de operatori.
Aplicarea unui operator asupra unei stri are ca efect producerea unei stri noi sau a unui
numr finit de stri alternative. Rezolvarea presupune cutarea n spaiul strilor a unei stri
ce corespunde obiectivului problemei. Parcurgerea grafului de la starea iniial s
0
la starea
final s
n
se face prin alegerea unui drum dintr-un numr finit de alternative. n acest proces de
parcurgere este cunoscut criteriul de apreciere a obiectivului fr a se cunoate ordinea de
aplicare a operatorilor sau lungimea drumului de parcurs.
Modul de reprezentare n spaiul strilor se face pe baza unei structuri arborescente.
Aceasta ridic urmtoarele probleme de rezolvat:
39
- definirea unor reguli restrictive pentru procesul generator de stri avnd ca scop
eliminarea strilor redundante, a celor care se deprteaz de soluie, a
combinaiilor absurde ce nu conduc la soluie;
- definirea unor strategii de cutare a soluiei n spaiul generat;
- definirea unor strategii de revenire n caz de eec;
- alegerea unei reprezentri compacte ca spaiu de memorie ocupat;
Se prezint n continuare problema traversrii rului (paragraful 2.4) pentru a crei
rezolvare se va utiliza spaiul strilor. Notnd cu S i D strile pariale ale problemei ce
reprezint situaia pe cele dou maluri, stng i respectiv drept, se obine starea ca o reuniune
a celor dou stri poteniale S D.
Starea iniial: S
0
= { c
1
, c
2
, e
1
, e
2
, . , e
n
, b}
D
0
=
Starea final: S
f
={ c
1
, c
2
, b}
D
f
={ e
1
, e
2
, . , e
n
}
Operatori: T
cd
- un copil traverseaz cu barca pe malul drept
{c
j
, b} c s
i
j=1,2;
T
2cd
- doi copii traverseaz cu barca pe malul drept
{ c
1
, c
2
, b} c s
i
T
ed
- un excursionist traverseaz cu barca pe malul drept
{e
j
, b} c s
i
j=1, n;
T
cs
- un copil traverseaz cu barca pe malul stng
{c
j
, b} c d
i
j=1,2;
T
2cs
- doi copii traverseaz cu barca pe malul stng
{ c
1
, c
2
, b} c d
i
T
es
-un excursionist traverseaz cu barca pe malul stng
{e
j
, b} c d
i
j=1, n;
Prin aplicarea operatorilor definii mai nainte se poate genera spaiul strilor, spaiul
n care prima stare este starea iniial. Modul de formare a arborelui asociat problemei de
traversare a rului pentru primele trei nivele este urmtorul:
40
Graful de tranziie a strilor cu punctul de plecare starea iniial are ramuri ce duc la
obiectivul final, operatorii ce conduc la stri redundante fiind eliminate. Soluia problemei
poate fi privit fie ca o succesiune de stri, fie ca o secven a operatorilor ce conduc la starea
obiectiv. Furnizarea soluiei ca o secven de operatori ce conduce la obiectiv va da:
O={T
2cd
, T
cs
, T
ed
, T
cs
, T
2cd
, T
cs
, T
ed
, T
cs
, T
2cd
, }
n care secvena O={ T
2cd
, T
cs
, T
ed
, T
cs
} se repet de un numr egal cu numrul
excursionitilor.
Din analiza reprezentrii n spaiul strilor se observ o asemnare ntre aceasta i
reprezentarea sistemelor de producie. Altfel, un operator se aplic numai dac anumite
criterii prestabilite snt ndeplinite de starea asupra creia se aplic (echivalen cu
precondiia), rezultatul aplicrii operatorului fiind obinerea unei stri noi din cea veche
(echivalentul aciunii sau produciei). Strategia de control este cea care determin selectarea
operatorilor (regulilor de producie) i a modului de aplicare succesiv a acestora pentru
generarea spaiului strilor.
Aplicarea unui operator asupra unei stri fr a putea reveni la starea anterioar pentru
a apela un alt operator formeaz strategia de control irevocabil. Strategia de control se
numete tentativ dac la un anumit punct se poate lua decizia de revenire la o stare
precedent n vederea aplicrii de noi operatori. Strategia de control cu revenire
(backtracking) este acea strategie prin care punctul de reluare este stabilit din momentul
selectrii operatorului, aa c n caz de eec se poate relua procesul de la un altfel de punct, nu
neaprat cel mai apropiat. Strategia de control prin cutare n grafuri este cea prin care se
pstreaz informaii privind consecinele aplicrii operatorilor la fiecare pas al generrii.
41
2.6. Utilizarea grafurilor I/SAU
Aplicarea strategiilor de rezolvare reductive asupra unei probleme P
0
pornete de la
urmtoarele precizri:
- descrierea problemei iniiale P
0
exprimat n spaiul strilor prin starea iniial P
0
;
- precizarea unei mulimi finite de operatori care aplicai asupra problemei produc o
mulime finit de subprobleme;
- precizarea mulimii finite a problemei primitive P
p
ce snt echivalente cu strile
finale n spaiul strilor.
Un graf orientat I/SAU are urmtoarele caracteristici:
- fiecare nod reprezint o problem sau o subproblem;
- nodul iniial reprezint problema P
0
ce trebuie rezolvat, nodurile finale reprezint
probleme primitive cu rezolvare cunoscut, nodurile intermediare reprezentnd
probleme reduse;
- nodul iniial este un nod neterminal;
- un arc reprezint un operator de reducere a problemei n subprobleme;
- nodurile neterminale pot fi noduri SI cu succesori reprezentnd probleme ce
trebuiesc rezolvate pentru a se da o soluie nodului predecesor iar nodurile SAU au
succesori probleme alternative din care numai una este suficient pentru a da o
soluie nodului predecesor.
Procesul de rezolvare a unei probleme propuse, dup generarea grafului SI/SAU al
reducerii problemei, cutarea n acest graf a condiiilor necesare i suficiente pentru ca nodul
iniial, reprezentnd problema dat, s fie solvabil.
Un nod este solvabil dac este ndeplinit cel puin una din condiiile:
- nodul considerat reprezint o problem primitiv (terminal);
- nodul considerat este un nod terminal de tip SI, ale crui noduri succesoare snt
toate terminale;
- nodul considerat este un nod neterminal de tip SAU, iar cel puin unu din
succesorii si este solvabil;
Subgraful coninnd nodurile solvabile ale unui graf I/SAU care reprezint reducerea
unei probleme, n care este coninut i nodul iniial, demonstreaz solvabilitatea problemei i,
de aceea, este denumit graful soluiei.
Riguros, f

(P, L, f, b) un graf orientat cu mulimea nodurilor D, mulimea arcelor L, f -


funcia de naintare i b- funcia de revenire, evident f, b: L D. Se spune c un graf este un
arbore dac snt ndeplinite condiiile:
1) Graful nu are circulariti
2) Exist un nod p, numit i rdcin, pentru care f: LD-{p}.
Arborii n aplicaiile de IA snt reprezentai cu rdcina sus i arcele orientate n jos.
Frunzele arborelui snt acele noduri q din P de la care nu pornesc arce spre alte noduri.
Caracterizarea cea mai uzual a adncimii unui nod ntr-un arbore este nivelul nodului.
Subsetul P
1
al punctelor f(x
i
) din P pentru care
b(x
1
) = b(x
2
) =. = b(x
n
) = p constituie nivelul 1. Atunci:
P
1
={f(x
1
), f(x
2
), , f(x
i
)}
42
Setul P
k
al punctelor nivelului k este definit succesiv funcie de nivelul k-1. Altfel,
dac b(x
i
) e P
k-1
, pentru i=1, 2, , j atunci:
P
k
={ f(x
i
); i= 1, 2, ,j}
Evident, pentru descrierea unei probleme ntr-un sistem de calcul, este suficient s se descrie
ntr-un mod riguros cvadruplul ( P, L, f, b) asociat problemei.
2.6.1. Rezolvarea problemelor prin decompoziie
O strategie de rezolvare a problemelor pornete de la descompunerea acestora n
probleme mai simple numite i subprobleme. Dac problema poate fi descompus n
subprobleme, spaiul strilor poate fi reprezentat prin grafuri I/SAU, i pot fi aplicate
metodele de cutare specifice pentru grafuri I/SAU, metode ce include cutarea prin
minimizarea costului, precum i metode de cutare euristic. Jocurile snt probleme tipice
reprezentate prin grafuri I/SAU aa c o strategie mutare ntr-un joc este de fapt redus la o
cutare n graf.
Fie f(n) costul atingerii simbolului terminal de la nodul n. Dac se cosider c n este
rezolvat prin nodurile fiu n
1
, n
2
, , n
m
se obine:
f(n) = max {f(n
1
), f(n
2
), , f(n
m
)}
Dac regulile nu snt aplicate n paralel se obine pentru costul nodului:
f(n) = f(n
1
) + f(n
2
) + +f(n
m
) = f(n
i
)
Cele dou relaii snt exemple tipice pentru calculul costului atunci cnd o problem
este descompus. Una sau alta din aceste formule este practic utilizat la orice problem.
La problemele reprezentate n spaiul strilor este suficient ca un singur nod soluie s
fie atins, pe cnd la grafurile I/SAU procesul descompunerii desface problema n
subprobleme.
Pentru rezolvarea problemei corespunztoare nodului printe al nodurilor I, trebuiesc
rezolvate toate subproblemele corespunznd nodului fiu ale acestuia. n reprezentarea unui
graf I/SAU, nodurile I se vor marca prin arce, nodurile nemarcate fiind noduri SAU. Un
graf parial este numit graf rezolvent, iar rezolvarea unei probleme reprezentat prin grafuri
I/SAU invoc gsirea tuturor grafurilor rezolvente ale acestuia.
n figura care urmeaz este prezentat o problem complex A ce poate fi rezolvat
prin descompunerea n subproblemele B i C sau prin rezolvarea lui D. n graful respectiv se
regsesc ambele tipuri de noduri pentru acelai printe.
Se poate introduce un nod suplimentar, pentru separarea nodurilor I/SAU, pentru
care funcia de cost este egal cu cea de descompunere a problemei A n subproblema M
format din B i C.
Un nod ntr-un arbore I/SAU poate fi un nod I al unui nod printe dat i n acelai
timp un nod SAU al altui nod printe. Ca urmare, este necesar s se identifice relaia printe-
fiu. Vom utiliza expresiile n
i
este un nod I al nodului n sau nodul n
i
al lui n este un nod
I.
43
2.7. Aplicaii modul 1.
A. Exerci ii rezolvate.
Exerci iul 1.
S se reprezinte n limbajul calculului cu predicate de ordinul nti urmtoarea fraz din
limbajul natural:
N FIECARE CIRC EXIST UN CLOVN CARE FACE PE TO I SPECTATORII
S RD.
Rezolvare:
Puterea de reprezentare a cunoaterii, pe care o au formulele limbajului calculului
propoziional de ordinul I se poate cel mai bine aprecia prin considerarea unor exemple
complexe n care este folosit i forma clauzal care reprezint un concept nou numit
programare logic, care st la baza limbajului de programare PROLOG.
Reprezentarea ar putea fi:
()x (CIRC (x) (-) y CLOVN (y, x) . ()z (SPECTATOR (z, x) RDE (z, y))).
Menionm c poate exista i alte variante de reprezentare a aceleiai fraze. n unele
situaii cunoaterea se poate realiza mai bine prin negarea unor predicate.
Exerci iul 2.
S se reprezinte n limbajul calculului cu predicate de ordinul nti, folosind forma
clauzal, urmtoarea fraz din limbajul natural:
PINGUINUL ARE ARIPI, PENE DAR NU ZBOAR CI NOAT.
Rezolvare:
Forma de reprezentare numit i clauz este :
()x PASRE (x) . (ZBOAR (x)) . NOAT(x) PINGUIN (x).
Cu ajutorul formelor clauzale, a formulelor calculelor cu predicate de ordinul I se
realizeaz un format simplu i unitar pentru toate categoriile de constituente ale cunoaterii:
obiecte, funcii, relaii, reguli de inferen.
Putem exprima ntro form compact caracteristicele structurale ale avionului
folosind forma clauzal.
()x ARE (x, FUSELAJ) . ARE (x, ARIPA) . ARE (x, SISTEMPROPULSIE) .
ARE (x, SISTEMCOMAND) . ARE (x, SISTEMRULARE) AVION (x).
Aceast form clauzal se poate reprezenta uor ntr-un program PROLOG.
44
Exerci iul 3. S se reprezinte sub forma unor liste LISP piesa de cunoatere din
exemplul dat n paragraful 1.1.4.1., folosind i reprezentarea sub form de reea semantic din
acel paragraf:
LA SUS INEREA TEZEI DE DOCTORAT DE CTRE ION CARE ESTE
UN BUN SPECIALIST, COLEGUL SU VASILE I OFER UN FRUMOS
CADOU.
Rezolvare:
Singurul nod surs din reprezentare este <Eveniment2> ce poate fi considerat nod
iniial, lista pornind descrierea de la acest nod:
(Eveniment_2 este susinerea tezei)
(Eveniment_2 referitor ION)
(ION este OM)
(ION calitate specialist)
(ION coleg VASILE)
(VASILE este OM)
(Eveniment_2 cauzeaz Eveniment_1)
(Eveniment_1 aciune ofer)
(Eveniment_1 obiect cadou)
(Cadou calitate frumos)
(Eveniment_1 receptor ION)
(Eveniment_1 agent VASILE).
O alt modalitate de reprezentare a reelei const n construirea conceptului pentru
fiecare nod surs i asocierea acestuia cu perechi (<relaie> <nod destinaie>).
((Eveniment_2 (este susinerea tezei)
(referitor ION)
(cauzeaz Eveniment_1))
(ION (este OM))
(calitate specialist)
(coleg VASILE)
(VASILE (este OM))
((Eveniment_1 (aciune ofer)
(obiect cadou)
(receptor ION)
(agent VASILE)
((Cadou (calitate frumos)).
Metoda are avantajul eliminrii redundanelor ce apar la specificarea nodului surs n
toate tripletele ce descriu relaiile sale cu nodurile destinaie.
Exerci iul 4.
S se reprezinte sub forma unei reele semantice sortate, folosind relaiile cauzale
definite n paragraful 1.1.4.2., urmtoarea pies de cunoatere:
DIMINEA A, LA PIA , ION CUMPR CU BANI FLORI PENTRU MARIA.
45
Rezolvare:
Reeaua semantic sortat, folosind relaiile cauzale definite n paragraful 1.1.4.2., este
urmtoarea:
P
ION BANI MARIA FLORI PIA DIMINEA A
MARIA
CUMPR
PREDICA IE
AGENT
RECEPTOR
OBIECT
INSTRUMENT
LOC
TIMP
Exerci iul 5.
S se descrie reprezentarea unei universiti cu profil tehnic cu ajutorul cadrelor,
folosind forme cadru specifice de descriere (paragraful 1.1.5.).
Rezolvare:
Iat o variant de descriere:
cadru: universitate tehnic
forma: generalizare
faeta: institut de nvmnt superior
forma: specializare
faeta: pregtire tehnic
forma: apartenen
faeta: universitate
forma: adresa
faeta: strada
faeta: numr
faeta: cod potal
faeta: ora
faeta: ara
forma: compoziie
faeta: conducere
valoarea: rector
valoarea: prorector
faeta: compartimente
valoarea: electric
valoarea: mecanic
valoarea: chimic
forma: proprieti
faeta: pregtire
valoare: curs de zi
valoare: curs seral
Piesele de cunoatere satisfac definiia cadrelor.
46
B. Test de autocontrol
1. Cnd exprimm c George i iubete cinele presupunem implicit c George are un
singur cine? Cum am putea reexprima aceasta dac am dori s spunem c George i
iubete toi cinii si? Aceasta ar fi adevrat dac George nu are i ali cini?
2. Traducei urmtoarele propoziii n logica de ordinul nti:
a) Toma este mai scund dect Carmen.
b) Carmen este mai nalt dect Toma.
c) Aici nu este nimeni mai nalt dect Victor.
d) Att Carmen ct i Elena sunt mai nalte dect Toma.
e) Pentru orice x i y, dac x este mai nalt dect y, atunci y este mai scund dect x.
f) Mai scund dect este tranzitiv.
3. Traducei propoziiile urmtoare n logica de ordinul nti:
a) Poi pcli civa oameni ntotdeauna, i toi oamenii ctva timp, dar nu poi pcli
toi oamenii ntotdeauna.
b) Un mr pe zi ine doctorul departe.
4. Traducei urmtoarele propoziii din logica de ordinul nti n limba romn:
a) - x.succes(Toma,x) . a_avut(x,George)
b) -x.succes(Toma,x) . folosit(Toma,George)
c) Este posibil s traducei aceste dou propoziii ntr-o singur propoziie n limba
romn? Justificai rspunsul.
B. Tem de control
Exerci iul 1.
S se reprezinte cu ajutorul regulilor de producie urmtoarea pies de cunoatere:
IF : rezultatul testului de citire-scriere este eronat, bitul 2 blocat n 1
(and) se manifest la circuitul M1
(and) circuitul M2 funcioneaz corect
THEN : circuitul M1 este defect
(and) reparare prin nlocuire.
Exerci iul 2.
S se reprezinte cu ajutorul cadrelor urmtoarea pies de cunoatere:
IF : rezultatul testului de citire-scriere este eronat, bitul 2 blocat n 1
(and) se manifest la circuitul M1
(and) circuitul M2 funcioneaz corect
THEN : circuitul M1 este defect
(and) reparare prin nlocuire.
47
Exerci iul 3.
Pe malul unui ru sunt trei misionari i trei canibali. Exist o singur barc
disponibil care poate transporta dou persoane i pe care vor s-o foloseasc pentru a
traversa rul. Dac numrul canibalilor depete numrul misionarilor pe unul din malurile
rului (incluznd i ocupanii brcii), misionarii vor fi mncai. Cum poate fi utilizat barca
pentru a transporta n siguran toi misionarii i canibalii dincolo de ru?
Rezolvai problema prezentnd sistemului rezolutiv urmtoarele grupri de simboluri:
- suportul obiectual ;
- simboluri funcionale sau simboluri predicative ;
- faptele;
- obiectivul problemei.
Indica ie: Urmrii rezolvarea exemplului din paragraful 2.4.
Exerci iul 4.
Pe malul unui ru sunt trei misionari i trei canibali. Exist o singur barc
disponibil care poate transporta dou persoane i pe care vor s-o foloseasc pentru a
traversa rul. Dac numrul canibalilor depete numrul misionarilor pe unul din malurile
rului (incluznd i ocupanii brcii), misionarii vor fi mncai. Cum poate fi utilizat barca
pentru a transporta n siguran toi misionarii i canibalii dincolo de ru?
Rezolvai problema folosind spaiul strilor pe baza unei structuri arborescente.
Indica ie: Modul de formare a arborelui asociat problemei de traversare a rului de
ctre misionari i canibali poate fi vazut n exemplul din paragraful 2.5.
2.8.BIBLIOGRAFIE RECOMANDAT LA MODULUL 1:
1. Podaru Vasile, Inteligen artificial i siteme expert, Editura Academiei Tehnice Militare,
1997
2. Podaru Vasile, Barnoschi Adriana, Sisteme expert, Editura Academiei Tehnice Militare,
2000, 2004.
3. Ioan Georgescu, Elemente de inteligen artificial, Editura Academiei RSR, 1985.
4. Podaru Vasile, Inteligen artificial, curs n format electronic, CD-nvmnt la distan,
Universitatea Titu Maiorescu, 2010.
5. D. Crstoiu, Sisteme expert, edira ALL, 1994.
6. SICSTUS PROLOG USERS MANUAL. Intelligent Systems Laboratory, Sweedish Institute
of Computer Science:
http://www.sics.se/isl/sicstuswww/site/documentation.html
7. M. Malia, Bazele inteligenei artificiale, editura Academiei Romne, 1988.
Coordonator disciplin:
Prof. univ. dr. Vasile PODARU, email: podaruv@gmail.com
Tutori: Prof. univ. dr. Vasile PODARU.
UNIVERSITATEA TITU MAIORESCU
Facultatea de INFORMATIC
Prof. univ. dr.
VASILE PODARU
Curs pentru nv mntul la distan
BUCURETI 2011
49
UNIVERSITATEA Titu MAIORESCU Bucureti
Facultatea de Informatic
nvmnt la Distan
INTELIGEN ARTIFICIAL
Inteligena artificial este una din disciplinele de pregtire fundamental care, pentru
profilul INFORMATIC, este esenial pentru pregtirea studenilor i pentru obinerea
creditelor transferabile prin procedurile de evaluare. Modul de prezentare a acestui material
are n vedere particularitile nvmntului la distan, la care studiul individual este
determinant. Pentru orice nelmuriri fa de acest material v rugm s contactai tutorele de
disciplin care are datoria s v ajute oferindu-v toate explicaiile necesare.
Disciplina de Inteligena artificial i propune urmtoarele obiective specifice:
nsuirea noiunilor fundamentale din domeniile Inteligenei artificiale.
Formarea deprinderilor de modelare matematic i de transpunere n programare a
unor probleme de natur tehnic, social sau economic, cu utilizarea cunotinelor
nsuite.
Formarea i dezvoltarea aptitudinilor i deprinderilor de analiz logic, formulare
corect i argumentare fundamentat, n rezolvarea problemelor tehnico-economice i
de specialitatecu cu utilizarea cunotinelor nsuite prin intermediul metodelor i
modelelor specifice inteligenei artificiale;
Insusirea principiilor generale ale programarii logice si insusirea limbajului Prolog;
O comparaie critic a metodelor de rezolvare evideniind, eventual, calea optim de
soluionare.
Accentul se va pune pe problemele de cautare si reprezentare a cunostintelor si
respectiv pe programarea logica, limbajul de programare utilizat la laborator fiind
limbajul Prolog. Cursul trebuie sa trateze aspecte ale rezolvarii problemelor prin
intermediul cautarii, descriind cele mai importante tehnici de cautare informata si
neinformata. Se vor da exmple de aplicatii ale cautarii, cum ar fi jocurile, tratate ca
probleme de cautare. Se vor prezenta principalele tipuri de cunostinte si principalele
metode de reprezentare a cunostintelor. Se va face legatura dintre reprezentarea
cunostintelor si sistemele expert. Se va da un exemplu de sistem expert cu
implementare in Prolog. Vor mai fi tratate, ca modalitati de reprezentare a
cunostintelor, retelele semantice si retelele Bayesiene (cu introducerea rationamentului
statistic).
V precizm de asemenea c, din punct de vedere al verificrilor i al notrii
(elemente ce vor fi comunicate i prin fia disciplinei, calendarul disciplinei i programarea
orar), cu adevrat important este capacitatea pe care trebuie s o dobndii i s o probai de
a rezolva toat tipologia de probleme aplicative aferente materialului teoretic prezentat n
continuare. De aceea v recomandm s parcurgei cu atenie toate aplicaiile rezolvate, s
rezolvai aplicaiile propuse prin testele de autoevaluare i temele de control (pentru fiecare
modul n parte trebuie s predai tutorelui de disciplin rezolvarea acestor teme, pentru
verificare i evaluare); fii convini c examenul final apeleaz la tipurile de aplicaii prezente
n seciunile menionate anterior.
Timpul mediu necesar nsuirii noiunilor teoretice, formrii deprinderilor de calcul i
utilizrii metodelor de rezolvare a problemelor specifice acestui modul este estimat la
aproximativ 6-8 ore pentru ntregul modul , ntr-un ritm de 3-4 ore pentru fiecare din cele
dou uniti ale modulului.
50
ntru-ct modulul este privit ca un tot unitar exerciiile aferente acestui modul se
gsesc la sfritul acestui modul. La terminarea parcurgerii acestui modul studenii trebuie s
prezinte tutorelui de disciplin rezolvarea temei de control propus spre rezolvare la sfritul
modulului.
Cursul se finalizeaz prin examen care const din:
1) o lucrare scris sub forma de text grila constnd din 9-18 subiecte (ponderea lucrrii
scrise este de 70% din nota final);
2) rezolvarea corect a temelor de control din cele 4 module (minimum nota 5 pentru
fiecare tem, ponderea mediei celor 5 note n nota final este de 20%);
3) participarea activ la activitile tutoriale (apreciat printr-o not a crei pondere in
nota final este de 10%).
Coordonator disciplin: Prof. univ. dr. Vasile PODARU, email: podaruv@gmail.com
Tutori: Prof. univ. dr. Vasile PODARU,
51
MODULUL 2
METODE DE CUTARE
ndrumri metodice.
Inteligena artificial a aprut ca disciplin i a fost fundamentat pe investigaiile
relative la reprezentarea cunoaterii i cutarea.
n acest modul sunt prezentate principalele metode de cutare utilizate n rezolvarea
problemelor, eseniale n domeniul inteligenei artificiale.
Rezolvarea problemelor poate fi restrns de obicei la reprezentarea cunoaterii i la
cutare. Unele probleme scot n eviden cutarea i altele reprezentarea cunoaterii, dar
multe din problemele de inteligen artificial pot fi reduse la una sau la cealalt.
Dup cum s-a artat o problem reprezentat n spaiul strilor conduce la o rezolvare
ce se reduce la cutarea n spaiul strilor. Alegerea tehnicii de rezolvare este dependent de
tipul problemei, mai multe tehnici fiind posibil a fi aplicate. Cea mai simpl tehnic este cea
de selecie a operatorilor ,, trial-and-error process, tehnic ce nu este ntotdeauna viabil
deoarece nu ofer o cutare sistematic n spaiul strilor. O alt soluie este cea a atingerii
costului minim, iar n situaia n care costul atingerii obiectivului poate fi predictat, timpul de
cutare este corespunztor scurtat prin utilizarea acestei informaii. n cele ce urmeaz se vor
analiza o parte dintre posibilii algoritmi de cutare.
n prima parte a acestui modul sunt prezentate informaii referitoare la metodele de
baz n cutare.
n partea a doua a acestui modul se prezint metode avansate de cutare utiliznd i
problematica rezolvrii problemelor cu ajutorul grafurilor. Timpul mediu necesar nsuirii
noiunilor teoretice, formrii deprinderilor de calcul i utilizrii metodelor de cutare specifice
acestui modul este estimat la aproximativ 6-8 ore pentru ntregul modul , ntr-un ritm de 3-4
ore pentru fiecare din cele dou uniti ale modulului.
ntru-ct modulul este privit ca un tot unitar exerciiile aferente acestui modul se
gsesc la sfritul acestui modul. La terminarea parcurgerii acestui modul studenii trebuie s
prezinte tutorelui de disciplin rezolvarea temei de control propus spre rezolvare la sfritul
modulului.
Cursul se finalizeaz prin examen care const din:
1) o lucrare scris sub forma de text grila constnd din 9-18 subiecte (ponderea lucrrii
scrise este de 70% din nota final);
2) rezolvarea corect a temelor de control din cele 5 module (minimum nota 5 pentru
fiecare tem, ponderea mediei celor 5 note n nota final este de 20%);
3) participarea activ la activitile tutoriale (apreciat printr-o not a crei pondere in
nota final este de 10%).
52
Unitatea de nv are nr.3
Metode de baz n cutare.
Cuprins:
3.1. Metode de cutare ...................................................................................... pag. 52
3.2. Cutarea. Generaliti. ............................................................................... pag. 52
3.2.1. Cutarea oarb ....................................................................................... pag. 54
3.2.2. Cutarea euristic ................................................................................... pag. 57
3.2.3. Analiza metodei de cutare pe orizontal sau n lime .......................... pag. 58
3.2.4. Analiza metodei de cutare pe vertical sau n adncime ....................... pag. 60
3.2.5. Adncimea iterativ ................................................................................ pag. 63
3.2.6. Limea iterativ ..................................................................................... pag. 66
3.3. Metode extinse de cutare euristic ........................................................... pag. 67
3.3.1. Metoda gradientului (Hill-climbing method) ......................................... pag. 67
3.3.2. Metoda celei mai bune prime cutri ..................................................... pag. 69
3.3.3. Soluia optim cnd costul poate fi predictat. Algoritmul A ................. pag. 70
3.3.4. Algoritmul A
*
........................................................................................ pag. 71
3.3.4.1. Admisibiliutatea .................................................................................. pag.74
3.3.4.2. Extensii i IDA
*
................................................................................. pag.75
3.1. Metode de cutare
Inteligena artificial a aprut ca disciplin i a fost fundamentat pe investigaiile
relative la reprezentarea cunoaterii i cutarea.
Rezolvarea problemelor poate fi restrns de obicei la reprezentarea cunoaterii i la
cutare. Unele probleme scot n eviden cutarea i altele reprezentarea cunoaterii, dar
multe din problemele de inteligen artificial pot fi reduse la una sau la cealalt.
3.2 Cutarea. Generaliti.
Problemele de cutare vor fi descrise uneori folosind diagrame similare cu cea din
figura 3.1.
Figura 3.1 O problem de cutare
Exist un nod iniial i, de la care ncepe cutarea, i un nod int g. Obiectivul este de a
gsi o cale prin spaiul de cutare ntre nodul iniial i i nodul int g. Spaiul de cutare nu
este n general memorat n totalitate n calculator; n schimb, sunt disponibile cteva proceduri
53
care accept un nod ca intrare i i determin succesorii. n figur succesorii nodului iniial
sunt nodurile c
1
, c
2
i c
3
, sunt noduri la care se poate ajunge ntr-un singur pas plecnd de la
nodul i. Astfel intrarea ntr-o problem de cutare reprezint o descriere a nodului iniial, a
nodului int i a unei proceduri care furnizeaz succesorii unui nod oarecare; ieirea trebuie
s fie o secven legal de noduri ncepnd cu nodul iniial dat i terminnd cu nodul int.
..............
P A T M A T B O S
d=1
.......... .........
Figura 3.2 Problema cuvintelor ncruciate
Abordarea "cuvnt cu cuvnt"
Un alt exemplu este cel al spaiului de cutare implicat n problema cuvintelor
ncruciate este prezentat n figura 3.2. Un nod corespunde unui careu completat parial;
descrierea din figur corespunde modului de abordare n care careul este completat "cuvnt cu
cuvnt". Figura 3.3 prezint o poriune a spaiului de cutare care utilizeaz modul de
abordare "liter cu liter". n acest caz, vor fi mai multe noduri int - orice careu completat
este acceptabil.
Figura 3.3 Problema cuvintelor ncruciate
Abordarea "liter cu liter"
d=0
P A T
O d=2
P
54
Exist de asemenea probleme de cutare cu mai multe noduri iniiale; s considerm o
problem n exist un grup de careuri i trebuie completat unul dintre ele. n astfel de
probleme cu mai multe noduri int i mai multe noduri iniiale, obiectivul poate fi s se
gseasc o cale de la un nod iniial la un nod int (ca n problema cuvintelor ncruciate), s
se gseasc toate cile sau s se gseasc cea mai bun cale.
n problemele de cutare din exemplele anterioare s-a etichetat fiecare nod cu o
adncime care indic numrul de pai necesari pentru a ajunge la acel nod iniial. Deci, nodul
int din figura 3.1 este de adncime 3; spaiul su de cutare este de adncime 4. n cutarea
din figura 3.2, toate nodurile int sunt de adncime 4, pentru c sunt patru cuvinte de
completat n careu. n plus, fiecare nod de adncime 4 este un nod int.
Problemele de cutare sunt adesea descrise pe baza factorului lor de ramificare. Acesta
se refer la numrul de fii pe care i are un nod care nu este terminal. n figura 3.1, factorul de
ramificare variaz ntre 1 i 3.
Factorul de ramificare n problema cuvintelor ncruciate este mult mai mare;
considerm nodul iniial din figura 3.3. Sunt 8 ptrate de completat i 26 de litere care pot fi
puse n fiecare ptrat, astfel c factorul de ramificare pentru nodul iniial este 8*26=208.
Fiecare din cele 208 noduri de adncime 1 au 7*26=182 succesori, i aa mai departe. Nu
toate nodurile de adncime 2 au 6*26 succesori pentru c unii dintre ei ar include cuvinte
complete, ceea ce este ilegal. Factorul de ramificare n aceast problem variaz de la un nod
la altul, dar evident este mai mare dect cel din figura 3.1. Deoarece sunt mai mult de 26 de
alegeri posibile pentru plasarea unui cuvnt corect n careu, factorul de ramificare pentru
figura 3.2 este i mai mare. Cu excepia numrului mare de noduri care trebuiesc de obicei
explorate, rezolvarea problemelor de cutare este uoar. Presupunnd c factorul de
ramificare este un numr finit, se poate aplica urmtoarea procedur.
PROCEDURA 3.2.1Pentru rezolvarea unei probleme de cutare:
1. Seteaz lista L de noduri la nodurile iniiale din problem. n orice moment, L este
o list de noduri care nu au fost nc examinate de program.
2. Dac lista L este goal, eec. Altfel, alege un nod n din lista L.
3. Dac n este un nod int, procedura se termin returnnd valoarea n i calea de la
nodul iniial pn la acesta.
4. Altfel, scoate nodul n din lista L i adaug n list toi fii acestuia, etichetndu-l pe
fiecare cu calea de la nodul iniial pn la el. Revenire la pasul 2.
Aceast procedur, verific nodurile pentru a vedea dac sunt soluii ale problemei
iniiale de cutare din momentul n care sunt expandate pentru a genera fii.
Cu excepia unor modificri nesemnificative a procedurii 3.2.1 prezentat anterior,
toate programele de cutare vor folosii o tehnic asemntoare ca cea din procedura 3.2.1.
Ceea ce distinge un algoritm de cutare de altul este alegerea fcut la pasul 2 - cum alegem
nodul care va fi expandat n continuare.
Aa cum se va vedea n cele ce urmeaz, exist dou modaliti prin care se poate face
aceast alegere. n tehnica de cutare oarb alegerea este fcut ntr-un mod dependent doar
de poziia nodului n arborele de cutare. n cutarea euristic, astfel de informaii sunt
folosite pentru a decide ce trebuie fcut la urmtorul pas.
3.2.1 Cutarea oarb
Exist o mare varietate de tehnici de cutare oarb; vom prezenta dou dintre ele n
acest paragraf . Cele dou tehnici pe care le vom prezenta n continuare sunt cutarea pe
vertical i cutarea pe orizontal.
55
Figura 3.4 Cutarea pe vertical
Cutarea pe vertical const n expandarea arborelui de cutare (de exemplu cel din
figura 3.1) n aa fel nct nodurile terminale s fie examinate de la stnga la dreapta, aa cum
este prezentat n figura 3.4. Se exploreaz ntotdeauna un fiu al nodului cel mai recent
expandat; dac acesta nu are fii, procedura revine la pasul anterior nainte de a alege un alt
nod pentru a-l examina. Cutarea se termin cnd a fost selectat nodul int g.
Cutarea pe vertical poate fi implementat prin inserarea fiilor unui nod dat la
nceputul listei L la pasul 4 al procedurii 3.2.1, i alegerea ntotdeauna a primului nod din list
ca fiind un nod ce trebuie expandat.
PROCEDURA 3.2.2Cutarea pe vertical.
(Pentru rezolvarea unei probleme folosind cutarea pe vertical):
1. Seteaz lista L de noduri la nodurile iniiale din problem.
2. Fie n primul nod din lista L. Dac lista L este goal, eec.
3. Dac n este un nod int, procedura se termin returnnd valoarea n i calea
de la nodul iniial pn la acesta.
4. Altfel, scoate nodul n din lista L i adaug la nceputul acesteia toi fii nodului
n, etichetndu-l pe fiecare cu calea de la nodul iniial pn la el. Revenire le
pasul 2.
n cutarea pe orizontal, arborele de cutare este expandat de sus n jos, astfel nct
fiecare nod de adncime d este examinat naintea oricrui nod de adncime d+1. Figura 3.5
prezint arborele din figura 3.1 indicnd ordinea de examinare a nodurilor folosind tehnica de
cutare pe orizontal.
Figura 3.5 Cutarea pe orizontal
56
Se poate implementa aceast tehnic prin adugarea nodurilor noi la sfritul listei L.
Procedura 3.2.2 se va modifica astfel:
PROCEDURA 3.2.3Cutarea pe orizontal.
(Pentru rezolvarea unei probleme folosind cutarea pe orizontal):
1. Seteaz lista L de noduri la nodurile iniiale din problem.
2. Fie n primul nod din lista L. Dac lista L este goal, eec.
3. Dac n este un nod int, procedura se termin returnnd valoarea n i calea de la
nodul iniial pn la acesta.
4. Altfel, scoate nodul n din lista L i adaug la sfritul acesteia toi fii nodului n,
etichetndu-l pe fiecare cu calea de la nodul iniial pn la el. Revenire le pasul 2.
De reinut faptul c dac decidem s executm o cutare pe vertical ntr-un arbore,
aceasta nu nseamn c examinarea nodurilor se va face ntr-o ordine anume, ci doar ne
asigur c ntotdeauna la urmtorul pas va fi expandat un nod de adncime mai mare dac este
posibil. Astfel, o cutare de la dreapta la stnga este de asemenea o cutare pe vertical, aa
cum este prezentat i n figura 3.6, unde succesorii fiecrui nod au fost alei ntr-o ordine
aleatoare.
Figura 3.6 O alt cutare pe vertical
n mod similar, dac decidem s executm o cutare pe orizontal
ntr-un arbore ne este permis s alegem oricare dintre nodurile neexplorate de pe un anumit
nivel.
S examinm acum cantitatea de memorie necesar pentru fiecare dintre cele dou
metode.
La cutarea pe vertical, trebuie s memorm toate legturile neexplorate ale oricrui
nod de pe calea de la nodul curent napoi spre rdcina arborelui, deoarece vom avea nevoie
de ele pentru examinarea altor poriuni ale spaiului de cutare. Ca un exemplu, figura 3.7
prezint nodurile care trebuiesc reinute n memorie cnd examinm nodul n pe parcursul
cutrii pe vertical. Am presupus c fii fiecrui nod sunt examinai de la stnga la dreapta.
57
Figura 3.7 Spa iul necesar pentru cutarea pe vertical
S considerm acum cutarea pe orizontal. naintea examinrii unui nod de adncime
d+1 trebuie s examinm (i s memorm) toate nodurile de adncime d; figura 3.8 prezint
nodurile care trebuiesc memorate imediat nainte de examinarea primului nod de adncime
d+1.
Figura 3.8 Spa iul necesar pentru cutarea pe orizontal
Cel puin din punctul de vedere al cerinelor de memorie, cutarea pe vertical este de
departe mai eficient dect contracandidata sa cutarea pe orizontal.
Exist i alte modaliti n care putem s ajungem la aceeai concluzie. Ca un
exemplu, s considerm o singur iteraie a ciclului din procedura de cutare de baz. Care
este dimensiunea listei L pe parcursul acestei iteraii?
Este clar c dimensiunea listei scade cu 1 cnd nodul n este ters din list; apoi
dimensiunea acesteia crete fie cu b (factorul de ramificare al spaiului de cutare explorat)
dac nodul n are fii, fie cu zero dac nodul n este terminal. Astfel dimensiunea listei se
modific fie cu b-1 dac nodul n nu este terminal, fie cu -1 dac acesta este terminal. Rezult
c o cutare care ntlnete un nod terminal mai devreme va avea nevoie de mai puin spaiu
dect alta care l ntlnete mai trziu; deoarece cutarea pe vertical tinde s ating rapid
nodurile terminale, putem trage concluzia c aceast metod necesit mai puin memorie
dect contracandidata sa cutarea pe orizontal.
3.2.2 Cutarea euristic
n exemplul considerat, nici cutarea pe vertical i nici cutarea pe orizontal nu
exploreaz arborele ntr-o ordine optim. S examinm nodurile n ordinea prezentat n
58
figura 3.9. Prin expandarea nodurilor n aceast ordine optim, minimizm timpul necesar
pentru rezolvarea problemei.
Figura 3.9 O cutare optimal
Cutarea euristic este o ncercare de a cuta ntr-un arbore ntr-o ordine care este mult
mai aproape din punct de vedere al optimalitii dect cutarea pe vertical sau pe orizontal.
Cnd alegem un nod din lista L la pasul 2 al procedurii de cutare, ne mutm de la nodul
rdcin spre nodul int prin selectarea ntotdeauna a nodului care este cel mai apropiat de
nodul int. n unele domenii este posibil s estimm distana pn la nodul int i s folosim
aceast informaie pentru a direciona cutarea. Totui, este imposibil s executm cutarea n
arbore ntr-o ordine optim ca cea din figura 3.9, adesea putem doar s aproximm aceast
ordine.
3.2.3. Analiza metodei de cutare pe orizontal sau n lime
Am prezentat pe scurt algoritmii de cutare pe vertical sau n adncime i cutarea
pe orizontal sau n lime i vom examina aceste proceduri n detaliu. O ntrebare care apare
este: de ct memorie i timp au nevoie aceti algoritmi?
Pentru simplificarea analizei, presupunem c lucrm cu un arbore de cutare cu un
factor uniform de ramificare b i adncime d, i c acest arbore are un singur nod int care
are adncimea d. Un arbore de acest gen cu b=4 i d=2 apare n figura 3.10. Vom nota nodul
rdcin cu i, nodurile din nivelul 1 cu n
1
, n
2
, n
3
, i n
4
i fii lui n
i
cu n
i1
, n
i2
, n
i3
, i n
i4
.
Aa cum s-a discutat anterior, n cutarea pe orizontal sau n lime am vzut lista L a
nodurilor neexpandate ca o coad, astfel nct noii fii generai sunt pui la sfritul acestor
liste i sunt expandai numai dup ce nodurile din adncimea imediat au fost examinate.
Asfel, n timpul primelor iteraii din procedura 3.2.1., lista L ia valorile urmtoare:
{i}
{ n
1
, n
2
, n
3
}
{n
2,
n
3
, n
4
, n
11
, n
12
, n
13
, n
14
}
{ n
2,
n
3
, n
4
, n
11
, n
12
, n
13
, n
14
, n
21
, n
22
, n
23
, n
24
}

Ordinea complet pentru cutarea din figura 3.10 este artat n figura 3.11.
59
Deoarece numrul total de noduri pe nivelul k este b
k
i trebuie s memorm toate
aceste noduri nainte ca primul nod de pe nivelul k +1 s fie examinat, cutarea pe orizontal
sau n lime are nevoie la nivelul d de b
d-1
spaiu disponibil pentru a explora un arbore de
cutare ca acela din figura 3.10. De notat c, dac arborele este examinat n continuare la
nivelul d, atunci va fi necesar mult mai mult spaiu pentru fiecare generare a succesorilor lui
b. Chiar nainte ca nodul int s fie gsit, L va conine nodul int i cteva pri de la nivelul
d+1din arbore.
i
d=0
n
1
n
2
n
3
n
4
d=1
n
11
n
12
n
13
n
14
g d=2
Figura 3.10. Spa iu uniform de cutare
Ce volum de timp este necesar pentru cutarea pe orizontal sau n lime? Vom
echivala cantitatea de timp consumat de algoritm cu numrul de noduri examinate de el;
reamintim c un nod este considerat verificat dac el este un nod int chiar nainte ca nodul
s fie expandat pentru generarea succesorilor i nu este considerat verificat cnd nodul nsui
este adugat la lista L.
1
2 3 4 5
6 7 8 9 10 11 12 13 14 15 16 17 8 19 20 21
Figura 3.11. Cutarea pe orizontal sau n l ime
Cum trebuie s atingem inta la nivelul d, nodurile interne (care nu sunt marginale)
care pot fi examinate sunt toate nodurile de pe nivelul 0,1,2,3,...,d-1. Numrul unor astfel de
noduri este dat de relaia:
2 1
1
1
1
d
d
b
b b b
b


+ + + + =

(3.1)
Ce tim despre nodurile marginale? Nu se poate spune exact cte noduri marginale vor
fi examinate, deoarece nu tim n care margine este localizat nodul int. Cel mai bun caz ar fi
s putem examina numai un nod marginal (inta); cel mai ru caz ar fi dac ar trebui s
examinm toate b
d
noduri. Numrul mediu de noduri examinate la margini este atunci
60
1
2
d
b +
(3.2)
i numrul total de noduri examinate este suma dintre (3.1) i (3.2):
1
1
d
b
b

+
1
2
d
b +
=
1
2 2 1
2( 1)
d d d
b b b b
b
+
+ +

=
1
3
2( 1)
d d
b b b
b
+
+ +

(3.3)
Pentru o adncime mai mare, (3.3) se reduce la aproximativ b
d
/2, care este
aproximativ acelai cu cantitatea de timp consumat la margini, ceea ce era de ateptat
deoarece n aceste cazuri, mai mult timp va fi consumat cu cutarea la nivelul cel mai de jos al
arborelui. O versiune grafic a acestei argumentri apare n figura 3.12.
spa iul =b
d-1
ntreg de la
nivelul
d-1
marginea
stng =b
d
/2
Figura 3.12. Timpul necesar pentru cutarea pe orizontal sau n l ime
Pe de alt parte dac b=2 atunci (3.3) se simplific la
3*2 1
2
d

Acest rezultat se poate deduce i direct. Dimensiunea arborelui intern este


1
1 2 2 2
d d
+ + + ~
i numrul de noduri marginale care trebuie examinate este aproximativ 2
d
/2. Suma acestor
dou valori este (3/2)*2
d
.
3.2.4. Analiza metodei de cutare pe vertical sau n adncime
Dac L este gndit ca o coad n cutarea pe orizontal sau n lime, n cutarea pe
vertical sau n adncime L este o stiv. Cteva din primele sale valori pe care le cutm cu
aceast metod n arborele din figura 3.10 sunt:
61
{i}
{ n
1
, n
2
, n
3
, n
4
}
{ n
11
, n
12
, n
13
, n
14
, n
2,
n
3
, n
4
}
{ n
12
, n
13
, n
14
, n
2,
n
3
, n
4
}

Cutarea complet este prezentat n figura 3.13.


1
2 7 12 17
3 4 5 6 8 9 10 11 13 14 15 16 18 19 20 21
Figura 3.13. Cutarea pe vertical sau n adncime
Spaiul de memorie necesar accesului pe vertical sau n adncime este uor de
calculat. Este nevoie de mult mai mult memorie la primul pas al algoritmului pentru a ajunge
la adncimea d; de exemplu, nodurile marcate din figura 3.14 vor trebui salvate. n general,
este necesar s stocm b-1 noduri la fiecare nivel de adncime (succesorii nodurilor ce vor fi
pregtite pentru a fi expandate), mpreun cu un nod adiional de la adncimea d (deoarece nu
l-am expandat nc). Astfel spaiul total necesar este dat de
( 1) 1 d b +
*
*
*
Figura 3.1 Memoria necesar pentru cutarea pe vertical sau n adncime
Pentru b fixat, cutarea pe vertical sau n adncime are nevoie de o cantitate de
memorie care este liniar n d, pe cnd cutarea pe orizontal sau n lime are nevoie de o
cantitate exponenial n funcie de adncimea arborelui de cutare.
Timpul de calcul este mai redus. S menionm c, dac nodul int se afl la o anume
distan n partea stng a arborelui, atunci cutarea pe vertical sau n adncime se va face
direct la aceasta, examinnd un total de d+1 noduri. Dac nodul int se afl la o anume
distan n partea dreapt a arborelui, va fi examinat ntreg spaiul, cu un total de noduri dat de
relaia:
62
1
2
1
1
1
d
d
b
b b b
b
+

+ + + + =

Dac facem media celor dou expresii, putem concluziona c numrul de noduri examinate
este n medie:
1
1 * 1
2( 1)
d
b b d d b
b
+
+ +

=
1
* 2
2( 1)
d
b b d b d
b
+
+ +

(3.4)
Ca i n cazul cutrii pe orizontal sau n lime vom examina situaia ntr-un mod
mai restrictiv cnd d este mare i b=2 . Pentru d mare relaia 3.4 este:
2
d
b
astfel nct lucrul la marginile arborelui continu s domine calculele (vezi figura 3.15).
= b
d
/2
Jumtate
din spa iul
total
Figura 3.15. Timpul necesar pentru cutarea pe vertical sau n adncime
S notm c, atta timp ct termenul b
d-1
/2 apare n cutarea pe orizontal sau n lime
rezultatul (3.3) este nlocuit cu (3.4); o estimare mai exact pentru timpul necesar cutrii pe
orizontal sau n lime este:
1
1
2
d
b
b
| |
+
|
\ .
Observm de aici c, cutarea pe orizontal sau n lime comport un calcul mai mare
dect cutarea pe vertical sau n adncime cu un factor de
1 1
1
b
b b
+
+ = (*)
Valorile tipice pentru aceast expresie apar n figura 3.16.
63
b Raportul (*)
2 1.5
3 1.3
5 1.2
10 1.1
25 1.04
100 1.01
Figura 3.16. Costul cutrii pe orizontal sau n l ime
Pentru b=2, relaia 3.4 se simplific la :
1 1
2 2 2 2 2
2
2 2
d d
d
d d d
+ +
+ + +
= ~
La cutarea pe orizontal sau n lime am obinut acest rezultat direct. Spaiul total de
cutare este 2
d+1
i cutarea pe vertical sau n adncime, n medie, va examina aproape
jumtate din acesta - cu alte cuvinte 2
d
noduri. Comparnd cele dou abordri vedem c
cutarea pe vertical sau n adncime este de cteva ori mai eficient ca timp i mult mai
eficient ca spaiu dect cutarea pe orizontal sau n lime.
3.2.5. Adncimea iterativ.
Se pune ntrebarea dac exist vreo cale de a alege cea mai bun din cele dou
abordri, folosind un algoritm care s aib spaiul cerut de cutarea pe vertical sau n
adncime i proprietile de performan ale cutrii pe orizontal sau n lime? Rspunsul
este da; abordarea care face aceast alegere este cunoscut ca adncimea iterativ i a fost
investigat mai nti de Rich Korf.
Exist dou ci separate de a nelege adncimea iterativ. Poate cea mai simpl (dei
aceasta nu explic numele) este faptul c adncimea iterativ este asemntoare cu cutarea
pe orizontal sau n lime, cu excepia c n loc de a stoca toate nodurile la nivelele
intermediare, le regenerm cnd este timpul s le expandm.
De ce este aceasta o abordare viabil? Dac cantitatea de timp consumat pentru
regenerarea nodurilor interne ar micora timpul consumat cu cutarea rspunsului, dar nu
acesta este cazul de aici, cea mai mare parte a efortului de calcul este consumat cu examinrea
nodurilor din margine.
Cealalt cale de a nelege adncimea iterativ este urmtoarea. n cazurile n care
cutarea pe vertical sau n adncime nu d rezultate satisfctoare, adncimea nodului int
este mai mic dect adncimea ntregului arbore deoarece prima int gsit este la o
adncime mai mare dect cea mai puin adnc soluie a problemei, sau pentru c adncimea
arborilor este infinit, i aa mai departe. Ceea ce face adncimea iterativ este faptul c are
loc o cutare n arbore pe o cale care garanteaz c adncimea intei si adncimea arborelui se
potrivesc.
Ideea este de a cuta n arbore, iniial cu o adncime artificial redus la 1, astfel ca
nici un nod cu adncime sub nivelul 1 nu este examinat. Dac aceast abordare reuete cu
gsirea soluiei la adncimea 1, metoda ntoarce soluia. Dac nu, se caut n arbore cu o
adncime care este redus la 2. Fiecare din aceste cutri iterative procedeaz n modalitatea
de cutare pe vertical sau n adncime.
64
Procedura 3.3.1.
Cutarea n adncime iterativ.
1. Seteaz c = 1 ; acesta este adncimea curent redus.
2. Seteaz L ca va fi lista nodurilor iniiale din problem .
3. Fie n primul nod din L. Dac lista L este vid incrementeaz c i reia pasul 2 .
4. Dac n este un nod int, atunci STOP i ntoarce nodul n i calea de la nodul
iniial la n.
5. Altfel terge n din lista L. Presupunnd c adncimea nodului n este mai mic
dect c, adaug n capul listei L toi fiii nodului n etichetnd pe fiecare cu calea de
la nodul iniial la el. Reia pasul 3.
Dac cea mai puin adnca soluie este la adncimea g, cutarea pe vertical sau n
adncime la acest nivel va reui; rezult din cele discutate pn aici c, metoda cutrii n
adncime iterativ va da ntotdeauna soluia cea mai puin adnc la problema n discuie.
Deoarece fiecare din cutrile individuale este realizat n maniera cutrii pe vertical sau n
adncime, cantitatea de memorie cerut de metod este aceiai cu cea a cutrii pe vertical
sau n adncime.
Cum putem s aflm numrul de noduri examinate? n general numrul de noduri
examinate n iteraia final (care a reuit) este dat de relaia 3.4. n iteraiile anterioare,
cutrile nereuite la adncimile 1, 2,.., d-1 au examinat ntregul arbore la aceste adncimi;
dimensiunea arborelui la adncimea j este dat de
1
1
1
1
+ + + =

+
b b
b
b
j
i
...
Numrul total de noduri care au fost examinate n cutrile nereuite este:
( )
2
1
1
0
1
0
1
0
1
1
1
1
1
1
1
1
1
1
1

+
=
=
(

|
|
.
|

\
|

=
(

|
.
|

\
|

+
=
=
+

b
d b d b b
d
b
b
b
b
b b
b b
b
d
d d d
j
d j
j
j
Combinnd aceasta cu relaia 3.4 i simplificnd rezultatul, numrul total de noduri
care au fost examinate n aceast abordare este:
( )
b b b d b b d b d
b
d d + +
+ + + + +

2 1 2 2
2
4 5 3 2
2 1
(3.5)
Pentru valori mari ale lui d, aceast relaie este dominat de:
( )
( )
b b
b
d
+

+
1
2 1
1
2
Deoarece timpul necesar pentru cutarea pe vertical sau n adncime este dominat de:
65
( )
b
b
d +

1
2 1
raportul dintre timpul necesar adncimii iterative i cel necesar cutrii pe vertical sau n
adncime este dat de:
b
b
+

1
1
(3.6)
Valorile tipice obinute din aceast expresie sunt artate n figura 3.17. Aa cum putem
vedea din tabel, costul repetrii lucrului la adncimi mici nu este mare. Deoarece adncimea
iterativ evit problemele ntlnite n cutarea pe vertical sau n adncime, ea este o metod
care este preferabil n multe probleme de cutare.
Ca de obicei, examinm cazul b=2 n detaliu. n cazul cutrii pe vertical sau n
adncime, avem nevoie s examinm jumtate din ntreg arborele; deoarece arborele are
dimensiunea 2
d+1
, cutarea pe vertical sau n adncime necesit examinarea a 2
d
noduri. n
adncimea iterativ, cutrile euate iau timpul:
1 2 2 2
1
+ + + =
+
...
d d
deoarece acestea sunt dimensiunile subarborilor examinai. Deoarece acest timp este de dou
ori mai mare dect timpul necesar pentru o cutare reuit la adncimea d, factorul general n
cazul b=2 este 3, n concordan cu relaia 3.6 i figura 3.17.
b raport
2 3
3 2
5 1.5
10 1.2
25 1.08
100 1.02
Figura 3.17. Costul adncimei iterative
Ct de bun este adncimea iterativ? ntr-un sens foarte real, este o procedur
optimal de cutare oarb. Motivul este c pentru un factor de ramificaie fixat, procedura ia
spaiul de memorie O(d) i timpul O(b
d
); dup cum se va vedea, este imposibil s
mbuntim aceast cutare. Este clar, de exemplu, c dac programul este ateptat s
ntoarc calea ctre nodul int la adncimea d, atunci este cerut cel puin spaiul d.
Ce putem spune despre timp? Deoarece nodul int este distribuit ntmpltor de-a
lungul marginei arborelui i tehnica de cutare este oarb, nseamn c vom avea nevoie n
medie s examinm cel puin jumtate din aceste ramuri. Deoarece marginile sunt n numr de
b
d
, putem deci s ne ateptm ca procedura de cutare oarb s dureze O(b
d
). Date fiind aceste
lucruri, ne putem ntri remarcile cu privire la spaiul necesar prin argumentul urmtor:
considerm orice algoritm care dureaz O(b
d
); ct spaiu i este necesar pentru a putea distinge
propriile sale stri interne?
Dac toate strile interne ale algoritmului rmn distincte, este nevoie n mod clar de
cel puin atta spaiu ct ar fi necesar s se numere pn la b
d
. Dar numrtoarea pn la b
d
necesit log
2
(b
d
) bii; deoarece log
2
(b
d
)=d*log
2
(b) are valoarea O(d) pentru b fixat, se vede c
66
orice algoritm de cutare oarb necesit spaiul O(d) dac se ateapt ca el s ntoarc o cale
ctre rspuns sau nu.
3.2.6. Limea iterativ.
Dei adncimea iterativ este optimal, n sensul c funcia O(b
d
) n general este cea
mai bun care se poate obine, exist o alt tehnic de cutare oarb care adesea mbuntete
acest rezultat n practic - nu prin reducerea complexitii problemei, ci prin abordarea
problemei ntr-un mod corespunztor, i anume prin aceea c, este examinat doar o mic
poriune din ramuri dac exist mai multe noduri inta. Aceast tehnic este cunoscut ca fiind
limea iterativ .
Aa cum am observat, este important, acolo unde este posibil, s se recunoasc
alegerile greite nainte de a face cutarea, astfel nct s nu fie nevoie s se extind arborele
de cutare dincolo de acest nivel nainte de gsirea nodului int. Dar cum s se sezizeze
aceasta dac algoritmul de cutare este orb? Rspunsul const n aceea c, n majoritatea
problemelor practice, nodurile int nu sunt dispuse aleator fiind posibil de a se face erori
fatale la nceputul cutarii.
Aa cum adncimea iterativ impune limite de adncime artificiale i crete gradual
acele limite pn este gsit o soluie, tot aa limea iterativ impune limite de lime
artificiale, crescndu-le pn se gsete o soluie.
Procedura 3.4.1. L imea iterativ.
1. Seteaz c=2; acesta este limea curent redus.
2. Seteaz L ca fiind lista de noduri iniiale din problem .
3. Fie n primul nod din L. Dac L este vid, incrementeaz c i reia pasul 2.
4. Dac n este nodul int, atunci STOP i ntoarce nodul n i calea de la nodul iniial
la n.
5. Altfel terge n din L. Adaug n faa listei L primul c din fii lui n, etichetnd pe
fiecare cu calea sa de la nodul iniial. Reia pasul 3.
Cutam iniial arborele cu o lime redus cu 2, cu 3 i aa mai departe. O lime
redus cu c nseamn c maximum c fii ai fiecrui nod dat pot fi examinai nainte ca nodul s
fie abandonat ca fiind un eec. n figura 3.18 este prezentat un arbore cu un factor de
ramificare 4 dar cu o lime redus la 3.
Figura 3.18. Cutarea cu o l ime redus
Nodul ordonat dat de limea iterativ din exemplul anterior este artat n figura 3.19.
67
1, 18, 21
2,9,22 5,13,27 17,22 37
3 4 12 26 6 7 16 31 18 19 20 36 38 39 40 41
10 11 25 14 15 30 33 34 35
23 24 28 29
Figura 3.19 L imea iterativ
La fel ca i adncimea iterativ, limea iterativ este o tehnic de cutare viabil
pentru c exist cel mult b cutri i cutrile n lime reduse cu c are nevoie de timpul O(c
d
)
care este mic n comparaie cu b
d
, dac c<b. Timpul maxim consumat prin aceast tehnic este
aproximativ :
1 2 + + +
d d
b ...
care este aproximativ b
d+1
/d pentru un b mare (un factor de b/d mai slab dect la cutarea pe
vertical sau n adncime) i este aproximativ
d
b pentru un d mare.
Limea iterativ poate duce la mari reduceri a volumului de timp necesar rezolvrii
problemelor de cutare dac exist noduri int multiple i dac este posibil s se fac erori
fatale la nceputul cutrii. La adncimi mari este posibil ca metoda s gseasc o soluie mai
uor dect cutarea pe vertical sau n adncime, ori de cte ori numrul de noduri int este
mai mare de 3.
3.3. Metode extinse de cutare euristic
n multe situaii cutarea poate fi fcut mai eficient utiliznd informaiile pentru
reprezentarea problemei. De exemplu, n problema labirintului, dac se cunoate poziia
obiectivului relativ la punctul de plecare, se va selecta calea ce ncarc cel mai puin posibil
costul. La problema careului cu opt numere, o informaie a apropierii de obiectiv este dat de
poziia punctelor fa de starea obiectiv. nformaia rezultat din predicia costului fa de
obiectiv, chiar dac nu este suficient de precis, poate fi utilizat.Buclele moarte pot
determina creterea timpului (i implicit a costului) de atingere a obiectivului. Astfel de
cunotine sunt de natur euristic, ntruct nu garanteaz corectitudinea complect. Cutarea
bazat pe cunotinele euristice se numete i cutare euristic.
Se cunosc mai multe tehnici de cutare euristic, tehnici ce vor fi expuse n
continuare.
3.3.1. Metoda gradientului (Hill-climbing method).
Ideea de baz a cutrii n cazul unei strategii irevocabile este cea prin care, pornind
de la starea iniial, s se minimizeze distana ce separ starea curent obinut de starea
obiectiv a problemei. Metodele matematice cunoscute n teoria sistemelor gsesc un bun teren
de aplicabilitate n aceast situaie. O metod des utilizat este metoda gradientului (metoda
hill-climbing) ce se utilizeaz n procesele de cutare multidimensional a extremelor
funciilor de mai multe variabile sau a soluiilor sistemelor de ecuaii neliniare. O serie de
probleme duc la complexitate n procesul generrii strilor ce se reflect n caracterul
68
neterminal al strilor obinute. Aceasta nu permite testarea concordanei cu obiectivul pentru
toate strile posibil de obinut dintr-un nod dat. Generarea spaiului strilor se face dup
strategii ce urmresc dou criterii de optimalitate:
optimalitate local avnd ca obiectiv gsirea numrului minim de pai ce duce la
o stare terminal, fr epuizarea tuturor combinaiilor posibile. Starea precedent este marcat
pentru a se aigura revenirea ulterioar n caz de eec i reluarea procesului prin generarea unui
nou element terminal;
optimalitate global se refer la obinerea soluiei problemei cu un numr
minim de reveniri.
Strategiile de control irevocabile se bazeaz pe cunoaterea local, determin
operatorul aplicat de la un pas la altul, noua stare reprezint un context necunoscut, context
folosit pentru determinarea unui alt operator pn se atinge obiectivul. Se poate spune c
secvena de operatori definete o cunoatere global despre soluia problemei ce se determin
ca urmare a aplicrii operatorilor prin strategia de control.
Ideea de baz a acestei metode se bazeaz pe faptul c disecia celei mai mari creteri
a funciei f(x
1
, x
2,
x
n
) este dat de gadientul funciei:
Aplicarea metodei este dificil dac numrul variabilelor este mare, numrul
funciilor de cost este mare, funcia are mai multe valori extreme.
La cutarea ntr-un graf, strategia traversrii pentru atingerea obiectivului prin
alegerea acelor noduri care sunt predictate a fi apropiate de obiectiv este numit metoda de
gradient. Specific pentru alegerea urmtorului nod dup n, se calculeaz h(n
I
) pentru toate
nodurile fiu (n
1
, n
2
, n
m
) ale lui n i stabilete ca urmtor nod acel nod pentru care h(n
I
)
este mai mic. Funcia h(n) este o msur a apropierii de obiectiv. Algoritmul de cutare este:
n = nodul de start;
while (1)
{
if (obiectiv (n) ) exit (succes);
expandeaz n, calculeaz h(n
i
) pentru toate nodurile fiu n
i
i face nodul fiu
nod urmtor (next-n) acel nod care are valoarea minimei;
if ( h(n) h(next-n) ) exit (fail);
n = next-n;
}
Se poate imagina obiectivul ca vrful unui munte i h(n) ca diferena de nlime ntre
nodul n i vrf. Metoda urmrete apropierea de obiectiv prin gradient maxim. Dac exist
numai un vrf, metoda permite atingerea obiectivului, ns pot exista vrfuri locale ce sunt
atinse, ce nu permit apoi apropierea de maximul global.
Un exemplu de problem la care metoda este aplicabil, este cea a traversrii
labirintului. n figura a obiectivul se atinge, iar pentru cel din figura b se obine eec.
|
|
.
|

\
|
c
c
c
c
c
c
=
n
n
x
f
x
f
x
f
x x x f grad , ... , , ) ,..., , (
2 1
2 1
69
n ambele cazuri, costul de la poziia caracteristic nodului n la obiectiv, este calculat cu
formula:
h(n) = |coordonata x a obiectivului coordonata x a nodului n | + |coordonata y a
obiectivului coordonata y a nodului n |
n cazul a, obiectivul poate fi atins prin secvena de noduri SABEG, care
este un drum optim ce restrnge aria de cutare. n cazul b, se ajunge la eec dup parcurgerea
secvenei SACB, n care B reprezint un vrf, dar care nu este un obiectiv. Pentru a
ajunge la obiectiv, ar trebui atins punctul E ce determin o deprtare de obiectiv.
3.3.2. Metoda celei mai bune prime cutri
n metoda gradientului maxim, dac sunt i alte extreme locale (valori minime ale lui
h(n) ) dect obiectivul, nu se poate garanta continuarea algoritmului pentru atingerea acestuia.
Tehnica cunoscut sub numele de metoda celei mai bune prime cutri, se bazeaz pe luarea
deciziei dup examinarea spaiului strilor. Toate nodurile ce au fost examinate prin aceast
tehnic pn la momentul curent sunt stocate, urmnd ca nodul cel mai apropiat de obiectiv s
fie expandat. Pn aici metoda este similar cu cea bazat pe gradient, ns atunci cnd h(n)
devine constant sau aciunile permise n starea curent produc deprtarea de obiectiv, un alt
nod din list va fi expandat. Algoritmul pentru cutarea n grafuri dup aceast metod este
urmtorul:
pune nodul de start S n open_ list;
while (1)
{
if (open-list = lista_vid) exit (fail);
n = prim-nod (open_list);
if (obiectiv (n) ) exit (succes);
remove (n, open_list);
add (n, closed_list);
expandeaz n i genereaz toate nodurile fiu.
Pune n open_list numai acele noduri ce nu sunt coninute
n open_list sau closed_list de pn atunci.
Pentru fiecare nod sunt asociai pointeri la nodul n.
Lista nodurilor este ordonat cresctor;
}
70
Aplicarea procedurii de mai sus pentru labirintul din a) obine aceiai secven de
noduri ca prin aplicarea metodei de gradient.
Pentru labirintul din b) se obine succcesiunea
(S(6))(A(4))(B(2)C(3))(C(3)E(3))(E(3)D(4))(H(2)D(4))
(G(0)D(4)F(4))
Pentru utilizarea metodei cele mai bune prime cutri este necesar s se cunoasc
costul atingerii obiectivului, adic o serie de cunotine despre problem.
3.3.3. Soluia optim cnd costul poate fi predictat. Algoritmul A.
Prezentm n continuare o metod de gsire a soluiei optime cnd costul atingerii la
scop poate fi predictat. Pentru un nod arbitrar n al grafului, se va nota cu g(n) costul drumului
optim de la nodul S la nodul n, i h(n) costului drumului de la nodul n la nodul obiectiv. Dac
ntre noduri nu exist drum aceste costuri sunt infinite. Costul drumului optim de la nodul
iniial la obiectiv este dat de urmtoarea formul:
f(n)=g(n)+h(n)
i problema este de a gsi drumul optim (partea care d f(S)) de la nodul de start. Dac f(n)
este cunoscut exact, soluia poate fi obinut prin nlnuitrea nodurilor cu cel mai mic f(n)
ce pornesc din S. n practic fie g(n), fie h(n) nu sunt cunoscute cu precizie, aa c este
necesar cutarea.
Ca i n exemplele precedente, valoarea costului infereniat h(n) ctre obiectiv este dat
pentru toate nodurile. Se va nota cu g(n) valoarea lui g(n) pentru nodurile deja generate ce au
cost minim i conin un drum ce trece prin n. Valoarea infereniat f(n) a costului drumului
optim trecnd prin n este dat de formula
f(n)=g(n)+h(n)
Strategia de cutare utiliznd aceast funcie de evaluare este cunoscut sub numele de
algoritmul A :
Introduce nodul de start n open_list; f(S)=h(S);
while(1)
{
if(open_list = vid) exit (fail);
n = prim_nod(open_list);
if(obiectiv(n)) exit (succes);
remove(n,open_list);
add(n,close_list);
expandeaz n. Pentru toate nodurile fiu ale nodului n calculeaz
f(n,n
i
)=g(n, n
i
)+h(n, n
i
)
utiliznd costul g(n, n
i
) al trecerii prin n la n
i
de la S.
Pune nodurile ce sunt coninute n open_list sau closed_list n open_list
i seteaz pointerii la n. Pentru nodurile coninute n open_list
compar f(n
i
) i f(n,n
i
) naintea expandrii nodului n.
Dac nodul fiu n
i
este coninut n closed_list i f(n,n
i
) < f(n
i
)
face f(n
i
)= f(n,n
i
), seteaz un pointer de la n la n
i
i pune n
i
n open_list. Ordoneaz open_list cresctor dup valorile lui f.
}
71
Dac se consider h(n)=0 algoritmul are aceeai comportare cu algoritmul de cutare
optim. Dac graful este finit , se poate arta prin aceiai metod bazat pe teorema 1 c
drumul optim este gsit atunci cnd un nod de start i un nod obiectiv exist. Totui, nu se
poate garanta c algoritmul va obine soluia optim. n exemplul de graf care urmeaz sunt
ilustrate n parantezele asociate nodurilor, valorile funciei h(n) pentru nodul n.
Mai nti se expandeaz nodul S pentru a obine nodurile sale fiu A i B. Se calculeaz
funciile respective de evaluare f(A)=2+3 i f(B)=3+4, open_list este (A,B). Cnd se citete
A din open_list i este expandat se va obine nodul C. f(C)=6+0 aa c open_list devine
(C,B). Cnd este preluat C cutarea se termin. Soluia este drumul SAC. Cu toate
acestea calea nu este cea de cost minim. Raiunea pentru care drumul de cost minim SBC
nu este gsit este dat de faptul c f(B) devine mai mare dect f(B). Se poate dovedi c, dac
h(n) excede h(n), algoritmul va gsi soluia optim. Dac costul infereniat este marginea
inferioar a costului real (h(n)<=h(n)) algoritmul A se transform n algoritmul A* .
3.3.4. Algoritmul A
*
S examinm acum unul dintre cei mai importani algoritmi utilizai n cutare, i
anume algoritmul A
*
.
S considerm mai ni un exemplu simplu n care se gsete o soluie suboptimal
care este artat n figura 3.20. Numrul care urmeaz numrului de nod n figur este
valoarea euristic asociat acestuia, deci eticheta 3 asignat rdcinii nodului nseamn c
acest nod va fi la trei pai deprtare pn la int.
Metodologia devine greit pentru nodurile de adncime 1; nodul din stnga este
marcat cu 2 chiar dac pn la int mai sunt 5 pai, iar cel din dreapta este marcat cu 4, chiar
dac inta poate fi atins doar din 2 pai.
Numerele dintre paranteze din figur arat ordinea n care nodurile sunt expandate.
Rdcina este expandat prima, dup care l vom expanda pe fiul su din partea stng,
deoarece se crede c acest fiu este cel mai apropiat de int dect cel din partea dreapt.
Deoarece fiecare nod din subsecvena din partea stng a arborelui se ateapt s fie mai
aproape de int dect nodul din partea dreapt de adncime 1, partea stng a arborelui este
explorat n ntregime i inta este gsit la adncimea 6 n locul intei de adncime 3.
Nu vom fi surprini c cea mai bun prim cutare eueaz n gsirea celei mai bune
soluii n cazuri ca acesta. Dup acest remarc, ideea n cazul celei mai bune prime cutri
este de a gsi unele soluii ct mai curnd posibil prin gsirea oricrui nod care este la distana
0 de nodul intei; nici o ncercare nu este fcut pentru a descoperi inta care se afl la o
adncime minim n arborele cutrii. Dac vrem s facem acest lucru va trebui s modificm
algoritmul cutrii pentru a reflecta interesul de a gsi inta ct mai aproape de suprafa (la
adncime minim). Ordinea n care vom dezvolta nodurile trebuie s in cont de faptul c
vrem s dezvoltm nodurile aflate la o adncime ct mai mic n detrimentul celor aflate la
adncime mai mare.
72
3(1)
(2) 2 4
(3) 1 1
(4) 1
(5) 1
(6) 1
(7)
Figura 3.20 Gsirea unei solu ii suboptimale
Mai precis, deoarece scopul celei mai bune prime cutri este de a gsi o int ct mai
curnd posibil, va conduce la dezvoltarea nodului ct mai apropiat de nodul intei. Deoarece
scopul modificat este de a gsi inta cea mai puin adnc ct mai curnd posibil, va trebui s
expandm nodul care pare cel mai apropiat de inta specificat. n loc de ordonarea nodurilor
n termenii distanei pn la int, le vom ordona innd seama de calitatea ca inta s fie cea
mai apropiat de aceste noduri (aceasta este distana ateptat).
Deci s presupunem c avem un nod n la adncimea d n arborele cutrii i vom
presupune c distana de la cea mai apropiat int la acest nod este
'
( ) h n (vom porni de la
ideea c
'
h este pozitiv, deci c
'
( ) 0 h n > pentru toate nodurile n). Aceast int este de aceea
apreciat c va fi la adncimea
'
( ) d h n + n spaiul cutrii; rezult c n loc s alegem pentru
expandare nodul cu cel mai mic
'
( ) h n ca n cea mai bun prim cutare (deoarece
'
( ) h n este
distana ateptat pn la int), vom alege pentru expandare nodul cu cel mai mic d + h(n).
Adncimea nodului este considerat de asemenea o funcie de nod, notat de obicei cu ( ) g n
i se apreciaz ca fiind costul atingerii nodului n de la nodul rdcin. Deoarece intenia
este de a gsi o int cu un cost minimal, vom expanda nodurile n ordinea cresctoare a
valorilor date de relaia (4.1):
'
( ) ( ) ( ) f n g n h n = + (4.1)
Acest algoritm este cunoscut ca algoritmul A* i ca exemplificare l vom aplica n
problema de cutare din figura 3.20, rezultnd arborele din figura 3.21. n loc de a eticheta
fiecare nod cu distana ateptat pn la int, le vom eticheta cu dou numere: adncimea
73
nodului (0 pentru rdcin, 1 pentru fii etc.) i distana ateptat pn la int. Vom alege apoi
pentru expandare nodul pentru care aceast sum este cea mai mic.
03(1)
(2) 1+2 14 (6)
(3) 2+1 21 (7)
(4) 3+ 1 3+0 (8)
inta
(5) 4+1
5+1
inta
Figura 3.21 Gsirea unei solu ii optimale.
Prima cifr din sum este distana de la nodul iniial i a doua cifr este distana estimat pn la
int.
Procedura 3.3.1. Algoritmul A*
1. Seteaz L s fie lista nodurilor iniiale din problem
2. Fie n un nod al lui L pentru care
'
( ) ( ) ( ) f n g n h n = + este minim. Dac L este vid,
eec.
3. Dac n este nodul int, STOP i returneaz n mpreun cu calea de la nodul iniial
la nodul n.
4. Altfel terge n din L i adaug la L toi fii lui n, etichetndu-l pe fiecare cu calea sa de
la nodul iniial. ntoarcere la pasul 2.
Ca i mai nainte, valoarea optimist asignat nodului din partea stnga de adncime 1
ne convinge s expandm aceast cale naintea altora, deoarece ne ateptm s gsim nodul
int la adncimea 3 dedesubtul acestui nod i ateptm nodul int dedesubtul altui fiu care va
fi la adncimea 5. Oricum, cnd chiar am ajuns la adncimea 5 pe calea din partea stng a
arborelui i nu s-a atins inta, va trebui s credem c o alt cale este mai bun i s o
examinm n schimb. Cel mai bun dintre cele dou noduri int este gsit acum primul. Sunt
dou lucruri de reinut aici. Primul este acela c nu exist nici o diferen real ntre
etichetarea nodurilor (5) i (6) n figura 3.21.; amndou sunt ateptate s conduc spre inte
la adncimea 5. Am ales s expandm primul pe (5) deoarece a fost gndit s fie aproape de
nodul int dar algoritmul A* nsui nu ne cere s facem aceast alegere.
Un lucru mai important de reinut este acela c nu este garantat faptul c A* gsete
cea mai bun soluie pentru orice problem particular de cutare. n figura 3.21., de exemplu,
74
dac nodul etichetat cu (5) (ceea ce nseamn c, va fi expandat al cincilea) era nodul int, el
va fi gsit nainte de nodul int optimal pe calea din partea dreapt.
3.3.4.1. Admisibilitatea
Motivul pentru care evitm expandarea cii din partea dreapta din exemplul din figura
3.21. este c avem o etichetare pesimist a nodului din partea dreapta de adncime 1 cu
valoarea 4, aceasta indicndu-ne c nu ne putem atepta s gsim inta la orice adncime mai
mic dect 5 de-a lungul acestei ci. Ca atare, suntem condui s examinm nodurile de
adncime 4 de-a lungul cii din stnga nainte de a cuta inta de adncime 3 din partea
dreapt a arborelui. Dac funcia care estimeaz distana pn la int a fost aleas ca fiind
optimist, acest lucru nu se va ntmpla.
Pentru a formaliza aceasta, presupunem c notm cu ( ) h n (fr apostrof) actuala
distan de la nodul n pn la nodul int. Acum funcia euristic estimat
'
h va fi optimist
doar n cazul cnd avem ntotdeauna
'
h h s i n acest caz avem.
Teorema 3.3.1. Dac
'
( ) ( ) h n h n s pentru orice nod n, algoritmul A* va gsi
ntotdeauna un nod int optimal.
Demonstra ie: Presupunnd c s este cel mai adnc nod int i calea de la nodul
rdcin la aceast int este
0 1
, ,...,
k
n n n
unde
k
n s = . Ceea ce putem face este s artm c dac algoritmul A* expandeaz o parte
din aceast cale:
0 1
, ,...,
i
n n n
atunci el expandeaz de asemenea urmtorul nod de-a lungul acestei ci i anume
1 i
n
+
.
Deoarece nodul rdcin
0
n este ntotdeauna extins, rezult prin inducie c i nodul
k
s n =
este ntotdeauna extins. n acest sens lum
'
1 i
s n
+
= ca fiind un nod de-a lungul cii spre s i
lum x ca fiind orice nod mai ru dect s n sensul ( ) ( ) g x g s > . Deoarece exist doar un
numr finit de noduri cu ( ) f n c s pentru orice constant c, tim c procedura va expanda n
final fie pe
'
s sau un astfel de nod x. n plus, deoarece a fost expandat calea de la rdcin la
'
s , trebuie doar s artm c valoarea euristic asignat lui
'
s (incluznd costul ajungerii
acolo) este mai mic dect valoarea asignat lui x. Cu alte cuvinte, trebuie s artm c:
' ' ' '
( ) ( ) ( ) ( ) g s h s g x h x + < + .
Dar
' ' '
( ) ( ) h s h s s pentru c
'
h este optimist. De aici rezult c:
' ' ' ' '
( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) g s h s g s h s g s g x g x h x + s + = < s +
Egalitatea apare deoarece suma costurilor ajungerii la
'
s i apoi de la
'
s la nodul int optimal
s este chiar costul ajungerii direct la s. Demonstraia este complet.
O funcie euristic optim
'
h este numit admisibil.
Pentru exemplificare, s ne rentoarcem la spaiul de cutare din figura 3.21. dup
modificarea valorii euristice atribuite nodului din dreapta de adncime 1 astfel nct funcia
euristic s fie admisibil; rezultatul este artat n figura 3.22.. Nodul int optimal este gsit
ntr-adevr n acest caz.
75
3(1)
(2) 1+2 12 (4)
(3) 2+ 1 21 (5)
3+ 1 3+0 (6)
inta
4+1 inta?
5+1
inta
Figura 3.22 O func ie euristic admisibil
Exist de asemenea i alte exemple interesante. Funcia euristic
'
( ) 0 h n = este clar
una admisibil i conduce n mod simplu la extinderea nodurilor n ordinea creterii lui ( ) g n .
Pentru c ( ) g n este adncimea nodului n, algoritmul A* reproduce cutarea pe orizontal sau
n lime n acest caz. Deoarece cutarea pe vertical sau n adncime eueaz adesea n
gsirea celei mai bune soluii a problemei, este sigur c nu exist o euristic admisibil care s
imite cutarea pe vertical sau n adncime pe o cale similar.
Euristica perfect
'
h h = este de asemenea ntotdeauna admisibil.
3.3.4.2. Extensii i IDA*
Vom ncheia discutnd cteva extensii ale algoritmului A*. Prima situaie pe care o
considerm este aceea n care costul unui nod nu mai este reprezentat de adncimea lui n
spaiul de cutare, ci este evaluat n schimb n alte moduri. Vom continua s presupunem
faptul c costul ajungerii la un nod n este suma costurilor arcelor individuale de-a lungul cii
de la rdcin la n; nu se mai presupune c lungimea fiecrui arc este o unitate de cost.
Nu este greu s observm c atta timp ct vom continua s folosim ( ) g n pentru
costul atingerii nodului n, folosirea algoritmului A* utiliznd funciile de evaluare obinuite
date de relaia 4.1 continu s gseasc soluiile cu cel mai mic cost. Dac vom lua
'
( ) 0 h n =
n acest caz, vom obine procedura de cutare cunoscut sub numele de branch and bound
(ramific i mrginete).
n continuare presupunem c folosim A* pentru a cuta ntr-un graf n locul unui
simplu arbore, cum este artat n figura 3.23.. Presupunnd c lum ( ) g n ca fiind costul celei
mai ieftine ci gsite ctre nodul n i s meninem o list doar cu nodurilor deschise,
algoritmul rmne n principiu neschimbat.
76
Figura 3.23. Algoritmul A* folosit la cutarea n graf
Procedura 3.3.2. Algoritmul A* n grafuri
1. Seteaz L s fie o list a nodurilor iniiale din problem.
2. Fie n un nod n L pentru care
'
( ) ( ) ( ) f n g n h n = + este minim. Dac L este vid,
eec.
3. Dac n este nod int, STOP i ntoarce pe n i calea de la nodul iniial la n.
4. Altfel terge pe n din L i adaug la L toi fii lui n, etichetndu-l pe fiecare cu
calea de la nodul iniial pn la el. Dac vreun fiu c este deja n L nu vom face o
copie separat dar, n schimb, reetichetm c cu cea mai scurt cale care l leag
de nodul iniial. ntoarce-te la pasul 2.
n figur nodul care este extins al zecelea este iniial crezut a fi la adncimea 4 dar el
este de fapt determinat la adncimea 3 nainte de a fi expandat. n sfrit, memoria este o
problem pentru algoritmul A*. Deoarece el se reduce la cutarea pe orizontal sau n lime
dac
'
0 h = , se observ c A* posibil va folosi o cantitate de memorie care este exponenial
cu adncimea nodului int optimal. Ca i n cazul cutrii oarbe, aceast problem poate fi
rezolvat folosind adncimea iterativ.
Procedura 3.3.3 I.D.A*.
1. Fie c = 1; aceasta este adncimea curent a scurtturii.
2. Fie L o list a nodurilor iniiale din problem.
3. Lum n primul nod din L. Dac L este vid, incrementeaz c i ntoarce-te la pasul 2.
4. Dac n este nodul int, STOP i returneaz pe n i calea de la nodul iniial la n.
5. Altfel terge n din lista L. Adaug la capul listei L fiecare fiu
'
n al lui n pentru care
'
( ) f n c s . ntoarce-te la pasul 3.
Este important s nelegem c iteraiile individuale din acest algoritm sunt fcute
folosind convenionala cutare pe vertical sau n adncime i nu folosind A*; funcia
euristic este folosit pentru a tia nodurile i nu pentru a determina ordinea n care ele vor
fi expandate. Cu toate acestea, dac iteraiile originale cer ca expandarea s fie fcut folosind
algoritmul A*, o cantitate exponenial de memorie va fi necesar!
77
Figura 3.24. I.D.A*
Un exemplu de folosire a procedurii 3.3.3. apare n figura 3.24.. Pentru c=1 vom
examina numai nodul rdcin; pentru c=2 vom examina dou noduri i aa mai departe.
Cutrile individuale sunt conduse n stilul cutrii n adncime, ceea ce explic de ce nodul
12 este extins naintea nodului 14 n figur dei estimrile euristice indic c nodul 14 este
probabil mai apropiat de o int superficial.
Procedura 3.3.3 este cunoscut ca adncime iterativ A*, sau simplu I.D.A*. Nu
este foarte greu s artm c folosete o cantitate de memorie liniar cu adncimea nodului
int, adic sunt expandate doar nodurile extinse de A* nsui i aceasta continu s caute
soluiile optimale cnd este folosit o euristic admisibil.
78
Unitatea de nv are 4
Metode avansate de cutare.
Cuprins:
4.1. Cutarea n grafuri I/SAU ....................................................................... pag. 78
4.1.1. Evaluarea i expandarea grafurilor candidate ......................................... pag. 78
4.1.2. Cutarea n adncime n grafuri I/SAU ................................................ pag. 79
4.1.3. Cutarea soluiei optime n grafuri I/SAU ............................................ pag. 81
4.2. Cutarea n arbori pentru jocuri ................................................................. pag. 85
4.2.1. Arbori de joc ........................................................................................... pag. 85
4.2.2. Metoda MINIMAX ................................................................................. pag. 86
4.2.3. Metoda alfa-beta ..................................................................................... pag. 86
4.2.4. Utilizarea metodelor minimax i alfa-beta n grafuri I/SAU ................ pag. 88
4.3. Execiii ........................................................................................................ pag.91
4.1. Cutarea n grafuri I/SAU
Cnd se caut ntr-un graf este suficient s se gseasc un singur drum, aa c dac se
cunosc pointerii de la nodurile printe ctre toi fii si n drumul parcurs, i cutarea este
complet, nseamn c s-a gsit o cale ce constituie o soluie. Totui un graf rezolvent al
grafului I/SAU este la rndul su un graf. Procesul gsirii soluiei prin cutare corespunde
dezvoltrii progresive a soluiei. Numai unele din grafurile rezolvente posibile snt gsite n
timpul cutrii. Acestea snt numite grafuri candidate. S-a preferat aceast denumire n loc de
grafuri rezolvente pariale ntruct nu se cunoate nc dac acestea snt parte a soluiei. Uzual
aceste grafuri snt gsite n timpul cutrii i structurile lor trebuiesc reprezentate.
4.1.1. Evaluarea i expandarea grafurilor candidate
Un graf I/SAU poate fi cercetat prin evaluri i expandri repetate dup cum
urmeaz:
1. Determin dac nodurile grafurilor candidate snt solvabile, insolvabile sau
nedecizabile, precum i costul acestora dac este cazul.
2. Expandeaz grafurile candidate.
n primul pas se examineaz toate punctele finale (nodurile frunz) ale grafului
candidat. Dac acestea snt, noduri terminale ele corespund unei probleme rezolvate i ca
urmare vor fi marcate n acest sens. Dac punctele terminale ale grafului candidat snt puncte
finale ale problemei iniiale, dar nu noduri terminale, problemele corespunztoare acestor
noduri snt insolvabile i se vor marca printr-un marker UNSOLVED. Dac nodurile fiu ale
unui nod, altele dect nodurile terminale ale grafului candidat snt noduri I, i dac toi fii
snt SOLVED, atunci nodul va fi marcat SOLVED. Dac cel puin un fiu este UNSOLVED
atunci nodul printe va fi marcat UNSOLVED. n cazul n care nodurile fiu, altele dect
punctele terminale snt noduri SAU i cel puin unul a fost marcat SOLVED atunci nodul
printe va purta aceeai marc.
Cnd nodul S al unui graf candidat devine SOLVED, graful este o soluie a problemei.
Dac este necesar calculul costului, se calculeaz costul tuturor nodurilor utiliznd costul
punctelor finale ale grafurilor candidate. Costul nodului printe al unui nod I se calculeaz
ca suma tuturor nodurilor sale fiu, pe cnd cel al unui nod fiu SAU ca maximul costurilor
fiilor. Costul nodului de start este costul nodului grafului candidat. n pasul 2 se gsesc
nodurile fiu prin expandarea nodurilor ce snt puncte terminale ale grafului candidat p i nu au
fost marcate n nici un fel. Dac nodurile fiu ale nodului expandat n snt noduri I un nongraf
79
candidat este generat prin adugarea tuturor nodurilor fiu la nodul p. Dac nodurile fiu ale
nodului n snt noduri SAU adugarea cte unuia din acestea la p va determina generarea mai
multor grafuri cte noduri fiu are. n acest mod un numr mare de grafuri candidate vor fi
generate prin procesul de cutare.
4.1.2. Cutarea n adncime n grafuri I/SAU
Ca i n cazul cutrii n grafuri obinuite, strategiile de cutare n grafuri I/SAU snt:
cutarea n adncime, cutarea n lrgime, strategii de cutare optimal. Procedura de cutare
n adncime este:
Introduce n open_list un graf candidat format doar din nodul de start
While(1)
{
if (open_list=vid) exit (fail);
p= prim_graf(open_list); /* aduce primul graf din list*/
if(SOLVED(p)) exit(succes); /*dac p este un graf rezolvent cutarea
se termin i p este soluia */
remove(p, open_list);
add(r, closed_list);
expandeaz p, evalueaz toate noile grafuri candidate i pune
grafurile candidate n care nodul de strat nu este UNSOLVED n
open_list;
}
Figura (a) (t
1
-t
4
snt noduri terminale)
n figura b care urmeaz, se arat grafurile candidate n open_list pentru graful
I/SAU din figura a. Cnd primul graf candidat din open_list este expandat i evaluat la a
treia parcurgere a buclei este gsit UNSOLVED i este mutat din open_list. La a asea
repetare a procedurii graful candidat din open_list este SOLVED i devine soluie a
problemei.
80
1. 2.
3.
4. 5.
6.
Figura (b): Grafuri n open_list la cutarea n adncime
n aceast procedur grafurile candidate expandate snt inute n open_list, ns nu este
esenial a face acest lucru n cazul cutrii n adncime. Se poate utiliza un sistem n care
aceast list conine numai un graf parial SOLVED, pentru formarea soluiei trebuie
81
combinat corespunztor cu alte grafuri. Pentru realizarea acestui lucru este necesar
construirea unei funcii care atunci cnd nodurile snt expandate toate nodurile fiu ale sale au
fost generate o singur dat. Un singur nod fiu determin un graf parial la un moment dat de
timp. Pentru formalizare se definete funcia next_fiu. Se presupune c nodul n are nodurile
fiu n
1
, n
2
, , n
m
i nodul fiu n
i
a fost deja generat. Dac nici un nod fiu nu a fost deja generat
i=0. Aplicarea funciei next_fiu(n) la nodul n determin urmtorul rezultat:
next_fiu(n)= n
i-1
0 s i s m
null i=m
Cu aceste observaii algoritmul de cutare n adncime n arbori I/SAU se
desfoar dup procedura:
Construiete graful candidat p coninnd numai nodul de start n=s;
Evalueaz p;
While true
{
while true
{
if UNSOLVED(p) exit(fail);
if SOLVED(p) exit(succes);
if n este marcat break;
next_n=next_fiu(n);
add next_n la p, evalueaz p;
n= next_n;
}
evalueaz p;
if n este UNSOLVED elimin n din graful p;
n= nod_printe(n);
}
Aplicat grafului din figura a anterioar, se obine secvena S, A, C, F, C, A, S, B, E, t
3
,
E, t
4
. Secvena de cutare este aceeai cu cea de cutare n adncime n grafuri obinuite. Dac
n procesul de cutare se obine c toate nodurile SAU snt UNSOLVED se ntoarce la nodul
imediat precedent i continu cutarea dup alte arce. Acest proces este numit backtracking.
ntruct procedura realizeaz o funcie backtracking nu este necesar ca toate nodurile fiu
expandate ale unui nod s fie stocate n open_list. Dac ntr-un graf candidat p nodurile fiu ale
nodului final n snt ntr-un graf candidat p, i nodurile fiu ale nodului final n snt snt noduri
I se adaug toate la graful p. Pentru a reduce timpul cnd unul din nodurile fiu este
UNSOLVED, n devine UNSOLVED i nu necesit gsirea altor noduri fiu. Pentru a continua
procesul se utilizeaz funcia next_fiu.
4.1.3. Cutarea soluiei optime n grafuri I/SAU
Vom trata n continuare gsirea soluiei optime n graf, soluie avnd cost minim cnd
costul arcelor ctre nodurile SAU este definit. Se presupune c pentru fiecare nod al grafului
costul estimat al soluiei este dat. Aceasta corespunde la h n cutarea pentru grafuri
obinuite. Se va nota costul estimat pentru nodul n n h(n). Dac funcia euristic h(n) nu
este dat, cazul este similar cu h(n)=0 i algoritmul este identic cu cel de cutare n adncime
pentru grafuri I/SAU.
82
La algoritmul de cutare n adncime descris anterior diferite grafuri candidate au fost
generate. Valoarea inferenial f(p) a costului unui graf candidat p este obinut prin
evaluarea lui p utiliznd valoarea inferenial a costului punctelor finale. n figura c se arat o
parte a unui graf I/SAU. Un graf candidat p este punctat prin linii punctate. Costul nodurilor
I se calculeaz utiliznd suma costurilor fiilor si, iar pentru nodurile SAU s-a luat valoarea
1.
6
5
(3) (2)
Figura (c) (ntre paranteze s-a prezentat h i fr paranteze costurile evaluate).
Dac valorile estimate ale costurilor nodurilor A i S sunt calculate utiliznd valorile
infereniale, h(C)=3 i h(D)=2 ale punctelor finale C i D din (p), se obine
f(A)=h(C)+h(D),
iar pentru S,
f(S)=f(A)+1.
Ca urmare f(p)=6.
Cu algoritmul A cutarea ncepe prin expandarea grafurilor cu f(p) minim.
Algoritmul este:
83
Pune n open_list graful candidat (p) format numai din nodul de start S,
f(p)=h(S);
while true
{
if (open_list=vid) exit(fail);
p=prim_graf (open_list); /* aduce primul graf din list */
if (solved(p)) exit(succes); /* dac (p) este un graf rezolvent
cutarea se */
/*termin i (p) este soluia */
remove (p, open_list);
expandeaz (p), evalueaz toate grafurile candidate (p
i
) nou
generate i gsete f(p
i
). Dac (p
i
) este UNSOLVED pune-l
n open_list;
}
Pentru a ilustra modul n care algoritmul avanseaz se consider exemplul din figura
(d), iar n figura (e) se prezint coninutul n open_list prin utilizarea algoritmului de cutare
optimal. n figuri s-au trecut ntre paranteze costurile estimate, costurile fr paranteze sunt
calculate utiliznd costuri estimate. Fiecare candidat este denumit (prin marcarea cu P
i
),
pentru a nu desena de mai multe ori acelai graf.
(4)
(3)
(3) (2)
(3)
(2)
(1)
(0)
t
1
(1)
(1)
(0)
t
2
Figura (d) Cutarea soluiei optime n grafuri I/SAU
84
n figura (e) sunt artai numai primele ase cicluri. Dup ultimul ciclu ilustrat, H i I
sunt expandate i nodurile terminale (t
1
) i (t
2
) sunt adugate obinnd graful (p
10
). Costul
pentru (p
10
) este f(p
10
)=5. Dac nodurile fiu ale unui nod (n) asociat unui graf candidat (p)
sunt noduri I, ele sunt generate la acelai moment, cu toate c sunt evaluate la pai diferii.
Ca i n cazul utilizrii algoritmului A n grafuri obinuite, acest algoritm nu garanteaz
gsirea soluiei optime.
1.
P
1
:
( 4 )
2.
P
2
:
( 4 )
( 3 )
P
3
:
( 4 )
3
3.
P
3
P
4
:
6
5
(3) (2)
4.
P
5
:
4
(2) (1)
3
P
4
5.
P
6
:
4
2 ( 1 )
3
( 1 )
P
7
:
5
3 ( 1 )
4
( 2 )
P
4
6.
P
8
:
5
3
( 1 )
4
2
( 1 )
P
7
P
4
Figura (e) Soluia cutrii optimale pentru graful din figura (d) .
85
Totui se poate demonstra c soluia optim este gsit dac h<h pentru toate
nodurile. Dac n calcularea costurilor infereniale ale grafurilor candidate se seteaz costul
tuturor arcelor egal cu (0), aceasta corespunde ncercrii de minimizare a viitoarelor costuri de
cutare.
4.2. Cutarea n arbori pentru jocuri
Un domeniu des utilizat n tehnicile de inteligent artificial este i cel al teoriei
jocurilor. Problema esenial este cea de luarea deciziei n efectuarea unei noi mutri, ce poate
fi rezolvat prin utilizarea tehnicilor de cutare ce au fost deja descrise.
4.2.1. Arbori de jocuri
S presupunem c doi juctori mut alternativ (operatorii sunt aplicai alternativ),
pornind de la o stare iniial, pn cnd o stare final este atins. Dac starea final este un
eec sau un succes valoarea evaluat poate fi un scor. Diferitele stri obinute n timpul
parcurgerii jocului pot fi reprezentate asemntor unui graf. De cele mai multe ori aceleai
stri pot fi atinse prin mai multe secvene de mutri. Dac se ignor aceasta i se reprezint
prin noduri distincte, graful este un arbore. n continuare, pentru simplitate, vom reprezenta
jocurile prin arbori.
S
B A
C D
S
F E
5 2 1 6
Figura (f) Joc simplu reprezentat ca arbore
Se presupune c obiectivul juctorului care mut primul (numit MAX) este s obin
maxima evaluat, iar obiectivul juctorului care mut al doilea (numit MIN) este de a obine
cea mai mic valoare evaluat. De asemenea, ambii juctori aleg cea mai bun mutare. n
figura (f) este prezentat un arbore simplu asociat, n care nodurile corespunznd lui MAX sunt
ptrate, iar cele corespunznd lui MIN sunt cercuri. Valorile evaluate sunt date la punctele
finale.
n mod normal arborele are o adncime mare i din fiecare nod pleac mai multe arce.
Chiar pentru jocuri de complexitate medie este practic imposibila generarea arborelui
incluznd toate punctele finale. n astfel de cazuri, valorile evaluate sunt gsite prin generarea
unui arbore n adncime rezonabil, n care evaluarea punctelor terminale ale arborilor pariali
se face prin aceleai metode.
Valorile evaluate pe aceast cale sunt numite valori evaluate static. Dac jocul este
aproape de terminare se poate atinge un punct final, ns de cele mai multe ori cea mai bun
mutare va fi decis prin utilizarea valorilor evaluate static. Se ia n considerare faptul c
adversarul determin i el cea mai bun mutare dup generarea unui arbore parial de
adncime corespunztoare. Adncimea arborelui este restricionat prin memoria i timpul de
86
calcul necesare. Valorile evaluate static sunt date de cunoaterea caracteristicilor jocului.
Pentru a juca AH, SHOGI sau GO este necesar att investigarea metodelor de cutare ct i
a metodelor de evaluare adecvate. n cele ce urmeaz vor fi prezentate numai metode de
cutare pentru cazul n care valorile evaluate sunt considerate cunoscute.
4.2.2 Metoda MINIMAX
Se va explica metoda minimax cu referire la exemplul din figura (f). De la nodul de
start S, MAX are de ales ntre dou posibiliti. Dac se alege primul arc se ajunge n nodul A.
MIN are n continuare dou posibiliti, dar alegerea nodului D d cea mai mic valoare
evaluat. Dac MAX a ales iniial nodul B, MIN va alege nodul E care d valoarea
inferenial (1). MAX trebuie s aleag propria mutare presupunnd c valoare inferenial
pentru fiecare nod MIN este cea mai mic din valorile evaluate pentru toate nodurile ce
pornesc din el. Dac se noteaz nodul MAX cu (n) i fiii si cu (n
i
) (i=1m), iar nodul fiu al
fiecruia cu (n
ij
) (j=1i
m
), MAX maximizeaz valoarea evaluat a lui f(n
i
). Selectarea lui (i)
va satisface urmtoarea condiie: f(n
i
)=max f(n
i
). MIN minimizeaz f(n
i
) pentru un (i) dat i
alege (j) astfel nct f(n
i
)=min f(n
ij
). Astfel MAX alege (i) n concordan cu:
f(n
ij
)=max {min f(n
ij
)}.
Dac se ia adncimea arborelui (k), MAX va selecta (i
A
), aa c:
f(n
i1,i2,,ik
)=max min{f(n
i1,i2,,ik
)}.
Dac valorile evaluate ale punctelor terminale din arbore sunt corecte, metoda
minimax va selecta cea mai bun mutare. Totui, dac adncimea arborelui crete, numrul
nodurilor ce trebuie evaluate crete exponenial. Un algoritm mai eficient de rezolvare a
acestei probleme se poate obine utiliznd metoda alfa-beta.
4.2.3. Metoda ALFA-BETA
Fie arborele de cutare din figura (g) n care nodurile sunt numerotate i un scor este
dat la fiecare nod terminal. Dac se gsesc cele mai bune mutri utiliznd algoritmul
minimax, iniial MAX alege nodul (1), MIN alege nodul (3), MAX alege nodul (8) ce are
valoarea evaluat (5).
S
2 1
3 4
6
5
7 8 9
16 17 18
13 14 15 10 11 12
3 5 4 4 5 7 4 3 2 5 8 6
Figura (g) Cutarea n arbori folosind metoda alfa-beta
87
Presupunnd c ntr-o procedur similar cu cea de cutare n adncime s-a obinut
valoarea evaluat (5) pentru nodul (3), n continuare se ncearc gsirea valorii nodului (4). Se
cunoate n acest moment faptul c valoarea nodului (1) nu poate fi mai mare dect (5).
Motivul rezid n faptul c dac valoarea nodului (4) ar fi mai mare dect (5), MIN nu va
alege nodul (4). Cu toate c se cunoate c valorile nodurilor (10) i (11) sunt obinute,
valoarea nodului (4) este cel puin (5). Aa c nu poate fi mai avantajos pentru MIN s aleag
nodul (4) n detrimentul nodului (3). Se deduce c MIN va alege nodul (3) fr s mai
examineze nodul (12). n acest mod valoarea ce determin costul nodului (1) este (5) i ca
urmare valoarea nodului S trebuie s fie cel puin (5). Considernd acum c valoarea evaluat
(4) este obinut pentru nodul (5), prin examinarea valorilor tuturor nodurilor fiu ale sale, i
cum selecia nodului (2) nu va aduce pentru MAX avantaje, nu mai este necesar inspectarea
nodului (6) i a celor care sunt fiii si. Metoda de segmentare a numrului de noduri ce sunt
cercetate este numit i metoda alfa-beta. Pentru cutarea sistematic a arborilor adnci
metoda este simplu de neles dac se formalizeaz dup cum urmeaz. Se noteaz marginea
inferioar a fiecrui nod cu alfa, iar marginea superioar cu beta. n starea iniial pentru
nodul S, alfa i beta sunt -, respectiv +. Pentru aceasta se va scrie
o|(S)=( -, +). Dac o valoare (x) este mai mic dect alfa sau mai mare dect beta, se
spune c (x) depete domeniul (o,|). Cnd valoarea nodului (3) este determinat, o|(1) = (-
,5). Dac se cunoate c valorile nodurilor fii ale nodului (1) depesc gama (-,5), condiia
pentru ntreruperea cutrii este ndeplinit. Cnd nodul (11) a fost explorat, o|(4)=(5,|), deci
n afara gamei (-,5), deci condiia de ntrerupere a cutrii este din nou ndeplinit i nu va fi
necesar cutarea n continuare a fiilor lui (4). n acest moment o|(1)=(5,5) i o|(5)=(5,).
Cnd cutarea continu, valoarea nodului (5) este gsit ca fiind (4), n afara gamei (5,) i se
ntrerupe cutarea nodului (2) i a celor ce pornesc din el.
Prima ntrerupere a cutrii apare datorit faptului c nodul (4) este cel puin egal cu
valoarea lui beta i a prinilor si, a doua ntruct valoarea nodului (2) este cel puin egal cu
valoarea lui alfa. Procedeul este denumit beta-cut, respectiv alfa-cut. Metoda de cretere a
eficienei cutrii utiliznd marginile inferioare i superioare este numit metoda alfa-beta.
Pentru a determina eficiena cutrii se calculeaz numrul maxim al nodurilor explorate n
cel mai bun caz. Considernd momentul n care s-a gsit valoarea (k) a primului nod fiu de la
un nod MAX, nodul (n), atunci o|(n)=(k,). Dac beta al nodului printe (m) al lui (n) este
mai mic sau egal cu (k), nu este necesar evaluarea celorlalte noduri fiu ale lui (n). Dac
nodul (m) nu este primul nod fiu al printelui su, valoarea beta este deja dat i nu poate fi
. Concluzii similare pot fi trase pentru nodurile MIN. n consecin, n cel mai bun caz, dac
nodul (m) nu este primul nod al uni nod printe, nu este necesar examinarea nici unui nod fiu
dect a primului nod al lui (m).
Nodurile terminale sunt reprezentate prin secvena de arce ce le leag. De exemplu
nodul (12) din figura (g) poate fi exprimat prin secvena (1,2,3), adic este atins urmrind
primul arc al lui S, al doilea de la nodul (1) i al treilea de la nodul (4). Ca urmare nodurile
terminale ale arborelui de adncime (k) se exprim prin k-uplul (e
1
,e
2
,,e
k
). Nodurile ce nu
necesit examinarea sunt cele pentru care e
i
=1, e
i+1
=1. n consecin nodurile care au fost
examinate n cel mai bun caz, fie sunt noduri numere pare care au n secven (1), fie sunt
noduri numere impare care au n secven (1). Noiunea de par sau impar se refer la numrul
nodului n adncimea arborelui.
Dac se presupune c numrul arcelor posibile de la noduri neterminale este (m),
atunci numrul nodurilor pare N
o
(k,m) i numrul nodurilor impare N
e
(k,m) sunt date prin
urmtoarele formule:
- dac k este par: N
o
(k,m)=m
(k-1)/2
, N
e
(k,m)=m
(k+1)/2
- dac k este impar: N
o
(k,m)=N
e
(k,m)=m
k/2
.
88
Nodul (1,1,,1) este numrat pentru ambele N
o
(k,m) i N
e
(k,m), aa c N
total
(k,m)
este N
o
(k,m)+N
e
(k,m)-1. Cu aceste precizri se obine:
- pentru k par: N
total
(k,m)=m
(k-1)/2
+m
(k+1)/2
-1
- pentru k impar: N
total
(k,m)=2m
k/2
-1.
n cel mai bun caz, numrul nodurilor ce trebuie examinate prin metoda alfa-beta este
aproximativ acelai cu numrul nodurilor ce trebuie cutat prin metoda minimax ntr-un
arbore de adncime jumtate.
n cazul cel mai defavorabil toate nodurile vor trebui examinate.
Uzual situaia este cuprins ntre dou extreme, valoarea real fiind dat prin
inegalitatea
m
k/2
< N(k,m) <= m
k
.
4.2.4. Utilizarea metodelor minimax i alfa-beta n grafuri I/SAU pentru jocuri
Un arbore specific pentru jocuri este reprezentat ca un graf I/SAU. De exemplu
arborele din figura (f) reprezentat ca un graf este artat n figura (h).
S
B A
C D
S
F E
5 2 1 6
Figura (h) Arbore I/SAU pentru jocuri
Nodurile fiu ale nodurilor MAX corespund la noduri SAU, cele ale nodurilor MIN la
noduri I (nodul de start este vzut ca un nod I). Ca i la arborii I/SAU nodurile terminale
au valoarea evaluat dat. Costul arcelor este ntotdeauna (0). Utiliznd metoda minimax, cea
mai bun mutare este determinat prin urmtoarele metode:
dac nodurile fiu ale unui nod dat sunt noduri I, valoarea nodului este dat de cea
mai mic valoare evaluat a fiilor si;
dac nodurile fiu sunt noduri SAU, valoarea este dat de valoarea maxim dintre
valorile nodurilor fiu ale sale.
n cazul jocurilor pentru care obiectivul este cel de a face valoarea nodului de start
maxim, valorile evaluate sunt n opoziie fa de cost, adic cea mai mare valoare evaluat
este cea mai bun. n consecin metoda de calcul a valorilor n diverse noduri ale grafului
este diferit de cea utilizat n metodele descrise anterior pentru arbori I/SAU.
Valoarea evaluat a nodului terminal a soluiei grafului este nsi valoarea nodului
terminal. Valoarea ntr-un nod unde fiii sunt noduri I este valoarea minim din valorile
asociate nodurilor fiu. Valoarea unui nod unde fiii sunt noduri SAU este aceeai cu valoarea
nodului fiu. Dac se scrie valoarea nodului (n) ca f(n), f(A)=2 i f(S)=2.
Alte soluii pot aprea din valorile celorlalte noduri. n cazul de fa soluia este (1).
Metoda descris anterior referitoare la grafuri I/SAU poate fi aplicat i la arbori de jocuri.
89
Totui h( ) nu este dat de aceeai formul exceptnd nodurile terminale. Pentru a obine
soluia optim condiia f(n) >= f(n) este ndeplinit pentru toate nodurile (cnd se urmrete
obinerea soluiei de cost minim h(n) <= h(n) pentru toate nodurile). n consecin dac
valorile punctelor terminale nu sunt date, valorile infereniale ale arborilor candidat sunt
infinit de mari. Presupunnd c la expandarea nodurilor neterminale ale grafului candidat
nodurile fiu sunt noduri I, ele se expandeaz n acelai moment. Dac se noteaz primul nod
fiu cu (n
1
) (nod I) al lui (n
i
), se poate lua f(n) <= f(n
1
). Aa se poate calcula f i reactualiza
n timpul procesului de cutare. Asemntor cu metoda de cutare optimal descris anterior,
principiul acestei metode este bazat pe faptul c un graf candidat adus din open_list va fi
expandat dup cea mai mare valoare inferenial.
n arbori I/SAU pentru jocuri gsirea soluiei necesit nu numai nodul terminal care
d valoarea soluiei arborelui, ci i drumul urmat pentru ca pornind de la nodul de start acesta
s fie atins. Pentru transpunerea algoritmului, prin convenie se va nota cu EXPL nodurile
atinse ce nu au starea SOLVED. n acest context starea nodului (n) este dat de tripletul (n, s,
v) n care (s) indic faptul c nodul (n) este SOLVED sau EXPL, (v) d valoarea lui f(n) dac
(n) este SOLVED sau f(n) dac el este EXPL. Starea nodului (n) este pus n open_list
printr-o procedur pe care am notat-o putopen(n, s, v). De asemenea se va scrie pentru nodul
printe parent(n), nodul terminal n ca terminal(n) i pentru a detecta un nod (n) ca fiind
I/SAU s-a utilizat funcia type(n). Algoritmul de cutare n astfel de situaii este:
putopen (S,EXPL,f(n));
while true
{
if open=goal then exit(fail);
n=first(open);
if (n=S & SOLVED(n)) then exit(succes);
remove (n,open);
/*1*/ if ((S=EXPL) & (type(n)=AND) & not_terminal(n))
then pentru toate nodurile fiu (n
i
) ale lui (n)
putopen (n, EXPL, f(n));
/*2*/ if ((S=EXPL) & (type(n)=OR)) & not_terminal(n))
then
{next_n=next_fiu()
if (next_n=SOLVED) then
putopen (n, SOLVED, f(n));
else putopen (n, EXPL, f(n));}
/*3*/ if ((S=EXPL) & terminal(n))
putopen (n, SOLVED, min(f(n), f(n));
/*4*/ if ((S=SOLVED) & (type(n)=AND))
putopen (parent(n), EXPL, f(n));
/*5*/ if ((S=SOLVED) & (type(n)=OR))
{m=parent(n); /*mut toate nodurile fiu ale lui (m) n open_list
putopen(n, SOLVED, f(n);}
}
Pentru exemplificarea metodei se consider graful din figura (i):
90
13 14 15 16 17 18 19 20 21 22 24 23 25 26 27 28 29 30
4 5 6 7 8 9 10 11 12
1 2 3
0
6 2 3 3 4 5 3 2 4 5 3 6 3 4 5 6 4 8
Figura (i) Cutarea soluiei optime n arbore de joc I/SAU
Aa cum se vede din tabelul de rezultate, metoda alfa-beta este dependent de ordinea
nodurilor.
Pas Proc Open_list n care S este SOLVED, E este EXPL
1 (0,E,)
2 1 (1,E,),(2,E,),(3,E,)
3 2 (4,E,),(2,E,),(3,E,)
4 1 (13,E,),(14,E,),(2,E,),(3,E,)
5 3 (14,E,),(2,E,),(3,E,),(13,S,4)
6 3 (2,E,), (3,E,),(13,S,4),(14,S,4)
7 2 (7,E,), (3,E,),(13,S,4),(14,S,3)
8 1 (19,E,), (20,E,),(3,E,),(13,S,4),(14,S,3)
9 3 (20,E,), (3,E,),(13,S,4),(19,S,4),(14,S,3)
10 3 (3,E,), (13,S,4),(19,S,4),(14,S,3),(20,S,2)
11 2 (10,E,), (13,S,4),(19,S,4),(14,S,3),(20,S,2)
12 1 (25,E,), (26,E,),(13,S,4),(19,S,4),(14,S,3),(20,S,2)
13 3 (26,E,), (13,S,4),(19,S,4),(14,S,3),(25,S,3),(20,S,2)
14 3 (26,S,5), (13,S,4),(19,S,4),(14,S,3),(25,S,3),(20,S,2)
15 5 (10,S,5),(13,S,4),(19,S,4),(14,S,3),(20,S,2)
16 4 (3,E,5),(13,S,4),(19,S,4),(14,S,3),(20,S,2)
28 5 (S,S,5),(13,S,4),(19,S,4),(4,S,3),(20,S,2)
n cazul grafului din figura (i) dac nodul (3) ar fi n locul nodului (1) soluia optim
ar fi gsit mult mai rapid. n algoritm au fost notate cele 5 situaii ce sunt ilustrate i n
tabelul precedent, pentru a uura cititorul n nelegerea algoritmului.
Spre deosebire de cutarea optimal obinuit care exploreaz mai nti nodurile cele mai
promitoare i a crei eficien nu este afectat de aranjarea nodurilor, metoda alfa-beta este
dependent de aceasta. n al doilea rnd memoria necesar pentru algoritmul alfa-beta este
mult mai redus. Alegerea uneia din cele dou metode este dependent de performanele
dorite din punctul de vedere al vitezei de calcul i al memoriei necesare.
91
4.3. Exerciii
A.1. Exerciii rezolvate.
Exerciiul 1. Exemplu de aplicare a metodelor minimax si alfa-beta .
Se consider un exemplu de joc de dou persoane cu informaie complet care este
artat n figura 4.1. unde jocul este descris ca un arbore cu un nod rdcin care este poziia
de pornire iar nodurile terminale sunt poziiile de sfrit. Aceste noduri terminale sunt
etichetate fiecare cu 1 sau 1, depinznd de care din juctori ctig jocul.
ntr-un joc ca acesta, unul dintre juctori va ncerca s aleag un nod etichetat cu -1 i
altul va ncerca s aleag un nod etichetat cu 1. i putem cere juctorului s ncerce s obin
rezultatul -1, minimizare, i altui juctor s maximizeze. Vom spune c aceasta este o micare
de ndeprtare de poziia de start din figura 4.1. care corespunde nodului rdcin a. Aceast
tehnic de rezolvare este cunoscut ca mini-max.
Rezolvare.
Care este, spre exemplu, valoarea nodului o n aceast poziie? Este o ncercare de
maximizare i orice mutare care se va face va termina jocul. Se poate muta n oricare dintre
poziiile p sau r i se pierde sau se poate muta n poziia q i se ctig. Numim aceasta ca
fiind sensibilitatea jocului; evident c se va alege q. Aceasta nseamn c, n realitate nodul o
este ctigtor pentru maximizare i poate fi etichetat cu 1.
Figura 4.1. Un arbore de joc.
Nodurile cu maximizatorul la mutare sunt ptrate; cele cu minimizatorul la mutare sunt
cercuri.
Dar despre nodul k ce putem spune? Indiferent ce va face minimizatorul,
maximizatorul va ctiga imediat dac minimizatorul mut n nodul n sau ntr-o singur
mutare dac mut n nodul o. Deci putem eticheta pe k cu 1. Nodul i este altfel; pentru c
minimizatorul are o opiune ctigtoare disponibil m. Deci acest nod poate fi etichetat cu -1.
92
Figura 4.2. Maximizatorul ctig.
Algoritmul pentru rentoarcerea valorilor ctre partea superioar din arbore este acum
evident. Un nod n care maximizatorul este la mutare poate fi etichetat cu valoarea maxim
care eticheteaz oricare dintre fii si. Un nod n care minimizatorul mut poate fi etichetat cu
minimumul etichetelor fiilor si. Acest lucru este fcut n figura 4.2., i se poate vedea c
poziia de start este etichetat cu 1, ceea ce ntr-un joc cu informaie complet va conduce la
ctigarea jocului de ctre maximizator.
nainte de a enuna procedura de rezolvare, s presupunem c ne ntoarcem deasupra
nodului k, determinnd c g i c au valoarea 1. Putem acum s oprim analiza i s
concluzionm c valoarea ce va fi atribuit lui a este de asemenea 1! Motivul este acela c
tim c maximizatorul poate nvinge din nodul a printr-o mutare n nodul c i nu este nici un
motiv s cutm o alt alternativ pentru aceast linie ctigtoare.
Iat algoritmul de baz pentru determinarea valorilor ce vor fi ataate nodurilor interne
ntr-un arbore de joc .
PROCEDURA 4.1 Mini-max - pentru a evalua un nod n ntr-un arbore de joc .
1) Expandeaz ntregul arbore de sub n .
2) Evalueaz nodurile terminale ca fiind ctigtoare pentru minimizator
sau pentru maximizator .
3) Selecteaz un nod neetichetat, pentru care toi fii si au ataate valori (etichete).
Dac nu exist un astfel de nod, returneaz valoarea ataat nodului n.
4) Dac nodul selectat este unul dintre cele n care minimizatorul mut, se ataeaz
acestuia o valoare care este minimul dintre valorile fiilor si. Dac este un nod
maximizator, i se ataeaz valoarea care este maximul valorilor fiilor si.
Rentoarcere la pasul 3.
Dac jocul se termin n situaia n care ambii juctori au anse egale spre exemplu a
unei remize n jocul de ah - aceasta ar corespunde unei poziii terminale etichetate cu 0 n loc
de -1 sau 1. Remizele se potrivesc foarte bine cu formalismul mini-max, deoarece fiecare
juctor ncearc, dac este posibil, o mutare ctigtoare i va cuta o posibilitate de remiz
dac nu exist ctigtori.
93
Ca o problem de terminologie, printr-o mutare ntr-un arbore de joc nelegem o
pereche de aciuni individuale, una pentru fiecare juctor. O aciune dus doar cu un singur
juctor este numit o jumtate de mutare sau un strat. Astfel, adncimea arborelui din figura
4.2. este de 3 mutri sau de 6 straturi.
Ct memorie i ct timp sunt necesare pentru un algoritm mini-max n procedura
4.1.? Deoarece ntreg arborele trebuie s fie expandat, ne putem atepta ca aceast procedur
s aib nevoie de o cantitate exponenial de spaiu, dup cum ntreaga ramificaie, are nevoie
aparent s fie stocat nainte ca valorile superioare s fie refcute. S remarcm faptul c,
spaiul necesar poate fi redus la o cantitate liniar n adncime printr-o cutare vertical sau
n adncime n loc de o cutare orizontal sau n lime. De aceea, n figura 4.2. putem
ntoarce valoarea -1 nodului superior b nainte de a extinde fiii nodului c, i aa mai departe.
Aceasta va produce urmtorul rezultat, unde se actualizeaz valorile asignate nodurilor interne
dup cum valorile sunt asignate fiilor si:
PROCEDURA 4.2. Mini-max - pentru a evalua un nod n ntr-un arbore de joc:
1) Fie L ={n}, mulimea nodurilor neexpandate din arbore.
2) Fie x primul nod din L. Dac x=n i exist o valoare ataat lui, returneaz
aceast valoare .
3) Dac lui x i se va ataata o valoare v
x
, fie p un printe al lui x i v
p
valoarea
curent ataat lui p. Dac p este un nod de minimizare atunci ia v
p
=min (v
p
,v
x
).
Dac p este un nod de maximizare, atunci ia v
p
=max (v
p
,v
x
). terge x din L i
ntoarce-te la pasul 2 .
4) Dac lui x nu i-a fost ataat nici o valoare i este un nod terminal, ataeaz-i
valoarea 1 sau -1, dup cum ctigtor este maximizatorul sau respectiv
minimizatorul. Ataeaz lui x valoarea 0 dac poziia este o remiz. Las x n L (avem
nc de-a face cu prinii si) i ntoarce-te la pasul 2 .
5) Dac x nu are ataat o valoare i nu este un nod terminal, d lui v
x
valoarea ,
dac x este un nod de maximizare i +, dac x este un nod de minimizare. (Aceasta
ca s fim siguri c prima minimizare sau maximizare de la pasul 4 are sens). Se
adaug fiii lui x n capul listei L i ntoarce-te la pasul 2.
Din pcate, procedura 4.2. are nevoie de o cantitate exponenial de timp pentru a
determina valoarea care va fi ataat nodului n. n general, nu este practic s se extind
ntregul arbore; ca exemplu, arborele jocului de ah conine aproximativ 10
160
noduri (graful
poziiilor de ah este ntructva mai mic deoarece multe poziii pot fi atinse n diferite
moduri). Cum reuesc oamenii s joace un astfel de joc? Nu-i putem analiza toate cile pn
la sfrit; putem doar s privim situaia astfel nct s putem estima care este juctorul cel mai
probabil s nving ntr-o poziie neterminal i s refacem apoi valorile spre partea
superioar a arborelui din poziiile neterminale pe care le-am gsit. Mini-max se aplic nc;
trebuie doar s-l aplicm nodurilor interne din arbore .
Exerciiul 2.
Problema cu privire la cutarea n jocul de ah se rezum la cutarea n arbori a unor
noduri cu proprieti matematice certe. Ca rezultat, multe din nodurile examinate n timpul
cutrii pentru o mutare, nu au nici o legtur cu desfurarea jocului - ele devin fr sens i
n cel mai ru caz sinucigae. Programul jocului de ah consider irelevante micrile pionului
i piesele fr valoare se sacrific cu aceeai grij cu care se iau n considerare combinaiile
nvingtoare sau avansrile poziionale prudente. Dac vrem s mbuntim performanele
acestor programe, avem nevoie de o cale de a reduce mrimea spaiului de cutare. Cea mai
94
puternic tehnic cunoscut pentru a face acest lucru este denumit cutarea pe care o
vom aplica pe un set de jocuri reprezentate prin arbori de joc corespunztori.
Rezolvare.
La cutarea din figura 5.5 observm c, odat ce realizm c maximizatorul poate
nvinge prin mutare la c, nu mai este nevoie s analizeze alte opiuni ale lui din a. i anume,
valorile asignate tuturor nodurilor de sub nodul b cu siguran nu afecteaz valoarea total
asignat pentru poziia a.
n exemplul din figura 5.6. considerm opiunea c de atacare a reginei adversarului i
presupunem ca de obicei c suntem juctorul care maximizeaz.
Dac atacm regina adversarului, putem fi fcui mat la urmtoarea mutare, n felul acesta se
sfrete jocul i rezultatul va fi -1. Evident, nu este nevoie s lum n considerare nici un alt
nod care este fiu al lui c.
95
n exemplul din figura 5.7. presupunem c analizm arborele n maniera cutrii n
adncime i determinm valoarea care va fi asignat nodului b care este 0.03. Continum prin
examinarea opiunii din c, atacnd regina adversarului cu regina proprie.
Primul rspuns considerm c este d, implicnd un schimb de regine. O examinare
viitoare a fiilor lui d, deci a lui e i f, arat c f este cea mai bun dintre cele dou mutri i
conduce la o valoare de -0.05 pentru nodul d.
Este posibil s fie c selecia? Dac mutm la c, cel mai bun rezultat pe care ne
ateptm s-l obinem este -0.05, deoarece acesta rmne cel mai bun dac adversarul replic
cu d. Dac g este mai bun pentru adversar dect este d, valoarea care va fi asignat lui c va fi
chiar mai mic dect -0.05. De ce trebuie s acceptm nite valori slabe cnd putem obine un
rezultat de 0.03 prin mutarea la nodul b ?
Ceea ce vrem s artm, de fapt, este c nodul c nu este niciodat pe linia principal,
aceasta fiind cursul jocului cnd ambii juctori joac optim. Deoarece b este mai bun pentru
maximizator dect este c i maximizatorul poate selecta ntre ele, c va fi evitat n mod
garantat. Valorile asignate lui g i nodurilor de sub el nu pot influena niciodat valoarea
final asignat nodului a iar subarborele de sub g poate fi ters.
Putem gsi aceeai soluie pe cale algebric. Dac notm cu g valoarea anterioar
asignat nodului g, atunci valoarea asignat nodului c va fi :
c = min( -0.05, g)
deoarece el este minimizatorul cel care va alege ntre alternativele d i g.
Continund, valoarea asignat nodului rdcin a este
a=max[0.03, min( -0.05, g)] = 0.03 (5.2)
unde a doua egalitate se menine deoarece min(-.05, g) s-.05 < .03. Deoarece valoarea
asignat nodului a este independent de valoarea g, observm c nodurile de sub g pot fi
terse.
n exemplul din figura 5.8. valorile asignate lui b i lui f sunt .03 i respectiv -1. Ce
putem spune despre fiii nodului g? Se poate arta c g nu este pe o linie principal?
Dac g ar fi pe o linie principal, atunci i strmoii lui trebuie s fie pe linia
principal, deci i e va fi pe o linie principal. Dar din e, minimizatorul are ansa de a se muta
n f i s obin un rezultat de -.1. Deoarece acesta este mai prost dect rezultatul de .03 pe
care maximizatorul l poate obine prin mutarea n b, rezult c g nu poate fi pe o linie
principal. Notm c este posibil ca h s fie pe o linie principal, sau ca i s fie, ns putem
spune cu siguran c g nu este. O situaie cum este aceasta, unde nodul ters este la mai mult
96
de un strat sub cel care l referim ca motivul tergerii, este cunoscut ca fiind tergerea
n adncime.
Ce se poate spune despre acest caz general? Presupunem c n este un nod oarecare
ntr-un arbore de joc la care maximizatorul ajunge la mutare (cum ar fi nodul g n figura 5.8),
i c s este frate cu n avnd o valoare de ntoarcere v
s
(s va putea fi nodul f n figura de
deasupra, astfel c v
s
= -.1). Presupunem, de asemenea, c (p
0
, p
1
, ..., p
k
) este calea de la nodul
rdcin n jos spre n, cu p
0
- nodul rdcin i p
k
= n.
Vom mai face remarca c nodurile cu indicii impari (p
1
, p
3
, etc.) sunt noduri
minimizante; dac oricare din aceste noduri are un frate cu o valoare de ntoarcere mai mare
dect v
s
, atunci nodul n poate fi ters. (n figur p
1
= c are un frate b cu valoarea .03 > v
s
). Iat
o alt cale de exprimare a acestei situaii i anume procedura de cutare .
Procedura 4.3. Cutarea . Pentru evaluarea unui nod n ntr-un arbore joc:
1. Pune L = {n}.
2. Fie x primul nod din L. Dac x = n i exist o valoare asignat lui, returneaz
aceast valoare.
3. Dac lui x i-a fost asignat o valoare v
x
, fie p printele lui x; dac lui x nu i-a fost
asignat o valoare, treci la pasul 5. Prima dat determinm dac p i fiii si pot
sau nu s fie teri din arbore: dac p este un nod minimizat, atunci fie
maximul tuturor valorilor curente asignate frailor lui p i nodurilor
minimizante care sunt strmoii lui p (dac nu exist astfel de valori, lum
= ). Dac v
x
s tergem pe p i pe toi descendenii si din L. Dac p este
un nod maximizant, l tratm n mod similar.
4. Dac p nu poate fi ters, fie v
p
valoarea curent asignat lui p. Dac p este un
nod minimizant, lum v
p
= min(v
p
, v
x
). Dac p este un nod maximizant, lum v
p
= max(v
p
, v
x
). tergem pe x din L i ne rentoarcem la pasul 2.
5. Dac lui x nu i-a fost asignat o valoare i este fie un nod terminal fie noi
decidem s nu lrgim arborele mai departe, i calculm valoarea utiliznd
funcia de evaluare. Rentoarcere la pasul 2.
97
6. n caz contrar, lum v
x
ca fiind - dac x este un nod maximizant i + dac
este un nod minimizant. Adugm toi copiii lui x n fruntea listei L i ne
ntoarcem la pasul 2.
Valoarea care corespunde lui dar care este calculat innd cont de strmoii
maximizani ai lui p este cunoscut sub numele de : cele dou valori i conduc
separat la tergere. Din aceast cauz, aceast metod de reducere a mrimii arborelui de
cutare este cunoscut sub numele de tergerea .
Dei am vzut c tergerea poate reduce mrimea spaiului de cutare asociat
unui arbore de joc, nu putem realiza ct de mult spaiu de cutare este redus.
Este clar, de exemplu, c n cel mai ru caz este posibil ca tergerea s nu poat
reduce dimensiunea spaiului de cutare la maximum. Dac suntem persevereni n aranjarea
fiilor fiecrui nod astfel nct opiunile proaste s fie evaluate primele, atunci nodurile
examinate mai trziu vor fi ntotdeauna n linia principal i prin urmare nu vor fi niciodat
terse.
A.2. Teste de autocontrol.
Testul 1
1. Dai un exemplu de problem de cutare unde urcarea dealului i cea mai bun
prim cutare se comport diferit.
2. Presupunem c
'
1
h i
'
2
h dou euristici admisibile ntr-o problem de cutare.
Artai c ) , max(
'
2
'
1
h h este de asemenea admisibil. Dai un exemplu de problem de cutare
i dou funcii euristice admisibile nici una din ele ntotdeauna s nu fie mai mic dect
cealalt.
3. Cum se comport algoritmul A* dac h h =
'
? Demonstrai afirmaiile voastre.
4. Acest exerciiu examineaz alegerea ntre dou funcii euristice admisibile din
care una este mereu mai mic dect alta. Presupunem c
'
1
h i
'
2
h sunt dou funcii euristice
admisibile pentru un domeniu oarecare i deci
' '
1 2
( ) ( ) h n h n s pentru fiecare nod.
(a) Fie S ordinea de cutare pentru care cutarea A* este legal folosind euristica
'
1
h i presupunem c aceasta exploreaz spaiul de cutare folosind aceast ordine care
implic expandarea unei mulimi de N noduri. Artai c exist cteva ordine de cutare
pentru care A* este legal folosind euristica
'
2
h care examineaz o submulime al lui N n
rezolvarea problemei n cauz. Aceasta arat c este ntotdeauna posibil ca
'
2
h s conduc
ctre un spaiu mai mic de cutare dect o face
'
1
h .
(b) Gsii o problem de cutare i dou euristici admisibile
'
1
h i
'
2
h cu
' '
1 2
h h s
astfel nct dei este posibil ca
'
2
h s examineze mai puine noduri dect
'
1
h , este de departe
mai ca sigur ca
'
1
h s conduc la cutarea cea mai eficient.
5. n ce ordine examineaz IDA* spaiul de cutare asociat celor 2 labirinte ce apare
n figura 4.10.
98
Figura 4.10.
B. TEMA DE CONTROL
1. Aplicai algoritmul de cutare A* n graful prezentat mai jos:
Indicaie. Valoarea lui h(n) este dat n paranteze asociate nodului. Schimbrile n open_list
obinute prin utilizarea algoritmului A* sunt marcate de indicarea lui f(n) n parantezele
asociate nodurilor. Se va obine secvena de noduri n open_list.
2. S se aplice metoda de cutare n adncime i metoda de cutare n lime
urmtorului graf tiind c nodul obiectiv este G i s se prcizeze drumul parcurs n fiecare caz.
Cutarea pornete de la nodul S i continu pn cnd nodul obiectiv este atins.
99
3. S se rezolve prin metode de cutare cu ramificare i limitare problema comis-
voiajorului.
Un comis voiajor ce lucreaz ntr-un ora X trebuie s ajung odat pe lun ntr-o serie
de orae n care are de dus obiecte sau de luat obiecte. Firma la care lucreaz suport costul
transportului de la oraul X la fiecare din oraele de destinaie. Problema comis voiajorului
este de a stabili acel traseu pentru care pornind din oraul X s ating toate oraele din traseu
cu destinaia final oraul X, astfel nct costul transportului s fie minim. n afar de
informaiile alternative ce reprezint costul transportului ntre oraul X i oraele nvecinate
sunt necesare informaii despre costul deplasrii ntre oraele din traseu.
Considerm harta asociat circuitului, cu costurile corespunztoare, ca fiind
urmtoarea:
Indicaie. Matricea costurilor care are ca elemente costurile corespunztoare dintre
dou localiti i pentru drumul dintre oraul A i A (acesta nefiind un drum valid) ca i n
cazul n care ntre dou orae nu exist legtur direct este urmtoarea:
A
B
C
F
D
D
X
4 10
6
12
11
25
5
7
9 17
15 8
100
BIBLIOGRAFIE RECOMANDAT LA MODULUL 2:
1. Podaru Vasile, Inteligen artificial i siteme expert, Editura Academiei Tehnice Militare,
1997
2. Podaru Vasile, Barnoschi Adriana, Sisteme expert, Editura Academiei Tehnice Militare,
2000, 2004.
3. Ioan Georgescu, Elemente de inteligen artificial, Editura Academiei RSR, 1985.
4. Podaru Vasile, Inteligen artificial, curs n format electronic, CD-nvmnt la distan,
Universitatea Titu Maiorescu, 2010.
5. D. Crstoiu, Sisteme expert, editura ALL, 1994.
6. SICSTUS PROLOG USERS MANUAL. Intelligent Systems Laboratory, Sweedish Institute
of Computer Science:
http://www.sics.se/isl/sicstuswww/site/documentation.html
7. M. Malia, Bazele inteligenei artificiale, editura Academiei Romne, 1988.
Coordonator disciplin:
Prof. univ. dr. Vasile PODARU, email: podaruv@gmail.com
Tutori: Prof. univ. dr. Vasile PODARU.
K=
X A B C D E F
X 7 5 25 11 12 6
A 7 8 4
B 5 8 9
C 25 9 17
D 11 17 15
E 12 15 10
F 6 4 10
UNIVERSITATEA TITU MAIORESCU
Facultatea de INFORMATIC
Prof. univ. dr.
VASILE PODARU
Curs pentru nv mntul la distan
BUCURETI 2011
102
UNIVERSITATEA Titu MAIORESCU Bucureti
Facultatea de Informatic
nvmnt la Distan
INTELIGEN ARTIFICIAL
Inteligena artificial este una din disciplinele de pregtire fundamental care, pentru
profilul INFORMATIC, este esenial pentru pregtirea studenilor i pentru obinerea
creditelor transferabile prin procedurile de evaluare. Modul de prezentare a acestui material
are n vedere particularitile nvmntului la distan, la care studiul individual este
determinant. Pentru orice nelmuriri fa de acest material v rugm s contactai tutorele de
disciplin care are datoria s v ajute oferindu-v toate explicaiile necesare.
Disciplina de Inteligena artificial i propune urmtoarele obiective specifice:
nsuirea noiunilor fundamentale din domeniile Inteligenei artificiale.
Formarea deprinderilor de modelare matematic i de transpunere n programare a
unor probleme de natur tehnic, social sau economic, cu utilizarea cunotinelor
nsuite.
Formarea i dezvoltarea aptitudinilor i deprinderilor de analiz logic, formulare
corect i argumentare fundamentat, n rezolvarea problemelor tehnico-economice i
de specialitatecu cu utilizarea cunotinelor nsuite prin intermediul metodelor i
modelelor specifice inteligenei artificiale;
Insusirea principiilor generale ale programarii logice si insusirea limbajului Prolog;
O comparaie critic a metodelor de rezolvare evideniind, eventual, calea optim de
soluionare.
Accentul se va pune pe problemele de cautare si reprezentare a cunostintelor si
respectiv pe programarea logica, limbajul de programare utilizat la laborator fiind
limbajul Prolog. Cursul trebuie sa trateze aspecte ale rezolvarii problemelor prin
intermediul cautarii, descriind cele mai importante tehnici de cautare informata si
neinformata. Se vor da exmple de aplicatii ale cautarii, cum ar fi jocurile, tratate ca
probleme de cautare. Se vor prezenta principalele tipuri de cunostinte si principalele
metode de reprezentare a cunostintelor. Se va face legatura dintre reprezentarea
cunostintelor si sistemele expert. Se va da un exemplu de sistem expert cu
implementare in Prolog. Vor mai fi tratate, ca modalitati de reprezentare a
cunostintelor, retelele semantice si retelele Bayesiene (cu introducerea rationamentului
statistic).
V precizm de asemenea c, din punct de vedere al verificrilor i al notrii (elemente
ce vor fi comunicate i prin fia disciplinei, calendarul disciplinei i programarea orar), cu
adevrat important este capacitatea pe care trebuie s o dobndii i s o probai de a rezolva
toat tipologia de probleme aplicative aferente materialului teoretic prezentat n continuare.
De aceea v recomandm s parcurgei cu atenie toate aplicaiile rezolvate, s rezolvai
aplicaiile propuse prin testele de autoevaluare i temele de control (pentru fiecare modul n
parte trebuie s predai tutorelui de disciplin rezolvarea acestor teme, pentru verificare i
evaluare); fii convini c examenul final apeleaz la tipurile de aplicaii prezente n seciunile
menionate anterior.
Timpul mediu necesar nsuirii noiunilor teoretice, formrii deprinderilor de calcul i
utilizrii metodelor de rezolvare a problemelor specifice acestui modul este estimat la
103
aproximativ 6-8 ore pentru ntregul modul , ntr-un ritm de 3-4 ore pentru fiecare din cele
dou uniti ale modulului.
ntru-ct modulul este privit ca un tot unitar exerciiile aferente acestui modul se
gsesc la sfritul acestui modul. La terminarea parcurgerii acestui modul studenii trebuie s
prezinte tutorelui de disciplin rezolvarea temei de control propus spre rezolvare la sfritul
modulului.
Cursul se finalizeaz prin examen care const din:
1) o lucrare scris sub forma de text grila constnd din 9-18 subiecte (ponderea lucrrii
scrise este de 70% din nota final);
2) rezolvarea corect a temelor de control din cele 4 module (minimum nota 5 pentru
fiecare tem, ponderea mediei celor 5 note n nota final este de 20%);
3) participarea activ la activitile tutoriale (apreciat printr-o not a crei pondere in
nota final este de 10%).
Coordonator disciplin: Prof. univ. dr. Vasile PODARU, email: podaruv@gmail.com
Tutori: Prof. univ. dr. Vasile PODARU,
104
MODULUL 3
METODE DE NV ARE.
RE ELE NEURONALE.
ndrumri metodice.
Inteligena artificial a aprut ca disciplin i a fost fundamentat pe investigaiile
relative la reprezentarea cunoaterii i cutarea dar nu numai.
nvarea constitiue unul din domeniile importante din inteligena artificial. Statutul
nvrii n AI este asemntor celui al planificrii, doar c problemele sunt mai grele i
soluiile recunoscute sunt mai rare. ntr-o ncercare de a face acest subdomeniu al AI oarecum
inteligibil, vom separa nvarea n nvare prin descoperire i nvare prin generalizare.
Prin nvare prin descoperire nelegem acel tip de nvare, prin care se ajunge la o
concluzie nou. Prin nvare prin generalizare nelegem extrapolarea de la informaia
existent la un model mai general.
n partea a doua a acestui modul se prezint problematica reeelor neuronale. Una din
problemele cele mai dificile, pe care trebuie sa le rezolve inteligenta artificiala, este
generata de necesitatea dominrii complexitii informaionale a domeniilor abordate.
Aceast nou abordare a sistemelor inteligente presupune construirea de calculatoare
cu o arhitectur i capacitate de procesare care s imite anumite abiliti de procesare ale
creierului. Rezultatul l constituie reprezentrile de cunotine bazate pe o important
procesare paralel, pe acumularea rapid a unor mari cantiti de informaii i pe capacitatea
de a recunoate modele pe baza experienei. Tehnologia care ncearc s obin aceste
rezultate este numit procesare neuronal sau reele neuronale.
Reelele neuronale sunt tehnologii de prelucrare a informaiei bazate pe studiile
asupra creierului uman i a sistemului nervos. Cercetrile n domeniu s-au intensificat n
ultimii ani, cunoscnd n prezent o mare popularitate, datorit progreselor nregistrate
att n tehnologia calculatoarelor, ct i n domeniul neurologiei, n direcia unei mai bune
nelegeri a mecanismelor creierului uman.
ntru-ct modulul este privit ca un tot unitar exerciiile aferente acestui modul se
gsesc la sfritul acestui modul. La terminarea parcurgerii acestui modul studenii trebuie s
prezinte tutorelui de disciplin rezolvarea temei de control propus spre rezolvare la sfritul
modulului.
Cursul se finalizeaz prin examen care const din:
1) o lucrare scris sub forma de text grila constnd din 9-18 subiecte (ponderea lucrrii
scrise este de 70% din nota final);
2) rezolvarea corect a temelor de control din cele 5 module (minimum nota 5 pentru
fiecare tem, ponderea mediei celor 5 note n nota final este de 20%);
3) participarea activ la activitile tutoriale (apreciat printr-o not a crei pondere in
nota final este de 10%).
105
Unitatea de nv are nr.5
nvarea.
Cuprins:
5.0. Introducere ................................................................................................. pag. 105
5.1. nvarea prin descoperire .......................................................................... pag. 105
5.2. nvarea prin generalizare ......................................................................... pag. 107
5.2.1. nvarea inductiv ................................................................................. pag. 107
5.2.1.1. nvarea probabil aproximativ corect ................................................ pag. 108
5.2.1.2. Algoritmul lui Mitchell ........................................................................ pag. 111
5.2.1.3. nvarea unor inegaliti ...................................................................... pag. 113
5.2.1.4. Algoritmul lui Quilan ........................................................................... pag. 115
5.0. Introducere.
Statutul nvrii n AI este asemntor celui al planificrii, doar c problemele sunt
mai grele i soluiile recunoscute sunt mai rare. ntr-o ncercare de a face acest subdomeniu al
AI oarecum inteligibil, vom separa nvarea n: nvare prin descoperire i nvare prin
generalizare. Prin nvare prin descoperire nelegem acel tip de nvare, prin care se ajunge
la o concluzie nou. Prin nvare prin generalizare nelegem extrapolarea de la informaia
existent la un model mai general. De exemplu, concluzia c o anume ciuperc mare i
galben este otrvitoare, doarece toate ciupercile mari i galbene sunt otrvitoare.
nvarea prin generalizare poate fi mprit n dou subtipuri. Vom numi nvarea
prin generalizare care este logic valid, nvare prin generalizare deductiv. De exemplu, s
presupunem c vrem s ajungem la casa unui prieten; n-am mai fost acolo niciodat i un
traseu care arat bine pe hart nu poate fi urmat doarece una din strzi este cu sens unic. Data
viitoare cnd vom vizita prietenul, n-ar trebui s mai urmm acel traseu; putem deduce c
strada va fi tot cu sens unic i vom avea aceleai probleme ca data trecut.
Cele mai multe instane ale nvrii prin generalizare nu sunt ns deductive. nvarea
prin generalizare non-deductiv este numit inductiv. n acest capitol, vom examina ambele
abordri.
Deductiv sau nu, toat nvarea este o form de inferen - scopul este s ncepem cu
o informaie din domeniu, iar apoi s o extindem ntr-un anumit fel. Cea mai mare parte a
nvrii este non-deductiv i este oricum, inferen.
5.1 nvarea prin descoperire
A existat doar un singur program AI ncununat de succes, care a ncercat s nvee
lucruri noi prin descoperirea lor. Este o lucrare veche, dar important; programul a fost scris
de Doug Lenat pentru teza sa de doctorat la Stanford i s-a numit AM.
Datele de intrare pentru AM erau de dou tipuri: mai nti, o descriere a unor concepte
ale teoriei mulimilor, n forma unor funcii implementate n LISP. Informaia iniial a lui
AM includea descrieri ale mulimii reuniune i intersecie, mulimii vide, etc. Al doilea tip de
date de intrare pentru AM erau informaii despre "cum s faci matematic", pe care Lenat le-a
luat din cartea lui George Polya intitulatt How to solve it (cum s rezolvi) i din alte surse.
Un exemplu de informaie furnizat lui AM este c dac s-a decis c f(x,y) este o funcie de
dou argumente, iar argumentele ar putea fi egale, atunci funcia f(x,y) poate fi o funcie de un
singur argument. Astfel, dac programul reuea s "inventeze" operaia de adunare i dac
106
decidea c este interesant, funcia x+x ar putea fi probabil o funcie de un singur argument.
Se spera prin acest tip de reguli ca AM s inventeze nmulirea o dat ce ar fi descoperit
adunarea.
Scopul lui AM era s dezvolte concepte matematice interesante. Exact asta a i fcut.
De fapt, dndu-i-se doar informaia de mai sus, a "descoperit":
ntregii. AM a nvat destul de devreme c e posibil s numeri elementele oricrei
mulimi i a decis c imaginea acestei funcii de numrare- ntregii este ea nsi o mulime
interesant.
Adunarea. Mulimile disjuncte erau interesante i de asemenea, reuniunea
mulimilor era interesant. Imaginea operaiei "ia reuniunea mulimilor disjuncte" sub funcia
de numrare descris anterior este adunarea.
nmulirea. Aceasta a fost descoperit folosind o regul ca cea prezentat mai sus.
Lenat a intervenit i a dat mainii descrieri mai clare ale adunrii i nmulirii, care
fuseser mai nainte descrise n termeni de operaii laborioase de mulimi teoretice. Efectul
acestui lucru a fost doar de a face deliberrile ulterioare ale mainii mai eficiente; nu s-a
produs nici o schimbare de fond.
Numerele prime. Descoperind nmulirea, maina a descoperit rapid c numerele
pot fi factorizate, fiind cel mai mult interesat de numerele care aveau un singur factor. Dac
exist o funcie f i o valoare y n domeniul lui f, mulimea lui x astfel nct f(x)=y ar putea fi
interesant. Considerm f funcia "cardinalul mulimii divizorilor" i y numrul interesant 1.
Desigur, singurul numr cu un singur factor este chiar 1. Dar ntregul 2 este aproape la
fel de interesant ca 1, iar numerele prime sunt chiar cele care au exact doi factori.
Ipoteza lui Goldbach. Numrul par 28 poate fi scris ca sum de dou numere
prime 11 i 17. n 1742 Goldbach a afirmat c orice numr par poate fi scris ca suma a dou
numere prime, dar ipoteza este nc nedemonstrat. AM a fcut o presupunere similar.
1
n sfrit, AM a inspirat o "nou" problem de matematic. Pe lng studiul
numerelor prime - numere cu ct mai puini factori posibil- a examinat i numerele cu ct mai
muli factori posibil, spunnd c un ntreg k este "maxim divizibil" dac k are mai muli
factori dect orice numr mai mic dect k. Numrul 12 este un exemplu: are 6 divizori (1, 2,
3, 4, 6, 12) i nu exist nici un numr mai mic care s aib tot atia. Mulimea numerelor
maxim divizibile nu fusese anterior luat n considerare de Lenat sau de ali membri ai
comunitii AI, dei ele fuseser studiate de matematicianul indian Ramanujan.
AM este o lucrare deosebit de impresionant, fiind unul din cele mai importante
succese timpurii ale AI. AM este de asemenea un exemplu aproape perfect de AI
experimental - lucrarea lui Lenat a implicat proiectarea unui program care a manifestat
comportri interesante, surprinzndu-i chiar autorul n timpul rulrii!
Ce lecie trebuie s nvm din AM? Care a fost viitorul programului? A purces la
redescoperirea ntregii matematici moderne? Au fost aceste idei aplicate cu succes n alte
domenii? i n primul rnd de ce a avut AM aa un succes?
Motivul pentru care AM a avut aa un succes este strnsa legatur dintre limbajul LISP
i matematic. Parial, AM a generat funcii interesante prin modificarea codului unor funcii
pe care le considera deja interesante.
Dar conexiunea dintre LISP i matematic este aa de strns nct este destul de
probabil ca modificri arbitrare ale unor fragmente foarte mici de LISP (cum sunt cele cu care
1
AM nu a demonstrat o astfel de ipotez. AM nu a demonstrat niciodat nimic - doar a remarcat c
multe numere pare ar putea fi scrise ca sum a dou numere prime i de aici, a speculat c toate
numerele pare ar putea fi la fel. Lenat a fost interesat de descoperire i nu de demonstrarea automat a
teoriei.
107
a lucrat AM) s produc rezultate interesante. ntr-un anume sens, AM a avut succes doarece a
exploatat nedumeririle i relevaiile pe care le-a avut John McCarthy cnd a dezvoltat limbajul
LISP.
Aceast observaie are dou consecine evidente. Prima este c abilitatea lui AM de a
dezvolta noi concepte matematice va scdea rapid pe msur ce conceptele cu care lucreaz
devin tot mai complexe - este mult mai puin probabil s putem modifica aleator o poriune
lung de cod LISP dect una scurt.
Cealalt consecin spune c este puin probabil ca tehnici precum cele folosite de AM
s funcioneze n afara domeniului matematicii, deoarece este puin probabil ca alte domenii
s afieze o legatur aa strns ntre pri de cod (program) i idei interesante. Acest lucru a
fost de asemenea observat n practic.
Dup elaborarea lui AM, Lenat a dezvoltat EURISKO, care se voia a fi o versiune
generalizat a lui AM, care s descopere idei interesante n domenii arbitrare. Dar, n ciuda
aplicaiilor lui EURISKO ntr-o varietate de probleme, succesul su a fost destul de limitat.
Ca un exemplu, EURISKO a fost utilizat ntr-o ncercare de a nva cum s
construiasc circuite integrate tri-dimensionale. Programul a reuit s genereze un circuit
integrat foarte mic pe suprafaa unei benzi Mbius, dar n afar de aceasta s-a comportat slab.
EURISKO a fost de asemenea utilizat pentru a juca un joc de conducere a unei flote, n
care fiecare juctor primete un buget fix i trebuie s-i construiasc o flot furniznd
caracteristicile de mrime, armament, etc. pentru nave. Apoi flotele se lupt i cea care o
distruge pe cealalt, ctig. EURISKO a nvat s joace acest joc jucnd mpotriva sa i apoi
a intrat n campionatul naional. A ctigat! Dar a ctigat construind nave "nar" - nave
foarte mici i rapide, fr nici un fel de armament. Cnd EURISKO ntlnea un adversar
superior, toate navele erau distruse, exceptnnd "narii", care continuau s "bzie" prin
zon, incapabile s produc vreo distrugere flotei adverse, dar salvnd EURISKO de la
nfrngere, doarece regulile spuneau c flota advers trebuie distrus n ntregime. Aceast
scpare a regulilor a fost ceea ce a permis lui EURISKO s fie att de eficient.
Exist ceva comun ntre acest exemplu i performana original a lui AM: n ambele
cazuri, programul a trebuit s exploateze o scpare pentru a avea succes. n cazul lui
EURISKO, scparea era n regulile jocului cu flote. n cazul lui AM, scparea era n strnsa
legtur dintre LISP i matematic. Rezult c nvarea prin descoperire, care evit aceste
scpri se va sprijini pe o nelegere mult mai dificil a domeniilor investigate.
2
5.2 nvarea prin generalizare.
Deoarece nvarea prin descoperire pare s se bazeze pe o astfel de cunoatere
dificil, atenia comunitii AI s-a concentrat mai ales pe nvarea prin generalizare. Vom
discuta mai nti nvarea inductiv, n care un sistem ncearc s induc o regul general
dintr-un set de instane observate.
5.2.1. nvarea inductiv
Toate problemele de acest tip au ceva comun: intrarea programului este un set de
instane de instruire (care pot fi selectate fie aleator, fie dintr-o ncercare de a face nvarea
ct mai eficace posibil) i ieirea se ateapt s fie o metod de clasificare a instanelor
ulterioare. Pentru acest motiv nvarea inductiv se mai numete i nvare prin exemple. Ca
2
Alternativ, se poate argumenta c toat nvarea prin descoperire-inclusiv cea uman-
funcioneaz prin exploatarea vreunei bree.
108
exemplu de nvare inductiv vom alege selecia ciupercilor comestibile de cele otrvitoare.
Vom presupune c scopul nvrii inductive este s rezolve o problem de clasificare binar:
comestibil versus otrvitor (adic proiectarea unui clasificator binar).
5.2.1.1. nvarea probabil aproximativ corect.
nvarea inductiv nu seaman niciodat cu cea deductiv. Faptul c spre exemplu din
10.000 de ciuperci galbene ntlnite au fost toate otrvitoare, nu dovedete c urmtoarea
ciuperc galben va fi la fel; ne d doar o bun dovad inductiv (n opoziie cu deductiv) c
aa va fi. Cu aceast observaie, ne punem ntrbarea care este urmtorul cadru de lucru n care
vom msura performana unui sistem care nva inductiv?
Un rspuns la aceast ntrebare a fost dezvoltat de Valiant n 1984; el a argumentat c
un sistem de nvare trebuie s fie probabil aproximativ corect - pe scurt, PAC.
S ncepem prin descrierea a ceea ce nseamn pentru un sistem nvarea unei reguli
care este aproximativ corect. Deoarece problema de clasificare pe care ncercm s-o
rezolvm este binar, rspunsul nu poate fi el nsui aproximativ: este fie bun, fie greit. Spre
exemplu, ciuperca este sau nu clasificat corect? Fa de aceasta, vom spune c o regul ca
"toate ciupercile galbene sunt otrvitoare" este aproximativ corect ori de cte ori rezolv cele
mai multe din probleme corect. O regul nvat este aproximativ corect, dac este complet
corect cea mai mare parte a timpului.
Notm cu p(x) conceptul binar pe care ncercm s-l nvm spre exemplu,
comestibil sau necomestibil. Notm cu p' (x) aproximarea lui p, pe care o nva de fapt
sistemul. Vom spune c p' este o eroare pentru x dac p i p' sunt diferite i n consecin
eroare(x) este definit astfel:
)] ( ' ) ( [ )] ( ' ) ( [ x p x p x p x p . v .
Utiliznd semnul de echivalen pentru a nota echivalena a dou expresii logice,
vom scrie mai compact
[ ( ) ' ( )] p x p x
Probabilitatea ca regula nvat s fie greit este aceeai cu probabilitatea ca
eroare(x) s fie adevrat i definim:
O regul nvat p' (x) o vom numi aproximativ corect cu precizia dac i numai
dac
pr(eroare) s (5.1)
unde pr este funcia de probabilitate.
Practic ne trebuie o cale de evaluare a probabilitii (5.1). Pentru aceasta, vom
presupune c obiectul x pe care l clasificm este luat dintr-un univers U (de exemplu
mulimea tuturor ciupercilor) i fiecare element mU este ales cu o anumit probabilitate
pr(m). Presupunnd c

e
=
U m
m pr 1 ) ( (5.2)
109
se poate rescrie

=
)} ( | {
) ( ) (
x eroare x
x pr eroare pr (5.3)
unde am adunat probabilitile tuturor elementelor x pentru care p'(x) este n eroare.
Dar probabil aproximativ corect? Aceasta nseamn c probabil sistemul va nva
reguli care sunt corecte aproximativ!
Pentru a rezolva aceast problem, se presupune c exemplele de instruire folosite
pentru dezvoltarea regulilor sunt alese cu aceleai probabiliti ca cele care apar deja n (5.2).
Se obin exemple de instruire folosind probabilitile pr(m) i apoi se aplic o procedur de
nvare L pentru a ajunge la un concept nvat p'.
Dm acum urmtoarea definiie:
O procedur de nvare L este probabil aproximativ corect cu ncrederea dac,
dndu-se o secven de exemple de instruire aleator alese, probabilitatea ca L s nvee o
regul care nu este aproximativ corect este cel mult . Mai formal, cerem ca:
pr [pr(eroare)>] <
S-a introdus n nvarea PAC, notiunea de bias
3
. Majoritatea algoritmilor i
restricioneaz atenia asupra nvrii conceptelor ntr-o form sintactic particular, n
special a unui concept conjunctiv spre exemplu, poate c ciupercile mari i galbene sunt
otrvitoare i toate celelalte nu. Alte sisteme fac alte presupuneri. Se presupune c att
conceptul int p ct i aproximarea nvat p satisfac aceste restricii sintactice. Motivul
pentru care aceste presupuneri sunt importante este c ele restricioneaz dimensiunea
spaiului ipotezei. Aceast form particular a ideii de bias este cunoscut ca bias restrictiv
asupra spaiului ipotezelor. Considerm urmtorul algoritm de nvare: fiind dat un set de m
instane de instruire, trebuie ntors orice predicat p care respect att restricia spaiului
ipotezelor, ct i concordana cu valorile raportate ale exemplelor de instruire. Poate o astfel
de procedur s fie PAC?
Dac universul U este finit i m este infinit de mare, rspunsul este n mod clar, da.
Pentru un m mare, probabilitatea este ca toate elementele din universul de nvare U s apar
ca exemple de instruire, adic orice predicat p care se potrivete cu datele s fie echivalent cu
conceptul int p. Deci ntrebarea este: Ct de mare trebuie s fie m pentru ca aceast abordare
s fie PAC?
Pentru a rspunde la aceasta, s presupunem c avem m exemple de instruire. Care este
probabilitatea ca s putem gsi un concept p care este n conformitate cu aceste exemple, dar
nu aproximativ corect .
Pentru a rspunde la aceasta, fie q un concept selectat aleator cu condiia ca s nu fie
aproximativ corect. Probabilitatea ca q s se potriveasc cu datele de instruire nu este mai
mare ca
m
) 1 ( c , deoarece probabilitatea ca q s nimereasc o singur instan de invare
este cel mult 1-c. Dac era mai mare, q ar fi fost aproximativ corect.
3
Noiune preluat din electronic care n cazul algoritmilor de nvare reprezint un set de ipoteze
care folosesc pentru a prezice rezultate avnd n vedere intrri cu care nu s-a confruntat (Mitchell,
1980).
110
Dat fiind bias-ul restrictiv asupra spaiului ipotezelor n care lucrm, presupunem c
exista un total de H concepte posibile. Deoarece fiecare are probabilitatea de cel mult
m
) 1 ( c att ca s se potriveasc cu data, ct i ca s nu fie aproximativ corect, rezult c
probabilitatea ca s existe oricare astfel de q este marginit de:
m
H ) 1 ( c
De fapt, dac exist un astfel de q, el trebuie s fie unul din conceptele H i
probabilitatea unei disjuncii este mrginit de suma probabilitilor fiecrei disjuncii.
Rezult c:
Orice propoziie consistent cu date de instruire este PAC atunci cnd:
o s c
m
H ) 1 ( (5.4)
Altfel rescris:
( )
m
H
>
|
\

|
.
|

ln
ln

1
(5.5)
unde sensul inegalitii s-a schimbat pentru c ln(1-) este negativ. Afirmm c:
0 ) 1 ln( < c + c (5.6)
pentru 1 0 < c < . Pentru a vedea asta, se observa ca (5.6) devine 0 daca c=0, si derivata lui
(5.6) fa de c, este

+ =

1
1
1
1

care este clar negativ pentru 1 0 < c < . Folosind (5.6), rezult c c < c ) 1 ln( i (5.5)
devine:

|
.
|

\
|
=
|
.
|

\
|
>
H
H
m
ln ln
Teorem: Orice propoziie consistent cu date de instruire este PAC dac i numai dac:
m
H
>
|
\

|
.
|
ln

(5.7)
111
Ca un exemplu, s presupunem c folosim bias-ul ca int i conceptele nvate sunt
conjunctii ntr-un spaiu cu n predicate. Deoarece exist
n
3 astfel de conjunctii, (5.7) ne
spune c orice concept acceptabil va fi PAC dac
o c
>
3
ln
n
m
Exist dou caracteristici ale teoremei, care sunt importante. Prima este c nu se mai
menioneaz distribuia probabilitii, care apare n (5.3); (5.7) merge pentru orice distribuie,
adic aceeai distribuie este folosit att pentru a defini funcia de eroare, ct i pentru a
selecta exemplele de instruire folosite de procedura de nvat.
A doua caracteristic este legat de numrul de instane de instruire, care sunt necesare
n teorem i care crete logaritmic cu numrul de concepte posibile.
Figura 1. Numrul necesar de exemple n nvarea PAC.
n figura 1 ne ntoarcem la exemplul conjunctiv, artnd numrul elementelor posibile
din domeniu (
n
2 , deoarece fiecare predicat poate fi sau adevarat, sau fals), numrul de
concepte posibile (
n
3 , ca cele discutate mai nainte) i numrul de exemple necesare unui
sistem de nvare PAC pentru diferite valori ale i .
5.2.1.2 Algoritmul lui Mitchell.
Dar cum am putea gsi precis un concept care se potrivete cu datele din setul de
instruire ? Este clar c examinarea fiecrui concept acceptabil din punct de vedere sintactic
pentru a vedea dac se potrivete sau nu, este n general, complet impracticabil.
112
n cazul n care se presupune c un concept este o conjuncie de literale pozitive, cel
mai bine cunoscut algoritm pentru producerea unui concept acceptabil este algoritmul lui
Mitchell
4
.
Ideea algoritmului este cel mai bine descris prin urmtorul exemplu. S presupunem
c lucrm cu un pachet de cri i ncercm s identificm un concept conjunctiv necunoscut.
Predicatele n limbaj sunt fapte ca "rou", "negru", "cupa", "trefla", "carte par", "carte
impar", .a.m.d. Optul de caro este o carte par, roie i de caro. Setul de instruire const ntr-
o colecie de cri: pentru fiecare carte, ni se spune dac este sau nu n setul int.
Figura 2. Ordonarea particularitilor n conceptele con juctive.
Cheia algoritmului este observaia c, setul de concepte conjunctive din acest domeniu
(sau din oricare altul) poate fi parial ordonat dup specificacitate. Astfel conceptul negru
este mai puin specific dect conceptul negru impar sau trefla. Cele dou concepte negru
impar si trefla sunt incomparabile unul cu altul, din moment ce nici unul nu este mai
specific dect cellalt. Negru este mai specific dect orice carte; orice 7 este mai
specific dect orice carte impar. O diagram parial a setului tuturor conceptelor din
domeniul nostru este artat n figura 2, cu conceptele mai puin specifice desenate n partea
superioar a imaginii.
Algoritmul trateaz incremental datele. Pe msur ce lucreaz, el reine o list cu cele
mai specifice concepte i una cu cele mai puin specifice, care sunt consistente cu toate
instanele de instruire (exemplele), care au fost ntlnite pn acum. n cazul n care p
1
i p
2
sunt dou concepte conjunctive consistente cu exemplele, atunci conjunctia p
1
. p
2
este mai
specific, dar i consistent n acelai timp cu exemplele. Aceasta nseamn c cel mai
specific concept consistent cu exemplele este ntotdeauna unic.
Spre exemplu, presupunem c exemplele (datele) de instruire arat astfel:
4
Prin conjuncia unor literale pozitive, nelegem conceptul obinut prin conjuncia unor
predicate fr negaiile lor.
113
Tabela 1
Carte Este in setul int
A da
7 da
8 nu
9 da
5 nu
K nu
6 nu
7 da
Iniial, cel mai specific concept consistent cu datele este mulimea vid; cel mai puin
specific concept este mulimea tuturor crilor. Dar cnd vedem c A este n setul int, cel
mai specific concept este A singur (cuvntul as face parte din limbaj); cel mai puin
specific concept rmne nc mulimea tuturor crilor. Cnd nvm c 7 este n setul int,
cel mai specific concept este probabil cri negre impare; cel mai puin specific concept este
neschimbat.
Acum vom nva c 8v nu este n setul int. Exist dou concepte consistente cel
mai puin specifice cu aceasta - toate crile impare i toate crile negre. Pe msur ce
continum, se observ c exemplele pozitive determin ca cele mai specifice concepte s
devin treptat mai puin specifice (spre exemplu, crile negre i impare n locul asului de
pic). Exemplele negative determin ca cele mai puin specifice concepte s devin mai
specifice. Dac cele dou mulimi converg, rezultatul este n mod garantat conceptul int.
Trebuie notat c algoritmul este util i nainte ca cele dou seturi s se potriveasc
exact. Chiar dac conceptul int nu a fost identificat n mod unic n acest punct, s-a identificat
un grup de concepte care se potrivesc cu exemplele de instruire i se poate aplica teorema de
mai sus (5.7) pentru a concluziona inductiv c toate aceste concepte sunt probabil aproximativ
corecte . Cnd algoritmul a identificat precis conceptul, putem concluziona deductiv c a fost
gsit conceptul int, cu condiia validitii presupunerii c acest concept este o conjuncie de
literale pozitive.
5.2.1.3. nvarea unor inegaliti.
S aruncm o privire asupra unui alt fel de spaiu al ipotezelor restrictive (bias). Se
presupune c argumentul x al predicatului este un numr real i c bias-ul pe care l alegem
presupune ca ) (x p este de forma x>c sau x<c pentru o anumit constant c. Un exemplu
tipic este artat n figura 3, n care conceptul este toi x>5.0 i exemplele de instruire
indicate sunt consistente cu ipoteza x>c pentru orice c(4.2, 5.3).
Figura 3. nvarea unei inegaliti.
114
Chiar dac dimensiunea spaiului ipotezei (H din teorem) este infinit, lucru dovedit
de faptul c putem mrgini domeniul valorilor de intrare posibile x, cele m exemple de
instruire selectate aleator fac probabil o bun i echitabil trasare a parantezei n punctul de
tranzitie c i o analogie cu teorema (5.7) poate fi dovedit n acest exemplu - este posibil s se
nvee PAC n acest domeniu.
Dar dac n loc de o caracteristic avem mai multe? O idee similar poate fi aplicat n
acest caz. n loc de a diviza linia n dou n punctul c, putem diviza un plan n dou cu o linie.
Putem diviza un spaiu tridimensional n dou cu un plan, .a.m.d. Un spaiu n-dimensional
poate fi njumtit cu un hiper-plan (n-1) dimensional.
n general, putem modela aceast operaie geometric descriind hiperplanul n termeni
de n coordonate ) , , (
1 n
h h i spunnd c un punct ) , , (
1 n
x x este n dreapta
hiperplanului dac i numai dac

u )
i
i i
h x (5.8)
pentru anumite u fixate. Exist o oarecare redondan n aceast descriere: putem multiplica
att u ct i toate valorile
i
h cu o constant pozitiv fr a afecta (5.8). n figura 4 am desenat
o reprezentare schematic a trei intrri procesate n acest fel pentru a produce o singur ieire
care poate fi sau 1 sau 0, n funcie de (5.8) care evident, poate fi asimilata cu o reea
neuronal.
Figura 4. Reea neuronal cu un singur nivel.
Acum, ncercm s nvm o funcie f i presupunem c ea are o form specific, dat
de (5.8). Aceasta se dovedete a fi un bias substanial - exist multe funcii care nu pot fi
aproximate prin funcii nvate n aceast form.
Figura 5 O reea mai complicat
115
Pentru a ajunge la aceasta, presupunem c prelucrm intrrile nu o dat, ci de mai
multe ori, ca n figura 5 Rezultatele multiplelor iteraii pot fi ele nsele vazute ca intrri ale
altor iteraii ale formulei (5.8); am desenat schematic rezultatul n figura 6.
Se observ c acum apare dificultatea: fiecare funcie a intrrilor multiple poate fi
aproximat cu o funcie de forma descris n figur. Mai mult, exist algoritmi pentru
nvarea valorilor folosite pentru apariiile h
i'
i u n diverse versiuni ale (5.8), care sunt
folosite la operaii.
Figura 6 O reea neuronal cu trei nivele
Ce mod minunat ar fi acesta pentru rezolvarea problemelor de AI. Fiind date intrrile
unor senzori, sistemul ar putea simplu s nvee s-i clasifice aciunile posibile ca inteligente
sau non-inteligente, iar apoi s acioneze inteligent. Din nefericire, nu este clar c aceast
abordare va reui - n principiu va avea succes, dar realizarea practic este deja o alt
problem. Dimensiunile spaiilor pot fi extraordinar de mari, timpul necesar pentru a nva
conceptele poate fi efectiv infinit, practic nu exist nici o modalitate de a decide de ct de
multe nivele interne are nevoie reeaua, .a.m.d.
5.2.1.4. Algoritmul lui Quilan
Mai exist o tehnic inductiv de nvare despre care dorim s discutm este
algoritmul lui Quinlan, cunoscut sub denumirea prescurtat ID3.
Conform prezumpiei asupra spaiului ipotezelor facut n ID3, conceptul care se
nva poate fi exprimat cu ajutorul unui arbore de decizie, asemntor celui din figura 7.
Revenim la exemplul acela de clasificare al ciupercilor. n cazul de fa, pentru a clasifica
ciuperca m, se ncepe prin a determina dac m este mare sau nu. Dac m este mare, adic
mare(m) este adevarat, ne mutm pe partea stng a arborelui; dac mare(m) este fals, ne
mutm pe partea dreapt a lui.
116
Figura 7. Un arbore de decizie
Apoi, se vor lua n considerare predicate ca: galben(m) sau ptat(m), .a.m.d. Cnd
se ajunge ntr-un nod frunz (terminal) al acestui arbore, ciuperca va fi clasificat ca
otrvitoare sau nu. n exemplul din figur, arborele de decizie este echivalent cu regulile de
inferen incluznd
mare(m)galben(m)otrvitoare(m) (5.9)
Nu este greu de observat c arborii de decizie nu sunt deloc amalgamai; orice concept
poate fi reprezentat utiliznd unul dintre acetia. Contribuia adus de ID3 const n realizarea
faptului c, exist metode efective de a nva conceptele n aceast form, ca i domeniile
variantelor care sunt mijloace efective de a nva conceptele conjunctive. Odat alese
predicatele folosite pentru a eticheta arcele, restul este relativ uor - nodurile marginale sunt
uor de recunoscut deoarece exemplele de instruire care duc la astfel de noduri satisfac toate
conceptul int, sau toate esueaz.
n ID3, arcele sunt etichetate astfel nct s-i poat executa efectiv sarcina de
mprire a exemplelor de instruire la fiecare nod, n pozitive i negative. Aceasta nseamn c
vrem ca fiecare test s mpart setul de exemple de instruire aproximativ n dou (dac inta
este trefle impare nu e prea mult de testat pentru un 7 de trefl) i mai vrem ca testele s fie
relevante pentru conceptul int (dac inta este cri impare, verificarea culorii unei cri
const n mprirea exact a exemplelor de instruire pe culori, mprire necorelat cu
conceptul de nvat).
Exist vreun mod prin care s se defineasc precis care atribut ar trebui verificat n
oricare punct al arborelui de decizie? Da, exist. Matematic este puin complicat.
Presupunem c avem o mulime M cu |M| elemente i vrem s punem ntrebri cu
rspunsuri da/nu despre un element particular pentru a determina care este el. M poate fi
mulimea ntregilor mai mici dect 1000 i despre un ntreg x putem ntreba Este mai mare
dect 500? Sub 750? .a.m.d. Numrul minim de ntrebri pe care va trebui s-l punem
este | | log
2
M , deoarece tot timpul trebuie mprit n dou domeniul rmas de posibiliti.
117
S presupunem c M este mprit n dou submulimi, P i N i ncercm s deducem
n care din aceste dou submulimi se afl x. Cte ntrebri sunt necesare pentru a determina
valoarea lui x?
Dac xP, sunt necesare | | log
2
P ntrebri; dac este n N, sunt necesare
| | log
2
N . Presupunnd c probabilitatea ca P x e este
p
p , i c probabilitatea ca xN
este
n
p , numrul total de ntrebri care trebuie puse pentru a obine informaii suplimentare
despre x este n medie
| | log | | log
2
N p P p
n n p
+
Rezult c acest numr de ntrebri poate fi redus tiind dac x este n P sau n N
astfel:
| | log | | log | | log
2 2 2
N p P p S
n p
(5.10)
Dar | | / | | M P p
p
= , astfel c (5.10) se rescrie dup cum urmeaz:
= |) | ( log |) | ( log ) ( log
2 2 2
M p p M p p M
n n p p
= = + |) (| log ) ( ) ( log ) ( log ) ( log
2 2 2 2
M p p p p p p M
n p n n p p
= ) ( log ) ( log
2 2 n n p p
p p p p (5.11)
Caracteristic pentru aceast expresie este valoarea ei mai mic dect 1; se poate
oricnd ntreba: Este x n P sau nu? Dar dac dimensiunea lui P este mult diferit de a lui
N, stilul da/nu nu va fi foarte folositor.
ntr-o problem de clasificare, scopul nu este de a decide exact care element x din
mulimea M este luat n considerare, ci numai dac acel element este sau nu o instan din
clasa inta T (adic o anumit ciuperc este sau nu otrvitoare). Mai formal, datorit faptului
c se pot pune o sumedenie de ntrebri cu rspunsuri da/nu (mare sau mic?,galben sau
nu?), atunci putem pune o ntrebare care s spun cel mai exact dac x este sau nu n T. Cu
alte cuvinte, punem ntrebarea pentru care s nu existe nici o valoare a informaiei adiionale
despre faptul c x se gsete sau nu n T.
Presupunem acum, c avem un subset M U _ ; se poate partiiona U n dou
submulimi T U U =
+
i T U U =

, unde T este clasa inta. Conform (5.11),


informaia cstigat dac nvm despre obiectul considerat c este n T este dat de:
I
U
U
U U
U
U U
U
U U
U
U U
=
+
+
+

+
+
+



+
+

+
+

log log (5.12)
S presupunem c avem o caracteristic particular f , iar ntrebarea care se pune este
dac instana x luat n considerare satisface sau nu f. Dac ntrebrile anterioare au redus
setul de instane (exemple) posibile la o submulime M V _ , se va indica prin
+ f
V submulimea lui V care satisface caracteristica f, iar prin
f
V submulimea lui V care nu
118
satisface f. Ctigul ateptat al informaiei despre nvarea dac x se gsete sau nu n T ,
dup ce se folosete caracteristica f pentru a mpri pe V n
+ f
V i
f
V este dat de:
G
f
V
f
V
f
V
f
I
V
f
V
f
V
f
V
f
I
V
f
=
+
+
+

+
+

+
+


(5.13)
Primul termen corespunde ctigului informaiei, dac mai nti se nv c
+
e
f
V x
(importan dat de probabilitatea c acest lucru este nvat cnd ntrebm despre f) i al
doilea termen corespunde ctigului informaiei, dac mai nti se nv c

e
f
V x .
Defini ia 5.2.5 S presupunem c avem construit un arbore de decizie i c s-a ajuns la
un nod care corespunde submulimii V al ntregului domeniu. O caracteristica f este maximal
discriminatorie pentru un concept int T dac ea minimizeaz valoarea lui
f
G care apare n
(5.13).
Spre exemplu, trebuie s se afle care este prima ntrebare ce poate fi pus, avnd n
vedere c, conceptul int n domeniul crilor este crile negre impare sau 2v.
Caracteristicile despre care se pot pune ntrebri sunt culoarea, paritatea, sau orice rang. Se iau
n considerare doar dou posibile ntrebri: Cartea este roie? i Este cartea trei? Dac se
ntreb despre culoare, exist ansa de 50% ca s fie roie i 50% s fie neagr.
Rspunsul la aceste ntrebri l gsii n exerciiul 1 de la paragraful exerciii rezolvate,
de la sfritul acestui modul.
Odat ce avem abilitatea de a selecta cea mai folositoare ntrebare, construirea
arborelui de decizie este simpl; la orice punct dat, ne oprim dac avem suficient informaie
pentru a determina dac obiectul este n clasa int sau nu. Dac nu avem suficiente informaii,
punem cea mai bun ntrebare i recurgem la algoritmul care urmeaz.
ALGORITMUL ID3Fiind date ca intrri un set F de caracteristici, mulimea M
despre care s-a vorbit i un concept T:
1. Dac fiecare element al mulimii M este n T, ntoarce rspunsul da. Dac nici un
element al mulimii M nu este n T, ntoarce raspunsul nu.
2. n orice alt caz, fie f cel mai discriminator element al lui F. (dac n-a mai rmas nici o
caracteristic, ntoarce eec). ntoarce un arbore a crui ramur stng este ID3(F-
{f},Mf,T) i a crui ramur dreapt este ID3(F-{f},M-f,T). Se indic acel subset al lui
M care satisface f prin Sf i subsetul care nu satisface f prin S-f.
n practic, desigur, datele de instruire nu vor include informaii despre toate obiectele
din domeniu, ci numai despre cteva dintre ele. n aceste condiii, ID3 poate fi folosit pe
construirea descrierii PAC a conceptului int.
119
Unitatea de nv are 6.
Re ele neuronale.
Cuprins:
6.1. Introducere ................................................................................................. pag. 119
6.2. Sistemul nervos biologic. Reele neuronale biologice ............................... pag. 120
6.3. Reele neuronale artificiale ........................................................................ pag. 122
6.4. Proiectarea i realizarea reelelor neuronale ............................................. pag. 127
6.4.1. Colectarea datelor ................................................................................... pag. 128
6.4.2. Definirea structurii reelei ....................................................................... pag. 128
6.4.3. Alegerea algoritmului de nvare ......... ................................................. pag. 130
6.4.3.1 Reguli de corecie a erorilor ................................................................. pag. 131
6.4.3.2. nvarea de tip Boltzman .................................................................... pag. 132
6.4.3.3. Postulatul de nvare a lui Heb ........................................................... pag. 132
6.4.3.4. Reguli de nvare competitive ............................................................ pag. 133
6.4.3.5 Algoritmul de propagare napoi (backpropagation) .............................. pag. 134
6.4..4. Testarea reelei ................................................................................................. pag. 135
6.5. Avantaje i limite ale reelelor neuronale artificiale ................................... pag. 135
6.6. Reelele neuronale versus sistemele expert .... pag. 136
6.7. Aplicaii ale reelelor neuronale pag. 137
6.8. Direcii de cercetare n cadrul reelelor neurale ......................................... pag. 139
6.9. Exerciii rezolvate i tema de control ......................................................... pag. 140
6.10. Bibliografie modulul 3 ............................................................................. pag. 147
6.1. Introducere
Una din problemele cele mai dificile, pe care trebuie s le rezolve inteligena
artificial, este generat de necesitatea dominrii complexitii informaionale a domeniilor
abordate. O posibil soluie este oferit n unele cazuri de sistemele expert. Utilizarea acestora
este ns limitat la domenii bine definite, comportamentul unui sistem expert devenind
fragil la frontierele domeniului pentru care a fost realizat.
n cazul unor aplicaii mult mai complexe, se contureaz o alta abordare: nvarea
automat, ca un set de metode utilizate n scopul nvrii de ctre calculator a modului de
rezolvare a unei probleme prin analogie cu anumite cazuri trecute. Acest obiectiv nu este
deloc simplu. Pe de o parte, exist mai multe modele de nvare i alegerea unui model
potrivit specificului problemei poate fi extrem de dificil. Pe de alt parte, cu toate c
nvarea automat este considerat un domeniu al inteligenei artificiale, multe din tehnologiile
sale nu sunt caracteristice acesteia.
Cercetrile n domeniul nvrii automate s-au intensificat n ultimele patru decenii,
iniial insistndu-se mai degrab asupra modalitilor de a realiza un sistem care s se
dovedeasc inteligent, dect asupra modalitilor prin care acesta s poat nva n scopul
mbuntirii propriilor performane. Cea mai mare parte a cercetrilor n domeniul
nvrii automate au fost orientate spre definirea unor paradigme ale nvrii (ca domeniu
care const ntr-o investigare a principiilor de baz ale inteligenei), stabilirea unor relaii
ntre acestea i elaborarea algoritmilor care le caracterizeaz.
Metodele de nvare corespund unor tehnici relativ diferite: metode de nvare
inductiv, sisteme de clasificare, reele neuronale, algoritmi genetici, sisteme de nvare
120
bazate pe explicaii. Aceste tehnici au n comun abilitatea de a modifica performanele
sistemului odat cu ctigarea experienei. Herbert Simon a caracterizat procesul de nvare
ntr-un mod suficient de abstract pentru a permite utilizarea oricror metode: nvarea
denot modificri n cadrul sistemului, care sunt flexibile n sensul c ele permit acestuia s
ndeplineasc aceleai sarcini, extrase din acelai domeniu ntr-un mod mult mai eficient n
viitor.
Aceast nou abordare a sistemelor inteligente presupune construirea de calculatoare
cu o arhitectur i capacitate de procesare care s imite anumite abiliti de procesare ale
creierului. Rezultatul l constituie reprezentrile de cunotine bazate pe o important
procesare paralel, pe acumularea rapid a unor mari cantiti de informaii i pe capacitatea
de a recunoate modele pe baza experienei. Tehnologia care ncearc s obin aceste
rezultate este numit procesare neuronal sau reele neuronale.
Preocuparea pentru reelele neuronale artificiale, denumite n mod curent reele
neuronale, a fost motivat de recunoaterea faptului c modul n care calculeaz creierul
fiinelor vii este complet diferit de cel al calculatoarelor numerice convenionale.
Spre deosebire de mainile von Neumann, unde exist o unitate de procesare care
execut instruciunile stocate n memorie n mod serial, numai o instruciune la un moment
dat, reelele neuronale utilizeaz n mod masiv paralelismul.
Fiind modele simplificate ale creierului uman, ele dein capacitatea de a nva, spre
deosebire de calculatoarele convenionale, care rmn totui mai eficiente pentru sarcinile
bazate pe operaii aritmetice precise i rapide.
Reelele neuronale nu dispun de uniti de procesare puternice, dimpotriv, acestea
sunt caracterizate printr-o simplitate extrem, ns interaciunile lor pe ansamblu produc
rezultate complexe datorit numrului mare de conexiuni.
Reelele neuronale sunt tehnologii de prelucrare a informaiei bazate pe studiile
asupra creierului uman i a sistemului nervos. Cercetrile n domeniu s-au intensificat n
ultimii ani, cunoscnd n prezent o mare popularitate, datorit progreselor nregistrate
att n tehnologia calculatoarelor, ct i n domeniul neurologiei, n direcia unei mai bune
nelegeri a mecanismelor creierului uman.
n timp ce japonezii caracterizeaz reelele neuronale ca aparinnd generaiei a
VI-a de calculatoare, americanii consider c pot rectiga poziia de lider n domeniul
tehnologiilor informaionale prin realizarea unor sisteme informatice bazate pe procesele
biologice ale creierului uman. Din ce n ce mai mult, n cercetrile din domeniul neurologiei,
se caut identificarea principiilor de prelucrare biologic a informaiei, n scopul aplicrii lor
n cadrul unor sisteme artificiale.
6.2. Sistemul nervos biologic. Reele neuronale biologice.
Pentru a nelege mai bine aceast abordare, trebuie precizat modul de funcionare al
sistemului nervos.
Capacitatea de a nva i a reaciona la schimbrile din jurul nostru, necesit
inteligen. Gndirea i comportamentul inteligent sunt controlate de creier i de sistemul
nervos central. ncercarea de a nelege modul n care creierul uman poate gestiona ntr-o
manier att de eficient, o enorm cantitate de cunotine, pornete de la analiza neuronilor,
ca elemente fundamentale ale sistemului nervos central.
Constituienii structurali ai creierului sunt neuronii, conectai prin sinapse. Se
estimeaz c n cortexul uman exist circa 10 miliarde de neuroni i 60 de trilioane de sinapse.
Trebuie precizat ns c neuronii nu sunt cele mai numeroase celule din creier. Celulele gliale
sunt de 10 ori mai multe. n mod tradiional, se considera c acestea au numai funcii de
121
nutriie i protecie, ns n ultimul timp au demarat cercetri privitoare la influena lor
potenial asupra activitii de procesare a neuronilor.
Structura biologic a unui neuron (figura 6.1.) include:
nucleul (corpul celular);
axonul (ieirea din celula neuronal);
dendritele ( intrrile n celula neuronal).
Dendritele (numite astfel datorit asemnrii cu un copac, dendron n greac) sunt
intrrile neuronului, fibre scurte ramificate, de civa milimetri, care primesc impulsuri.
Axonul (axn, ax), ieirea, este o fibr mai lung, de civa centimetri putnd
ajunge ns la 1-1,5 metri. Fiecare neuron are un singur axon i mai multe (10-20) de dendrite.
Figura 6.1. Schema biologic a unui neuron.
Conexiunile dintre neuroni se realizeaz ntr-un spaiu numit sinaps. Acestea sunt
uniti structurale i funcionale elementare care mediaz interaciunile dintre neuroni. Tipul
cel mai rspndit de sinaps este sinapsa chimic, ce opereaz astfel: un proces presinaptic
elibereaz o substan transmitoare, care difuzeaz peste jonciunea sinaptic dintre neuroni
i apoi acioneaz asupra unui proces postsinaptic. Astfel, o sinaps convertete un semnal
electric presinaptic ntr-un semnal chimic (ioni de sodiu i potasiu) i apoi din nou ntr-un
semnal electric postsinaptic.
n descrierile tradiionale ale organizrii neuronale, se consider c o sinaps este o
conexiune simpl care poate impune excitare sau inhibare, dar nu ambele, neuronului
receptor. Ambele efecte sunt locale; ele se propag pe o distan mic n corpul celulei i sunt
nsumate la nivelul axonului. Dac suma potenialelor de excitare depete un anumit prag,
atunci neuronul este activat i transmite un impuls mai departe.
Fiecare neuron primete impulsuri electrice prin intermediul dendritelor sale. Dac
aceste impulsuri sunt suficient de puternice, axonul va transmite un impuls electric n vederea
excitrii diferiilor neuroni conectai care, n funcie de intensitatea semnalului primit, vor fi
activai la rndul lor. Semnalele pot fi transmise nemodificate sau pot fi alterate de sinapse.
O sinaps este capabil s intensifice sau s diminueze puterea de conecie, provocnd
excitarea sau inhibarea neuronului respectiv. Abordarea conexionist n informatic se
bazeaz pe acest model biologic.
Cea mai important trstur a reelei neuronale biologice este plasticitatea. Ca
rspuns la stimulrile primite, la nivelul conexiunilor se produc schimbri pe termen lung,
astfel nct conexiunile care ajut la obinerea de rezultate pozitive sunt ntrite, iar cele care
122
determin rezultate nedorite sunt slbite. De asemenea, neuronii pot forma n timp noi
conexiuni cu ali neuroni. Aceste mecanisme stau la baza capacitii de adaptare a creierului la
stimulii primii, pe care o numim n mod convenional nvare.
6.3. Reele neuronale artificiale.
Reelele neuronale artificiale, au ca punct principal de inspiraie sistemul nervos,
fiind alctuite dintr-o mulime de noduri n care se afl neuronii artificiali, interconectate n
funcie de diverse tipologii. Intrrile n neuronul artificial sunt similare cu impulsurile
electrice pe care dendritele neuronului biologic le primesc de la ali neuroni, n timp ce
ieirea neuronului artificial corespunde semnalelor trimise de neuronul biologic prin
intermediul axonului. Aceste semnale artificiale pot fi modificate n aceeai manier cu
modificrile ce au loc n cadrul sinapselor. Problema const n determinarea intrrilor
acceptabile, pe baza ponderilor asociate fiecrei intrri. nvarea, pe baza exemplelor i a
contraexemplelor va permite ajustarea acestor ponderi cu ajutorul, unui algoritm retroactiv a
ecarturilor ntre rezultatul obinut i cel dorit.
n procesarea neuronal devine tot mai important nelegerea mecanismului de
funcionare a creierului uman, mecanism care, deocamdat, prezint multe neclariti
pentru cercettorii din domeniu. Acesta poate fi unul din motivele pentru care modelele
de procesare neuronal nu sunt foarte apropiate de sistemul biologic - unii autori
estimeaz aceasta asemnare cu mult sub 10%. Comportamentul rigid al reelelor neuronale
artificiale, n comparaie cu cel al sistemelor biologice, constituie deocamdat principalul
impediment n ncercarea de a simula ct mai fidel comportamentul inteligent uman. De
exemplu, dac ne referim la modelul aditiv (ca una din reprezentrile tipice ale reelelor
neuronale artificiale), putem enumera cteva din caracteristicile care i confer rigiditate
n funcionare:
prima limit a acestui model const n faptul c performana neuronilor este colectiv, dar
nu este paralel; orice schimbare n activitatea unui neuron va afecta ceilali neuroni. n
cadrul sistemelor biologice, neuronii funcioneaz att colectiv, ct i paralel. De exemplu,
mna stng i mna dreapt sunt independente din punct de vedere mecanic
(funcioneaz paralel), ns activitatea lor este coordonat de creier (funcioneaz colectiv).
a doua limit a modelului artificial o constituie dependena performanelor acestuia de
condiiile iniiale. Sistemul nu uit niciodat aceste condiii, iar pentru a-i modifica
performanele, inputurile externe trebuie s domine ineria trecutului, n timp ce
sistemele biologice sunt mult mai flexibile; ele pot uita trecutul, adaptndu-i
comportamentul n funcie de caracteristicile ambientale.
Totodat, caracteristicile sistemului artificial sunt de aceeai scal, n timp ce sistemele
biologice implic mecanisme care acoper ntregul cmp, de la molecular la macroscopic.
Cu toate acestea, reelele neuronale artificiale prezint un numr surprinztor de mare de
caracteristici ale creierului, fiind posibil realizarea unor sisteme utile care prezint anumite
caracteristici comune sistemelor biologice.
n cea mai general form a sa, o reea neuronal este o main proiectat pentru a
modela felul n care creierul rezolv o anumit problem sau execut o funcie cu un anumit
scop; reeaua este de obicei implementat folosindu-se componente electronice sau simulat
printr-un program.
Defini ie. Simon Haykin consider c o reea neuronal este un procesor masiv
paralel, distribuit, care are o tendin natural de a nmagazina cunotine experimentale i de
a le face disponibile pentru utilizare.
Ea se aseamn cu creierul n dou privine:
123
- Cunotinele sunt cptate de reea printr-un proces de nvare;
- Cunotinele sunt depozitate nu n unitile de procesare (neuroni), ci n conexiunile
interneuronale, cunoscute drept ponderi sinaptice.
Procedura folosit pentru a executa procesul de nvare se numete algoritm de
nvare, funcia cruia este de a modifica ponderile sinaptice ale reelei ntr-un stil sistematic
pentru a atinge obiectivul dorit de proiectare. Printre numeroasele proprieti interesante ale
unei reele neuronale, cea mai semnificativ este abilitatea acesteia de a nva prin
intermediul mediului nconjurtor, i prin aceasta s-i mbunteasc performanele;
creterea performanelor are loc n timp i conform cu unele reguli prestabilite.
O reea neuronal i nva mediul printr-un proces iterativ de ajustri aplicate
conexiunilor i pragurilor sale sinaptice. n mod ideal, reeaua devine mai inteligent dup
fiecare iteraie a procesului de nvare.
n contextul reelelor neuronale vom defini astfel nvarea: un proces prin care
parametrii variabili ai unei reele neuronale se adapteaz prin continua stimulare din partea
mediului n care este inclus. Tipul de nvare este determinat de modul n care au loc
schimbrile parametrilor. Aadar, nvarea n contextul unei reele neuronale se
caracterizeaz prin urmtoarele elemente:
- Reeaua neuronal este stimulat de un mediu;
- Reeaua neuronal sufer schimbri datorit acestor stimulri;
- Reeaua neuronal rspunde n mod diferit mediului datorit schimbrilor care au
aprut n structura sa intern.
Cu toate c asemnarea ntre sistemul nervos biologic i reelele neuronale artificiale
este relativ mic, reelele neuronale artificiale prezint un numr surprinztor de caracteristici
ale creierului. De exemplu, acestea pot nva din experien, generaliza din anumite exemple
altele noi i sintetiza caracteristicile eseniale din intrri ce conin i date irelevante. Un mare
avantaj al reelelor neuronale este c pot s descrie o problem i s o rezolve n acelai timp,
prin auto-organizarea lor i nu prin programul explicit. Acest proces de auto-organizare are
loc pe parcursul nvrii datorate topologiei iniiale, unor reguli de nvare i unui numr
mare de antrenamente.
Caracteristicile cele mai importante ale reelelor neuronale sunt:
- Capacitatea de a nva: Reelele neuronale artificiale nu necesit programe
puternice ci sunt mai degrab rezultatul unor antrenamente asupra unui set de date.
Reelele neuronale artificiale au un algoritm de nvare, dup care ponderile
conexiunilor sunt ajustate pe baza unor modele prezentate. Cu alte cuvinte, reelele
neuronale nva din exemple, la fel cum nva copiii s recunoasc un obiect pe baza
mai multor instane ale acelui tip de obiect
- Capacitatea de generalizare: Dac au fost instruite corespunztor, reelele sunt
capabile s dea rspunsuri corecte i pentru intrri diferite fa de cele cu care au fost
antrenate, atta timp ct aceste intrri nu sunt foarte diferite;
- Capacitatea de sintez: Reelele neuronale artificiale pot lua decizii sau trage
concluzii cnd sunt confruntate cu informaii afectate de zgomot, irelevante sau
pariale.
Datorit acestor trsturi ale prelucrrii informaiei, reelele neuronale pot rezolva
probleme complexe care sunt dificil de abordat prin metode clasice. Cu toate acestea,
cercettorii recunosc c mai au un drum lung de parcurs pn vor ajunge s construiasc un
calculator care s imite creierul omenesc. Inteligena la care au ajuns n prezent cele mai
sofisticate reele neuronale este sub nivelul gndirii unui copil de civa ani. Cu toate acestea
nu trebuie minimizat sau ignorat importana reelelor neuronale artificiale i este posibil ca
pe viitor, cu ajutorul lor s se ajung la o cunoatere mai aprofundat a fenomenelor ce au loc
124
n creierul uman. Ceea ce recomand reelele neuronale artificiale este raportul favorabil
performan-complexitate, aflat ntr-o continu cretere i care este superior sistemelor de
inteligen artificial implementate prin alte tehnologii.
nceputul reelelor neuronale artificiale este legat de problema clasificrii unor obiecte
definite de o serie de atribute. Cel mai simplu model era funcia I logic ntre anumite atribute
(prezente sau absente), care s determine o anumit clas. Totui, unele clase pot avea atribute
comune, iar unele valori, n cazul n care provin dintr-un mecanism perceptual, pot fi afectate
de zgomot. Soluia s-a bazat pe faptul de bun sim c unele atribute sunt mai importante dect
altele pentru determinarea unei anumite clase. O clas era determinat dac sumarea valorilor
ponderate depea un anumit prag, n bun concordan cu legea biologic totul sau nimic
(dac un impuls nu depete un prag minim, el nu produce nici un rspuns).
Neuronii artificiali sunt elemente de procesare neliniare, care opereaz n paralel. Prin
analogie cu neuronul biologic, fiecare neuron artificial va recepiona una sau mai multe
intrri, le va prelucra i va furniza o singura ieire, care se poate conecta la intrrile mai
multor neuroni.
Fiecare intrare corespunde unui singur atribut. De exemplu, dac problema const
n a decide asupra acordrii unui credit, atributul poate constitui un nivel de activitate, un tip
de garanie etc. Valoarea numeric a atributului va deveni o intrare n reea. Se pot utiliza
diferite tipuri de date drept intrri, dar n cadrul reelei se pot prelucra doar date numerice. n
cazul n care sunt necesare atribute calitative, acestea vor fi transformate n echivalente
numerice. Ieirea unui element de procesare poate constitui rezultatul final sau poate deveni
intrare ntr-un alt proces de prelucrare. Pentru exemplul anterior, soluia problemei
(ieirea care constituie rezultatul final) poate fi da sau nu. Reeaua va atribui valori
numerice de exemplu 1 pentru da i 0 pentru nu, scopul constnd n evaluarea valorilor
rezultatului obinut.
Fiecrei intrri i este asociat o pondere, care reprezint importana relativ a
acesteia. Modalitatea prin care reeaua inva este repetata ajustare a acestor ponderi.
Elementul de prelucrare (neuronul) calculeaz suma ponderat a intrrilor sale, fiind activat
doar dac aceast sum depete un anumit prag, numit prag de activare.
Warren McCulloch i Walter Pitts (1943) au propus un model, care rmne pn n
prezent fundamentul structural pentru majoritatea reelelor neuronale numit perceptron, o
reea cu un singur neuron, la fel ca aceea din figura 6.2.
Figura 6.2. Modelul Warren McCulloch i Walter Pitts.
125
Fiecrei conexiuni i corespunde o valoare real, numit pondere sinaptic, care
determin efectul intrrii respective asupra nivelului de activare a neuronului. Suma ponderat
a intrrilor poart denumirea de intrare net (n englez, net input). n figur,
j
x reprezint
intrrile,
j
w ponderile sinaptice, f o funcie de activare, valoarea prag iar y ieirea, care se
calculeaz dup formula:
1
n
i i
i
y f w x
=
| |
=
|
\ .

McCulloch i Pitts foloseau o funcie de activare signum, cu valorile -1 i 1:


1, 0
( )
1, 0
s
f s
s
<
=

>

Y
1
0 X
-1
Figura 6.3. Funcia signum
Din punctul de vedere al funciei de activare a neuronilor, s-a constatat c reelele
multistrat nu asigur o cretere a puterii de calcul n raport cu reelele cu un singur strat dac
funciile de activare rmn liniare, deoarece o funcie liniar de funcii liniare este tot o funcie
liniar. Puterea perceptronului multistrat provine tocmai din funciile de activare neliniare.
Aproape orice funcie neliniar poate fi folosit n acest scop, cu excepia funciilor
polinomiale.
Se punea acum problema determinrii automate a acestor ponderi, n cazul n care
neuronului i erau prezentate mai multe obiecte, mpreun cu clasa creia i aparineau acestea.
Rezolvarea a fost adus de Frank Rosenblatt (1960), care a imaginat un algoritm de nvare
pentru perceptron. Algoritmul de antrenare garanteaz clasificarea corect a dou clase pe
baza setului de antrenare, cu condiia ca acele clase s fie liniar separabile. Scopul iniial al
perceptronului era recunoaterea optic a caracterelor. Rosenblatt a reuit s construiasc n
1968 un sistem bazat pe implementarea sa hardware, numit Mark I Perceptron, care e
considerat primul neurocomputer funcional
Ideea principal este de a face mici ajustri ale ponderilor pentru a reduce diferena
dintre ieirea real a perceptronului i ieirea dorit. Ponderile iniiale sunt iniializate
aleatoriu (n general n intervalul [-0.5, 0.5]) i apoi actualizate treptat astfel nct ieirea s se
apropie de valorile dorite. Exemplele de antrenare sunt prezentate succesiv, n orice ordine.
Dac n pasul p ieirea real este ( ) y p iar ieirea dorit este ( )
d
y p , atunci eroarea
este:
( ) ( ) ( )
d
e p y p y p =
126
Dac eroarea e este pozitiv, trebuie s mrim y ; dac este negativ, y trebuie
micorat. Avnd n vedere c fiecare intrare are contribuia
i i
x w , atunci dac
i
x este
pozitiv, o cretere a ponderii
i
w va avea ca efect o cretere a ieirii perceptonului. Invers,
dac
i
x este negativ, creterea ponderii
i
w va determina scderea ponderii y . De aici poate
fi stabilit regula de nvare a perceptonului:
( 1) ( ) ( ) ( )
i i i
w p w p e p x p + = + ,
unde (0,1) e este numit rata de nvare.
n prezent, funciile cele mai des utilizate sunt sigmoida unipolar (sau logistic):
1
( )
1
x
f x
e

=
+
Figura 6.4. Funcia sigmoid
O alt form pentru funcia sigmoid poate fi ) 1 , 1 ( : 9 f numit i
sigmoida bipolar (tangenta hiperbolic).
1
( ) , 0
1
kx
kx
e
f x k
e

= >
+
Y
1
0 X
-1
Figura 6.5. Funcia sigmoid bipolar.
127
Se poate constata c funciile sigmoide se comport aproximativ liniar pentru valori
absolute mici ale argumentului i se satureaz, prelund oarecum rolul de prag, pentru valori
absolute mari ale argumentului. S-a demonstrat (Cybenko, 1989) c o reea (posibil infinit)
cu un singur strat ascuns este capabil s aproximeze orice funcie continu. Astfel se justific
proprietatea perceptronului multistrat de aproximator universal. De asemenea, aplicnd
teorema Stone-Weierstrass n domeniul reelelor neuronale, s-a demonstrat c acestea pot
calcula anumite expresii polinomiale: dac exist dou reele care calculeaz exact dou
funcii f
1
, respectiv f
2
, atunci exist o reea mai mare care calculeaz exact o expresie
polinomial de f
1
i f
2
.
6.4. Proiectarea i realizarea reelelor neuronale.
Conceperea unei reele neuronale necesit n primul rnd definirea configuraiei
acesteia, prin precizarea urmtoarelor elemente: volumul datelor de testare i antrenare,
algoritmul de nvare, structura reelei, funcia de transfer i mijloacele de testare i
validare a acesteia.
Figura 6.6.. Etapele proiectrii i realizrii unei reele neuronale
reini ializare
!estarea reUele|
Implementare
Balectarea atelar
'ss| ists
Definirea structurii re elei
*alt structur
Alegerea aaa| algar|tm e
|aUUare
's|t s|s.|tm
|aUUarea
'|s|U|s||ts.ss ,ssis.||s.
'ts||||.ss |st.U.||s.
'/jasts.ss ,ssis.||s.
128
6.4.1. Colectarea datelor.
Tipul datelor (binare sau continue) va fi stabilit n funcie de structura reelei i de
algoritmul de nvare ce urmeaz a fi utilizat. Datele ce vor fi furnizate reelei trebuie s fie
ct mai clare i s acopere n ntregime domeniul problemei (nu doar operaiile de rutin,
ci i excepiile sau condiiile specifice ce se manifest la graniele acestuia). Calitatea reelei
va depinde direct de volumul i calitatea datelor de intrare; de regul, cu ct volumul acestora
este mai mare, cu att cresc ansele de a se ajunge mai repede la un set de ponderi
corespunztoare n cadrul procesului de nvare.
6.4.2. Definirea structurii reelei.
Ca i reelele biologice, reelele neuronale artificiale pot fi organizate n diverse
moduri, ca posibiliti de interconectare ntre neuroni. n definirea structurii reelei, ct i n
alegerea algoritmului de nvare, punctul de pornire l constituie mijloacele disponibile
i aptitudinile echipei de realizare. Cele mai reprezentative structuri sunt: sistemele
bazate pe memorie asociativ, reelele cu doua nivele i reelele multinivel.
Conform rezultatelor unor studii biologice, memoria asociativ const n capacitatea
omului de a asocia un ansamblu de caracteristici unui obiect complex i de a-1 identifica n
condiiile n care nu sunt specificate dect o parte a caracteristicilor sale. ntr-o asemenea
structur toate informaiile se regsesc n sinapse, deci chiar i n absena unei legturi directe
ntre doi neuroni.
Figura 6.7. Memoria asociativ
Principala caracteristic a sistemelor bazate pe memoria asociativ, este capacitatea
acestora de a identifica complet anumite situaii n condiiile furnizrii unor informaii
pariale, prin cutarea similitudinilor ntre datele de intrare i cele stocate n reea. Acest tip
de structur permite utilizarea unor reele n care legturile sunt quasicunoscute (n sensul
c nu exist restricii privind sensul sau ordinea acestora) iar rspunsul reelei este aproape
instantaneu, fiind necesar doar o simpl parcurgere a acesteia.
O arhitectur de mare importan istoric este adaline (adaptive linear element,
Widrow, 1962), prezentat la scurt timp dup publicarea algoritmului lui Rosenblatt. Spre
deosebire de perceptron, ieirea nu este discret, ci continu, deoarece folosete funcia de
activare liniar: f(s) = s. De asemenea, algoritmul de antrenare este diferit conceptual,
bazndu-se pe metoda celor mai mici ptrate, sau regula delta. Scopul este minimizarea erorii
129
ptratice medii dintre ieirea real i cea dorit cu ajutorul unei metode de tip gradient
descendent numit coborrea cea mai abrupt (engl. steepest descent). Actualizarea
ponderilor se face dup aceeai formul ca la perceptron, cu precizarea c eroarea e are acum
valori reale. Din punctul de vedere al comportamentului, spre deosebire de perceptron, adaline
converge repede i nvarea este n general stabil chiar n probleme de clasificare
neseparabile liniar. Dezavantajul su principal este faptul c nu poate garanta separarea celor
dou clase, chiar dac acestea sunt liniar separabile.
Widrow a generalizat modelul la o arhitectur cu mai multe straturi numit madaline
(many adalines). Aceasta const dintr-un strat de neuroni adaline care pot fi antrenai i ale
cror ieiri sunt conectate ntr-un al doilea strat, stratul de ieire, format din neuroni care
funcioneaz ca pori logice: I, SAU sau vot majoritar. Ponderile neuronilor din acest strat de
ieire nu sunt antrenabile, ci fixate, ceea ce conduce la clasificarea arhitecturii madaline tot ca
o reea cu un singur strat.
Reelele multinivel au aprut din ncercrile de rezolvare a problemelor neseparabile
liniar i au condus la diverse variante privind numrul de straturi de neuroni i funciile de
activare utilizate i sunt alctuite dintr-un nivel al neuronilor de intrare, un nivel al neuronilor
de ieire i unul sau mai multe nivele intermediare (numite i nivele ascunse). Un neuron va
putea s-si transmit rezultatul unui alt neuron, situat pe un nivel superior; setul de intrri n
reea fiind stabilit, rezultatul va fi furnizat n urma parcurgerii succesive a tuturor nivelelor
acesteia. Perceptronul multistrat este tipul de reea neuronal cel mai cunoscut i mai des
folosit. De cele mai multe ori, semnalele se transmit n interiorul reelei ntr-o singur direcie:
de la intrare spre ieire; nu exist bucle, ieirea fiecrui neuron neafectnd neuronul respectiv.
Aceast arhitectur se numete cu propagare nainte (engl. feed-forward).
Figura 6.8.. Reea cu trei nivele
Straturile care nu sunt conectate direct la mediu se numesc ascunse. Exist n literatura
de specialitate o controvers privind considerarea primului strat (de intrare) ca strat propriu-
zis n reea, de vreme ce singura sa funcie este transmiterea semnalelor de intrare spre
straturile superioare, fr a face vreo prelucrare asupra intrrilor. n cele ce urmeaz, am ales
s numrm numai straturile formate din neuroni propriu-zii, ns spunem c intrrile sunt
grupate n stratul de intrare.
Dezavantajul principal al acestei structuri ii constituie timpul de nvare, care sporete
odat cu numrul nivelelor intermediare.
130
n cadrul reelelor cu dou nivele, fiecare neuron aparinnd nivelului de intrare va fi
conectat cu fiecare neuron aparinnd nivelului de ieire; neuronii nivelului de ieire .vor
modifica valorile furnizate de neuronii nivelului inferior, atribuindu-le diverse ponderi.
n funcie de arhitectur reelele neurale se mpart n 2 categorii:
a) reele de tipul feed-forward n care grafurile nu au salturi napoi.
b) reele recurente n care apar salturi napoi din cauza conexiunilor feedback.
n cazul cel mai rspndit al reelelor de tipul feed forward (numite i perceptron
multilayer) neuronii sunt organizai pe mai multe nivele care au legturi unidirecionale ntre
ei.
Diversele modaliti de conectare conduc la diverse comportamente. Vorbind la modul
general reelele de tipul feed forward sunt statice deoarece produc acelai set de valori de
ieire i nu o secven de valori pentru o intrare dat. Reelele de tipul feed forward sunt fr
memorie n sensul c rspunsul acestora la o intrare este independent de starea anterioar a
reelei. Reelele recurente sunt sisteme dinamice. Cnd este prezentat un nou model de intrare
sunt calculate ieirile neuronului. Datorit cilor de feedback intrrile fiecrui neuron sunt
modificate ceea ce conduce reeaua ctre o nou stare. Arhitecturi diferite ale reelei necesit
algoritmi de nvare specifici.
6.4.3. Alegerea algoritmului de nvare.
Abilitatea de nva este o caracteristic fundamental a inteligenei. Dei este greu
de formulat o definiie precis a nvrii un proces de nvare n contextul reelelor neurale
artificiale poate fi vzut ca problema actualizrii arhitecturii reelei i a ponderii conexiunii
astfel nct reeaua s efectueze eficient o anumit slujb. Reeaua nva de obicei
ponderile conexiunilor din modelele de antrenament disponibile. Performana este
mbuntit n timp updatarea iterativ a ponderilor din reea. Abilitatea reelelor neurale
artificiale de a nva din exemple face ca acestea s devin atractive i interesante. n loc s
urmeze un set de reguli ntocmit de experi umani reelele neurale artificiale nva regulile
de baz (n forma de relaii intrare-ieire) dintr-o colecie de exemple reprezentative. Acesta
este unul din avantajele majore ale reelelor neurale fa de sistemele expert tradiionale.
Pentru a nelege sau proiecta un algoritm de nvare trebuie mai nti creat un
model al mediului n care va opera reeaua neural, aceasta nseamn c trebuie tiut ce
informaie este disponibil reelei. Apoi trebuie neles cum se actualizeaz ponderile adic
regulile de nvare care guverneaz procesul de actualizare a ponderilor. Algoritmul de
nvare se refer la procedura n care regulile de nvare sunt folosite pentru ajustarea
ponderilor.
Algoritmii de nvare a reelelor neuronale se mpart n trei categorii: algoritmi
supervizai, algoritmi nesupervizai i algoritmi hibrizi.
nv area supervizat presupune existena unui set de intrri pentru care se cunosc
valorile dorite ale ieirilor. Aceste dou seturi de valori formeaz o pereche de antrenament, o
reea urmnd s fie antrenat cu un numr de perechi de antrenament ce depinde de tipul i de
complexitatea problemei. Pe baza diferenei ntre rezultatul dorit i cel efectiv obinut se vor
determina coreciile ce trebuie aplicate ponderilor reelei, pn n momentul n care eroarea
corespunztoare ntregii reele se afl sub un prag minim.
nv area nesupervizat se apropie mai mult de modul de nvare caracteristic unui
sistem biologic, nemaifiind necesare valori de ieire asociate celor de intrare i nici
comparri n vederea minimizrii erorilor. nvarea nesupervizat are ca scop clusterizarea
datelor de intrare, adic gruparea obiectelor similare i separarea celor diferite, n lipsa unor
131
informaii a priori n acest sens. Nu exist, n acest caz, posibilitatea determinrii anterior
procesului de nvare a valorilor ieirilor asociate unei clase a intrrilor.
De cele mai multe ori, reelele neuronale care utilizeaz aceast paradigm de nvare
sunt foarte simple, cu un singur strat. Neexistnd un instructor, reeaua trebuie s se auto-
organizeze n conformitate cu unele reguli interne ca rspuns la stimulii din mediul extern.
nv area hibrid combin nvarea supervizat cu cea nesupervizat. O parte din
ponderi sunt determinate prin nvare supervizat iar cealalt este obinut prin nvare
nesupervizat.
Teoria nvrii trebuie s rezolve trei probleme fundamentale asociate cu nvarea
din exemple: capacitatea, complexitatea exemplelor i complexitatea computaional.
Capacitatea se refer la numrul pattern-urilor care pot fi stocate precum i la funciile i
deciziile pe care o reea trebuie s le ia.
Complexitatea mostrelor determin numrul modelelor de antrenament necesare
pentru antrenarea reelei pentru a garanta o bun generalizare. n acest caz reeaua se descurc
bine numai n cadrul setului de date de antrenament dar foarte slab pe alte modele de test
extrase din aceeai distribuie precum modelele de antrenament.
Complexitatea computaional se refer la timpul necesar unui algoritm de nvare
pentru a estima o soluie dintre modelele de antrenament. Mare parte din algoritmii de
nvare existeni au o complexitate computaional ridicat. Proiectarea unor algoritmi
eficieni pentru nvare n cadrul reelelor neurale este o ramur de cercetare foarte activ.
Exist patru tipuri de baz de reguli de nvare: corecia erorilor, Boltzmann, Hebian
i nvarea concurenial (competitive learning)
6.4.3.1 Reguli de corecie a erorilor.
n cazul de nvare supervizat reelei i se atribuie o ieire dorit pentru fiecare pattern
de intrare. n timpul procesului de nvare ieirea y generat de reea e posibil s fie diferit
de ieirea dorit d. Principiul de baz al regulilor de nvare este folosirea semnalului de
eroare (d-y) n scopul modificrii ponderilor pentru reducerea gradual a erorii.
Regula de nvare a perceptronului se bazeaz pe principiul de corec ie a erorii. Un
perceptron const dintr-un neuron cu ponderi ajustabile w
j
, j=1,2,...,n i pragul u. Dndu-se un
vector de intrare X=(x
1
, x
2
,...,x
n
)
t
intrarea reelei n neuron este v=
1
n
i i
i
x w u
=

.
Ieirea perceptronului este 1 daca v>0 i 0 altfel. ntr-o problem de clasificare n dou
clase perceptronul clasific un model de intrare ntr-o clas dac y=1 i n cealalt clas dac
y=0. Ecuaia liniar
1
0
n
i i
i
x w u
=
=

definete limita de decizie (un hiperplan n spaiul de


decizie cu n dimensiuni de la intrare) care njumtete spaiul.
Rosenblast a dezvoltat o tehnic de nvare pentru determinarea ponderilor i pragului
ntr-un perceptron dndu-se un set de modele de antrenament.
De observat c nvarea apare numai atunci cnd perceptronul face o eroare.
Rossenblat a dovedit c atunci cnd modelele de antrenament provin din dou clase liniare
separabile procedura de nvare a perceptronului converge dup un numr finit de pai.
Aceasta este teorema de convergen a perceptronului. n practic nu se cunoate dac
modelele sunt separabile din punct de vedere liniar. Important este c un perceptron cu un
singur nivel poate s separe doar modele separabile din punct de vedere liniar atta timp ct
este folosit o funcie monoton de activare.
132
Algoritmul de nvare back-propagation se bazeaz tot pe principiul coreciei
erorilor.
Algoritmul de nvare al perceptronului
1. Se iniializeaz ponderile i valoarea pragului cu numere mici aleatoare;
2. Alegei un vector X=(x
1
, x
2
,...,x
n
) i evaluai ieirea neuronului;
3. actualizai ponderile conform cu W
j
(t+1)=W
j
(t)+n(d-y)X
j
unde d este ieirea
dorit, t este numrul iteraiei iar n (0<n<1) este ctigul (mrimea pasului).
6.4.3.2 nvarea de tip Boltzman.
Mainile Boltzman sunt reele recurente simetrice formate din uniti binare (+1 pentru
on i -1 pentru off). Prin simetrie se nelege c ponderea conexiunii de la i la j este egal
cu ponderea conexiunii de la j la i (W
ij
=W
ji
). Un subset de neuroni vizibili interacioneaz cu
mediul n timp ce ceilali, ascuni nu interacioneaz cu mediul. Fiecare neuron este o unitate
stochastic care genereaz o ieire sau stare conform cu distribuia Boltzman a mecanicii
statistice. Mainile Boltzman opereaz n dou moduri: fix, n care neuronii vizibili sunt
stabilii n stri specifice determinate de mediu iar cel de-al doilea mod liber, n care att
neuronii vizibili ct i cei ascuni opereaz liber.
nvarea de tip Boltzmann este o regul de nvare stocastic derivat din teoria
informaiei i din principiile termodinamice. Obiectivul nvarii de tip Boltzmann este
ajustarea ponderilor conexiunilor aa nct strile unitilor vizibile satisfac o anumit
distribuie a probabilitii dorit. n conformitate cu regulile de nvare Boltzmann
schimbarea ponderii W
ij
a unei conexiuni este dat de:
*( ` )
ij ij ij
W n P P A =
unde n este rata de nvare iar
'
ij
P i P
ij
sunt corelaii ntre strile unitilor i i j unde reelele
opereaz n modul fix respectiv n modul liber. Valorile lui
'
ij
P i P
ij
sunt de obicei estimate
din experimentele Monte Carlo care ns sunt extreme de ncete.
nvarea de tip Boltzmann poate fi vzut ca un caz special al nvarii prin corecia
erorii n care eroarea este msurat nu ca diferen direct ntre corelaiile dintre ieirile dorite
i cele actuale, dar ca diferen ntre corelaii dintre ieirile a doi neuroni n condiii de operare
fix i liber.
6.4.3.3 Postulatul de nvare al lui Hebb.
Cea mai veche regul de nvare este postulatul de nvare al lui Hebb care se
bazeaz pe urmtoarea observaie din experimentele neurobiologice: Dac neuronii din
ambele pri ale unei sinapse sunt activai sincron i repetat puterea sinapsei este mrit
selectiv.
Matematic regula Hebbian poate fi descris ca:
W
ij
(t+1)=W
ij
(t)+nY
i
(t)X
i
(t).
Unde X
i
i Y
i
sunt valorile de ieire ale neuronilor i i j care sunt conectai de sinapsa
W
ij
iar n este rata de nvare. De observat c X
i
este intrarea n sinaps.
O proprietate important a acestei reguli este c nvarea se face local, aceasta
nseamn c schimbarea n ponderea sinapsei depinde numai de activitatea celor doi neuroni
133
conectai de aceasta. Aceasta simplific semnificativ complexitatea circuitului de nvare
ntr-o implementare VLSI.
6.4.3.4 Reguli de nvare competitive.
Spre deosebire de nvarea hebbian (n care mai multe uniti de ieire pot fi
sincronizate) unitile de ieire de nvare competitiv concureaz ntre ele pentru activare,
aa nct numai o unitate de ieire este activ la un anumit moment dat. Acest fenomen este
cunoscut ca ctigtorul ia totul De remarcat c s-a descoperit c nvarea competitiv
exist n reelele neurale biologice.
nvarea competitiv de obicei grupeaz sau categorisete datele de intrare. Modelele
similare sunt grupate de ctre reea i reprezentate printr-o singur unitate. Gruparea se face
automat bazndu-se pe corelaia datelor.
Cea mai simpl reea de nvare competitiv const ntr-un singur nivel de uniti de
ieire precum este expus n figura de mai jos.
Figura 6.9. Un model de clasificare a reelelor neuronale
Fiecare unitate de ieire i din reea se conecteaz la toate unitile de intrare
'
j
X S prin
ponderile W
ij
, j=1,2,...,n. Fiecare unitate de ieire se conecteaz de asemenea ctre toate
celelalte ieiri prin ponderi inhibitoare dar are un feedback propriu cu o pondere excitant. Ca
rezultat al competiiei numai unitatea
'
i cu cea mai mare sau cea mai mic intrare de reea
devine ctigtoare, asta nseamn c
' i
i
W X W X > , i sau ||W
i
-X|| s ||W
i
-X|| i . Cnd toi
vectorii ponderilor sunt normalizai cele dou inegaliti devin echivalente. O regul simpl de
nvare competitiv poate fi formulat astfel:
( ' ), pentru '.
0, pentru '
u
ij
n Xj Wi j i i
W
i i
=
A =

=

134
De observat c numai ponderile unitii ctigtoare sunt actualizate.
Efectul acestei reguli de nvare este de a muta modelul stocat n unitatea ctigtoare
(ponderile unitii) un pic mai aproape de modelul de intrare.
Figura 6.10. Un exemplu de nvare competitiv
a) nainte de nvare b) dup nvare
Figura de mai sus demonstreaz o interpretare geometric a nvrii competitive. n
acest exemplu presupunem c toi vectorii de intrare au fost normalizai i au lungimea
unitate. Acetia sunt nfiai ca puncte negre n Figura 6.10. Vectorii pondere ai celor trei
uniti sunt iniializai aleatoriu. Poziiile lor iniiale i finale pe sfer dup nvarea
competitiv sunt marcate cu X n figurile 6.10.a. i 6.10.b.. n figura 6.10. fiecare din cele trei
grupuri naturale de modele au fost descoperite de o unitete de ieire al crei vector pondere
pointeaz ctre centrul de greutate al grupului descoperit.
Se poate vedea din regulile de nvare competitiv c reeaua nu se va opri din nvat
(actualizarea ponderilor) dect dac rata de nvare n este 0. un anumit model de intrare poate
provoca diferite uniti de ieire la diferite iteraii n timpul nvrii. Aceasta aduce n vedere
problema stabilitii unui sistem de nvare. Se zice c sistemul este stabil dac nici un model
din datele de antrenament dup un numr finit de iteraii de nvare. O modalitate de a atinge
stabilitatea este de a fora rata de nvare s descreasc gradual la 0 pe parcursul procesului de
nvare. ns aceast ngheare artificial a nvrii cauzeaz alt problem denumit
plasticitate , care reprezint abilitatea de a se adapta la date noi. Acest lucru este cunoscut ca
dilema stabilitii-plasticitii n nvarea competitiv
6.4.3.5 Algoritmul de propagare napoi (backpropagation).
Unul dintre cei mai utilizai algoritmi de nvare este algoritmul de propagare napoi
(backpropagation). Este un algoritm supervizat, aplicat n special reelelor feedfoward (n care
nu exist conexiuni ntre rezultatul furnizat de un neuron i un alt neuron situat pe acelai
nivel sau pe un nivel anterior).
135
Forma cea mai general a algoritmului:
Iniializarea ponderilor (valori mici, aleatoare)
ATTA -TIMP ct eroarea se afl peste pragul minim
PENTRU fiecare pereche de antrenament
{prezentarea valorilor de intrare i propagarea fluxului de activare
nivel cu nivel pn la nivelul de ieire calculul erorii pe baza
ieirii obinute i celei dorite i propagarea ei napoi
nivel cu nivel ajustndu-se ponderile n scopul minimizrii erorii}
SFRIT-ATTA-TIMP.
Procesul de nvare const n aplicarea efectiv a algoritmului de nvare, n scopul
ajustrii ponderilor reelei. Algoritmul backpropagation este cel mai cunoscut i utilizat
algoritm de nvare supervizat. Numit i algoritmul delta generalizat deoarece extinde
modalitatea de antrenare a reelei adaline (regula delta), el se bazeaz pe minimizarea
diferenei dintre ieirea dorit i ieirea real, tot prin metoda gradientului descendent
(gradientul ne spune cum variaz o funcie n diferite direcii).
Metoda a fost propus pentru prima dat de Bryson i Ho (1969), dar atunci a fost
practic ignorat, deoarece presupunea un volum de calcule prea mare pentru vremea
respectiv. A fost redescoperit apoi de Werbos (1974), ns abia la mijlocul anilor 80 a fost
lansat de Rumelhart, Hinton i Williams (1986) ca instrument general acceptat de antrenare a
perceptronului multistrat. Ideea de baz este gsirea minimului funciei de eroare e(w) n
raport cu ponderile conexiunilor.
6.4..4. Testarea reelei.
n aceast etap, se evalueaz performanele reelei prin aplicarea ponderilor obinute
asupra datelor de testare, urmrindu-se corecta clasificare a acestora. De cele mai multe
ori, este suficient atingerea unui anumit nivel al performanei, nefiind necesar ca reeaua s
funcioneze perfect.
Implementarea reelei necesit de regul asigurarea unei interfee adecvate cu
celelalte aplicaii informatice i o pregtire corespunztoare a utilizatorilor. De asemenea,
trebuie realizate actualizri ale datelor de antrenament i reluri periodice ale procesului de
nvare, pentru a include noile situaii care apar n urma utilizrii frecvente a reelei, precum
i reevaluri ale performanelor acesteia.
6.5. Avantaje i limite ale reelelor neuronale artificiale.
Reelele neuronale artificiale sunt utilizate cu succes n rezolvarea unor probleme
complexe care presupun recunoaterea modelelor, nvarea, clasificarea, generalizarea i
abstractizarea, interpretarea unor informaii incomplete sau irelevante. Reelele neuronale, ca
sisteme care nva, constituie interfee mult mai naturale cu lumea reala dect sistemele
care trebuie programate. Ele prezint avantajul potenial de a utiliza caracteristici umane n
rezolvarea unor probleme dificil de simulat cu ajutorul tehnicilor logice, analitice ale
sistemelor expert sau cu ajutorul, altor tehnici convenionale. De exemplu, reelele
neuronale pot analiza mari cantiti de date pentru a stabili modele i caracteristici n
situaii n care nu exist reguli cunoscute.
De asemenea, reelele neuronale au i capacitatea de a generaliza, oferind soluii
corecte i n cazul unor intrri incomplete, diferite fa de cele cu care au fost antrenate. Ele
136
generalizeaz automat ca urmare a structurii lor, i nu pe baza unui program special creat n
acest scop.
Adaptabilitatea este o alt caracteristic a reelelor neuronale, ele fiind capabile s
nvee i n cadrul unor medii noi, s ia decizii sau s trag concluzii cnd sunt confruntate
cu informaii complexe, irelevante sau pariale.
Un alt avantaj l constituie posibilitatea de a obine aproape instantaneu soluia unei
probleme (pentru anumite tipuri de reele), fiind suficient n acest scop o simpl parcurgere a
reelei.
n ceea ce privete limitele reelelor neuronale, ele nu constituie o alternativ
eficient n domeniile consacrate tehnologiilor convenionale .
Reelele neuronale nu ofer posibilitatea justificrii soluiilor obinute (ca n cazul
sistemelor expert), deoarece ajustarea ponderilor nu ofer interpretri facile, iar n ceea
ce privete recunoaterea modelelor este foarte dificil s explici logica din spatele deciziilor.
Procesarea neuronal necesit cantiti mari de date de testare i pregtire i n
unele cazuri timpul de antrenare poate deveni excesiv.
Cu toate aceste limite, reelele neuronale sunt privite din ce n ce mai mult ca o soluie
pertinent pentru tot mai multe tipuri de aplicaii, innd cont i de raportul favorabil
performane/complexitate, care este n continu cretere, fiind mult mai mare dect cel al
sistemelor inteligenei artificiale implementate cu ajutorul altor tehnologii. Procesarea
neuronal constituie o alternativ pentru celelalte tehnologii ale inteligenei artificiale n
domeniile n care datele sunt variate, incomplete, prezentnd un nalt grad de
interdependen sau n care diverse ipoteze trebuie evaluate simultan. Nu trebuie ignorat
nici posibilitatea combinrii acestei tehnologii cu alte aplicaii soft (sisteme expert, baze de
date) n scopul realizrii unor sisteme hibrid pentru automatizarea rezolvrii unor probleme
complexe.
6.6. Reelele neuronale versus sistemele expert.
Att reelele neuronale, ct i sistemele expert constituie aplicaii ale inteligenei
artificiale i nu trebuie privite ca tehnologii care se afl n competiie, chiar dac n anumite
cazuri utilizarea reelele neuronale se poate dovedi mai eficient comparativ cu sistemele
expert. Mai mult dect att, caracteristicile celor doua tehnologii sunt att de diferite, nct ele
se pot completa una pe alta n anumite situaii. n timp ce sistemele expert presupun o
abordare logic, simbolic reelele neuronale utilizeaz procese numerice, asociative n scopul
imitrii modelelor sistemelor biologice.
Reelele neuronale pot constitui o alternativ n reprezentarea cunotinelor n cadrul
unui sistem expert, principalul dezavantaj constituindu-1 n acest caz opacitatea acestui
formalism, cunotiinele fiind reprezentate ntr-o maniera implicit.
Un domeniu n care reelele neuronale pot fi mult mai bine utilizate l constituie
achiziionarea cunotinelor pentru un sistem expert. Cercetrile privind psihologia cunoaterii
i a comunicrii au confirmat ideea conform creia nvarea este necesar nu doar pentru a
interpreta faptele, ci i pentru a le percepe. De asemenea, practica realizrii sistemelor expert
a demonstrat c achiziionarea cunotinelor reprezint una din problemele cele mai delicate n
cadrul acestui proces. Pe de o parte, expertul uman ntmpin serioase dificulti n
exprimarea cunotinelor sale n termeni uor de exploatat. Pe de alt parte, structurarea
cunotinelor devine o sarcin tot mai dificil pentru cognitician, mai ales atunci cnd acestea
au un caracter evolutiv, fiind necesare numeroase revizuiri ale bazei de reguli.
137
Caracteristici Sisteme expert Reele neuronale
Abordare simbolic numeric
Raionament logic asociativ
Operaii mecanice biologice
Explicaii da nu
Procesare secvenial paralel
Sistem nchis autoorganizare
Validare i verificare dificil rapid
Prelucreaz cunotiine date
Meninere dificil facil
Figura 6.11. Caracteristicile principale ale celor dou tehnologii
Reeaua neuronal poate fi utilizat n scopul identificrii rapide a cunotinelor
implicite prin analizarea unor date istorice n situaiile n care regulile nu pot fi determinate
direct sau n care aceast operaie ar necesita prea mult timp. Reeaua neuronal analizeaz
datele n scopul identificrii unor modele i relaii care pot constitui reguli n cadrul
sistemului expert. Aceasta poate fi utilizat ca tehnic singular n achiziionarea
cunotinelor sau poate aduga un numr de reguli explicite derivate din utilizarea unor alte
tehnici ( metoda interviului sau inducia automata).
Deasemenea, reelele neuronale pot contribui la achiziionarea cunotinelor n
cazurile n care interfaa cu expertul uman este completat cu un modul expert care pune
ntrebri i direcioneaz informaiile obinute ntr-un mod eficient i clar. Reeaua neuronal
poate prelucra rapid aceste informaii n scopul obinerii unor consecine i fapte asociate,
analizate de un modul expert n scopul obinerii de noi rezultate. Vor fi astfel necesare mai
puine reguli explicite, de vreme ce reeaua conine cunotine generale i este capabil s
produc cunotine specifice, relevante pentru problema definit de utilizator.
6.7. Aplicaii ale reelelor neuronale.
Reelele neuronale sunt dedicate rezolvrii problemelor care presupun recunoaterea
unor modele, nvarea, clasificarea, generalizarea i abstractizarea, interpretarea unor date
incomplete i irelevante. Domeniile lor de aplicaie nu se suprapun cu cele ale tehnicilor
convenionale sau ale celorlalte tehnologii ale inteligenei artificiale. Principalele aplicaii
ale reelelor neuronale sunt urmtoarele.
Recunoaterea modelelor. Reelele neuronale sunt capabile s recunoasc forme,
culori, dimensiuni, sunete. O prim aplicaie a reelelor neuronale a fost recunoaterea
caracterelor, dezvoltndu-se sisteme automate pentru trierea scrisorilor. S-au dezvoltat multe
aplicaii i n domeniul recunoaterii i sintezei sistemului vocal. Aplicaia de recunoatere a
modelelor reprezint corelarea unui simbol de intrare precum o form de und sau un simbol
scris, sau reprezentat de un vector caracteristic ctre una sau mai multe clase.
Clustering-categorizarea. Clusterizarea cunoscut ca i clasificarea
nesupravegheat a modelelor nu exist date de antrenament care provin din clase
cunoscute. Un algoritm de clusterizare exploreaz similaritile dintre modele i
plaseaz modelele similare ntr-un cluster. Aplicaiile binecunoscute de clusterizare
includ data mining, data compresion i analiza datelor prin explorare.
Aproximarea unei funcii. Presupunnd c avem un set de date de antrenament
(perechi intrare-ieire) {(x
1
,y
1
), (x
2
,y
2
), , (x
n
,y
n
)} care au fost generate de o funcie
necunoscut u(x) afectat de parazii. Scopul aproximrii funciei este gsirea unei
138
aproximri a funciei necunoscute. Diverse probleme de modelare tiinific necesit
aproximarea funciilor.
Predicie. Fiind dat un set de n valori {y(t
1
), y(t
2
), , y(t
n
)} ntr-o secven de
timp de la t
1
la t
n
, se cere prezicerea valorii y(t
n+1
) la momentul t
n+1
. Predicia are un
impact semnificativ n luarea deciziilor n afaceri i tiin.
Optimizare. O mare varietate de probleme n tiin matematic medicin,
economie pot fi considerate probleme de optimizare. Scopul unui algoritm de
optimizare este de a gsi soluii care s satisfac un set de constrngeri aa nct o
funcie obiectiv s fie maximizat sau minimizat. Un exemplu clasic l reprezint
problema comis voiajorului.
Memorie adresabil pe baza coninutului. n modelul computaional von
Neumann o locaie de memorie este accesat numai prin adresa acesteia care este
independent de coninutul acesteia. Mai mult dac se face o mic eroare n calculul
adresei de memorie se va accesa un element total diferit. Memoria asociativ sau
memoria adresabil prin coninut precum reiese chiar din nume poate fi adresat prin
coninut. Coninutul memoriei poate fi obinut chiar prin introducerea unor date de
intrare incomplete sau distorsionate. Memoria asociativ este foarte util n construirea
bazelor de date cu informaii multimedia.
Control. S considerm un sistem dinamic definit prin perechea {u(t), y(t)} unde u(t)
este intrarea de control iar y(t) este ieirea corespunztoare a sistemului la momentul t. n
modelul de referin adaptive-control scopul este generarea intrrii de control u(t) astfel nct
sistemul s urmeze traiectoria dorit determinat de modelul referin. Un exemplu este
controlul vitezei de relanti al unui motor.
Alte aplicaii ale reelelor neuronale. Deoarece reelele neuronale sunt cele mai bune
n identificarea abloanelor sau a tendinelor n date, ele sunt folosite pentru predicii sau
estimri n: estimarea vnzrilor, controlul proceselor industriale, cutarea clienilor sau a
pieelor de desfacere, validarea datelor, managementul riscului, prospectarea pieii.
Reelele neuronale sunt folosite i n alte domenii importante ca: recunoaterea vocii,
diagnosticarea bolilor, recuperarea unei convorbiri din cauza unui soft defect, interpretarea
sensurilor multiple ale cuvintelor chinezeti, detectarea minelor marine, analiza textelor,
recunoaterea obiectelor tri-dimensionale, recunoaterea scrisului de mn, recunoaterea
amprentelor, recunoaterea feei.
Reelele neuronale n medicin. n domeniul medicinei exist aplicaii privind:
modelarea corpului uman, identificarea maladiilor din diferite explorri (EKG, RMN, ECO),
aplicaii n sistemele biomedicale, modelarea i dignosticul sistemului cardiovascular,
poteniale aplicaii n telemedicin.
O aplicaie ce dateaz din anii 80 este numit "instant physician" antrenat printr-o
reea neuronal cu memorie asociativ pentru a memora un numr mare de de nregistrri
medicale fiecare din acestea incluznd informaii despre simptome, diagnostice i tratamente
pentru diverse cazuri particulare. Dup antrenament i se prezint reelei ca intrare un caz
printr-un set de simptome; ea va cuta cel mai adecvat ablon memorat care s reprezinte " cel
mai bun" diagnostic i tratament.
Reelele neuronale n afaceri. n afaceri reelele neuronale i gsesc aplicarea n:
analize financiare, planificarea i alocarea resurselor, exploatarea bazelor de date prin
intermediul unor abloane, marketing (spre exemplu, marketingul controlului rezervrii
locurilor pentru companiile aeriene), evaluarea creditelor.
139
6.8. Direcii de cercetare n cadrul reelelor neurale.
n ultimii ani au fost aduse multe contribuii care arat ce probleme pot fi rezolvate n
principiu de ctre reelele neurale. Susinerea plauzibilitii biologice a fost treptat abandonat
n favoarea reelelor care rezolvau anumite probleme.
Optimizarea proiectrii re elelor neurale. Proiectarea unei reele neurale fcut n
funcie de nivelul de cunoatere al proiectantului nu mai reprezint o situaie satisfctoare.
De asemenea ar trebui observat c n cele mai multe aplicaii curente componenta neural
const ntr-un singur sau ntr-un numr mic de module neurale de obicei de mrime i
complexitate moderat. Este surprinztor cum sisteme aa mici pot s ndeplineasc cu succes
sarcini complicate. Putem astfel s apreciem la ce ne putem atepta dac reuim s nelegem
i s folosim sisteme neurale mai aproape de nivelul de complexitate pe care-l observm chiar
la sistemele neurale biologice simple. Exist 3 metode care abordeaz aceast problem.
Algoritmi genetici i evolu ioniti care pot fi folosii pentru antrenarea reelei dar i
pentru a evolua structuri de reele din populaii de reele.
Abordri incrementale n care se pornete cu reele foarte mici care cresc pn este
ndeplinit un criteriu anume
Abordri de reducere metode opuse celei de deasupra, precum neuro-chirurgia
optim n care ponderile sau nodurile care nu sunt necesare sunt eliminate dintr-o reea
iniial supradimensionat.
Observa ie. Dezvoltarea de sisteme hibride dei mai multe proiecte pot fi transformate
cu succes n aplicaii, numrul de reele neurale folosite n aplicaii este mic. De obicei
folosirea reelelor neurale nu conduce la mbuntiri substaniale a performanelor aa nct
nu trebuie abandonate tehnicile folosite n prezent. Aadar dac dorim aplicaii practice
trebuie s acceptm c reelele neurale sunt folosite numai pentru rezolvarea sarcinilor
complexe. Din moment ce exist o lips de metode pentru antrenarea sistemelor mari,
problemele trebuie descompuse n pri mai mici. De fiecare dat cnd exist cunotine
explicite sau metode exacte acestea trebuie folosite pentru a reduce complexitatea. De fiecare
dat cnd descompunerea este prea complex sau nu sunt disponibile cunotine exacte despre
procesul de baz, reelele neurale trebuie luate n calcul, lucru care necesit o strns
cooperare ntre experi din diverse domenii.
n concluzie, lumea computerelor are avantaje imense din folosirea reelelor neuronale.
Abilitatea reelei de a nva din exemple o face foarte flexibil i puternic. Reelele
neuronale au contribiii importante i n alte domenii de cercetare cum ar fi neurologia i
psihologia.Exist diferite aplicaii privind modelarea comportamentelor organismelor vii i
investigarea mecanismelor interne ale creierului uman. Reelele neuronale i dovedesc n
principal utilitatea n rezolvarea unor probleme dificile, cum sunt cele de estimare, identificare
i predicie sau de optimizare complex. Datorit independenei efecturii operaiilor din
interiorul componentelor fa de celelalte componente din sistem, modelele conexioniste au
un potenial mare de paralelism. Modul de memorare i procesare a datelor difereniaz
reelele neuronale artificiale de programele clasice, care urmeaz instruciunile ntr-o ordine
secvenial predefinit, iar informaia este memorat n zone bine definite. Datorit capacitii
lor de a rezolva probleme complexe pe baza unei mulimi consistente de exemple, sistemele
conexioniste au un spectru larg de aplicabilitate: de la sisteme de recunoatere de forme
(caractere, semnturi, etc.) sau de semnale sonore, pn la sisteme pentru controlul unor
procese complexe, cum ar fi sistemele de auto-reglare sau piloii automai.
140
6.9. Exerci ii.
A. EXERCI II REZOLVATE.
Exerciiul 1. Exemplu de aplcare a metodelor de nvare la jocul de cri.
Trebuie s se afle care este prima ntrebare ce poate fi pus, avnd n vedere c
conceptul int n domeniul crilor este crile negre impare sau 2v. Caracteristicile despre
care se pot pune ntrebri sunt culoarea, paritatea, sau orice rang. Se iau n considerare doar
dou posibile ntrebri: Cartea este roie? i Este cartea trei? Dac se ntreb despre culoare,
exist ansa de 50% ca s fie roie i 50% s fie neagr. Deci relaia (5.13), paragraful 5.2.1.4.
devine:
neagra rosie
V V culoare
I I G 5 . 0 5 . 0 + = (5.14)
Din cele douzeci i sase de cri roii, una (2v) este n clasa inta i celelalte douzeci
i cinci nu sunt. Deci, valoarea adiional a informaiei despre apartenena lui x la T este dat
de:
235 . 0
26
25
log
26
25
26
1
log
26
1
= =
rosie
V
I
Din cele douzeci i sase de cri negre, paisprezece (cele impare) sunt n T i
dousprezece nu sunt. Deci:
996 . 0
26
12
log
26
12
26
14
log
26
14
= =
neagra
V
I
Combinnd aceste doua relaii cu (5.14) rezult:
615 . 0 =
culoare
G
n cazul n care se ntreab dac o carte este un 3, relaia (5.14) devine:
G I
V
I
V 3
1
13
3
12
13 3
= +

Din cele patru cri de 3, dou (cele negre) sunt n T, iar celelalte dou nu sunt.
Aceasta nseamn c 1
3
=
V
I . Din cele 48 de cri care nu sunt 3, treisprezece sunt n set (12
cri negre impare ramase plus 2v) i restul nu sunt. Aceasta conduce la 843 . 0
3
=

I , deci:
855 . 0
3
= G
i rezult din aceasta c ntrebnd despre culoare este mai eficient dect ntrebnd dac o carte
este un 3. Acest lucru este normal deoarece - ntrebnd despre culoare se parcurge un drum
141
lung pn la decizia dac o carte este neagr impar, n timp ce ntrebarea dac este un 3?
este chiar fr sens.
Exerciiul 2. Exemplu de simulare a unui neuron arttificial.
Un model simplificat de neuron artificial poate fi uor simulat printr-un model ca n
figura 2.2..
Fig.2.2. Modelul neuronului artificial
Dendritele sunt reprezentate prin sgeile de intrare i variabilele x
i
care reprezint
prezena ( ( ) 1
i
x t = ) sau absena ( ( ) 0
i
x t = ) pulsului de antrenare pe fibra i la momentul t.
Fiecare neuron artificial are o singur ieire reprezentnd axonul neuronului i prezena sau
absena pulsului de antrenare la un axon este prezentat prin valorile 1 sau 0 a variabilei ( ) y t .
Exist o linie de intrare special cu o constant de intrare
0
1 x = , i o pondere
0
w . Aceast
constant de intrare
0
1 x = i ponderea
0
w realizeaz un prag egal cu
0
w . Cnd suma
ponderat a semnalelor de intrare este mai mare dect pragul
0
T w = ieirea y va deveni 1.
0
1
1, daca
0, in celelalte cazuri
n
i i
i
w x w
y
=

>

(1)
142
Exerciiul 3.
Fie urmtoarea schem electric (care poate fi o reprezentare electonic a neuronului
artificial) n care ieirea este un tranzistor.
Tranzistorul va fi deschis dac:
1 2
1 2
s
T
U E E
R R R
+ > (2)
S se reprezinte aceast schem ca o reea neuronal cu alegerea valorilor n
conformitate cu exerciiul 2.
Rezolvare.
Alegem intrrile
1 1
x E = i
2 2
x E = iar ponderea
0
s
T
U
w
R
= i atunci lund ponderile
1
1
1
w
R
= i
2
2
1
w
R
= condiia (2) de funcionare a tranzistorului dat n enun devine
1 1 2 2 0
w x w x w + >
ceea ce asigur faptul c tranzistorul va fi deschis.
Exerciiul 4.
S se reprezinte sub forma unei reele neuronale urmtoarea fraz Ion va merge
afar la plimbare dac i numai dac soarele strlucete sau dac este frig iar vntul bate
spre vest folosind reprezentarea predicativ a frazei.
Rezolvare.
Predicatul Ion va merge afar la plimbare va fi adevrat dac condiiile menionate
vor fi adevrate. Vom reprezenta n valorile de adevr, ADEVRAT i respectiv FALS, prin
1 i respectiv 0. Vom reprezenta de asemenea n valorea de adevr a propoziiei soarele
strlucete prin variabila
1
x , valorea de adevr a propoziiei este frig prin variabila
2
x i
valorea de adevr a propoziiei vntul bate spre vest prin variabila
3
x i nsfrit valorea
de adevr a propoziiei Ion va merge afar la plimbare prin variabila y . Cu aceste notaii
putem enumera toate situaiile posibile printr-un tabel de adevr dup cum urmeaz:
143
Tabelul 2.1.
Dac considerm valorile lui
1
x ,
2
x i
3
x ca intrri ale unui neuron artificial simplu i
y caieirea sa, atunci putem selecta ponderile
0
w ,
1
w ,
2
w i
3
w astfel nct acest neuron s
indice la ieire valorile de adevr posibile ale propoziiei Ion va merge afar la plimbare
iar reprezentarea neuronal va fi urmtoarea:
0
1 x =
1
x
0
w
1
w
2
x
2
w
y
3
w
3
x
Precizm c exist metode analitice sau metode prin nvare care determin valorile
apropiate ale ponderilor.
144
Exerciiul 5.
Fie o funcie specificat prin tabela de adevr urmtoare.
Tabelul 5
S se obin expresia funciei prag
0 1 1 2 2 3 3
( ) y S w w x w x w x = + + + i s se reprezinte sub
form de reea neuronal funcia obinut.
Rezolvare:
innd seama de relaia (1), exerciiul 2, este clar c
0
0
1
0, pentru 0
0, pentru 1
n
i i
i
w y
w x w y
=
s =

+ > =

(3)
i atunci din tabelul 2.4.obinem urmtoarele inegaliti:
0
0 3
0 2
0 2 3
0 1
0 1 3
0 1 2
(1). 0
(2). 0
(3). 0
(4). 0
(5). 0
(6). 0
(7). 0
w
w w
w w
w w w
w w
w w w
w w w
s
+ s
+ s
+ + >
+ >
+ + >
+ + >
0 1 2 3
(8). 0 w w w w

+ + + >

(4)
Din (1) i (4) deducem c
2 3
0 w w + > . Lund
2
1 w = i
3
1 w = atunci din (2) i (3)
deducem
0
1 w s . Lum
0
1 w = i din (5) putem lua
1
2 w = . Cu aceast alegere a
ponderilor toate inegalitile sunt satisfcute i obinem urmtoarea funcie prag funciei prag
1 2 3
( 1 2 ) y S x x x = + + + .
Modelul de reea neuronal corespunztor acestei alegeri a ponderilor este urmtorul:
145
Pentru acest exemplu este clar c exist, evident cu respectarea resticiilor impuse de
inegalitile (4), mai multe de posibiliti de alegere a setului de ponderi
0 1 2 3
( , , , ) w w w w .
Spre exemplu o alegere
0 1 2 3
( 2, 4, 2, 2) w w w w = = = = i
iar alta ar fi
0 1 2 3
( 1, 4, 1, 1) w w w w = = = = .
B. TEMA DE CONTROL.
Exerciiul 1.
Considerm funcia logic
1 2 3
( , , ) y f x x x = definit prin 1 y = dac numrul de 1 n
lista argumentelor este impar i 0 y = n sens contrar. Aceast funcie este cunoscut ca
problema paritii i este specificat n tabelul urmtor:
146
S se precizece dac exist o funcie prag de forma
0 1 1 2 2 3 3
( ) y S w w x w x w x = + + +
care s rezolve problema paritii i n caz afirmativ s se reprezinte reeaua neuronal
corespunztoare.
Exerciiul 2.
Considerm funcia boolean
1 2
1 2
1 2
1,
( , )
0,
daca x x
f x x
daca x x
=
=

=

(5)
Tabelul valorilor de adevr pentru aceast funcie este:
S se precizece dac exist o funcie prag de forma
0 1 1 2 2
( ) y S w w x w x = + + care s
rezolve problema acestei funcii i n caz afirmativ s se reprezinte reeaua neuronal
corespunztoare.
Exerciiul 3.
Fie funcia boolean disjuncie
1 2 1 2
( , ) f x x x x = v
al crui tabel de adevr este urmtorul:
S se precizece dac exist o funcie prag de forma
0 1 1 2 2
( ) y S w w x w x = + + care s rezolve
problema acestei funcii i n caz afirmativ s se reprezinte reeaua neuronal corespunztoare.
147
6.10. BIBLIOGRAFIE RECOMANDAT LA MODULUL 3:
1. Podaru Vasile, Inteligen artificial i siteme expert, Editura Academiei
Tehnice Militare, 1997
2. Podaru Vasile, Barnoschi Adriana, Sisteme expert, Editura Academiei
Tehnice Militare, 2000, 2004.
3. Ioan Georgescu, Elemente de inteligen artificial, Editura Academiei RSR,
1985.
4. Podaru Vasile, Inteligen artificial, curs n format electronic, CD-
nvmnt la distan, Universitatea Titu Maiorescu, 2010.
5. D. Crstoiu, Sisteme expert, editura ALL, 1994.
6. SICSTUS PROLOG USERS MANUAL. Intelligent Systems Laboratory,
Sweedish Institute of Computer Science:
http://www.sics.se/isl/sicstuswww/site/documentation.html
7. M. Malia, Bazele inteligenei artificiale, editura Academiei Romne, 1988.
UNIVERSITATEA TITU MAIORESCU
Facultatea de INFORMATIC
Prof. univ. dr.
VASILE PODARU
Curs pentru nv mntul la distan
BUCURETI 2011
149
UNIVERSITATEA Titu MAIORESCU Bucureti
Facultatea de Informatic
nvmnt la Distan
INTELIGEN ARTIFICIAL
Inteligena artificial este una din disciplinele de pregtire fundamental care, pentru
profilul INFORMATIC, este esenial pentru pregtirea studenilor i pentru obinerea
creditelor transferabile prin procedurile de evaluare. Modul de prezentare a acestui material are n
vedere particularitile nvmntului la distan, la care studiul individual este determinant.
Pentru orice nelmuriri fa de acest material v rugm s contactai tutorele de disciplin care
are datoria s v ajute oferindu-v toate explicaiile necesare.
Disciplina de Inteligena artificial i propune urmtoarele obiective specifice:
nsuirea noiunilor fundamentale din domeniile Inteligenei artificiale.
Formarea deprinderilor de modelare matematic i de transpunere n programare a unor
probleme de natur tehnic, social sau economic, cu utilizarea cunotinelor nsuite.
Formarea i dezvoltarea aptitudinilor i deprinderilor de analiz logic, formulare corect
i argumentare fundamentat, n rezolvarea problemelor tehnico-economice i de
specialitatecu cu utilizarea cunotinelor nsuite prin intermediul metodelor i modelelor
specifice inteligenei artificiale;
Insusirea principiilor generale ale programarii logice si insusirea limbajului Prolog;
O comparaie critic a metodelor de rezolvare evideniind, eventual, calea optim de
soluionare.
Accentul se va pune pe problemele de cautare si reprezentare a cunostintelor si respectiv
pe programarea logica, limbajul de programare utilizat la laborator fiind limbajul Prolog.
Cursul trebuie sa trateze aspecte ale rezolvarii problemelor prin intermediul cautarii,
descriind cele mai importante tehnici de cautare informata si neinformata. Se vor da
exmple de aplicatii ale cautarii, cum ar fi jocurile, tratate ca probleme de cautare. Se vor
prezenta principalele tipuri de cunostinte si principalele metode de reprezentare a
cunostintelor. Se va face legatura dintre reprezentarea cunostintelor si sistemele expert. Se
va da un exemplu de sistem expert cu implementare in Prolog. Vor mai fi tratate, ca
modalitati de reprezentare a cunostintelor, retelele semantice si retelele Bayesiene (cu
introducerea rationamentului statistic).
V precizm de asemenea c, din punct de vedere al verificrilor i al notrii (elemente ce
vor fi comunicate i prin fia disciplinei, calendarul disciplinei i programarea orar), cu adevrat
important este capacitatea pe care trebuie s o dobndii i s o probai de a rezolva toat
tipologia de probleme aplicative aferente materialului teoretic prezentat n continuare. De aceea
v recomandm s parcurgei cu atenie toate aplicaiile rezolvate, s rezolvai aplicaiile propuse
prin testele de autoevaluare i temele de control (pentru fiecare modul n parte trebuie s predai
tutorelui de disciplin rezolvarea acestor teme, pentru verificare i evaluare); fii convini c
examenul final apeleaz la tipurile de aplicaii prezente n seciunile menionate anterior.
Timpul mediu necesar nsuirii noiunilor teoretice, formrii deprinderilor de calcul i
utilizrii metodelor de rezolvare a problemelor specifice acestui modul este estimat la
aproximativ 6-8 ore pentru ntregul modul , ntr-un ritm de 3-4 ore pentru fiecare din cele dou
uniti ale modulului.
150
ntru-ct modulul este privit ca un tot unitar exerciiile aferente acestui modul se gsesc la
sfritul acestui modul. La terminarea parcurgerii acestui modul studenii trebuie s prezinte
tutorelui de disciplin rezolvarea temei de control propus spre rezolvare la sfritul modulului.
Cursul se finalizeaz prin examen care const din:
1) o lucrare scris sub forma de text grila constnd din 9-18 subiecte (ponderea lucrrii
scrise este de 70% din nota final);
2) rezolvarea corect a temelor de control din cele 4 module (minimum nota 5 pentru
fiecare tem, ponderea mediei celor 5 note n nota final este de 20%);
3) participarea activ la activitile tutoriale (apreciat printr-o not a crei pondere in
nota final este de 10%).
Coordonator disciplin: Prof. univ. dr. Vasile PODARU, email: podaruv@gmail.com
Tutori: Prof. univ. dr. Vasile PODARU,
151
MODULUL 4
APLICA II ALE INTELIGEN EI ARTIFICIALE.
ndrumri metodice.
Inteligena artificial a aprut ca disciplin i a fost fundamentat pe investigaiile relative
la reprezentarea cunoaterii i cutarea dar nu numai.
n acest modul vom trata cteva din domeniile de aplicabilitate ale inteligenei artificiale,
urmnd ca alt parte din ele s fie studiate n cadrul pregtirii prin masterat.
Prima parte a modulului este dedicat metodelor biometrice de autentificare. Astzi,
tehnologiile biometrice au devenit soluiile preferate ale unei arii extinse de aplicaii, n special n
domeniul identificrii i verificrii personalului. Este de ateptat c biometria s fie ncorporat n
soluii de securitate naional, cum ar fi mbuntirea securitii aeroporturilor, intrirea
granielor, verificarea documentelor de identificare i a vizelor, prevenirea falsurilor de identitate.
Binenteles, exist domenii de aplicare i n afara securitii naionale, cum ar fi securizarea
reelelor marilor corporaii, securizarea e-banking, investiiile i alte tranzacii financiare,
vnzrile cu amnuntul, sntatea i serviciile sociale.
A doua parte trateaz problematica sistemelor expert. Un sistem expert este un program
de calculator conceput s simuleze unele forme ale raiunii umane (prin intermedierea unui motor
de deducie) i capabil s administreze o important cantitate de cunotine specializate.
Calea care duce la dezvoltarea sistemelor expert este diferit de cea a tehnicilor
convenionale de programare. Conceptele pentru dezvoltarea sistemelor expert vin din domeniul
inteligenei artificiale (AI), i necesit o ndeprtare de la practicile convenionale ale
calculatorului i tehnicilor de programare. Un program convenional const ntr-un proces
algoritmic pentru a atinge un rezultat specific. Un program AI este fcut dintr-o baz de
cunotine i o procedur pentru a indica un rspuns.
Sistemele expert sunt capabile s distribuie informaii cantitative, multe din ele fiind
dezvoltate n urma unor cercetri de baz i aplicate (ex. praguri economic, modele de dezvoltare
n serie) dar i euristice pentru a interpreta valorile derivate calitativ, sau pentru folosirea n locul
unor informaii cantitative. Alt caracteristic este c aceste sisteme pot adresa date imprecise i
incorecte prin asignarea unor valori de ncredere la intrri i concluzii.
Unul dintre cele mai puternice atribute ale unui sistem expert este abilitatea de a explica
raional. Deoarece sistemul i amintete lanul logic al raionrii, un utilizator va putea cere o
explicaie a unei recomandri i sistemul va afia factorii pe care-i consider n acea recomandare
particular. Acest atribut mrete ncrederea utilizatorului n recomandarea fcut de sistem i n
acceptarea acestuia.
ntru-ct modulul este privit ca un tot unitar exerciiile aferente acestui modul se gsesc la
sfritul acestui modul. La terminarea parcurgerii acestui modul studenii trebuie s prezinte
tutorelui de disciplin rezolvarea temei de control propus spre rezolvare la sfritul modulului.
Cursul se finalizeaz prin examen care const din:
1) o lucrare scris sub forma de text grila constnd din 9-18 subiecte (ponderea lucrrii
scrise este de 70% din nota final);
2) rezolvarea corect a temelor de control din cele 5 module (minimum nota 5 pentru
fiecare tem, ponderea mediei celor 5 note n nota final este de 20%);
3) participarea activ la activitile tutoriale (apreciat printr-o not a crei pondere in
nota final este de 10%).
152
Unitatea de nvare nr.7
Metode biometrice n Inteligen a Artificial.
Cuprins:
7.1. Biometria .................................................................................................... pag. 152
7.2. Sisteme biometrice unimodale ................................................................... pag. 154
7.3. Sisteme biometrice multimodale ................................................................ pag. 155
7.4. Performanele i erorile sistemelor biometrice .......................................... pag. 156
7.5. Securitatea sistemelor biometrice ............................................................... pag. 164
7.6. Metode de Autentificare ............................................................................ pag. 167
7.1. Biometria.
Biometria (cuvnt derivat din grescul bios = via i metron = msur) const n
metode automate de recunoatere a individului, bazate pe caracteristici fizice sau
comportamentale. Printre acestea se numar amprentele, scanarea retinei i a irisului, geometria
minii i a degetului, recunoaterea caracteristicilor vocale i recunoaterea facial. Astzi,
tehnologiile biometrice au devenit soluiile preferate ale unei arii extinse de aplicaii, n special n
domeniul identificrii i verificrii personalului. Este de ateptat c biometria s fie ncorporat n
soluii de securitate naional, cum ar fi mbuntirea securitii aeroporturilor, intrirea
granielor, verificarea documentelor de identificare i a vizelor, prevenirea falsurilor de identitate.
Binenteles, exist domenii de aplicare i n afara securitii naionale, cum ar fi securizarea
reelelor marilor corporaii, securizarea e-banking, investiiile i alte tranzacii financiare,
vnzrile cu amnuntul, sntatea i serviciile sociale. n Occident, toate aceste sfere de activitate
beneficiaz deja de aplicaiile biometrice i pe lng aceastea se iau n considerare, ca obiective
de acoperit, parcurile de distracii, bncile i alte organizaii financiare, colegiile, cantinele
colare i multe alte faciliti.
Definiie: Biometria o disciplin recent este tiina identificrii sau verificrii
identitii unei persoane pe baza caracteristicilor fizice sau comportamentale.
caracteristici fizice (msurate la un anumit moment de timp): amprentele digitale,
faa, geometria minii, irisul, retina, forma urechii, mirosul, reflexia pielii, termogramele
caracteristici comportamentale (variaia pe o durat de timp): scrisul, vocea,
mersul, modul de tastare, micarea buzelor
153
Orice caracteristic uman fizic sau comportamental poate fi utilizat ca identificator
biometric dac satisface urmtoarele cerine:
universalitate;
unicitate;
permanen;
colectabilitate.
ntr-un sistem biometric practic, exist i alte aspecte care trebuie luate n considerare:
performanele sistemului: acurateea recunoaterii, viteza, robusteea realizabil,
resursele necesare pentru a atinge acurateea i viteza dorit, precum i factorii operaionali i de
mediu care afecteaz acurateea recunoaterii i viteza;
acceptabilitatea;
posibilitatea de fraudare a sistemului.
Fiecare din aceste criterii conduc la metode care prezint avantaje i dezavantaje cu
privire la securitate, uurin n exploatare i cost.
Nivelul de securitate oferit de o soluie biometric este relativ foarte ridicat, deoarece
administratorul sistemului este singura persoan autorizat s managerizeze datele existente n
sistemul de control al accesului. Prin implementarea unui sistem biometric de securitate se
elimin costurile de administrare a sistemului (carduri, personal autorizat, managementul
nregistrarilor, etc) care, printr-o soluie clasic, nu pot fi diminuate sau evitate. n al doilea rnd,
reducerea costurilor reprezint o consecin direct a scderii riscurilor de securitate odat cu
implementarea unei asemenea soluii.
Autentificarea biometric, adic bazat pe identificarea amprentelor digitale, a irisului, a
amprentei vocale, este cea mai puternic metod de autentificare a unui utilizator al unui sistem
informatic.Majoritatea metodelor de autentificare utilizate pe scar larg prezint vulnerabiliti
i dezavantaje: cheile se pot pierde, parolele pot fi uitate sau aflate de persoane care nu ar avea
dreptul s le posede. Trsturile anatomice nu pot fi copiate uor i nici pierdute. Utilizarea
autentificrii biometrice este soluia ideal pentru a asigura securitatea datelor permind
renunarea definitiv la folosirea parolelor i la riscurile presupuse de acestea, de a fi deconspirate
sau uitate. Dintre toate metodele de autentificare, biometrica cea mai utilizat este cea bazat pe
identificarea amprentelor digitale.
154
Folosirea amprentelor digitale ca metod infailibil de identificare coboar n timp n
1880, cnd Alphonse Bertillon a demonstrat c desenele liniilor de pe buricele degetelor noastre
rmn neschimbate toat viaa. De la finele secolului al XIX-lea, poliia a nceput s foloseasc
tehnica n descoperirea anumitor infraciuni, constituindu-i imense fiiere cu amprente digitale
pe care trebuiau s le foileteze experi specializai. La finele anilor 70, serviciile de poliie au
recurs la informatic pentru compararea amprentelor, soluie care le permite stocarea i
identificarea a zeci de milioane de amprente. Acum identificarea cu ajutorul amprentei este
folosit cu mare succes n industria telefoanelor mobile, a computerelor i chiar a automobilelor.
Astfel, au aprut telefoane mobile care nu se deschid dect dup verificarea amprentei digitale a
posesorului. Astfel nct, dac acestea sunt furate, ele nu mai pot fi folosite de ctre ho.
Un sistem de verificare autentific identitatea unei persoane prin compararea
caracteristicii biometrice capturate cu modelul biometric propriu acelei persoane, stocat anterior
n sistem. Acesta efectueaz o comparaie 1-1 pentru a determina dac identitatea pretins de
ctre individ este cea adevrat. Sistemul de verificare respinge sau accept identitatea susinut.
Un sistem de identificare recunoate un individ prin compararea caracteristicii biometrice
cu ntreaga baz de date de modele. Aceasta efectueaz comparaii de tipul 1-N pentru a stabili
identitatea individului. ntr-un sistem de identificare, sistemul stabilete identitatea subiectului
(sau eueaz dac subiectul nu este nregistrat n baza de date a sistemului) fr ca subiectul s
pretind o identitate.
7.2. Sisteme biometrice unimodale.
Un sistem biometric simplu (unimodal) conine patru componente (module) de baz:
Modulul de senzori, Modulul extraciei caracteristicilor, Modulul de potrivire, Modulul de luare
a deciziilor.
Limitrile sistemelor biometrice folosind o singur caracteristic biometric sunt:
Nivelul de zgomot simit n date,Variaii intra-clas, Deosebiri ,Non-universabilitatea, Atacuri
spoofing (de falsificare).
Principalele metode biometrice unimodale de autentificare sunt: Recunoaterea facial,
Amprentele digitale, Geometria mini,Scanarea irisului, Scanarea retinei, Modelele de vene,
Semntur, Verificarea vocii, ADN, Structura dinilor, Mersul, Urechea, Presiunea i Ritmul
155
apsrii tastelor. Tabelul de mai jos (Figura 1.2.1) ne arat o comparaie ntre diferite metode
biometrice:
Figura 1.2.1 Comparaie ntre diferite metode biometrice unimodale
7.3. Sistemele biometrice multimodale.
Depirea inconvenienelor i a limitelor menionate se poate realiza prin utilizarea
sistemelor multimodale care duc la mbuntirea performanelor sistemelor, creterea numrului
populaiei nrolate n sistem i la descurajarea fraudei.
Sistemele biometrice multimodale pot fi vzute din mai multe puncte de vedere,astfel n
cazul celor bazate pe amprent :
Sisteme multisenzor(optic,capacitiv,pe baza de chip etc.).
Sisteme multi-metoda folosesc mai multe metode la compararea vectorilor de test cu
referinele( bazate pe filtrare).
Sisteme multi-caracteristic se folosesc amprentele de la mai multe degete;
Sisteme multi-captur se preleveaz eantioane ale aceleiai caracteristici
biometrice( de exemplu aceeai amprent se preia de mai multe ori).
Sisteme multi-verificator se utilizeaz mai multe caracteristici biometrice
(amprenta, faa,mna,voce,iris etc).
n cazul sistemelor multimodale multi-verificator, caracteristicile biometrice care se
preteaz la fuziune sunt prezentate n tabelul urmtor( Figura 1.3.1).
156
Figura 1.3.1 Identificatori biometrici folosii pentru sistemele multimodale multi-verificator.
7.4. Performanele i erorile sistemelor biometrice.
Datorit poziionrii diferite ale senzorilor de achiziie, condiiilor imperfecte de
fotografiere, schimbrilor mediului, deformaiilor, zgomotului i ale interaciunii
necorespunztoare dintre utilizator i senzor, este imposibil ca dou probe din aceleai
caracteristici biometrice, achiziionate n sesiuni diferite, s corespund cu exactitate. Din acest
motiv, rspunsul sistemului biometric de potrivire este un scor tipic de potrivire s (n mod normal
un singur numar) care cuantific asemnrile dintre intrare i reprezentrile ablon din baza de
date. Cu ct este mai mare scorul, cu att mai mult sistemul este sigur c dou probe coincid.Un
scor similar s este comparat cu un prag de acceptare t i dac s este mai mare sau egal cu t,
probele comparate aparin aceleiai persoane. Perechi de probe biometrice care genereaz scoruri
mai mici dect t aparin unor persoane diferite. Distribuia de scoruri generate de perechi de
probe aparinnd unor persoane diferite este numit distribuie impostor, i distribuia de scoruri
generate de perechi de mostre aparinnd aceleiai persoane poart numele de distribuie
veritabil (Figura 1.4.1).
157
Figura 1.4.1 Ratele de eroare ale sistemelor biometrice
Principalele erori de sistem sunt msurate de obicei n termeni ca:
FNMR ( rata fals de neasemnare false nonmatch rate) greeala fcut atunci
cnd sistemul confirm c dou masurtori biometrice aparinnd aceleiai persoane s aparin
de dou persoane diferite.
FMR (rata fals de asemnare-false match rate) - greeala ca msurtorile biometrice
de la dou persoane diferite s aparin unei singure persoane.
Exist un compromis strict ntre FMR i FNMR n orice sistem biometric. Dac pragului
sistemului t scade pentru a face sistemul mai tolerant cu privire la variaiile intrrii i ale
zgomotului, atunci FMR crete; invers, dac t crete pentru a face sistemul mai sigur, atunci
FNMR crete n consecin.
Este recomandabil s se raporteze performanele sistemului pentru toate punctele de
operare t. Aceasta se face prin trasarea curbei Caracteristica de Operare a receptorului (ROC)
(Figura 1.4.2 ). O curb ROC este graficul FMR fa de (1 FNMR) pentru diferite praguri de
decizie.
158
Figura 1.4.2 Receptor de caracteristici operaionale(ROC)
Matematic, erorile ntru-un sistem de verificare pot fi formulate dupa cum urmeaz. n
cazul n care abloanele biometrice stocate ale utilizatorului I sunt reprezentate de X1 i
achiziiile de intrare pentru recunoatere sunt reprezentate de Xq, atunci ipoteze alternante i
ipotezele zero sunt:
H0 :Intrarea Xq nu provide de la aceeai persoan ca a ablonului X1;
H1: Intrarea Xq provine de la aceeai persoan ca a ablonului X1;
Deciziile sunt asociate aa cum urmeaz:
D0:Persoana nu este cine pretinede a fi;
D1:Persoana este cine pretinde a fi.
Regula decizional este urmtoarea:dac scorul de potrivire S(Xq,X1) este mai mic dect
pragul sistem t, atunci este valabil decizia D0, dac nu decizia D1. Dac H0 este ipoteza,atunci
semnalul primit este un semnal de zgomot singur, i dac H1 este ipoteza atunci semnalul primit
este un mesaj plus zgomot. O astfel de ipostaz de testare formulat n mod inerent conine dou
tipuri de erori:
Tipul 1 : Falsa potrivire (D1 este ales cnd H0 este adevrat).
Tipul 2 : Falsa nepotrivire (D0 este ales cnd H1 este adevrat).
FMR este probabilitatea de eroare de tipul 1 i FNMR este probabilitatea de eroare de
tipul 2.
159
FMR = P(D
1
|H
0
= adevrat);
FNMR = P(D
0
|H
1
= adevrat).
Pentru a evalua acurateea unui sistem biometric se colecteaz scoruri generate de un
numr de perechi de caracteristici biometrice de la aceeai persoan (distribuia
p(s|H
1
= adevrat)) i scoruri generate de un numr de perechi de caracteristici biometrice de la
persoane diferite (distribuia p(s|H
0
= adevrat)).
Calculul lui FMR i FNMR se poate realiza cu ajutorul formulelor:

1
0
adev
rat d
t
FNMR p s H s


1
0
adev
rat d
t
FMR p s H s

n afar de ratele de eroare de mai sus, eecul de a captura rata (FTC) i eecul de a
nscrie rata (FTE) sunt de asemenea folosii pentru a rezuma precizia unui sistem biometric. Rata
FTC este aplicabil cnd dispozitivul biometric are o funcionalitate automat de capturare
implementat n el i aceasta denot numrul de ncercari nereuite ale dispozitivului biometric n
ncercarea de a captura un ablon n cazul n care caracteristicile biometrice i sunt prezentate.
Rata FTE pe cealalt parte, denot numrul de ncercari nereuite de nscriere n sistemul de
recunoatere ale utilizatorilor. Exist o legatur ntre rata FTE i rata de precizie a sistemului
(FMR i FNMR).
Acurateea unui sistem este cea mai important caracteristic a acestuia i, din acest
motiv, este unul din principalii parametrii de difereniere ntre un sistem performant i unul
defectuos. Din acest motiv, au aprut competiii i teste internaionale care i propun clasificri
dup criterii foarte stricte a metodelor biometrice.
n cazul evalurii performanelor unui algoritm de nrolare i verificare biometric, se
disting dou caracteristici principale, definite la rndul lor de dou rate de eroare. Prima este Rata
de Rejecie fals (FRR), care definete numrul de date autorizate ce sunt excluse de algoritm. A
doua este Rata de Acceptare fals (FAR), care definete numrul de date neautorizate (impostor),
crora algoritmul le permite accesul.
Pentru fiecare algoritm i baz de date se raporteaz o serie de indicatori, cei mai
importani dintre ei fiind:
160
REJENROLL (Numrul de date biometrice refuzate n procesul de nrolare);
REJNGRA (Numrul de date biometrice refuzate n cazul testelor de autentificare
autorizat);
REJNIRA (Numrul de date biometrice refuzate n cazul testelor de autentificare
neautorizat);
FMR100 (cea mai mic rat de acceptare fals pentru FAR<=1%);
FMR1000 (cea mai mic rat de acceptare fals pentru FAR <=0.1%);
ZeroFMR (cea mai mic rat de acceptare fals pentru FAR =0%);
ZeroFNMR (cea mai mic rat de rejecie fals pentru FRR =0%);
Timpul mediu de nrolare;
Timpul mediu de verificare; Valoarea medie FMR100;
Valoarea medie FMR1000;
Valoarea medie ZeroFMR;
Valoarea medie REJENROLL (numrul mediu de date biometrice refuzate la nrolare);
Valoarea medie REJMATCH (numrul mediu de date biometrice refuzate n cazul
autentificrilor autorizate i neautorizate);
FTE (Fail To Enroll), imposibilitatea utilizatorului de a se nrola n sistem;
FTA (Fail To Acquire), imposibilitatea utilizatorului de a se autentifica n sistem.
Aceti indicatori sunt, de fapt, o serie de valori caracteristice ce fac diferena dintre un
algoritm, respectiv, un produs sigur i unul defectuos.
Figura 1.4.3. arat un mod de comportare al acestor indicatori.
161
Figura 1.4.3.
Ali indicatori care reflect acurateea sistemului de verificare:
Rata erorilor egale (ERR): rata potrivirii false i rata nepotrivirii false sunt egale.
Zero FNMR: cea mai mic FMR la care nu are loc nici o nepotrivire fals.
Zero FMR: cea mai mic FNMR la care nu are loc nici o potrivire fals.
Rata eecului de captur (FTC): de cte ori dispozitivul nu reuete s captureze automat
caracteristica biometric cnd aceasta este prezentat senzorului.
Rata eecului de nscriere (FTE): de cte ori utilizatorii nu se pot nscrie n sistem. Exist
un compromis ntre rata FTE i acurateea sistemului (FMR i FNMR). Erorile FTE au
loc, de obicei, cnd sistemul efectueaz un control de calitate pentru a se asigura c numai
abloanele de bun calitate sunt stocate n baza de date. Prin urmare, baza de date conine
doar abloane de bun calitate i acurateea sistemului (FMR i FNMR) se mbuntete.
Rata eecului de potrivire (FTM): de cte ori intrarea nu poate fi procesat sau potrivit cu
ablonul respectiv datorit calitii insuficiente. Aceasta este diferit de eroarea de
nepotrivire fals; de fapt, n cazul eecului de potrivire sistemul nu poate lua o decizie, n
timp ce ntr-o eroare de nepotrivire fals sistemul decide greit c cele dou intrri nu
provin de la acelai persoan.
Totodat, ca rezultat al dezvoltrii domeniului biometric, pe plan internaional s-a
constatat nevoia instituirii unui consoriu ce are ca scop interfaarea i certificarea diverselor
162
aplicaii biometrice sub un singur standard. Acest consoriu poart numele de BioAPI, iar
certificarea BioAPI a devenit un standard necesar pentru orice algoritm biometric.
Rezultatul final al autentificrii/verificrii este dat, de fapt, de unul din cele patru cazuri
menionate mai sus: acceptare corect sau fals i rejecie corect sau fals.
Formulele de calcul pentru aceste rate de eroare sunt:
FRR = FTE+ FTA+ FNMR
FAR= (1- FTE) * (1- FTA) * FMR
Valorile astfel calculate pot fi introduse ntr-un grafic, rezultnd astfel un punct de
intersecie EER (Equal Error Rate-Figura 1.4.3 ), ce poate fi folosit ca o evaluare a
performanelor simplificate n cazul sistemelor biometrice.
Figura 1.4.3
Realizarea unui sistem biometric pentru civa utilizatori poate fi relativ uoar, dar
adaptarea pentru milioane de utilizatori implic probleme mult mai complicate. Chiar dac viteza
de verificare i acurateea rmn eseniale att pentru un sistem cu 100 de utilizatori, ct i pentru
unul cu 10 milioane, modul de identificare va deveni complet diferit. Adiional fa de erorile de
fals acceptare i fals rejecie, apare un alt tip de eroare ce se refer la falsa identificare (FI); n
acest caz, un utilizator poate fi asociat greit unei alte nregistrri biometrice. Aceast rat de
eroare asociat FI va purta denumirea FIR. n ceea ce privesc erorile sistemelor de identificare
sunt de discutat urmtoarele aspecte.
n condiiile unor simplificri, o estimare a performanelor n modul identificare poate fi
dedus din evaluarea erorilor n modul verificare.
163
S presupunem c nu este disponibil nici un mecanism de indexare/regsire (deci trebuie
cutat ntreaga baz de date coninnd N abloane) i c este prezent un singur ablon n baza de
date pentru fiecare utilizator.
Fie FNMR
N
i FMR
N
, rata nepotrivirii false i respectiv rata potrivirii false n cazul
identificrii, atunci:
FNMR
N
= FNMR: probabilitatea nepotrivirii false a intrrii cu ablonul
utilizatorului este aceeai ca n modul verificare;
FMR
N
= 1 (1 FMR)
N
: o potrivire fals are loc cnd intrarea se potrivete
fals cu unul sau mai multe abloane din baza de date.
Dac FMR este foarte mic atunci
FMRN N FMR i probabilitatea potrivirii false crete liniar cu mrimea
bazei de date.
Acest rezultat are implicaii serioase n proiectarea sistemelor de identificare la scar
larg. S considerm o aplicaie de identificare cu ajutorul amprentelor digitale cu 10.000 de
utilizatori. S presupunem c, pentru un FNMR acceptabil, FMR-ul algoritmului ales este 10
5
(doar o potrivire fals la 100.000 de comparri). Atunci probabilitatea acceptrii false a unui
individ n timpul identificrii este FMRN 10%, i oricine are o bun ans de a obine accesul la
sistem prin ncercarea celor zece degete de la cele dou mini.
Dac abloanele din baza de date au fost clasificate/indexate, atunci doar o parte a bazei
de date este cutat n timpul identificrii i aceasta duce la o formulare diferit a FNMR
N
i
FMR
N
:
FNMR
N
= RER +(1RER)FNMR, unde RER (rata erorii de regsire) este
probabilitatea c ablonul cutat s fie depistat greit de
mecanismul de regsire;
FMR
N
= 1 (1 FMR)
NP
, unde P (numit i rat de ptrundere) este
numrul mediu de abloane cutate n timpul identificrii.
164
7.5. Securitatea sistemelor biometrice.
Elementele componente ale sistemului biometric pot fi gndite ca o schema prezentat n
figura 1.4.5.
Figura 1.4.5.
Pe schem sunt figurate i numerele care definesc punctele de atac ntr-un sistem
biometric. Iat care sunt acestea:
1. La prezentarea caracteristicilor biometrice la senzorul de intrare:
atac prin constrngere: n care sunt prezentate datele biometrice reale, dar
ntr-o modalitate neautorizat.
atac prin simulare: n care un individ neautorizat i modific trsturile
biometrice (mai ales n cazul feei sau vocii) pentru a aprea asemenea
persoanei autorizate.
atac de tip reluare: n care o nregistrare a datelor biometrice reale este
prezentat dispozitivului de intrare.
Contramsuri:
detecia situaiile de constrngere prin analiza stresului utilizatorului sau
prin supravegherea sistemului
detecia semnelor vitale
metode multibiometrice
2. Atacul canalului de legtur dintre senzorul biometric i extractorul de caracteristici:
Acesta poate fi un atac de tip reluare, prezentarea unui semnal
Dispozitivul de
intrare / senzorul
biometric
1
Extractorul de
caracteristici
Comparatorul Aplicaia
nscrierea n
sistem
Baza de date a
caracteristicilor
de referin
3 5
2 4
8 10
9
6
7
165
biometric
stocat anterior, sau o simulare electronic. Acesta include ocolirea
senzorului prin reintroducerea imaginii unei amprente sau a feei sau prin
injectarea unui semnal audio la ieirea microfonului. Dac accesul fizic n
acest punct este disponibil, acest atac este mai simplu dect atacul asupra
senzorului. Tehnici de criptare digital i indicatori de timp pot contracara
aceste atacuri. Mai mult, sistemul poate detecta potrivirea perfect cu date
anterioare din sistem.
Simularea electronic poate consta n introducerea imaginii unei amprente
creat n mod artificial din dispunerea detaliile striaiilor obinute din
nregistrarea acestor detalii de pe un card.
3. Atac de tip cal Troian asupra extractorului de caracteristici:
Modulul de extragere a caracteristicilor poate fi atacat astfel nct va
produce un set prestabilit de caracteristici la un anumit moment de timp i
n anumite condiii. Dup extragerea caracteristicilor din semnalul de
intrare, acestea sunt nlocuite cu un set sintetizat de caracteristici diferit,
presupunnd c modul de reprezentare este cunoscut.
4. Atacul canalului de legtur dintre extractorul de caracteristici i comparator.
n cazul amprentelor dac detaliile striaiilor sunt transmise la un
comparator aflat la distan (de exemplu n cazul n care se utilizeaz
smartcarduri pentru stocarea reprezentrii de referin) aceast ameninare
este foarte real.
5. Atac de tip cal Troian asupra comparatorului caracteristicilor de intrare cu cele de
referin.
n acest caz comparatorul produce un scor de similitudine mare sau mic n
mod artificial, astfel falsificnd deciziile comparatorului pentru un anumit
utilizator.
6. O ameninare foarte important prin care nu se ine cont de ieirea modulului de
comparare. Ieirea acestui modul poate fi o decizie categoric (da sau nu) sau poate fi
probabilitatea de asemnare, decizia final fiind lsat pe seama aplicaiei.
166
7. Atacul canalului de comunicaii dintre baza de date (central sau distribuit) i
comparator.
Reprezentarea biometric stocat n baza de date este trimis la comparator
prin acest canal. n cazul n care acest canal de legtur este atacat,
reprezentarea biometric este modificat nainte de a ajunge la comparator.
8. Atacul la nscrierea n sistem.
Procesele de nscriere i de autentificare sunt simulare i astfel
nregistrarea n sistem este vulnerabil la atacurile 15.
9. Atacul canalului prin care reprezentarea biometric de referin este trimis bazei de
date.
10. Atacul asupra bazei de date a caracteristicilor de referin.
Baza de date a nregistrrilor reprezentrilor biometrice poate fi disponibil
local sau la distan, distribuit pe mai multe servere. Aceast ameninare
const n modificarea neautorizat a uneia sau mai multor reprezentri din
baza de date. Aceasta poate avea drept consecin autorizarea unui
infractor, refuzul serviciului persoanei asociate cu modelul de referin
corupt (presupunnd c formatul reprezentrilor este cunoscut), sau
eliminarea unor indivizi de pe o list de supraveghere.
Alte atacuri ntr-un sistem biometric pot fi urmtoarele:
Posibilitatea de atac a sistemului biometric prin evitarea acestuia. n orice sistem
biometric este prevzut o facilitate de lucru care permite tratarea excepiilor. De exemplu,
autentificarea persoanelor fr degete ntr-un sistem de recunoatere a amprentelor digitale.
Atacul progresiv. Acest tip de atac implic prezentarea n mod repetat a datelor
biometrice unui algoritm cu uoare modificri i pstrarea acelor modificri care au ca rezultat un
scor mbuntit. n final poate fi obinut un scor care s depeasc pragul de comparare.
Aceast metod este potrivit mai ales cnd atacatorul nu are nici o cunotin referitoare la
datele biometrice ale utilizatorului legitim. Un asemenea atac poate fi mpiedicat prin limitarea
ncercrilor limitate sau prin furnizarea la ieire doar a unor rspunsuri categorice de tipul da sau
nu, prin cuantificarea scorurilor de comparare sau prin adugarea la acestea a unei mici cantiti
de zgomot.
167
Atacul prin inundare. Acesta este similar atacului de tip for brut n cazul parolelor,
exploatndu-se slbiciunile algoritmului de comparare. De exemplu, n cazul amprentelor
atacatorul poate prezenta o imagine sintetizat coninnd sute de detalii ale striaiilor n sperana
c cel puin un anumit numr N, corespunztor unui prag, vor corespunde cu modelul de referin
stocat.
nscrierea ilegitim n sistem. Reprezint o ameninare la orice sistem de securitate i se
realizeaz prin simpla nregistrare a atacatorului sau prin atribuirea unor drepturi de acces
necorespunztoare.
Metodele de cretere a securitii sistemelor biometrice pot fi urmtoarele:
- Combinarea smartcardurilor i a metodelor biometrice n aplicaiile biometrice;
- Mecanisme eficiente de provocare-rspuns la sistemele proiectate;
- Transformri eficiente ale caracteristicilor biometrice:
n domeniul semnalului biometric;
n domeniul reprezentrilor biometrice.
7.6. Metode de Autentificare
Metodele biometrice de autentificare se mpart n dou mari categorii (Figura 1.4.6.):
Metode biometrice fizice: incluznd studiul amprentelor digitale, a lungimii
segmentelor corporale, recunoaterea geometriei palmei, desenului irisului ocular sau retinei,
formelor desenului reelei vasculare sau structurii AND-ului celular.
Metode biometrice comportamentale: implicnd domenii ca recunoaterea vocii, a
scrisului sau a semnturii, a ritmului personal de scriere la tastatur, gestic, mimic i mers.
Figura 1.4.6. Tipuri de metode biometrice
168
n industria biometriei, se face o distincie clar ntre termenii identificare,
recunoatere i verificare.
Identificarea i recunoaterea sunt n esen termeni sinonimi i, n ambele procese, o
prob este prezentat sistemului biometric,care ncearc s determine cui aparine, prin
compararea acesteia cu probele din baza de date, n sperana gsirii unei perechi. Acest proces
poart numele de comparaie unu la mai multe.
Verificarea este o comparaie unu la unu n care sistemul biometric ncearc s verifice
identitatea unui individ. n acest caz, o nou prob biometric este capturat i comparat cu
modelele anterior stocate. Dac cele dou modele se potrivesc, sistemul confirm faptul c
individul este cine pretinde a fi.
n concluzie, n timp ce identificarea i recunoaterea presupun gsirea perechii unei
mostre ntr-o baz de date, verificarea implic potrivirea mostrei ntr-o baz de date, format
dintr-un singur model. Astfel, n timpul identificrii, sistemul biometric ntreab Cine este
utilizatorul? i stabilete dac nregistrarea biometric exist n baza de date, n timp ce la
verificare, sistemul ntreab Utilizatorul este cine pretinde c este?.
nainte de a alege biometria ca soluie de identificare a individului, o organizaie trebuie
s-i evalueze cu atenie nevoile. Ceea ce trebuie s fie luat n considerare sunt nivelul de
securitate optim, acurateea, costul i timpul de implementare, precum i acceptarea de ctre
utilizator.
Tehnicile biometrice de identificare a caracteristicilor fizice sunt mult mai precise oferind,
prin urmare, un nivel de securitate mai ridicat.
n ceea ce privete acurateea, scanarea retinal i identificarea irisului sunt metode de
identificare a individului foarte precise. Cu toate acestea, ambele sunt foarte costisitoare, iar
majoritatea organizaiilor nu au nevoie de un nivel de siguran att de precis.
Tehnicile de autentificare pe baz de amprent, scanare facial sau geometria minii ofer
o buna acuratee la un pre mult mai mic. Schimbrile fizice, precum tieturi, cicatrice,
mbtrnire, pot afecta precizia anumitor tehnici de determinare biometric, ns aceste probleme
pot fi soluionate printr-o continu actualizare a bazelor de date.
Costul i timpul de implementare al unui sistem biometric trebuie asociat cu o serie de
factori cum ar fi cutarea, achiziionarea i instalarea componentelor hardware i software de
captur, autentificarea i meninerea bazelor de date, timpul de integrare a sistemului n mediul
169
existent, iniierea personalului IT n utilizarea noului sistem i familiarizarea utilizatorilor cu noul
protocol de identificare, colectarea i meninerea bazei de date necesar autentificrii.
Figura 1.4.7.
Acceptarea sistemului biometric de ctre utilizator este o problem foarte important, iar
n acest sens, organizaia trebuie s familiarizeze angajaii cu toate cerinele sistemului, nainte ca
acesta s fie integrat.
Principalele metode biometrice de autentificare sunt: Recunoaterea facial, Amprentele
digitale, Geometria minii, Scanarea irisului, Scanarea retinei,Modelele de vene, Semntura,
Verificarea vocii, ADN, Structura dinilor, Mersul, Urechea, Presiunea i ritmul apsrii
tastelor.
170
Unitatea de nvare nr.8.
Sisteme expert
Cuprins:
8.1. Introducere .................................................................................................... pag. 170
8.2. Metodologia de proiectare, implementare i utilizare a unui sistem expert .. pag. 175
8.3. Studii de caz ................................................................................................... pag. 182
Bibliografie .......................................................................................................... pag. 189
8.1. Introducere.
Un sistem expert este un program de calculator conceput s simuleze unele forme ale
ra iunii umane (prin intermedierea unui motor de deducie) i capabil s administreze o
important cantitate de cunotin e specializate.
Un sistem expert este o aplicaie de calculator care rezolv probleme complicate care ar
necesita o vast expertiz uman. Pentru a face aceasta, el simuleaz procesul de raiune uman
prin aplicarea unor interfee i cunotine specifice. Acest raport a explicat procesul de luare a
deciziilor n cazul sistemelor expert pentru a da cele mai bune soluii n rezolvarea problemelor.
Exist i alte ncercri de definiie a unui sistem expert:
- un sistem care folosete cunotinele umane captate ntr-un calculator pentru a rezolva
probleme care n mod curent necesit expertiz uman (Turban & Aronson, 2001);
- un program de calculator conceput s modeleze abilitatea de a rezolva a unui expert
uman (Durkin, 1994);
- un program de calculator inteligent care folosete proceduri de cunoatere i de deducie
pentru a rezolva probleme care sunt deosebit de dificile astfel nct s necesite expertiz uman
semnificativ pentru a le rezolva (Feigenbaum).
Aceste capaciti pentru raionament i control permit sistemului s analizeze un numr
mic de ipoteze relevante pentru a gsi o concluzie satisfctoare. Dou caracteristici ale
sistemului expert sunt necesare pentru a ndeplini aceast sarcin:
capacitatea de a procesa o cantitate mare de cunotine i
capacitatea de a simula raionamentul uman (ntr-o manier imperfect).
Sunt multe avantaje cunoscute n folosirea instrumentelor computerizate i a sistemelor
expert:
171
reducerea datelor lips,
o mai bun culegere a datelor,
neomiterea ntrebrilor,
ne-transcrierea datelor,
o acoperire mai larg a diagnosticelor.
Arhitectura general a unui sistem expert este:
Figura 8.1. Arhitectura general a unui sistem expert
Aa cum am vzut un sistem expert este un program de calculator creat pentru a simula
comportamentul n rezolvarea problemelor a unui om care este expert ntr-un domeniu sau o
disciplin anume. Un sistem expert este compus dintr-o baz de cunotine (informaii, euristic,
172
etc.), motor de decizie (analizeaz baza de cunotine) i, interfaa cu utilizatorul (accept intrri,
genereaz ieiri).
Calea care duce la dezvoltarea sistemelor expert este diferit de cea a tehnicilor
convenionale de programare. Conceptele pentru dezvoltarea sistemelor expert vin din domeniul
inteligenei artificiale (AI), i necesit o ndeprtare de la practicile convenionale ale
calculatorului i tehnicilor de programare. Un program convenional const ntr-un proces
algoritmic pentru a atinge un rezultat specific. Un program AI este fcut dintr-o baz de
cunotine i o procedur pentru a indica un rspuns.
Sistemele expert sunt capabile s distribuie informaii cantitative, multe din ele fiind
dezvoltate n urma unor cercetri de baz i aplicate (ex. praguri economic, modele de dezvoltare
n serie) dar i euristice pentru a interpreta valorile derivate calitativ, sau pentru folosirea n locul
unor informaii cantitative. Alt caracteristic este c aceste sisteme pot adresa date imprecise i
incorecte prin asignarea unor valori de ncredere la intrri i concluzii.
Unul dintre cele mai puternice atribute ale unui sistem expert este abilitatea de a explica
raional. Deoarece sistemul i amintete lanul logic al raionrii, un utilizator va putea cere o
explicaie a unei recomandri i sistemul va afia factorii pe care-i consider n acea recomandare
particular. Acest atribut mrete ncrederea utilizatorului n recomandarea fcut de sistem i n
acceptarea acestuia.
Basri (1999) a notat faptul c un sistem expert ncearc s imite cum un expert uman ar
rezolva o problem, n special prin manipularea simbolurilor dect a numerelor. n timp ce
programarea algoritmic convenional nlocuiete munca analitic, sofisticat a inginerilor,
sistemele expert sunt potrivite n special prilor mai puin determinante ale planificrii i
proiectrii.
Yang i Okrent (1991) au afirmat c sistemele expert sunt mai ieftine n comparaie cu
experii umani n cazul unui scenariu de durat. Totui, sistemele expert sunt costisitoare la
dezvoltare dar sunt uor i ieftin de lucrat cu ele. n adiie, sistemele expert permit automatizarea
mai multor task-uri ce nu pot fi manevrate cu uurin de experii umani.
Iat cteva diagrame care arat modalitatea de funcionare unui sistem expert.
173
Figura 8.3. Prile majore ale unui sistem expert
Figura 8.3. Proces tipic de achiziie a cunoaterii pentru construirea unui sistem expert
Sistemele expert trebuie vzute ca un tip particular de sisteme informaionale. Sistemele
expert sunt distincte n forma n care se apropie de reprezentarea problemei, sistemele
informaionale procesnd informaia, n timp ce sistemele expert ncearc s proceseze
cunoaterea. Cunoaterea n cazul unui sistem expert poate proveni din multe surse, cum ar fi
174
cri, rapoarte, baze de date, studii de caz, date empirice i experiena personal. Sursa dominant
de cunoatere n sistemele expert de azi este dominanta expert. Un inginer de cunoatere obine
de obicei cunoaterea prin interaciune direct cu expertul.
Figure 8.4. Sistem Expert i Interaciunea cu utilizatorul
Sistemele expert sunt folosite n aplicaii din multe domenii: medical, agricol, juridic,
economie, industrie, nvmmt, cercetare, prognoz, guvernamental, poliie, etc..
175
8.2. Metodologia de proiectare, implementare i utilizare a unui sistem expert.
Metodologia Ingineriei Cunoaterii (Knowledge engineering KE) se refer la
proiectarea, ntreinerea i dezvoltarea sistemelor bazate pe cunoatere i asigur succesul unui
sistem expert n ndeplinirea cerinelor, obiectivelor i scopului propus.
Figura 8.5. Metodologia Ingineriei Cunoaterii
n acest context sunt necesare luarea n considerare a ctorva faze importante:
Faza 1: Aprecierea Problemei
Majoritatea organizaiilor cnd achiziioneaz orice tehnologie nou i vor pune
ntrebrile fireti: Oare va funciona? i De ce ar trebui s ncercm? Din moment ce aceast
tehnologie este relativ nou, rspunsurile la aceste ntrebri vor veni curnd. Totui, este
important ca un efort serios s fie depus pentru a rspunde la aceste ntrebri nainte ca proiectul
s nceap. Eecul de a face aceasta va oferi nencredere n proiect care va avea puine anse de a
reui i nu va oferi mari beneficii organizaiei.
Aceast faz este structurat conform urmtoarelor sarcini:
176
Sarcina 1: Determinarea motivrii organizaiei
Sarcina 2: Identificarea problemelor
Sarcina 3: Realizarea unor studii de fezabilitate
Sarcina 4: Realizarea unor analize de cost / beneficii
Sarcina 5: Selectarea celui mai bun proiect
Sarcina 6: Scrierea propunerii pentru proiect
Faza 2: Achizi ia i Analiza Cunotin elor
Aceast sarcin este cea mai dificil n dezvoltarea un sistem expert. Achiziia cunoaterii
este motenit ca un proces ciclic. Sunt folosite aceste sarcini ale coleciei cunoaterii,
interpretarea i analiza lor, i design-ul metodelor pentru a strnge cunotine adiionale. Un
sistem expert i ia puterea din cunotinele pe care le deine (Durkin, 1994). Una din cele mai
dificile aspecte ale sarcinii unui KE este ajutarea expertului n structurarea domeniului de
cunotine, pentru a identifica i formaliza conceptele (Hayes-Roth, Waterman i Lenat).
Faza 3: Design i Implementare
Aceast faz ncepe cu selecia tehnicii de reprezentare a cunotinelor i controlul
strategiei. Aceasta este urmat de selectarea unui instrument software care ndeplinete cel mai
bine cerinele problemei. Se construiete un prototip pentru a valida proiectul i pentru a oferi
ghid n lucrrile urmtoare. Este dezvoltat proiectul n continuare pentru a ndeplini cerinele
obiectivului.
Acest proces este structurat n conformitate cu urmtoarele sarcini:
Sarcina 1: Selecteaz reguli ca tehnici de reprezentare a cunotinelor
Sarcina 2: Selecteaz tehnica de control
Sarcina 3: Selecteaz software-ul de dezvoltare
Sarcina 4: Dezvolt prototipul, interfaa i produsul
O apropiere bazat pe reguli este potrivit pentru sistemele care trateaz probleme
folosind n special instruciuni de tip IF/ THEN. Aceast discuie va crea un neajuns n descrierea
obiectivelor problemei, care va justifica nevoia pentru o apropiere bazat pe frame-uri.
Problemele de clasificare sunt tipice acestei situaii n care expertul ncearc s clasifice unele
177
ipoteze conform informaiilor disponibile. Cheile pentru un design eficient sunt consistena,
claritatea i controlul.
Faza 4: Testarea
SE va trebui testat periodic i evaluat pentru a se asigura faptul c performana acestuia
converge ctre scopurile stabilite. Este important ca aceste decizii s fie fcute timpuriu, la un
timp cnd scopurile originale au fost stabilite.
Stadiul 1: Testarea Preliminar
Studierea bazei de cunoatere complet
Descoperirea deficienelor n strategiile de raionament
Validarea reprezentrii cunotinelor i aproximaia deduciei
Stadiul 2: Testarea prin Demonstraie
Alegerea unei probleme cu interval limitat n capacitile SE
Folosirea demonstraiei pentru a valida aproximarea sistemului expert
Prezentarea caracteristicilor majore ale SE
Designul interfeei pentru a fi comod utilizatorului
Stadiul 3: Validarea Testrii Informale
Selectarea cazurilor testate anterior
Evaluarea abilitilor SE n rezolvarea cazurilor tipice i
Identificarea deficienelor SE i obinerea comentariilor de la utilizator prin
interfa
Stadiul 4: Testarea Reevalurii
Selectarea cazurilor neobinuite din trecut
Evaluarea capacitii SE n rezolvarea cazurilor neobinuite
Descoperirea deficienelor n controlul i cunoaterea SE
Identificarea deficienelor SE
Stadiul 5: Testarea Formal
Selectarea cazurilor din trecut i definirea criteriilor de test
Rularea SE pentru fiecare caz de test i ntrebarea evaluatorilor despre
performana sistemului pentru fiecare caz de test
Obinerea comentariilor asupra interfeei
178
Identificarea punctelor forte i a deficienilor SE
Stadiul 6: Testarea n timp real
Definirea criteriilor de test pentru testarea n cmp deschis
Determinarea dac SE i ndeplinete scopurile cnd este aplicat problemelor real
Faza 5: Manualul de utilizare. Documentarea.
Acest document servete ca un jurnal personal al proiectului. El conine tot materialul
colectat n timpul proiectului care trebuie s fie referin pentru dezvoltarea sistemului. Dac este
proiectat corespunztor, va servi de asemenea sarcinilor finale ale ntreinerii SE i scrierea
raportului final al SE.
Faza 6: ntre inerea
Dup terminarea design-ului, implementrii, testrii i documentrii, SE va trebui
perfecionat sau actualizat pentru a ndeplini cerinele curente. Este foarte important pentru a
menine o bun nregistrare a modificrilor care s-au produs la SE. Dac acest lucru nu este
realizat, se poate pierde urma cunotinelor SE. Iar de fiecare dat cnd SE este modificat,
urmtoarele piese de informaii trebuie documentate:
Ce s-a modificat i cine a realizat modificarea
Cnd a fost realizat modificarea
De ce a fost realizat modificarea
Sistemul expert menine domeniul de cunotine expert ntr-un modul cunoscut ca baza de
cunotine. Acesta folosete tehnici i reguli pentru a codifica cunotinele n baza de
cunotine. O regul este o structur de forma IF/THEN care interpreteaz logic informaii
coninute n partea IF cu Alte caracteristici ale sistemului expert complet sunt memoria
funcionabil i motorul de decizie. Pentru motorul de decizie sunt folosite clase iar pentru
memoria funcionabil sunt folosii vectori.
SE are de asemenea facilitatea de explicare. nseamn c SE poate oferi o explicaie
utilizatorului despre ntrebrile care i se adreseaz i cum desprinde concluziile pe baza acestor
ntrebri. Interaciunea cu Utilizatorul se face de regul prin intermediul unor ferestre-ecran
prietenoase cu ajutorul crora se poart un dialog utilizator SE.
Iat exemplu de schem de dialog SE-utilizator:
179
Figura 8.6. Schem de dialog SE-utilizator
Sistemele Expert au fost folosite pentru a rezolva o gam larg de probleme n domenii ca
medicina, matematica, ingineria, geologia, informatica, afaceri, drept, aprare i educaie. n
cazul fiecrui domeniu, ele au fost folosite pentru a rezolva diferite tipuri de probleme. Tipurile
de probleme includ diagnostice (ex., a unei erori de sistem, a unei molime sau a unei erori
studeneti); proiectare (a unui sistem computerizat, a unui hotel etc.); i interpretare (de
exemplu, a datelor geologice). Tehnica potrivit de rezolvare tinde s depind mai mult de tipul
problemei dect de domeniu.
n tabela 1 sunt prezentate avantajele intrinseci ale sistemelor care simuleaz
comportamentul intelligent i avantaje datorate tehnologiei.
180
Tabela 1
A Avantaje intrinseci ale sistemelor care
simuleaz comportamentul inteligent
-- completitudinii (toate faptele relevante sunt
descoperite )
-- nelegerii depline (toate faptele relevante
sunt analizate )
1. mbunt irea performan elor
exper ilor (prin minimizarea erorilor
umane) datorit:
--consistenei (cazurile identice conduc
ntotdeauna la acelai rezultat)
2. Creterea capacit ilor non-
exper ilor (i a productivit ii exper ilor)
--dependenele slabe de expertizele rare
--facilitarea activitii experilor n cazurile
simple
3. ntre inerea i extensia KB prin: --arhivarea calificrilor critice
-- combinarea cunotinelor din mai multe
surse interne
--duplicarea cunotinelor existente
-- cumprarea expertizelor dovedite
--explicitarea cunotinelor existente
B Avantaje datorate tehnologiei
1. Sistem uor de ntre inut
2. Sistem uor de dezvoltat
Un sistem expert poate face greeli, dar mai puin dect ar face un om. Mai mult, el
funcioneaz mereu consistent, niciodat devenind obosit sau plictisit. Alta diferen este c SE
poate fi folosit oriunde spre deosebire de oameni.
Utilizatorul i va putea clarifica problema de sincronizare cu SE cu rspuns imediat i
poate primi diagnoze prin intermediul SE. Aceast caracteristic l va asista s recunoasc
cauzele care permit nesincronizarea SE. Ei vor putea solicita SE explicaii la ntrebrile care li se
pun n timpul interaciunii.
SE poate fi mbuntit prin convertirea la o aplicaie web. n loc s lucreze n modul, ar
putea fi accesat prin website care mresc locaia de acces.
Sistemele expert hibride mpreun cu sistemele expert fuzzy pot fi vzute ca noi tehnici ce
vor putea fi folosite de cercettori mai trziu. Implementarea unui sistem expert n mai multe
domenii este puternic influenat de tehnicile i metodele care adopt hypertext i hypermedia.
Caracteristici ale personalizrii, modelarea utilizatorului i abilitatea de adaptare la mediu vor
181
deveni noi provocri. Vor putea fi folosite ca un ghid n promovarea sistemelor expert n variate
funcii.
Pe viitor, SE vor putea fi folosite mpreun cu reele neuronale artificiale, logica fuzzy,
algoritmi genetici i alte metode ale Inteligenei Artificiale. Aceste metode permit luarea n
considerare a avantajelor lor n sistemul proiectat i, deci, noile sisteme proiectate sunt
instrumente mai puternice n facilitarea variatelor sarcini care necesit rspunsuri pe moment,
precise i de ncredere.
n dezvoltarea SE sunt folosite att limbaje convenionale ct i tehnicile IA. Iat o
diagram a procentelor de folosire a acestora n Marea Britanie n ultimul deceniu:
Figura 8.7.
182
8.3. Aplicaii. Studii de caz.
8.3.1. Studiu de caz 1.
Baza de cunotine artat n Lista 1 este legat de o companie fictiv Compania_X.
Sistemului expert i se cere s recomande un pre adecvat pentru ofertant, determinat de
multiplicarea costului obligatoriu estimativ cerut de Compania_X pentru definitivarea
contractului, cu un procent adecvat de pia. Firma Compania_X a formulat o tactic pentru
obinerea unui bun procentaj de pia, ntr-o mare varietate de situaii de ofertare. Aceast tactic
ine cont de natura contractului de munc, de mrimea contractului i relaiile firmei cu
cumprtorul menionat n contract. Aceast situaie particular a fost aleas deoarece, a crea
oferte este o activitate important pentru multe organizaii i de obicei implic o judecat atent i
bun, bazat pe o experien acumulat de la experii rspndii n toat organizaia. Se apreciaz
importana acestui domeniu de lucru i avantajele pe care un sistem expert le poate aduce.
LISTA 1
Studiul de caz 1 BAZA DE CUNOTIN E
cauta pret
if cost_estimat > 0
and mult este gasit
then pret_oferta=cost_estimat* factor_mult ;
pret este gasit
if valoare_indice este gasit
then factor_mult = 1 + indice/100.0 ;
mult este gasit
if indice_standard > 0
and factor_dimensiune >= 0
and factor_client >= 0
then indice = indice_standard factor _dimensiune + factor_client;
valoare_indice este gasit
183
if tip_contract este proiect_propriu
and data_contract este fixat
then segment_piata este proiect_propriu_datat
if tip_contract este proiect_propriu
and data_contract este variabila
then segment_piata este proiect_propriu_nedatat
if tip_contract este proiect_oferit
then segment_piata este stoc_pana-_la
if segment_piata este stoc_pana_la_specificari_date
then standard_indice = 18
if segment_piata este proiect_propriu_datat
then indice_standard = 22
if segment_piata este proiect_propriu_nedatat
then indice_standard = 28
if segment_piata este stoc_pana_la_specificari_date
and cost_estimativ< 50000
then factor_marime = 0
if segment_piata este stoc_pana_la_specificari_date
and cost_estimativ > = 50000
and cost _estimativ < 200000
then factor_marime = 0.5
if segment_piata este stoc_pana_la_specificari_date
and cost_estimativ > = 200000
then factor_marime = 1.0
184
if tip_contract este proiect_propriu
and cost_estimativ < 75000
then factor_marime = 0
if tip_contract este proiect_propriu
and cost_estimativ > = 75000
and cost_estimativ < 250000
then factor_marime = 0.5
if tip_contract este proiect_propriu
and estimare_cost > = 250000
then factor_marime = 1.0
if relatia_cu_client este rea
then factor_client = 0
if relatia_cu_client este medie
then factor_client = 1
if relatia_cu_client este buna
then factor_client = 1.5
if numar_de_invitatii_la_licitatie > 4
and numar_de_licitatii_castigate = 0
then relatia_cu_client este rea
if numar_de_invitatii_la_licitatie > 0
and numar_de_licitatii_castigate > 0
and clientul este nemultumit
then relatia_cu_client este rea
185
if numar_de_invitatii_la_licitatie = 0
then relatia_cu_client este medie
if numar_de_invitatii_la_licitatie > 0
and numar_de_invitatii_la_licitatie < = 4
and numar_de_licitatii_castigate = 0
then relatia_cu_client este medie
if numar_de_invitatii_la_licitatie > 0
and numar_de_licitatii_castigate > 0
and clientul este multumit
then relatia_cu_client este medie
if numar_de_invitatii_la_licitatie > 0
and numar_de_licitatii_castigate > 0
and consumatorul este pe_deplin_satisfcut
then relaia_cu_client este bun.
Figura 2 Diagrama pentru obiecte/variabile n studiul de caz 1.
186
Diagrama pentru situaia de ofertant al unui produs pe pia din baza de cunotine pentru
demonstraie este aratat n Figura 2. Urmtoarea etap este crearea unei liste a tuturor obiectelor
sau variabilelor mpreuna cu valorile permise pe care le pot primi. Aceast list i diagram
formeaz o structurare important a cunoaterii i odat realizat, se dezvolt uor o serie de
reguli pentru baza de cunotine. Desigur, e necesar o bogat experien pentru a aranja regulile
i clauzele regulilor ntr-o ordine optim, iar apoi, pe baza lor, s se poat scrie mai eficient
reguli. Regulile din Lista 1 sunt mai simple dect cele implicate n figura 2.
8.3.2. Studiul de caz 2 Descriere.
Compania Compania_Y obine cea mai mare parte din afacerile sale din licitaii
competitive. Cnd Compania_Y primete o invitaie de licitaie pentru un contract din partea
unui client, este fcut o analiz preliminar a detaliilor contractului. Scopul acesteia este de a
identifica acele contracte care pot duce la ntelegeri neprofitabile.
Analiza preliminar presupune o privire asupra factorilor de decizie cu privire la contract
i apoi determin dac firma trebuie s refuze invitaia de licitaie, sau s propun o licitaie
competitiv.
Cnd a fost ntrebat de natura exact a analizei preliminare, directorul departamentului de
licitaii a rspuns:
n primul rnd, scopul analizei primare este de a determina ct de atractiv este contractul
dat companiei, cu privire la mrimea i termenii acestuia. n general, compania refuz s propun
o licitaie pentru acele contracte, care sunt considerate prea mici sau prea mari, aceasta
nsemnnd, acele contracte cu un cost de pornire mai mici dect 100,000$ sau, mai mare dect
1,5 milioane$. Oricum, existnd condiia ca firma s aib un contract cu clientul, atunci trebuie
considerat o submisiune de licitaie, aa numitul contract cu valoare mic". Acestea sunt
contractele cu un cost de pornire de cel putin 50,000$, dar mai mic de 100,000$. Ideea este de a
se ncerca stabilirea unei relaii bune cu clienii existeni, dar nu m ntrebai dac merge sau nu!
Recent am nceput s primim o mulime de invitaii la licitaii pentru contracte de la
clieni strini, iar n prezent invitaiile din strintate nsumeaz 15% din toate invitaiile primite.
nc nu a fost adoptat o politic clar de selectare, dar n timp scurt am nfiinat reprezentane n
diverse tri strine. Avnd reprezentant n ara din care a venit invitaia, atunci clienii strini
187
sunt trataii la fel ca cei din propria pia. Dac nu este disponibil nici un reprezentant al
companiei, atunci declinm invitaia la licitaie .
Din informaiile date de discursul directorului compartimentului de licitaii, se proiecteaz
i se construiete un sistem expert, folosind Prolog apoi se recomand companiei Compania_Y
cea mai potrivit decizie de luat, cnd se primete o invitaie pentru licitaie. Aceasta nseamn c
sistemul expert face o recomandare firmei, cu privire la o ofert competitiv sau declin invitaia
la licitaie.
Tabelul 2. Studiul de caz 2 - lista obiectelor
Obiecte / Variabile Valori permise
1. ofert competitiv Scop / Ieire
decizia de oferta / licitaie 2 . refuzarea ofertei
- cost estimativ numeric>0
1. acas - locul clientului
(cumprtorului) 2. straintate
1. disponibil - reprezentana
companiei 2. indisponibil
1. da
Intrri:
- contract existent
cu clientul 2. nu
- locul 1. Acceptabil
1. valoare mic
Intermedieri
- contract
2. valoare mare
LISTA 2
Studiul de caz 2 - BAZA DE CUNOTIN E
caut decizie-ofert
if cost_estimativ < 50000
then decizie_oferta este refuz_invitatia_la_licitatie
if cost_estimativ > 1500000
then decizie_oferta este refuz_invitatia_la_licitatie
if locatia_clientului este strainatate
and reprezentanta _companiei nu este disponibila
then decizie_oferta este refuz_invitatia_la_licitatie
188
if cost_estimativ >= 100000
and cost_estimativ <= 1500000
then contractul este de_valoare_nalta
if cost_estimativ >= 50000
and cost_estimativ < 100000
then contractul este de de_valoare_scazuta
if contractul este de_valoare_scazuta
and locatia este acceptabil
and exista_contract_cu_cumprtorul este nu
then decizie_oferta este refuz_invitatia_la_licitatie
if locatia_clientului este n strintate
and reprezentantul_companiei nu este valabil
then locatia este acceptabil
if contractul este de_valoare_scazuta
and locatia este acceptabil
and exista_contract_cu_cumprtorul este da
then decizie_oferta este oferta_competitiv
if contractul este de_valoare_inalta
and locatia este acceptabil
then decizie_oferta este oferta_competitiv
if locatia_clientului este acas
then locatia este acceptabil.
Bibliografie
1. Podaru, V., Inteligen artificial i siteme expert, Editura Academiei Tehnice Militare, 1997
2. Podaru, V., Barnoschi, A., Sisteme expert, Editura Academiei Tehnice Militare, 2000, 2004.
3. Georgescu, I., Elemente de inteligen artificial, Editura Academiei RSR, 1985.
INTRODUCERE N LIMBAJUL PROLOG
LEC IA 1.
NO IUNI INTRODUCTIVE
Prolog este un limbaj de programare utilizat pentru rezolvarea problemelor care
implic existena obiectelor i a relaiilor dintre acestea. n acest capitol vom prezenta
principalele elemente ale limbajului fr ns a acorda atenie detaliilor, regulilor formale i
excepiilor. Ne vom concentra atenia asupra unor noiuni de baz cum ar fi: fapte, ntrebri,
variabile, conjuncii i reguli. Ceea ce dorim este s ajungem ct mai repede n stadiul de a
scrie programe utile. Alte caracteristici ale limbajului Prolog, cum ar fi listele i
recursivitatea, vor fi abordate n capitolele urmtoare.
Utilizm limbajul Prolog pentru rezolvarea cu ajutorul calculatorului a problemelor
care pot fi exprimate n forma obiectelor i a relaiilor dintre acestea. De exemplu, atunci cnd
spunem Cartea este a lui Ion, declarm faptul c exist o relaie, cea de proprietate, ntre un
obiect Ion i un alt obiect individual carte. n plus, relaia de mai sus este o relaie de
ordine: cartea este proprietatea lui Ion, dar Ion nu este proprietatea crii! Atunci cnd punem
ntrebarea Cartea este a lui Ion?, ncercm s ne informm despre o anumit relaie.
Un alt exemplu, regula Doi indivizi umani sunt surori, dac ambii sunt de sex feminin
i dac au aceiai prini precizeaz nelesul faptului de a fi surori. De asemenea, regula ne
arat i cum aflm dac doi indivizi umani sunt surori: nu trebuie dect s verificm dac
ambii sunt de sex feminin i dac au aceiai prini.
Ceea ce este de reinut n privina regulilor este faptul c acestea sunt de obicei mult
simplificate, dar sunt acceptabile ca i definiii.
Programarea n limbajul Prolog const n:
declararea unor fapte despre obiecte i relaiile dintre acestea;
definirea unor reguli n legtur cu obiectele i relaiile dintre acestea; i
formularea de ntrebri relative la obiecte i la relaiile dintre acestea.
De exemplu, s presupunem c am fcut cunoscut unui sistem Prolog regula de mai
sus cu privire la surori. Putem apoi s ntrebm dac Maria i Jana sunt surori. Prolog va
cuta prin baza de date ceea ce i-am spus despre Maria i Jana, i va furniza la ieire
rspunsul yes (da) sau no (nu), n funcie de datele pe care i le-am furnizat anterior. Prin
urmare, putem considera Prolog ca un depozitar de fapte i reguli, pe care le folosete pentru a
rspunde la ntrebri. Programarea n Prolog const n precizarea tuturor acestor fapte i
reguli. Sistemul Prolog transform calculatorul n depozitar al acestor fapte i reguli i pune la
dispoziie moduri de efectuare a inferenelor logice.
Prolog este un limbaj conversaional, ceea ce nseamn c ntre calculator i utilizator
poate avea loc un dialog. Faptele i regulile relative la problema care se dorete a fi rezolvat
sunt introduse n Prolog. Ulterior, prin formularea de ntrebri corecte, Prolog va elabora i
va afia rspunsurile pe dispozitivul de afiare.
n continuare vom introduce, pe rnd, fiecare dintre elementele fundamentale ale
Prolog-ului. Nu vom prezentata imediat fiecare din facilitile Prolog in extenso. n capitolele
urmtoare vom gsi referine complete i exemple.
1.1 Fapte
Mai nti vom prezenta problematica faptelor i legtura acestora cu obiectele i
relaiile dintre acestea. S presupunem c dorim s comunicm Prolog-ului faptul c Ion o
10
place pe Maria. Acest fapt se compune din dou obiecte, denumite Ion i Maria, i o
relaie denumit place. n limbajul Prolog faptele trebuie scrise ntr-o form standard (de
obicei sub forma unui predicat), precum cea de mai jos:
place(ion,maria).
Este important s reinem urmtoarele aspecte:
- Numele tuturor relaiilor i obiectelor trebuie s nceap cu caractere minuscule. De
exemplu, place, ion, maria.
- Relaia este cea scris mai nti, obiectele fiind scrise ntre paranteze rotunde i
separate prin virgul.
- La sfritul fiecrui fapt trebuie s existe caracterul punct . .
Atunci cnd definim relaii ntre obiecte prin intermediul faptelor, trebuie s acordm
atenie ordinii n care sunt scrise obiectele ntre parantezele rotunde. De fapt, odinea este
arbitrar, ns trebuie s decidem o anumit ordine pe care s o respectm. De exemplu, n
faptul descris mai sus am plasat subiectul aciunii de a place (cel care place) pe prima
poziie, iar obiectul aciunii de a place (cel care este plcut) pe cea de a doua poziie. Astfel,
faptul place(ion,maria) nu reprezint acelai lucru ca i faptul place(maria,ion).
Primul fapt afirm c Ion o place pe Maria, iar al doilea afirm c Maria l place pe Ion, n
conformitate cu convenia pe care am stabilit-o. Dac dorim s exprimm faptul c Maria l
place pe Ion, atunci trebuie ca n mod explicit s scriem astfel:
place(maria,ion).
Iat cteva exemple de fapte, mpreun cu posibilele lor interpretri:
valoros(aur). Aurul este preios.
femeie(jana). Jana este femeie.
are(ion,aur). Ion are aur.
tata(ion,maria). Ion este tatl Mariei.
da(ion,carte,maria). Ion d cartea Mariei.
Ori de cte ori este folosit un nume, acesta se refer la un anumit obiect particular.
Este clar c numele ion i maria se refer la indivizi umani. Dar am folosit n faptele de mai
sus i numele aur i valoros i nu rezult n mod necesar evident ce ar putea nsemna. Acest
fel de nume este denumit de ctre logicieni non-count word (cuvnt non-numr). Atunci
cnd folosim un nume, trebuie s ne decidem asupra modului n care interpretm numele.
S discutm cteva aspecte privitoare la terminologie. Numele obiectelor cuprinse
ntre paranteze rotunde n cadrul fiecrui fapt sunt denumite argumente. Numele relaiei care
se afl plasat naintea perechii de paranteze rotunde se numete predicat. Astfel, valoros
este un predicat cu un singur argument, iar place este un predicat care are dou argumente.
Numele obiectelor i relaiilor sunt complet arbitrare. n locul termenului
place(ion,maria) putem folosi la fel de bine i cu acceai semnificaie termenul
a(b,c), trebuind doar s inem minte c a nseamn place, b nseamn ion, iar c
nseamn maria. Este recomandat s se foloseasc acele nume care s aib semnificaia a
ceea ce ele reprezint.
Relaiile pot avea un numr arbitrar de argumente. Spre exemplu, dac definim un
predicat denumit joaca, n cadrul cruia sunt precizai doi juctori i jocul pe care-l joac,
vor fi necesare trei argumente. Iat dou exemple de astfel de fapte:
11
joaca(ion,maria,fotbal).
joaca(jana,jean,badminton).
Utilizarea mai multor argumente ntr-un predicat este important n reprezentarea
interaciunilor complexe dintre relaii.
Exist posibilitatea de a declara fapte care nu sunt adevrate n lumea real. Putem
scrie, de exemplu, rege(ion,romania), pentru a preciza faptul c Ion este regele
Romaniei. n lumea real acest fapt este n mod evident fals, pentru c Romania este republic
constituional deoarece monarhia a fost abolit n anul 1947. Prolog nu tie i nici nu-l
intereseaz acest lucru. n Prolog, faptele permit pur i simplu exprimarea unor relaii
arbitrare ntre obiecte.
n Prolog, o colecie de fapte este denumit o baz de date. Se va folosi sintagma baz
de date ori de cte ori avem o colecie de fapte (i, mai trziu, reguli) care sunt folosite pentru
rezolvarea unei anumite probleme particulare.
1.2 ntrebri
Odat definite faptele, se pot formula ntrebri asupra acestora. n Prolog, o ntrebare
arat la fel ca i un fapt, deosebirea constnd n precedarea acestuia de ctre un simbol
special. Simbolul special este scris sub forma unui semn de ntrebare i a unei cratime(?-).
S considerm ntrebarea de mai jos:
?-are(maria,carte).
Dac interpretm argumentul maria ca desemnnd o persoan pe nume Maria, i
argumentul carte ca desemnnd o anumit carte, prin aceast ntrebare se dorete a se afla
dac Cartea este a Mariei sau Este un fapt acela c Maria are cartea Nu ne rezult de
aici dac toate crile sunt ale Mariei sau dac ea are anumite cri .
Atunci cnd i se adreseaz o ntrebare, Prolog caut n baza de date constituit
anterior. El caut fapte care s se potriveasc cu faptul coninut n ntrebare. Dou fapte se
potrivesc, dac predicatele lor sunt identice (sunt scrise identic) i dac argumentele lor
corespunztoare sunt aceleai. Dac Prolog gsete un fapt care se potrivete cu ntrebarea,
atunci va rspunde yes. Dac n baza de date nu exist un asemenea fapt, Prolog va rspunde
no. Rspunsul dat de Prolog va fi afiat pe ecranul terminalului, pe linia imediat urmtoare
celei pe care s-a scris ntrebarea. S considerm urmtoarea baz de date:
place(gogu,peste).
place(gogu,maria).
place(maria,carte).
place(ion,carte).
Dup ce s-a introdus toate aceste fapte n sistemul Prolog, se pot formula ntrebri, iar
Prolog va da rspunsurile (artate mai jos cu caractere aldine) pe linia imediat urmtoare
liniei pe care se afl scris ntrebarea)
?- place(gogu,bani).
no
?- place(maria,gogu).
12
no
?- place(maria,carte).
yes
?- rege(ion,romania).
no
Rspunsurile la primele trei ntrebri sunt clare. Prolog a rspuns, de asemenea, no, i
la ntrebarea dac Ion este regele Romaniei. Aceasta deoarece nu exist nici un fapt relativ la
regalitate n cadrul bazei de date care conine cele patru relaii place. n Prolog, rspunsul
no este utilizat pentru a semnifica faptul c nimic nu se potrivete cu ntrebarea. Este
important de reinut faptul c no nu reprezint acelai lucru cu false.
S considerm un alt exemplu, cu o baz de date despre unii dintre cei mai faimoi
filozofi greci ai antichitii, baz care conine urmtoarele trei fapte:
om(socrate).
om(aristotel).
atenian(socrate).
Putem formula ntrebri:
?- atenian(socrate).
yes
?- atenian(aristotel).
no
?- grec(socrate).
no
Dei n istoria adevrat este adevrat faptul c Aristotel a trit n Atena, nu se poate
dovedi acest lucru cu ajutorul faptelor care se gsesc n baza de date. Mai mult, dei se
specific n baza de date faptul c Socrate este atenian, aceasta nu dovedete c este grec,
deoarece nu exist informaii suplimentare n acest sens, n baza de date. Deci, atunci cnd
Prolog rspunde no la o ntrebare, aceasta nseamn c faptul respectiv nu poate fi dovedit.
1.3 Variabile
n Prolog nu numai c putem da nume unor anumite obiecte particulare, dar putem
folosi nume ca X, care s nlocuiasc obiectele ce vor fi determinate de Prolog. Numele din
aceast a doua categorie sunt denumite variabile. Atunci cnd Prolog folosete o variabil,
aceasta poate fi instaniat sau neinstaniat.
O variabil este instaniat atunci cnd exist un obiect pe care variabila l nlocuiete.
O variabil este neinstaniat atunci cnd ceea ce este nlocuit de ctre variabil este nc
necunoscut. Prolog face deosebire ntre variabile i nume ale anumitor obiecte particulare prin
faptul c orice nume care ncepe cu majuscul este considerat variabil.
Atunci cnd i se pune Prolog-ului o ntrebare care conine o variabil, acesta caut
printre toate faptele un obiect ce ar putea fi nlocuit de ctre variabil. Astfel, atunci cnd
ntrebm i place lui Ion obiectul X?, Prolog caut printre toate faptele pentru a gsi lucrurile
care i plac lui Ion.
O variabil, spre exemplu X, nu desemneaz un anume obiect n sine, dar poate fi
folosit pentru a nlocui obiecte pe care nu le putem numi. Prolog permite utilizarea
13
variabilelor, n felul urmtor:
?- place(ion,X).
S considerm urmtoarea baz de date cu fapte, urmat de o ntrebare:
place(ion,flori).
place(ion,maria).
place(paul,maria).
?- place(ion,X).
Deci ntrebarea are semnificaia dac Exist ceva care s-i plac lui Ion? Atunci cnd
i este adresat aceast ntrebare, Prolog va rspunde:
X=flori
i va atepta instruciuni suplimentare, despre care vom vorbi imediat. Cum funcioneaz
acest mecanism? Atunci cnd Prolog-ului i se pune aceast ntrebare, variabila X este iniial
neinstaniat. Prolog caut prin baza de date un fapt care s se potriveasc cu ntrebarea. Dac
n coninutul ntrebrii apare o variabil neinstaniat ca argument, atunci Prolog va permite
ca potrivirea acestui argument s se fac cu orice alt argument aflat n aceeai poziie n
cadrul declaraiei faptului. Ceea ce se ntmpl este aceea c Prolog caut orice fapt al crui
predicat este place i al crui prim argument este ion. n acest caz cel de-al doilea argument
poate avea orice valoare, deoarece ntrebarea a fost pus avnd drept al doilea argument o
variabil neinstaniat. Atunci cnd este gsit un asemenea fapt, variabila X va fi instaniat cu
cel de-al doilea argument, indiferent de valoarea acestuia. Prolog caut n baza de date n
ordinea n care aceasta a fost scris (de sus n jos, n pagin), primul gsit este faptul
place(ion,flori). Variabila X este instaniat cu obiectul al crui nume este flori.
Totodat, Prolog marcheaz locul n care a descoperit o potrivire n cadrul bazei de date, acest
marker fiind folosit atunci cnd se va efectua o revenire pe care o vom discuta mai trziu.
Odat ce Prolog gsete un fapt care s se potriveasc cu ntrebarea, el afieaz
variabilele i obiectele cu care sunt instaniate. n acest caz X a fost instaniat cu flori. n
continuare Prolog ateapt instruciuni suplimentare. Dac apsm tasta Enter, ceea ce
nseamn c suntem satisfcui cu un singur rspuns, atunci Prolog va opri procesul de
cutare. Dac apsm tasta ; (urmat de apsarea tastei Enter), atunci Prolog va relua
cutarea n baza de date dup acelai principiu, pornind din locul n care a plasat markerul.
Atunci cnd Prolog ncepe cutarea dintr-un loc marcat i nu de la nceputul bazei de date,
spunem c Prolog ncearc s resatisfac ntrebarea.
S presupunem c la primul rspuns al Prolog-ului (X=flori) i-am cerut (apsnd
tasta ;) s continue. Aceasta nseamn c dorim satisfacerea ntrebrii ntr-un alt mod (alt
rspuns); dorim s gsim un alt obiect care s fie nlocuit de X. Aceasta nsemn c Prolog
trebuie s uite c variabila X nlocuiete obiectul flori i s reia cutarea avnd din nou
variabila X neinstaniat. Deoarece cutm o alt variant de rspuns, cutarea este reluat din
locul n care este plasat markerul. Urmtorul fapt care se potrivete cu ntrebarea este
place(ion,maria). Variabila X este acum instaniat cu valoarea maria, iar Prolog pune
markerul n dreptul faptului place(ion,maria). Prolog va afia X=maria i va atepta
comenzile urmtoare. Dac vom continua apsnd din nou tasta ;, Prolog va continua
cutarea. n acest exemplu nu mai sunt alte fapte care s afirme ce i place lui Ion. Astfel,
14
Prolog va opri cutarea, permindu-ne s formulm i alte ntrebri sau s adugm noi fapte.
Ce se ntmpl dac, date fiind faptele de mai sus, punem ntrebarea:
?- place(X,maria).
Aceast ntrebare nseamn, Este un obiect care s o plac pe Maria? Deja ar fi
trebuit s fi vzut c obiectele, din exemplul dat, care o plac pe maria sunt ion i paul. Din
nou, dac dorim s vedem toate rspunsurile, vom apsa tasta ; dup care Prolog afieaz
cte un rspuns:
?- place(X,maria). ntrebarea pe care o punem.
X=ion; primul rspuns. Tastm ;.
X=paul; al doilea rspuns. Tastm din nou ;.
no nu mai sunt rspunsuri.
1.4 Conjunc ii
S presupunem c dorim s obinem rspunsuri la ntrebri referitoare la relaii mai
complexe, cum ar fi, Se plac Ion i Maria? O modalitate de a face acest lucru ar fi accea de a
ntreba mai nti dac Ion o place pe Maria i, dac Prolog rspunde yes, atunci s ntrebm
i dac Maria l place pe Ion. Astfel, aceast problem const din dou scopuri pe care
sistemul Prolog trebuie s ncerce s le satisfac. Deoarece o astfel de combinaie este
frecvent utilizat de ctre programatorii n limbajul Prolog, exist o notaie special pentru
aceasta. S presupunem c avem urmtoarea baz de date:
place(maria,mancare).
place(maria,vin).
place(ion,vin).
place(ion,maria).
Dorim s ntrebm dac Ion i Maria se plac. Pentru aceasta ntrebm O place Ion pe
Maria? i l place Maria pe Ion?. Conjuncia i (and) exprim ideea c suntem interesai de
conjuncia dintre cele dou scopuri - adic dorim satisfacerea ambelor, unul dup altul. Putem
reprezenta acest lucru prin plasarea unei virgule , ntre cele dou scopuri (care va juca rolul
conjunciei i):
?- place(ion,maria), place(maria,ion).
Virgula se citete i putnd separa oricte scopuri se doresc a fi satisfcute, pentru a
rspunde la o ntrebare. Atunci cnd i se transmite sistemului Prolog o secven de scopuri
(separate prin virgule), acesta ncearc satisfacerea fiecruia pe rnd, prin cutarea unei
potriviri n baza de date. Pentru ca secvena s fie satisfcut, toate scopurile ce o compun
trebuie s fie satisfcute. Folosind lista de fapte anterioar, ce va afia Prolog atunci cnd i se
pune ntrebarea de mai sus? Rspunsul este no. Este un fapt care afirm c Ion o place pe
Maria, deci primul scop este satisfcut (true). Cu toate acestea cel de-al doilea scop nu
poate fi dovedit, deoarece nu exist n lista de fapte nici unul de forma
place(maria,ion), care s afirme c Maria l place pe Ion. Cum am dorit s aflm dac
cei doi se plac unul pe cellalt, rspunsul la ntrebare este no.
Pentru a rezuma, ne putem imagina o conjuncie de scopuri aranjate de la stnga la
15
dreapta, scopurile fiind separate prin virgule. Fiecare scop poate avea un vecin aflat la stnga
i unul aflat la dreapta. Evident, scopul aflat la limita stng a conjunciei nu mai are nici un
vecin n stnga sa, iar cel aflat la limita dreapt a conjunciei nu mai are nici un vecin n
dreapta sa. Atunci cnd trece la rezolvarea unei conjuncii de scopuri, Prolog ncearc
satisfacerea fiecrui scop n parte, de la stnga spre dreapta. Dac un scop este satisfcut,
Prolog las un marker n baza de date care este asociat scopului respectiv. Gndim aceasta ca
i cnd am desena o sgeat de la scop pn la locul din baza de date n care se afl soluia.
Mai departe, toate variabilele care anterior erau neinstaniate, pot fi acum instaniate. Aceasta
s-a produs la pasul 1 din succesiunea prezentat mai sus. Dac o variabil devine instaniat,
atunci toate apariiile variabilei n cadrul ntrebrii vor fi nlocuite cu acea valoare. Prolog
ncearc apoi s satisfac scopul care este vecinul din dreapta al scopului pe care tocmai l-a
satisfcut, efectund cutarea de la nceputul bazei de date.
Pe msura satisfacerii scopurilor, pentru fiecare scop satisfcut rmne cte un marker
n cadrul bazei de date (o sgeat de la scop pn la faptul care se potrivete), n cazul n care
scopul va trebui resatisfcut ulterior. Ori de cte ori un scop nu poate fi satisfcut (nu se poate
gsi un fapt care s se potriveasc ntrebrii), Prolog se ntoarce i ncearc resatisfacerea
vecinului din stnga, ncepnd cutarea de la markerul acestuia. Mai mult, Prolog trebuie s
dezinstanieze toate variabilele care au fost instaniate n cadrul scopului respectiv. Cu alte
cuvinte, Prolog trebuie s tearg coninutul tuturor variabilelor, atunci cnd resatisface un
scop. Dac fiecare scop ncepnd din dreapta, nu mai poate fi resatisfcut, atunci eurile se
propag spre stnga, pe msur ce scopurile nu pot fi satisfcute. Dac i primul scop (cel mai
din stnga) eueaz, acesta nu mai are un alt vecin, la stnga sa, pe care s ncerce s-l
resatisfac. n acest caz ntreaga conjuncie de scopuri eueaz (nu poate fi satisfcut). Acest
mod de lucru, n care Prolog ncearc s satisfac i s resatisfac scopurile din compunerea
unor conjuncii, se numete backtracking. Acesta este prezentat sumar n capitolul urmtor, i
este tratat pe larg n capitolul 4.
O regul este o afirmaie cu caracter general despre obiecte i despre relaiile dintre
acestea. De exemplu, putem spune c Nicu este pasre, dac Nicu este animal i dac Nicu
are pene chiar dac n lumea real o astfel de afirmaie nu-i are sens. Astfel, putem face ca o
variabil s nlocuiasc un obiect diferit, la fiecare utilizare diferit a regulii. n cadrul unei
singure utilizri a unei reguli, desigur, variabilele sunt interpretate n mod consistent.
S considerm un alt exemplu, cu o regul care utilizeaz o variabil i o conjuncie.
Lui Ion i place X, dac lui X i place vinul.
n Prolog, o regul se compune din antet i corp. Antetul i corpul sunt legate prin
simbolul ":-", format dintr-un caracter dou puncte i un caracter cratim. Simbolul ":-"
este citit dac. Exemplul de mai sus este scris n Prolog astfel:
place(ion,X):- place(X,vin).
Observm c i pentru reguli scrierea se ncheie cu punct. Antetul acestei reguli este
place(ion,X). Antetul regulii descrie faptul care se intenioneaz a se defini. Corpul, n
acest caz place(X,vin), descrie conjuncia de scopuri care trebuie satisfcute, unul dup
altul, pentru ca faptul definit de antet s fie adevrat. Ori de cte ori o variabil X devine
instaniat cu un anumit obiect, toate apariiile variabilei X sunt instaniate cu acelai obiect pe
ntrega ntindere a domeniului de vizibilitate i valabilitate al variabilei X. Pentru o anumit
utilizare a unei reguli, domeniul de vizibilitate i valabilitate al variabilei X este ntreaga
regul, inclusiv antetul, inclusiv punctul ., de la sfritul regulii. Astfel, n regula de mai
sus, dac se ntmpl ca X s fie instaniat cu valoarea maria, atunci Prolog va ncerca s
satisfac scopurile femeie(maria) i place(maria,vin).
16
LECTIA 2.
ELEMENTELE DE BAZ PROLOG
Prolog asigur moduri de structurare a datelor ct i moduri de a structura ordinea n
care se ncearc satisfacerea scopurilor. Structurarea datelor implic cunoaterea sintaxei cu
ajutorul creia se pot deduce datele. Structurarea ordinii n care se rezolv scopurile implic
cunotine despre backtracking. n acest capitol vom trata mai pe larg componentele din
Prolog introduse n capitolul anterior.
1.5 Sintaxa
Sintaxa unui limbaj descrie regulile de scriere a instruciunilor. Programele Prolog
sunt constituite din termeni. Un termen poate fi o constant, o variabil, sau o structur.
Fiecare termen este scris ca o secven de caractere. Caracterele sunt mprite n patru
categorii dup cum urmeaz:
A B C D E F G H I J K L N O P Q R S T U V W X Y Z
a b c d e f g h i j k l n o p q r s t u v w x y z
0 1 2 3 4 5 6 7 8 9
+ - * / \ ^ < > : . , ? @ $ &
Pimul rnd const n literele mari. Al doilea rnd conine literele mici. Al treilea rnd
conine cifrele, iar al patrulea semnele speciale. De fapt sunt mai multe caractere semn dect
cele din rndul patru, dar ele au ntrebuinare special care va fi discutat mai jos. Fiecare
termen, fie c este o constant, fie o variabil sau structur, are reguli specifice de formare a
numelui lor din caractere. Vom descrie mai departe fiecare categorie de termeni.
1.5.1 Constante
Constantele definesc obiecte sau relaii specifice. Sunt dou tipuri de constante: atomi
i ntregi. Exemple de atomi sunt numele pe care le-am dat n capitolul anterior:
place maria ion carte vin are bijuterii poate_fura
Simbolurile speciale pe care le folosete Prolog-ul pentru a arta interogarea ?- i
regulile :- sunt de asemenea atomi. Sunt dou tipuri de atomi: cei constituii din litere i
cifre i cei formai din semne. Primul tip trebuie s nceap n mod normal cu o liter mic,
aa cum am vzut n capitolul anterior. Acei atomi care sunt formai din semne vor conine
numai semne. Unii atomi ncep cu o liter mare sau o cifr (situaie n care sunt considerai
atomi numere). Dac un atom este nchis ntre ghilimele simple , atunci atomul poate
conine orice caracter n numele su. n sfrit caracterul subliniere _ poate fi inserat n
mijlocul unui atom pentru a crete lizibilitatea. n continuare cteva exemple de atomi:
loc = george-iancu george_iancu ieh2304
Urmtoarele nu sunt exemple de atomi:
2304ieh george-iancu Loc _alfa
ntregii, alt categorie de constante, sunt folosite pentru a reprezenta numere, astfel
17
nct s poat fi rezolvate operaiile aritmetice. ntregii sunt numere compuse numai din cifre
i care nu conin punctul zecimal, de exemplu:
0 1 999 512 8192 14765 6224
Prolog este disponibil pe diverse tipuri de calculatoare astfel c n funcie de calculator
apar limitri n ceea ce privete mrimea i semnul ntregilor. n aceast carte se vor folosi
numai numere ntregi cuprinse ntre 0 i 65535 care lucreaz sub orice tip de Prolog deoarece
Prolog-ul nu necesit n general calcule care s foloseasc ntregi mari, fracii sau numere
negative. Totui, Prolog fiind un limbaj extensibil, programatorii pot aduga fr prea mari
dificulti, asemenea faciliti. De exemplu, anumite sisteme Prolog ofer biblioteci de
programe care definesc operaii cu numere raionale i numere cu o precizie arbitrar.
1.5.2 Variabile
Al doilea tip de termeni folosit n Prolog este variabila. Variabilele sunt asemntoare
atomilor, cu excepia faptului c numele lor ncepe cu liter mare sau cu semnul cratim _.
O variabil se folosete ca un suport pentru un obiect pe care nu l putem nc nominaliza. n
exemplele pe care le-am dat am folosit variabile cu nume ca X, Y i Z. Numele variabilelor pot
fi de lungime arbitrar:
Raspuns Input Plata_Proasta Soareci_orbi
Cteodat se simte nevoia folosirii unei variabile, fr a ne interesa numele ei. De
exemplu, dac vrem s cutm pe cineva care-l place pe Ion dar nu vrem s tim cine este,
putem folosi variabile anonime. Variabila anonim se scrie ca un singur caracter _ .
Exemplul nostru este scris n Prolog ca:
?-place(_,ion).
1.5.3 Structuri
Al treilea tip de termeni folosit n scrierea programelor Prolog este structura. O
structur este un obiect singular care const dintr-o colecie de alte obiecte, numite
componente. Componentele sunt grupate mpreun ntr-o singur structur pentru uurina
manipulrii lor. Structurile sunt numite uneori termeni compui sau termeni compleci.
Din aceste dou posibiliti preferm numele termen compus.
Un exemplu de structur din viaa real este o fia-index pentru o carte din bibliotec.
Fia-index conine cteva componente: numele autorului, titlul crii, data publicrii, cota
crii i altele. Unele componente pot fi descompuse n alte componente. De exemplu, numele
autorului const din cteva iniiale i numele de familie.
Structurile ajut la organizarea datelor n program deoarece ele permit tratarea unui
grup de informaii nrudite ca un singur obiect (o fi de bibliotec) i nu ca entiti separate.
Modul de descompunere a datelor n componente depinde de tipul de problem pe care-l
rezolvm.
Structurile sunt de asemeni folositoare cnd exist un numr mare de obiecte de
acelai tip, cri, de exemplu.
O structur este scris n Prolog prin specificarea functorului i componentelor sale.
Functorul denumete tipul general de structur i corespunde unui tip de dat din limbajele de
programare obinuite. Componentele sunt nchise ntre paranteze i sunt desprite de virgule.
18
S considerm urmtorul fapt, acela c Ion deine o carte numit Duminica orbului, de Cezar
Petrescu:
are(ion,carte(duminica_orbului,petrescu)).
n interior, faptul are o structur cu numele carte, care are dou componente, un titlu i
un autor. Deoarece structura carte apare n interiorul faptului ca unul din argumentele sale, se
comport ca un obiect, lund parte la relaie. Putem avea o alt structur pentru numele
autorului dac dorim s distingem ntre doi autori cu numele Petrescu (Camil i Cezar) ca n
exemplul:
are(ion,carte(duminica_orbului,autor(cezar,petrescu)))
Structurile pot participa, folosind variabilele, n procesul de interogare-rspuns al
Prolog-ului. De exemplu putem ntreba dac Ion deine vreo carte de unul din autorii
Petrescu:
?-are(ion,carte(X,autor(Y,petrescu))).
Dac este adevrat, X va fi instaniat la titlul gsit i Y la prenumele autorului. Sau, putem
folosi variabile anonime:
?-are(ion,carte(_,autor(_,petrescu))).
S reinem c variabilele anonime nu partajeaz una cu cealalt.
Sintaxa structurii este asemntoare cu cea a faptului. Un predicat (folosit n fapte i
reguli) este functorul structurii. Programele Prolog sunt constituite din constante, variabile i
structuri.
1.6 Caractere
Numele constantelor i variabilelor sunt construite din iruri de caractere. Dei fiecare
tip de nume (atom, ntreg, variabil) are reguli specifice de construcie, este bine de tiut care
sunt caracterele recunoscute de Prolog. Prolog recunoate dou tipuri de caractere: tipribile i
netipribile. Caracterele tipribile se exteriorizeaz prin semne care apar pe display.
Caracterele netipribile determin execuia unei aciuni fr a fi reprezentabile pe ecran.
Tipuri de aciuni obinuite sunt: spaiul, nceputul unei noi linii de text i poate chiar un
semnal sonor. Iat toate caracterele tipribile care pot fi folosite
A B C D E F G H I J K L N O P Q R S T U V W X Y Z
a b c d e f g h i j k l n o p q r s t u v w x y z
0 1 2 3 4 5 6 7 8 9
! $ % & ` ( ) = - ^ | \ { }
_ @ + ; * : < >,. ? /
Evident un set mai complet dect cel dat la nceputul capitolului. Unele caractere au nelesuri
speciale. De exemplu, parantezele rotunde sunt folosite pentru a exprima componentele unei
structuri. Caracterele pot fi tiprite, citite de la tastatur, comparate, i pot lua parte la operaii
aritmetice.
Caracterele sunt tratate ca ntregi mici ntre 0 i 127. Fiecare caracter are un ntreg
asociat, numit codul ASCII. Termenul ASCII nseamn American Standard Code for
19
Information Interchange, i este codul pe care l folosesc multe calculatoare i limbaje de
calculatoare. O tabel cu codurile ASCII poate fi gsit n diverse manuale de calculatoare.
Literele sunt aezate n ordine alfabetic, astfel c a compara ordinea alfabetic nseamn a
compara codurile ASCII folosind operatorii relaionali ce vor fi descrii n acest capitol.
Caracterele tipribile au codul ASCII mai mare dect 32.
1.7 Operatori
Cteodat este convenabil s se scrie anumii functori ca operatori n acest caz
anumite structuri sunt mai uor de citit. Operaiile aritmetice sunt scrise n mod obinuit ca
operatori, spre exemplu, n expresia aritmetic x+y*z, semnul plus, + i semnul de
multiplicare, * sunt operatori. Atunci expresia aritmetic x+y*z va arta scris ca o
structur astfel: +(x,*(y,z)), i va fi un termen Prolog legal. Este important de subliniat
c operatorii nu determin ca o operaie aritmetic s se execute. Astfel n Prolog, 3+4 nu
nseamn acelai lucru ca valoarea 7. Termenul 3+4 este o alt cale de a scrie termenul
+(3,4), care este o dat de tip structur. Vom vedea mai trziu o cale n care structurile pot
fi interpretate ca i cum ar reprezenta expresii aritmetice, i pot fi evaluate n concordan cu
regulile aritmetice.
Pentru a interpreta expresiile aritmetice care conin operatori trebuie s se tie despre
fiecare operator urmtoarele: poziia, precedena i asociativitatea sa. Dei pot fi construite
diverse tipuri de operatori vom trata doar atomii care definesc operaiile arirmetice +, -, *
i /.
Sintaxa termenilor care conin operatori depinde n parte de poziia operatorilor.
Operatorii cum ar fi plus (+), liniu (-), asterix (*) i slash (/) sunt scrii ntre argumentele
lor i se vor numi operatori infix. Operatorii se pot pune i naintea argumentelor ca n -
x+y, unde minus din faa lui x este folosit n aritmetic pentru a arta opusul lui x.
Operatorii care sunt aezai naintea argumentelor lor se numesc operatori prefix. Unii
operatori pot fi aezai i dup argumentele lor, de exemplu, operatorul factorial (x!).
Operatorii care sunt scrii dup argumentele lor se numesc operatori postfix. Deci poziia unui
operator ne arat unde va fi scris operatorul n relaie cu argumentele sale.
Precedena unui operator este folosit pentru a indica care operaie va fi executat
prima. Fiecare operator folosit n Prolog are o clas de preceden asociat care este un ntreg
asociat operatorului. Valoarea exact a ntregului depinde de versiunea de Prolog folosit. Un
operator cu o preceden mai mare are o clas de preceden mai apropiat de 1. n Prolog
operatorii de multiplicare i mprire au o preceden mai mare dect adunarea i scderea,
astfel c termenul a-b/c este la fel ca termenul -(a,/(b,c)). Asocierea exact a
operatorilor la clasele de preceden nu este important dar este important de reinut ordinea
relativ n care se execut operaiile.
S reinem c, nici o operaie aritmetic nu este executat pn nu este comandat de
predicatul is descris n seciunea 2.5.
1.8 Egalitate i potrivire
Un predicat important este egalitatea, care este un operator infix scris astfel: =.
Cnd se ncearc satisfacerea scopului
?- X = Y.
(pronunat X egal cu Y), Prolog ncearc s potriveasc X i Y, i scopul reuete dac se
20
potrivesc. Se poate judeca aceast aciune ca o ncercare de a face pe X i Y egali. Predicatul
egalitate este predefinit, este deja definit n sistemul Prolog i lucreaz ca i cum ar fi definit
de urmtorul fapt:
X = X.
Fiind dat un scop de forma X = Y, unde X i Y sunt orice doi termeni care pot conine
variabile neinstaniate, regulile dup care se decide cnd X i Y sunt egali sunt urmtoarele:
dac X este o variabil neinstaniat i dac Y este instaniat cu orice termen, atunci
X i Y sunt egali. De asemenea X va deveni instaniat cu valoarea lui Y.
ntregii i atomii sunt ntotdeauna egali cu ei nii. De exemplu, urmtoarele
scopuri au comportarea artat:
politai = politai reuete
hartie = creion nu reuete
1066= 1066 reuete
1206 =1583 nu reuete
dou structuri sunt egale dac au acelai functor i acelai numr de componente, i
toate componentele corespondente sunt egale. De exemplu, urmtorul scop reuete, i face ca
X s fie instaniat cu bicicleta:
merge(preot,bicicleta) = merge(preot,X)
Structurile pot fi ncuibrite una n cealalt pe orice nivel. Dac asemenea structuri
sunt testate pentru egalitate, testul va dura ceva mai mult deoarece sunt mai multe structuri de
testat. Urmtorul scop
a(b,C,d(e,F,g(h,i,J))) = a(B,c,d(E,f,g(H,i,j)))
va reui i va determina ca B s fie instaniat cu b, C cu c, E cu e, F cu f, H cu h, i J cu j.
Un scop X=Y va reui ntotdeauna chiar dac unul dintre argumente este neinstaniat.
Un mod mai uor de a scrie o asemenea regul este de a folosi faptul c o variabil este egal
cu ea nsi, rezultnd:
egal(X,X).
Prolog asigur de asemenea un predicat \=, care se citete nu este egal. Scopul
X\=Y reuete dac X=Y nu reuete, i nu reuete dac X=Y reuete. Astfel, X\=Y
nseamn X nu poate fi fcut egal cu Y.
1.9 Aritmetica limbajului.
n aceast seciune vom vedea modalitatea n care Prolog abordeaz operaiile
aritmetice
Compararea numerelor. Prolog ofer cteva predicate predefinite pentru compararea
numerelor. Argumentele pot fi variabile instaniate cu ntregi, sau pot fi ntregi scrise ca i
constante. Iat lista predicatelor folosite pentru compararea numerelor. Reinem c putem s
le scriem ca operatori infix:
21
X=Y x i y sunt egale
X\=Y x i y sunt diferite
X<Y x este mai mic ca y
X>Y x este mai mare ca y
X=<Y x este mai mic sau egal cu y
X>=Y x este mai mare sau egal cu y
Simbolul mai mic sau egal cu nu este scris ca <= ca n alte limbaje de programare.
Aceasta deoarece Prolog poate folosi n alte scopuri atomul <= (care arat ca o sgeat).
Deoarece aceti operatori de comparaie sunt predicate, se poate scrie urmtorul fapt
Prolog, 2>3, pentru a afirma c 2 este de fapt mai mare ca 3. Un asemenea fapt este legal n
Prolog, din punct de vedere sintactic. Totui, Prolog nu permite adugarea de fapte la
predicatele care sunt predefinite. Asta previne schimbarea ntr-un mod neateptat a sensului
predicatelor predefinite. n capitolul 6 se vor descrie toate predicatele predefinite, inclusiv
cele ntlnite deja.
Operatorul is este un operator nou i este de tip infix. Argumentul din dreapta este
un termen care este interpretat ca o expresie aritmetic. Pentru a satisface un is, Prolog-ul
evalueaz prima dat argumentul din dreapta n concordan cu regulile aritmetice i aceast
valoare este atribuit argumentului din stnga. n exemplu de mai sus, Y este necunoscut cnd
se ntlnete is i trebuie ca is s evalueze expresia i s atribuie valoarea expresiei lui
Y . Aceasta presupune c valorile tuturor variabilelor din dreapta lui is trebuie s fie
cunoscute.
Predicatul is trebuie folosit ntotdeauna cnd este necesar s se evalueze o expresie
aritmetic. Reinem c ceva ca P/A este doar o structur Prolog obinuit ca i
autor(cezar,petrescu), spre exemplu. Dac ns interpretm o structur ca o expresie
aritmetic, exist atunci o operaie special care poate fi aplicat la aceast structur numit
evaluarea expresiei aritmetice i anume, aceea de a executa operaiile aritmetice i de a
calcula rezultatul. Nu toate structurile pot fi evaluate ca expresii aritmetice. Este clar c putem
evalua structuri care au definite operaii aritmetice.
n funcie de tipul de calculator folosit se pot folosi diveri operatori n partea dreapt
a lui is. Toate sistemele Prolog vor avea totui urmtorii operatori:
X + Y suma lui x i y
X - Y diferena lui x i y
X * Y produsul lui x i y
X / Y ctul mpririi ntregi a lui x la y
X mod Y restul mpririi ntregi a lui x la y
Aceast list mpreun cu lista operatorilor de comparare ar trebui s fie un minim de
operatori pentru rezolvarea problemelor aritmetice simple. Desigur, Prolog a fost proiectat n
special spre probleme nenumerice aa c facilitile aritmetice nu sunt la fel de importante ca
la celelalte limbaje de programare.
1.10 Concluzii referitoare la satisfacerea scopurilor
Prologul execut o aciune ca rspuns la o ntrebare a programatorului. O ntrebare
furnizeaz o conjuncie de scopuri pentru a fi satisfcute. Prolog utilizeaz clauzele cunoscute
pentru a satisface scopurile. Un fapt poate determina ca un scop s fie satisfcut imediat, pe
22
cnd o regul poate reduce sarcina la aceea de a satisface o conjuncie de subscopuri. Totui,
o clauz poate fi folosit numai dac ea se potrivete scopului luat n calcul. Dac un scop nu
poate fi satisfcut, se va iniia backtracking-ul. Backtracking-ul const n revizuirea a ceea ce
s-a executat i ncercarea de resatisfacere a scopului prin gsirea unui drum alternativ de
satisfacere. Dac rspunsul la o ntrebare nu este satsfctor atunci se poate iniia
backtracking-ul tastnd ;.
n paragraful care urmeaz, se face o prezentare folosind diagrame pentru a arta cum
i cnd Prolog ncearc s satisfac i s resatisfac scopurile.
1.10.1 Satisfacerea unei conjunc ii de scopuri
Prolog ncearc s satisfac scopurile dintr-o conjuncie dup modul n care apar n
corpul regulii sau al ntrebrii, n ordinea n care sunt scrise (de la stnga la dreapta). Aceasta
nseamn c Prolog nu va ncerca s satisfac un scop pn cnd vecinul din stnga nu a fost
satisfcut. Cnd va fi satisfcut se va ncerca satisfacerea vecinului su din dreapta. S
considerm urmtorul program care se refer la relaiile de familie:
femeie(maria).
parinti(C,M,T):-mama(C,M),tata(C,T).
mama(ion,ana).
mama(maria,ana).
tata(maria,stefan).
tata(ion,stefan).
Predicatul parinti(C,M,T) nseamn c prinii copilului C sunt M-mama i
T-tata i de asemenea predicatele mama(C,M) i tata(C,T) nseamn c M este mama
copilului C i T este tatl copilului C. Dac se pune ntrebarea:
?-femeie(maria),parinte(maria,M,T),
parinte(ion,M,T).
este interesant s urmrim secvena de evenimente care ne conduce la rspunsul pentru
aceast ntrebare (care n viaa real caut s ne asigure cnd maria este o sor a lui ion).
Pentru a face aceasta Prolog caut s satisfac secvena de subscopuri artate n figura 2.1., n
care scopurile sunt reprezentate ca nite dreptunghiuri aezate unele sub altele.
Figura 2.1 O secven de subscopuri nc nesatisfcute.
Sgeata indic scopurile care au fost deja satisfcute i anume dreptunghiul din care pleac
sgeata indic scopul care este satisfcut iar dreptunghiurile care sunt sub vrful sgeii nu au
23
fost luate nc n considerare. Numim aceasta o diagram de satisfacere.
n exemplul de mai nainte sgeata pleac de sus i trece mai jos la cele trei csue pe
msur ce cele trei scopuri sunt satisfcute. Astfel nct situaia final va fi cea artat n
figura 2.2.
Figura 2.2 Secvena de subscopuri a fost satisfcut.
S observm c n aceast diagram variabilele M i T au fost iniializate cu valorile
date de secvena de program.
1.10.2 Potriviri
Regulile dup care se decide dac un scop se potrivete cu o clauz sunt prezentate n
continuare. Observm c ntr-o clauz iniial toate variabilele sunt neiniializate.
O variabil neiniializat se va potrivi cu orice obiect. Ca rezultat, acel obiect va
fi cel cutat de ctre variabil.
Un numr ntreg sau un atom se vor potrivi numai cu ei nii.
O structur se va potrivi cu o alt structur dac au acelai functor i numr de
argumente i toate argumentele corespondente se potrivesc.
Un caz remarcabil n procesul de potrivire este acela n care dou variabile
neiniializate se potrivesc una cu alta. n acest caz spunem c aceste variabile sunt legate.
Dou variabile legate sunt cele care, n cazul n care una este iniializat i cealalt va fi
iniializat cu aceeai valoare. S observm o similitudine ntre potriviri i egalizarea
argumentelor (seciunea 2.4). Aceasta deoarece predicatul = ncearc s-i egalizeze
argumentele prin potrivire.
24
LEC IA 3.
UTILIZAREA STRUCTURILOR DE DATE
Recursivitatea este o tehnic foarte popular i puternic n lumea programrii. Poate
fi folosit pentru a descrie programe care au nevoie s satisfac o copie proprie nainte de a se
ncheia cu succes ele nsele. Poate fi folosit de asemenea pentru a descrie structuri care au
alte structuri ca i componente. n Prolog, recursivitatea este calea natural i normal de
vizualizare a structurilor de date i a programelor.
1.11 Structuri i arbori
De obicei este mai uor de neles forma unei structuri complicate dac o descriem pe
aceasta ca pe un arbore, n care fiecare functor este un nod, iar componentele sunt ramificaii.
Fiecare ramificaie poate pointa ctre o alt structur, astfel nct putem avea structuri n
interiorul altor structuri. De regul descriem o diagram-arbore avnd rdcina n vrf, iar
ramificaiile ctre baz. De exemplu, structura parinti(mihai,elena,carol_2) este
descris astfel:
Structura a+b*c sau (a,*(b,c)) este descris ca:
Structura carte(delirul,autor(marin,preda)) este descris ca:
S observm c ultimele dou structuri au arbori de aceeai mrime i topologie, cu
toate c rdcinile i frunzele lor sunt diferite.
25
S presupunem c se d propoziia Ion place Maria i este nevoie s reprezentm
sintaxa acesteia. Cea mai simpl sintax const n aceea c o propoziie const dintr-un
substantiv urmat de un verb. Putem reprezenta structura oricrei astfel de propoziii printr-o
structur de forma:
propozitie(substantiv(X),
verb_compus(verb(Y),substantiv(Z))).
care are un arbore de forma:
Dac relum propoziia (Ion place Maria), i instaniem variabilele din structur
folosind cuvintele din propoziie, obinem:
Aceasta arat modul cum se pot folosi structurile i variabilele Prolog pentru a
reprezenta sintaxa unei clase de propoziii simple. n general dac se cunosc cuvintele dintr-o
propoziie, este posibil s se scrie o structur Prolog care descrie explicit relaiile dintre
cuvintele din propoziie.
1.12 Liste
Lista este o structur de date foarte utilizat n programare. Lista este o secven
ordonat de elemente care pot o lungime variabil. Elementele unei liste pot fi orice termeni
(constante, variabile, structuri) care desigur pot include alte liste. Aceste proprieti sunt
folositoare atunci cnd nu se poate prevedea ct de mare trebuie s fie o list i ce informaii
trebuie s conin. Mai mult, listele pot reprezenta practic orice fel de structur folosit n
26
calculul simbolic. Listele sunt larg folosite pentru a reprezenta arbori de analiz gramatical,
gramatici, hri ale oraelor, programe de calculator i entiti matematice cum ar fi grafice,
formule i funcii. n limbajul de programare LISP, singurele structuri de date disponibile sunt
constantele i listele. n Prolog, lista este o structur particular de date.
Listele pot fi reprezentate sub forma unui arbore special. O list este fie vid, neavnd
nici un element, fie este o structur care are dou componente: cap i coad. Sfritul unei
liste este de obicei reprezentat ca o coad care este ataat listei vide. Lista vid este scris
sub forma []. Capul i coada unei liste sunt componente ale functorului denumit .(care
este punctul). Astfel, lista care conine un singur element a este reprezentat sub forma
.(a,[]) iar arborele su asociat are forma urmtoare:
De asemenea, lista care conine elementele atomice a,b,c este scris sub
forma(a,.(b,.(c,[]))), iar arborele asociat arat astfel:
Unii opteaz pentru reprezentarea diagramei arborescente a unei liste avnd arborele
de la stnga la dreapta i cu ramurile n jos numit i diagram vine. Lista de mai sus are
urmtoarea reprezentare printr-o diagram vine:
n aceast diagram componenta cap a functorului punct este orientat ctre n jos iar
componenta coad este orientat ctre dreapta. Sfritul listei este marcat clar pentru ultima
component coad care reprezint de fapt lista vid. Principalul avantaj al celei de a doua
diagrame, n reprezentarea listelor, este acela c listele pot fi scrise de la stnga la dreapta.
Diagrama vine poate fi utilizat pentru scrierea listelor atunci cnd se dorete s
vedem structura listei, dar asemenea diagrame nu sunt utilizate pentru scrierea listelor n
cadrul programului Prolog. Deoarece notaia cu . este dificil pentru scrierea listelor mai
27
complicate exist o alt sintax care poate fi folosit pentru scrierea listelor n cadrul unui
program Prolog. Aceast notaie list se compune din elementele listei separate prin virgule,
ntreaga list fiind cuprins ntre paranteze []. De exemplu, listele de mai sus pot fi
reprezentate cu ajutorul notaiei list prin: [a] i [a,b,c].
Este posibil ca listele s conin alte liste i variabile. De exemplu, urmtoarele liste
sunt corecte din punct de vedere sintactic n Prolog:
[]
[un, om,[place, un, peste]]
[a, V1,b, [X,Y]]
Variabilele din cadrul listelor sunt tratate la fel ca variabilele din oricare alt structur.
Acestea pot fi instaniate n orice moment astfel nct utilizarea judicioas a lor poate furniza
o modalitate de a insera n liste elemente vide care s poat fi completate cu date la un
moment ulterior. Pentru a reprezenta structura listelor cuprinse n alte liste, s scriem
diagrama vine pentru ultima list de mai sus:
Este uor de remarcat din aceast diagram c fiecare nivel orizontal al diagramei este
o list avnd un anumit numr de elemente. Nivelul cel mai de sus reprezint o list ce are 4
elemente, unul dintre acestea fiind o list. Nivelul al doilea, avnd 2 elemente, este cel de al
patrulea element al listei de la nivelul cel mai nalt.
Listele pot fi manipulate prin mprirea lor ntr-un cap i o coad. Capul unei liste
este prima component a functorului punct utilizat n construirea listei. S reinem faptul c
vorbim despre capul (antetul) unei reguli i despre capul (antetul) unei liste, aceste dou
lucruri fiind ns diferite. Coada unei liste este componenta a doua a functorului .. Cnd o
list apare n paranteze [] capul listei este reprezentat de primul element al acesteia.
Coada listei este o sublist care const din toate elementele cu excepia primului.
Exemplele din tabelul 3.1. ilustreaz cteva capete i cozi. Observm c o list vid nu are
nici cap nici coad. n ultimul exemplu, operatorul + este folosit ca functor pentru
structurile +(X,Y) i +(x,y).
Deoarece o operaie obinuit asupra listelor este aceea de a mprii o list n cap i
coad, exist o notaie special n Prolog pentru a reprezenta lista cu capul X i coada Y.
Aceasta este scris [X|Y] unde simbolul care separ pe X de Y este o bar vertical. Un mod
de lucru cu aceast form de scriere va iniializa capul listei cu X i coada cu Y ca n exemplul
urmtor:
p([1,2,3]).
P([o,pisica,sta,[pe,o,masa]]).
?- p([X|Y]).
X=1 Y=[2,3];
28
X=o Y=[pisica,sta,[pe,o,masa]]
?- p([_,_,_,[_|X]]).
X=[o,masa]
Tabelul 3.1. Exemple de liste cu capetele i cozile lor.
Liste Capete Cozi
[a,b,c] a [b,c]
[] (none) (none)
[[o,pisica],sta] [o,pisica] [sta]
[o,[pisica,sta]] o [[pisica,sta]]
[o,[pisica,sta],jos] o [[pisica,sta],jos]
[X+Y,x+y] X+Y [x+y]
Listele pot fi utilizate n reprezentarea irurilor de caractere. Avem nevoie de iruri de
caractere pentru a citi sau tipri texte constnd din propoziii. irul de caractere este pus ntre
i este reprezentat ca o list de coduri ntregi (codul ASCII) ce reprezint caracterele. De
exemplu, irul SYSTEM este translatat de Prolog n lista
[115,121,115,116,101,109].
1.13 Cutarea recursiv
Uneori este necesar s cutm n interiorul unei structuri Prolog pentru a gsi anumite
informaii dorite. Atunci cnd structura are alte structuri ca i componente, trebuie efectuat o
cutare recursiv.
Definim n Prolog un predicat membru astfel nct scopul membru(X,Y) este
adevrat dac termenul reprezentat de X este un membru al listei reprezentate de Y.
Apartenena lui X la lista Y se poate verifica n dou moduri.
n primul rnd este cert c X va fi membru al lui Y dac X este identic cu capul listei Y.
n Prolog, acesta se scrie:
membru(X,[X|_])
care nseamn X este un membru al listei care l are pe X ca i cap. S-a folosit variabila
anonim _ pentru a reprezenta coada listei, aceasta datorit faptului c nu folosim coada la
nimic. Aceast regul poate fi scris de asemenea ca:
membru(X,[Y|_]):-X=Y.
n al doilea rnd, urmtoarea regul, care folosete recursivitatea, spune c X este un
membru al unei liste care l conine pe acesta n coada ei numit Y:
membru(X,[_|Y]):-membru(X,Y).
S-a folosit variabila anonim _ deoarece nu intereseaz numele variabilelor ce constituie
capul listei. Cele dou reguli mpreun definesc predicatul membru i spun Prolog-ului cum
s caute ntr-o list de la nceput la sfrit, urmrind un termen specific.
Cel mai important lucru ce trebuie luat n considerare la definirea unui predicat
recursiv este de a cuta condiiile de restricie n cazul recursiv. Exist dou condiii
restrictive pentru predicatul membru: prima condiie restrictiv este coninut n prima clauz
29
care va determina oprirea cutrii n list dac primul argument din membru se potrivete cu
capul celui de al doilea argument; a doua condiie restrictiv intervine atunci cnd al doilea
argument al lui membru este o list vid.
Prima condiie restrictiv este recunoscut de ctre o regul ceea ce nu implic luarea n
considerare a altor viitoare subscopuri. A doua condiie restrictiv este recunoscut de ctre
orice clauz a lui membru astfel nct acesta va eua.
Este foarte important de reinut c de fiecare dat cnd membru folosete a doua
clauz pentru a ncerca satisfacerea sa, Prolog trateaz fiecare ciclare recursiv a scopului
membru ca pe o copie diferit. Aceasta previne faptul c variabilele folosite ntr-o clauz s
se confunde cu variabilele folosite n alt clauz.
Predicatul membru este important deoarece este unul din cele mai scurte exemple de
predicat recursiv. Definiiile recursive se ntlnesc frecvent n programe Prolog i trebuie s
fim ateni pentru a nu scrie definiii circulare, ca de exemplu:
parinte(X,Y):-copil(Y,X).
copil(A,B):-parinte(B,A).
Pentru a satisface predicatul parinte se consider copil ca pe un scop. Definiia lui
copil folosete la rndul ei pe parinte ca i scop. Punerea unei ntrebri despre
parinte sau copil va duce la o bucl n care Prolog-ul nu va deduce nimic i care nu se
va termina niciodat.
1.14 Maparea
Dndu-se o structur Prolog frecvent se dorete s se construiasc o nou structur
similar cu cea veche dar puin schimbat. Se parcurg componentele din vechea structur i se
construiesc componentele noii structuri. Numim aceast activitate mapare.
S ne imaginm un program Prolog n care introducem o propoziie n englez iar
Prolog-ul ne furnizeaz o alt propoziie care reprezint o versiune modificat a celei
introduse. Acest program care d replici programatorului poate produce un dialog de genul:
you are a computer
i am not a computer
do you speak french
no i speak german
Cu toate c acest dialog poate prea ca o conversaie puin forat, este uor s scriem un
program care s rezolve partea de dialog urmnd paii:
1. Acceptarea propoziiei introdus de ctre utilizator.
2. Schimbarea fiecrui you din propoziie n i.
3. Schimbarea fiecrui are n am not.
4. Schimbarea cuvntului french cu german.
5. Schimbarea cuvntului do cu no.
Aplicat asupra unor propoziii alese cu grij cum sunt cele din dialogul de mai sus, aceast
schem va produce propoziiile modificate.
Un program Prolog care schimb o propoziie ntr-o alt propoziie ar putea fi scris
dup cum urmeaz. n primul rnd este necesar s se in seama c exist o relaie ntre
propoziia original i cea modificat. Este nevoie s se defineasc un predicat, numit
modifica, astfel nct modifica(X,Y) nseamn c propoziia X poate fi modificat
pentru a obine Y. Este convenabil ca X i Y s fie liste cu elemente atomice corespunztoare
30
cuvintelor, astfel nct propoziiile s poat fi scrise sun forma:
[aceasta,este,o,propozitie].
Dac predicatul modifica este definit, i innd seama i de regulile de modificare definite
anterior putem pune ntrebri Prolog-ului de forma
?-modifica([do,you,know,french],X).
iar Prolog-ul va rspunde
X=[no,i,know,german].
Deoarece modifica lucreaz cu liste trebuie s rezolve i cazul n care lista este vid
i anume o list vid este modificat i rezult o alt list vid:
modifica([ ],[ ]).
Rezult c principalele funcii ale lui modifica sunt de a:
1. Schimba capul listei de intrare cu alt cuvnt i a pune n capul listei de ieire acel
cuvnt.
2. Modifica coada listei de intrare i de a introduce modificrile n lista de ieire.
3. Dac se va ntlni sfritul listei de intrare, atunci nu se mai poate aduga nimic
listei de ieire, astfel nct aceasta se ncheie cu o list vid []. Deci:
Modificarea unei liste ce are capul H i coada T produce o list cu capul X i coada Y
dac:
- schimbnd cuvntul H rezult cuvntul X, i
- modificnd lista T obinem lista Y.
Pentru transpunerea n fapte a modificrilor anterioare este nevoie s se rezolve
schimbarea unui cuvnt n altul. Aceasta poate fi fcut avnd n baza de date un predicat de
forma schimba(X,Y), care nseamn c cuvntul X poate fi schimbat n cuvntul Y. Faptul
global schimba(X,X)nseamn c, cuvntul X se transform n el nsui. O baz de date
care trateaz schimbrile enunate mai sus este:
schimba(you,i).
schimba(are,[am,not]).
schimba(french,german).
schimba(do,no).
schimba(X,X).
Reinem faptul c propoziia am not a fost tratat ca o list, astfel nct ea ocup locul
unui singur argument.
Toate considerentele de mai sus se pot translata din pseudo-Prolog ntr-o secven
Prolog (amintindu-ne notaia [A|B] pentru lista care are capul A i coada B). Vom obine
urmtoarele:
modifica([ ],[ ]).
modifica([H|T],[X|Y]):- schimba(H,X),modifica(T,Y).
Prima clauz din aceast procedur verific dac lista este goal. Aceeai clauz verific i
31
sfritul listei. Punnd acum ntrebarea:
?-modifica([you,are,a,computer],Z).
Aceast regul va corespunde cu regula principal modifica, realiznd corespondena
dintre variabila H i you, i dintre variabila T i lista [are,a,computer]. n continuare
scopul schimba(you,X) va reui, fcnd ca X s corespund cuvntului i. Cum X este
capul listei de ieire (n scopul modifica), primul cuvnt n lista de ieire este i . n
continuare, scopul modifica([are,a,computer],Y) va utiliza aceeai regul.
Cuvntul are este schimbat n interiorul listei cu [am,not] din baza de date, i apoi este
generat un alt scop modifica:
modifica([a,computer],Y).
1.15 Compara ia recursiv.
Dup cum am vzut n capitolul 2, Prolog furnizeaz predicate pentru compararea
ntregilor. Compararea structurilor este n general mai complicat, deoarece este necesar s fie
luate n considerare toate componentele individuale. Cnd componentele sunt ele nsele
structuri, comparaia poate deveni recursiv. Spre exemplu, n aplicaii cum ar fi dicionarele,
ce lucreaz cu cuvinte, este de ajuns s existe un predicat care s compare cuvintele n ordine
alfabetic. Aceasta implic compararea recursiv a listelor.
Definim un predicat denumit compara. Cnd compara(X,Y) este folosit ca scop
acesta va fi atins dac X i Y sunt considerai atomici i X este (alfabetic vorbind) naintea lui
Y. Deci,
?- compara(avocat,cler) va reui, i
?- compara(vin,motor) va eua.
De asemenea,
?- compara(piua,piua) va eua.
Compararea a dou cuvinte, se face liter cu liter, i pentru fiecare comparaie, se determin
care din urmtoarele condiii sunt aplicabile:
1. Se poate atinge sfritul primului cuvnt fr a atinge sfritul celui de-al doilea cuvnt.
Spre exemplu, compara(car,cart), n acest caz compara trebuie s reueasc.
2. Un caracter din primul cuvnt este alfabetic mai mic dect caracterul corespunztor din al
doilea cuvnt caz n care compara reuete. De exemplu,
compara(elefant,elevator), f-ul din elefant este alfabetic naintea lui v
din elevator.
3. Se poate gsi c un caracter din primul cuvnt este alfabetic egal cu caracterul
corespunztor din al doilea cuvnt. n acest caz, trebuie s se ncerce compara pe caracterele
rmase din ambele cuvinte. De exemplu, compara(lada,leac), litera l este la
nceputul ambelor cuvinte, deci va trebui s ncercm compara(ada,eac) ca scop
urmtor.
4. Se poate ntmpla s ajung concomitent la sfritul primului i celui de-al doilea cuvnt,
spre exemplu compara(mare,mare), n acest caz compara va eua deoarece cele dou
cuvinte sunt identice.
5. Se poate termina parcurgerea caracterelor din cuvntul al doilea nainte de a se termina
parcurgerea caracterelor din primul cuvnt, cum ar fi compara(alfa,alf). n acest caz
32
compara va eua.
Condiiile anterioare pot fi transpuse n Prolog prin reprezentarea cuvintelor ca liste de
caractere (ntregi mici), deci trebuie s existe o modalitate de a converti un atom Prolog ntr-o
list de caractere. Acesta este scopul predicatului predefinit name. Scopul name(X,Y) este
ndeplinit atunci cnd atomul instaniat pentru X consist dintr-o list de coduri de caractere
(coduri ASCII) instaniat pentru Y. Dac unul din argumente este neinstaniat, Prolog va
ncerca s-l instanieze prin crearea unei structuri corespunztoare. De exemplu, cunoscnd
codul ASCII pentru a, 97, pentru l, 108, i pentru p, 112, urmtoarele ntrebri puse
lui name va genera rspunsurile:
?- name(X,[97,108,112]).
X=alp
?- name(alp,X).
X=[97,108,112])
1.16 Alturarea structurilor
Predicatul de procesare a listei adauga este folosit pentru a uni dou liste rezultnd
una nou. Predicatul adauga este definit astfel:
adauga([],L,L).
adauga([X,L1],L2,[X,L3]):- adauga(L1,L2,L3).
Condiiile limit apar cnd prima list este lista vid. n acest caz, orice list adugat
listei vide rmne aceeai list.
Cea de a doua regul lucreaz dup urmtoarele principii:
1. Primul element al primei liste (X) va fi ntotdeauna primul element al listei a treia.
2. Coada primei liste (L1) va avea ntotdeauna al doilea argument (L2) adugat la ea pentru a
forma coada (L3) a celui de-al treilea argument.
3. Trebuie folosit adauga pentru a realiza unirea artat la punctul 2.
4. Evident se ia n mod continuu capul din ceea ce a mai rmas din primul argument, i acesta
va fi gradual redus ctre lista vid, ceea ce va conduce la condiia limit.
n capitolele urmtoare vom trata diferite proprieti i aplicaii ale predicatului
adauga.
Uneori este nevoie s se parcurg o structur Prolog i s calculeze un rezultat care
depinde de ceea ce este gsit n structur la momentul respectiv. Evident c acest rezultat are
o valoare provizorie, ntr-un stadiu intermediar al acestei parcurgeri, valoare care trebuie
ns reinut (deci memorat). O tehnic obinuit de a rezolva aceast problem este de a
folosi un argument al predicatului pentru a memora aceast valoare. Acest argument este
denumit acumulator.
33
LEC IA 4.
BACKTRACKING (REVENIREA) I TIETURA (CUT)
Acest capitol va trata backtracking-ul (revenirea) n detaliu, de asemenea va trata
un mecanism special, care poate fi utilizat n programele Prolog - cut (tietura). Tietura
permite programatorului s comunice Prolog -ului care dintre alegerile anterioare e necesar a
nu mai fi considerate din nou.
1.17 Generarea solu iilor multiple
Cea mai simpl cale prin care un set de fapte poate furniza mai multe soluii la o
ntrebare este atunci cnd exist mai multe fapte care sunt n neconcordan cu ntrebarea. De
exemplu, dac avem urmtoarele fapte n care prin tata(X,Y) nelegem c tatl lui X este
Y:
tata(maria,george).
tata(ion,george).
tata(elena,nicu).
tata(george,emil).
ntrebarea
?- tata(X,Y).
va avea mai multe rspunsuri posibile. Prolog ne va da urmtoarele rspunsuri:
X=maria, Y=george;
X=ion, Y=george;
X=elena, Y=nicu;
X=george,Y=emil;
Aceste rspunsuri au fost afiate cutnd n baza de date pentru a gsi faptele i regula
referitoare la tata n ordinea n care ele au fost date. Prolog nu-i amintete nimic despre
ceea ce a indicat mai nainte. Deci dac ntrebm
?-tata(_,X).
(pentru care dintre X este X un tat ?) va rspunde:
X=george;
X=george;
X=nicu;
X=emil;
george aprnd de dou ori deoarece George este tat pentru Maria i Ion. Dac Prolog are
dou modaliti de a arta acelai lucru, le trateaz ca pe dou soluii diferite.
Backtracking-ul apare exact n acelai mod dac alternativele sunt ntiprite mai adnc
n procesare. De exemplu, o regul pentru definiia unul dintre copiii lui X este Y poate fi:
copil(X,Y):- tata(Y,X).
Apoi, ntrebarea
?- copil(X,Y).
va da urmtorul rspuns:
34
X=george, Y=maria;
X=george, Y=ion;
X=nicu, Y=elena;
X=emil, Y=george;
Deoarece tata(Y,X) are patru soluii, tot aa va avea i copil(X,Y). Mai mult,
soluiile sunt generate n aceeai ordine dar acestea sunt diferite pentru c ordinea
argumentelor este diferit, dup cum este specificat n definiia lui copil. Similar dac
definim
tata(X):- tata(_,X).
(tata(X) nseamn c X este un tat), atunci ntrebarea
?- tata(X).
va indica:
X=george;
X=george;
X=nicu;
X=emil;
S considerm acum un caz i mai interesant - acolo unde sunt dou scopuri, fiecare
din ele avnd cteva soluii. S presupunem c planificm o petrecere i c dorim s speculm
cine cu cine ar putea dansa. S scriem programul urmtor:
pereche_posibila(X,Y):-baiat(X),fata(Y).
baiat(ion).
baiat(mitica).
baiat(bebe).
baiat(cosmin).
fata(georgeta).
fata(emilia).
fata(raluca).
Acest program spune c X i Y formeaz o pereche posibil dac X este un biat i Y
este o fat. Acum s vedem care sunt posibilele perechi:
? pereche_posibila(X).
X=ion, Y=georgeta;
X=ion, Y=emilia;
X=ion, Y=raluca;
X=mitica, Y=georgeta;
X=mitica, Y=emilia;
X=mitica, Y=raluca;
X=bebe, Y=georgeta;
X=bebe, Y=emilia;
X=bebe, Y=raluca;
X=cosmin, Y=georgeta;
X=cosmin, Y=emilia;
X=cosmin, Y=raluca
35
S vedem de ce Prolog produce soluiile n aceast ordine. Mai nti, el ndeplinete
scopul baiat(X), gsindu-l pe ion, primul biat. Apoi ndeplinete scopul fata(Y),
gsind-o pe georgeta, prima fat. n acest punct, cerem o alt soluie, cauznd un eec.
Prolog ncearc s resatisfac ceea ce a fcut anterior, adic scopul fata n interiorul
satisfacerii scopului pereche_posibila. El va gsi alternativa fetei emilia, deci a doua
soluie este ion i emilia. Similar, va genera ion i raluca ca o a treia soluie. n
momentul urmtor cnd va ncerca s resatisfac fata(Y), Prolog va gsi markerul su la
sfritul bazei de date i astfel scopul eueaz. Acum va ncerca s resatisfac baiat(X).
Markerul a fost plasat la primul element pentru biat, astfel nct urmtoarea soluie gsit
este al doilea biat, mitica. Acum c are ndeplinit acest scop, Prolog privete s vad ce
urmeaz: trebuie s ndeplineasc fata(Y) din nou, de la nceput. Astfel nct gsete
georgeta prima fat. Urmtoarele trei soluii implic acum pe mitica i pe cele trei fete.
Mai departe, cutnd o alternativ, scopul fata nu poate fi resatisfcut. Deci un alt biat este
gsit, iar cutarea printre fete ncepe din nou de la linia iniial, .a.m.d. Eventual, scopul
fata eueaz i de asemenea nu mai sunt soluii pentru scopul baiat, astfel programul nu
mai poate gsi perechi.
Aceste exemple sunt toate foarte simple. Ele implic doar specificarea mai multor
fapte sau utilizarea regulilor pentru accesarea acestor elemente. De aceea, ele pot genera doar
un numr finit de soluii posibile. Uneori am putea dori s generm un numr infinit de
posibiliti, nu pentru c dorim s le considerm pe toate, ci pentru c am putea s nu tim
anticipat de cte avem nevoie. n acest, caz avem nevoie de o definiie recursiv (discutat n
capitolul anterior).
Considerm urmtoarea definiie a ceea ce este un ntreg (unde prin ntreg nelegem
un numr nu mai mic dect 0). Scopul este_ntreg(N) va fi atins cu condiia ca N s fie
instaniat cu un ntreg. Dac N nu este instaniat n acelai timp n care scopul este considerat,
atunci este_ntreg(N) va determina s fie ales un ntreg, iar N va fi ataat la acesta:
/*1*/ este_ntreg(0).
/*2*/ este_ntreg(X):-este_ntreg(Y), X is Y+1.
Dac punem ntrebarea
?- este_ntreg(X).
vom avea ca rspunsuri posibile toate numerele ntregi n ordine cresctoare
( 0, 1, 2, 3,...), dndu-se pe rnd cte unul din ele. De fiecare dat form backtracking-ul
(imprimnd ;) pentru a obine cum, este_ntreg va fi realizat cu argumentul su
instaniat cu un nou ntreg. Deci, n principiu, aceast scurt definiie genereaz un numr
infinit de rspunsuri.
Cele mai multe reguli ale lui Prolog vor da natere la soluii alternative dac sunt folosite
pentru scopuri ce conin o mulime de variabile neinstaniate. De exemplu, relaia membrilor
unei liste (din capitolul 3):
membru(X,[X|_]).
membru(X,[_|Y]):-membru(X,Y).
va genera alternative. Dac ntrebm
?- membru(a,X).
(notm c X este neinstaniat), atunci valorile succesive ale lui X vor fi liste parial definite,
unde a este primul membru, al doilea, i aa mai departe. V putei da seama de ce ?
36
Un rezultat suplimentar al admiterii acestei definiii a lui membru este c ntrebarea:
?- membru(a,[a,b,r,a,c,a,d,a,b,r,a]).
va primi rspuns de cinci ori. n mod clar, exist unele aplicaii pentru membru unde avem
nevoie doar de o singur realizare i apoi putem elimina cele patru posibiliti. Putem spune
Prolog-ului s elimine posibilitile n acest mod utiliznd tietura.
4.2. Tietura(cut)
Acest subcapitol face referiri asupra unui mecanism special care poate fi utilizat n
progamele Prolog-ului -tietura. Tietura permite programatorului s comunice care opiuni
anterioare nu trebuie reconsiderate cnd acesta reia cutarea prin lanul de scopuri atinse.
Exist dou motive pentru care este important s facem acest lucru:
- Programul va opera mai repede deoarece nu va mai irosi timp ncercnd s
ndeplineasc scopuri despre care putem spune dinainte c nu vor contribui niciodat la o
soluionare a problemei;
- Programul poate ocupa mai puin din spaiul de memorie al calculatorului deoarece
poate fi realizat o folosire mai economic dac punctele urmrite nu trebuie s fie
nregistrate pentru o examinare ulterioar.
n unele cazuri, includerea unei tieturi poate nsemna diferena ntre un program care
va merge i un program care nu va merge.
Din punct de vedere sintactic, o folosire a tieturii ntr-o regul arat exact ca apariia
unui scop care are predicatul ! i fr argumente. Ca scop, acesta este ndeplinit imediat
i nu poate fi resatisfcut. Oricum, el are de asemenea efecte secundare, care schimb modul
n care lucreaz backtracking-ul dup aceea. Efectul este de a face inaccesibili indicatorii de
loc pentru anumite scopuri astfel nct ele nu vor mai putea fi resatisfcute.
Definiia formal a efectului simbolului tietura este urmtoarea:
Cnd o tietur este ntlnit ca un scop, sistemul devine dedicat tuturor alegerilor
fcute de cnd scopul printe a fost invocat. Orice alte alternative sunt eliminate. Din acest
motiv o ncercare de resatisfacere a oricrui scop ntre scopul printe i scopul tietura va
eua.
Exist mai multe modaliti de descriere a ceea ce se ntmpl cu alegerile care sunt
efectuate de o tietur. n primul rnd c alegerile sunt tiate sau imobilizate, dac sistemul se
dedic alegerilor fcute sau se renun la alternative. De asemenea putem privi la simbolul
tietura care devine mai degrab ca un delimitator de scopuri.
nc o observaie nainte de a merge mai departe. Deja am spus c dac tietura apare
ntr-o regul iar scopul este satisfcut atunci Prolog devine dedicat spre toate alegerile fcute
din momentul n care scopul printe a fost invocat. Aceasta nseamn c alegerea acestei
reguli i toate celelalte alegeri fcute dup aceea devin fixe. Vom vedea mai trziu c este
posibil s se furnizeze alternative n interiorul unei singure reguli folosind predicatul
ncorporat ; ( nsemnnd sau ). Alegerile introduse n aceast facilitate sunt afectate
exact n acelai mod. Aceasta nseamn c, cnd un scop de tietur este satisfcut, toate
alegerile sau care au fost fcute din momentul alegerii regulii devin fixe.
4.3. Folosirea comun a tieturii
Putem mpri folosirea comun a tieturii n trei domenii importante:
- Primul implic locurile unde dorim s spunem sistemului Prolog c a gsit regula
potrivit pentru un scop particular. Aici, tietura spune dac ai ajuns pn aici, nseamn c
ai ales regula corect pentru acest scop.
- Al doilea domeniu implic locurile n care dorim s spunem sistemului Prolog s
37
abandoneze un scop particular imediat, fr a ncerca soluii alternative. Aici folosim tietura
n conjuncie cu predicatul fail pentru a spune dac ai ajuns aici, trebuie s te opreti a mai
ncerca s satisfaci acest scop.
- Al treilea implic locurile n care dorim s ncheiem generarea soluiilor alternative
prin backtracking. Aici tietura spune dac ai ajuns aici, ai gsit singura soluie la aceast
problem i nu are rost cutarea alternativelor.
4.3.1. Confirmarea alegerii unei reguli
Foarte des ntr-un program Prolog dorim s asociem mai multe clauze cu acelai
predicat. O clauz poate fi potrivit dac argumentele sunt ntr-o singur form, o alta va fi
potrivit dac argumentele sunt ntr-o alt form, .a.m.d. Adesea, putem specifica care regul
trebuie s fie utilizat pentru un scop dat prin furnizarea modelelor n antetele regulei care se
vor potrivi doar cu scopurile ce au tipul corect. Oricum, acest lucru nu poate fi ntodeauna
posibil. Dac nu putem spune n avans ce form pot lua argumentele sau dac nu putem
specifica un set exhaustiv de modele, trebuie s realizm un compromis. Aceasta nseamn
furnizarea regulilor pentru unele tipuri specifice de argumente i apoi furnizarea unei reguli
de prindere la sfrit pentru orice altceva.
Ca un exemplu pentru acesta, considerm urmtorul program. Regulile definesc
predicatul suma_1_n care furnizeaz Prolog-ului scopul suma_1_n(N,X) cu N avnd o
valoare ntreag, determinnd instanierea lui X cu suma numerelor de la 1 la N. Astfel:
?- suma_1_n(5,X).
X=15 ;
yes
deoarece 1+2+3+4+5 este 15. Acesta este programul.
suma_1_n( 1, 1 ):- !.
suma_1_n( N, Rezultat ):-
N1 is N - 1,
suma_1_n( N1,Rezultat1 ),
Rezultat is Rezultat1+N.
Aceasta este o definiie recursiv. Ideea este c aceast condiie limit apare cnd
primul numr este 1. n acest caz rspunsul este de asemenea 1. A doua clauz introduce un
scop recursiv suma_1_n. Oricum, primul numr al noului scop este cu 1 mai mic dect cel
original. Noul scop pe care acest scop l va invoca va avea primul su argument din nou cu 1
mai mic, i aa mai departe pn ce este atins condiia limit. Deoarece primele argumente
sunt ntodeauna mai mici, condiia limit trebuie s fie atins eventual (presupunnd c scopul
original are un prim argument nu mai mic dect 1), iar programul se va sfri.
Un stil bun de programare este de a nlocui tieturile prin folosirea lui not. Aceasta
deoarece programele ce conin tieturi sunt n general mai greu de citit dect programele care
nu le conin. Dac unul poate localiza toate apariiile tieturilor n interiorul definiiei lui not
atunci programul va fi mai uor de neles. Oricum definirea lui not implic ncercarea de a
arta c scopul dat poate fi satisfcut. De aceea, dac avem un program de forma general:
A:- B,C.
A:- not(B),D.
Prolog poate foarte bine s termine ncercnd s satisfac de dou ori pe B. El va
ncerca s satisfac pe B cnd ia n consideraie prima regul. De asemenea, efectueaz
38
backtracking i considernd a doua regul, va trebui s ncerce s satisfac din nou B pentru a
vedea dac not(B) poate fi satisfcut. Aceast duplicare poate fi foarte ineficient dac
condiia B a fost destul de complicat. Aceasta nu se ntmpl dac n locul lui avem:
A:- B,!,C.
A:- D.
4.3.2. Combina ia tietur - euare (cut - fail)
n cel de-al doilea domeniu de aplicaii, tietura este folosit n conjuncie cu
predicatul fail. Acesta este un alt predicat predefinit, la fel ca i not. Nu are argumente,
ceea ce nseamn c realizarea scopului fail nu depinde de o variabil oarecare. ntr-adevr,
fail este definit ntr-un astfel de mod nct un scop eueaz ntodeauna i determin apariia
backtracking-ului. Aceasta se ntmpl dac ncercm s satisfacem un scop pentru un
predicat fr fapte sau reguli. Cnd fail este folosit dup o tietur, comportamentul de
backtracking normal va fi alterat de efectul tieturii. De fapt, combinaia particular cut-fail
devine deosebit de folositoare n practic.
O aplicaie interesant a combinaiei tietur-euare este definiia predicatului not.
Majoritatea implementrilor limbajului Prolog furnizeaz deja aceast definiie, dar este
interesant s considerm modul n care putem furniza reguli pentru el. Dorim ca scopul
not(P), unde P nseamn un alt scop, s reueasc dac i numai dac scopul P eueaz. Nu
este exact n concordan cu noiunea intuitiv de neadevrat (nu este corect s presupunem
c ceva nu este adevrat dac nu suntem capabili s dovedim acest lucru). Totui, iat o
definiie:
not(P):- call(P), !, fail
not(P).
Definiia lui not implic apelarea argumentului P ca scop, folosind predicatul
predefinit call. Predicatul call trateaz pur i simplu argumentul su ca un scop i
ncearc s-l satisfac. Noi dorim ca prima regul s fie aplicabil dac P poate fi satisfcut
iar a doua s fie aplicabil n caz contrar. Astfel, spunem c dac Prolog poate satisface
call(P) el trebuie s abandoneze n consecin satisfacerea scopului not. O alt
posibilitate este ca Prolog s nu poat satisface call(P); n acest caz el niciodat nu
realizeaz tietura. Deoarece scopul call(P) a euat, n acest caz are loc revenirea i Prolog
gsete a doua regul. Deci scopul not(P) va reui atunci cnd P nu poate fi demonstrat. Ca
i n primul caz de folosire a tieturii, putem nlocui folosirea combinaiei tietur-euare cu
folosirea scopului not. Aceasta implic mai curnd o mai bun reorganizare a programului
dect nainte, dar nu introduce aceeai ineficien.
39
LEC IA 5.
INTRRI SI IESIRI
Pn acum, singura surs de obinere a informaiilor pentru un program Prolog era
prin ntrebri puse sistemului Prolog. De asemenea singura metod de a afla semnificaia unei
variabile n obinerea rezultatului final era prin punerea unor ntrebri la care Prolog va tipri
rspunsul n forma "X=raspuns". O astfel de legtur direct, prin ntrebri, este suficient
pentru a ne asigura c un program funcioneaz corect. Cu toate acestea, n multe cazuri este
util s scriem un program Prolog care s iniieze singur un astfel de dialog. n acest capitol
descriem diferite metode de scriere i citire.
1.18 Citirea i scrierea termenilor
1.18.1 Scrierea termenilor
Cel mai folositor mod de a afia termeni pe displayul calculatorului este s folosim
predicatul write. Dac X este iniializat cu un termen atunci write(X)va determina
afiarea pe display a termenului. Dac X nu este iniializat, o variabil numeric unic (cum ar
fi '_253') va fi afiat. Dac dou variabile mpart acelai argument al lui write, atunci
ele vor avea acelai numr. Write poate fi asignat o singur dat.
S ne amintim c un string este reprezentat ca o list de coduri-caracter. Dac ar fi s
folosim write lista va fi afiat ca o secven de numere ntregi, separate prin virgul i
incluse ntre paranteze drepte.
Alt predicat cu care este dotat Prolog-ul este 'nl' care nseamn 'new line'. El este
folosit pentru a fora datele de ieire ce urmeaz lui nl s fie tiprite pe urmtoarea linie a
displayului. Ca i write, nl are efect o singur dat.
Urmtorul predicat este tab. Este folosit pentru a tipri un numr de spaii egale de-a
lungul monitorului. tab(X)are efect o singur dat i determin cursorul s se deplaseze
spre dreapta cu X spaii. Se presupune c X este iniializat cu un numr ntreg.
La afiarea listelor trebuie s avem n vedere ca elementele s fie astfel tiprite aa
nct s poat fi uor nelese. Listele ce conin, la rndul lor, alte liste sunt de regul dificil de
citit, cu att mai mult cu ct unele au i structuri interne.
Predicatul write ine seama la afiarea unui termen de declaraiile fcute asupra
operatorilor. De exemplu, dac am declarat atomul ca pe un operator infix, atunci un termen
al acestui atom este un functor i dou argumente vor fi afiate, cu atomul ntre cele dou
argumente. Mai exist un predicat care se comport n acelai fel ca i write, cu excepia
faptului c ignor oricare declaraii fcute asupra operaiilor. Acest predicat este display.
Diferena dintre cele dou este ilustrat n exemplul urmtor:
?-write(a+b-c-c),nl,display(a+b-c-c),nl.
a+bcc
+(a,((b,c),c))
yes
Folosirea lui display este recomandat atunci cnd nu suntem prea siguri despre
precedenele operatorilor utilizai.
40
1.18.2 Citirea termenilor
Predicatul read va citi urmtorul termen pe care-l scriem la tastatur. Termenul
trebuie s fie urmat de un punct "." i de un caracter netipribil cum ar fi space sau
return. Dac X nu este iniializat rezultatul lui read(X) va determina citirea urmtorului
termen i iniializarea acestuia cu X.
Ca i alte predicate de intrare/ieire, read are efect o singur dat. Dac argumentul
lui read este iniializat n momentul folosirii acestuia, atunci urmtorul termen va fi citit n
conformitate cu argumentul folosit. read va avea efect sau nu n funcie de "potrivirea"
termenului cu argumentul.
1.19 Citirea i scrierea caracterelor
Cea mai mic entitate ce poate fi scris sau citit este caracterul. Dup cum am vzut
pn acum, caracterele sunt considerate numere ntregi ce corespund codului ASCII pentru
caracterele respective. Prolog-ul are cteva predicate predefinite pentru citirea i scrierea
caracterelor.
1.19.1 Scrierea caracterelor
Dac X este iniializat cu un caracter (un cod ASCII reprezentat de un ntreg) acesta va
fi afiat cnd Prolog ntlnete scopul put(X). Scopul put i face ntotdeauna efectul dar
numai o singur dat. Ca un "efect secundar", put afieaz argumentul ca pe un caracter pe
display-ul terminalului. De exemplu, putem afia cuvntul salut n urmtorul fel:
?-put(115),put(97),put(108),put(117),put(116).
salut
Rezultatul acestei conjunci de scopuri este c Prolog afieaz caracterele s,a, l, u, t.
tim deja c putem s ncepem afiarea la nceputul liniei urmtoare folosind nl, care nu are
nici un argument. Ceea ce face, de fapt, nl este s afieze anumite caractere de control care
determin cursorul s se mute la nceputul liniei urmtoare. ntrebarea:
?-put(108),put(97),nl,put(112),put(101),
put(108),put(101),put(115).
va determina afiarea:
la
peles
O alt soluie: tab(X), care tiprete X spaii (cod ASCII 32). Bineneles, X trebuie
s fie iniializat cu un numr ntreg. tab(X) poate fi definit astfel:
tab(0):-!.
tab(N):-put(32),M is N - 1,tab(M).
1.19.2 Citirea caracterelor
Caracterele pot fi citite de la tastatur folosind get0(X) i get(X). Aceste scopuri
au ntotdeauna efect dac argumentele lor sunt neiniializate i, de asemenea, au efect cnd nu
pot fi resatisfcute. Cnd sunt folosite determin calculatorul s atepte intoducerea
41
caracterelor de la tastatur. Sunt foarte puin diferite deoarece: get0(X) l va iniializa pe X
cu primul caracter primit de la tastatur, indiferent care va fi acela, pe cnd get(X) l va
iniializa pe X cu primul caracter tipribil, deci va sri peste cele netipribile primite de la
tastatur (Un caracter tipribil este acela care poate fi vizualizat pe display).
Dac X este deja iniializat, atunci get(X) va sri peste caracterele netipribile i va
compara primul caracter tipribil cu iniializarea lui X. Get(X) va avea succes n funcie de
rezultatul testului. Get0(X) compar urmtorul caracter pentru egalitate, succesul depinznd
de asemenea de rezultatul testului. Urmtorul paragraf prezint cteva exemple cu privire la
citirea caracterelor. O importan deosebit o constituie reparcurgerea bazei de date dup
scopul get.
1.20 Citirea i scrierea fiierelor
Predicatele discutate anterior n acest capitol au fost folosite doar la citirea sau scrierea
pe terminalul calculatorului, dar de fapt ele sunt mult mai larg folosite. Sistemul Prolog
recunoate un "ir de intrare curent" din care este citit informaia de intrare (input curent) i
un "ir de iesire curent " n care sunt scrise datele de ieire (outputul curent). n mod normal
tastatura calculatorului este aa-numitul input curent iar displayul - outputul curent. Deseori
este mult mai util s citeti sau s scrii fiiere, care reprezint secvene de caractere aflate pe
diferite medii de nmagazinare a informaiilor, de regul discuri magnetice. Se presupune c
fiecare fiier are un nume necesar identificrii. n Prolog numele de fiiere sunt reprezentate
ca atomi, dar nu putem exclude posibilitatea unor restricii ntlnite la instalare n legtur cu
aceste nume de fiiere.
Fiierele au o anumit lungime, conin deci un anumit numr de caractere. La sfritul
fiecrui fiier exist un "indicator" de sfrit de fiier: end of file marker. Dac un
program citete informaii dintr-un fiier, sfritul de fiier poate fi detectat dac programul
citete termeni sau caractere. Dac get0(X) ntlnete semnul de sfrit de fiier, X va fi
iniializat cu un caracter de control, de regul cel care are codul ASCII 26. Dac read(X)
ntlnete sfritul de fiier, X va fi iniializat cu un termen special ce depinde de
particularitile sistemului Prolog instalat. Acest termen special este, de regul, atomul
end_of_file. Dac se ncearc s se citeasc dincolo de sfritul de fiier se genereaz
eroarea de sfrit de fiier.
Exist un fiier livrat mpreun cu sistemul, numit USER. Citirea acestui fiier
determin posibilitatea introducerii unor caractere de la tastatur i scrierea lor n acest fiier
cu afiarea pe display a caracterelor. Acesta este modul normal de operare. Cnd inputul
provine de la tastatur, un sfrit de fiier poate fi generat prin tiprirea caracterului de control
end_of_file (cod ASCII 26 sau CTRL+Z). Aceasta va determina ca get0 i read s se
comporte ca i cum ar fi ntlnit semnul de sfrit de fiier.
1.20.1 Scrierea fiierelor
Termeni i caractere pot fi scrise n fiiere folosind aceleai predicate discutate mai
sus. Singura diferen este c, atunci cnd dorim s scriem un fiier, trebuie s schimbm
outputul curent n sensul c acesta trebuie s fie fiierul respectiv i nu displayul. Acest lucru
este posibil prin folosirea predicatului tell. Dac X este iniializat cu un nume de fiier, care
trebuie s fie un atom, tell(X) va determina redirectarea outputului curent astfel nct orice
scriere (realizat cu write, put etc) va fi fcut n fiier n loc s fie fcut pe displayul
calculatorului. Tell(X) are efect o singur dat (nu poate fi reutilizat). Cnd Prolog-ul
reparcurge fiierul dup tell nu va determina resetarea outputului curent la ceea ce a fost
42
iniial. Tell mai realizeaz i alte operaii n afara acestei redirecionri a outputului. Prima
oar cnd se folosete tell(X) pentru un anumit X, Prolog presupune c dorim s creem un
fiier cu acel nume. Deci, dac X este iniializat cu un atom aceasta presupune c fiierul
exist deja i atunci toate caracterele existente n fiier vor fi terse. Pe de alt parte, dac X
este iniializat cu un atom care nu constituie nume al nici unui fiier existent, atunci va fi creat
un nou fiier cu numele respectiv. n ambele cazuri, fiierul este considerat deschis (pentru
output). Aceasta nseamn c scrierea n fiier va determina adugarea de caractere la sfritul
fiierului pn cnd vom spune explicit c fiierul este complet (nchidem fiierul). n acest
punct dac ncercm s mai scriem n fiier, Prolog va presupune c vrem s scriem o nou
versiune dup cum am artat mai sus. Dac ncercm s folosim tell(X), cu X neiniializat
sau este iniializat cu un obiect diferit de un nume de fiier se primete un mesaj de eroare.
Predicatul telling este folosit pentru a afla numele fiierului care constituie
outputul curent. Telling(X) are succes cnd X este iniializat cu numele fiierului output.
Dac X nu este iniializat, atunci telling l va iniializa de la sine n aa fel nct operaia s
fie realizat cu succes.
Cnd se termin scrierea n fiier predicatul told va nchide fiierul (pentru output).
De asemenea, va redireciona outputul spre display. Deci, o secven tipic pentru a scrie
cteva caractere ntr-un fiier poate fi urmtoarea:
... tell(munca),write(X),told, ...
Dac irul de date de ieire este redirecionat fr a folosi told asupra fiierului
anterior, acest fiier nu va fi nchis, fiind nc disponibil pentru scris. Acest lucru permite
scrierea ntr-un fiier la momente de timp diferite, ca n exemplul:
...tell(X),write(A),tell(user),
write(B),tell(X),write(C),told.
1.20.2 Citirea fiierelor
Predicatele pe care Prolog-ul le pune la dispoziie pentru redirecionarea irului curent
de date de intrare sunt analoage celor prezentate mai sus. Scopul See(X) direcioneaz irul
curent de date de intrare ctre fiierul specificat. Ca i n cazul lui tell, obiectivul acesta nu
poate fi reasigurat i operaia rmne nedeterminat la o nou parcurgere.
Prima dat, folosirea lui see(X) este realizabil pentru fiierul X, fiierul se deschide
(pentru input) i se ncepe de la semnul de nceput de fiier. Urmtorul nceput de secven
continu de unde s-a rmas pn cnd, n mod explicit, se nchide fiierul. Dup aceast
operaie, o nou ncercare de a citi fiierul va determina deschiderea acestuia, ncepndu-se de
la semnul de nceput de fiier ca i mai nainte. irul curent de nceput poate fi aflat prin
realizarea obiectivului lui seeing(X), iar inputul curent poate fi direcionat napoi ctre
tastatura terminalului prin seen, care nchide, de asemenea, fiierul.
1.20.3 Consultarea fiierelor
Scrierea i citirea fiierelor este de mare ajutor n special cnd programele folosesc
mai muli termeni dect cei pe care putem s-i tastm manual de fiecare dat cnd dorim s-i
introducem ntr-o baz de date. n Prolog, fiierele sunt de regul folosite pentru programe.
Dac ntr-un fiier se salveaz textul unui program Prolog se pot citi toate clauzele existente
n fiierul respectiv i transfera ntr-o baz de date folosind predicatul consult. Cnd X este
43
iniializat cu un nume de fiier, efectul predicatului consult(X) va fi citirea clauzelor
Prolog i a efectelor acestora din fiierul respectiv. Cele mai multe implementri ale Prolog-
ului au o notaie special pentru consult, care permite consultarea unei liste de fiiere unul
dup altul. Dac o list de atomi este pus Prolog-ului sub forma unei ntrebri, atunci Prolog-
ul va consulta fiecare fiier din list. Predicatul consult oprete automat clauzele de citire
cnd se ntlnete semnul de sfrit de fiier. Seciunea 6.1 descrie n detaliu predicatul
consult.
1.21 Declararea operatorilor
Operatorii sunt considerai importani n acest capitol " Intri i Ieiri " deoarece ofer
uurin sintactic la scrierea sau citirea termenilor. Acesta este motivul principal pentru
folosirea operatorilor.
Sintaxa Prolog confer operatorilor trei proprieti: poziie, clas de preceden i
asociativitate. Poziia poate fi infix, postfix sau prefix (un operator ce are dou argumente
poate fi poziionat ntre ele; un operator cu un singur argument poate fi poziionat nainte sau
dup acesta). Clasa de preceden este un numr ntreg a crei mrime depinde de
implementarea sistemului Prolog, cea mai folosit este de la 1 la 1200. Clasa de preceden
este folosit pentru creterea eficienei expresiilor n care sintaxa termenilor nu este explicit
prin folosirea parantezelor. Asociativitatea este folosit pentru creterea eficienei expresiilor
n care sunt doi operatori, n expresiile care au aceeai preceden. n Prolog se asociaz un
atom special cu un operator, care reprezint poziia acestuia i asociativitatea. Specificatorii
posibili pentru un operator infix sunt:
xfx xfy yfx yfy .
Pentru a nelege aceti specificatori, ei ne ajut s-i vedem ca pe posibile "imagini"
ale operatorilor. n aceste imagini, litera f reprezint operatorul, iar x i y reprezint
argumentele. Deci, n exemplul de mai sus, operatorul trebuie s apar ntre dou argumente
deci, este un operator infix. n consecin cu aceast convenie fx i fy sunt doi
specificatori pentru operatori-prefix (operatorul apare naintea argumentului su). De
asemenea, xf i yf sunt posibili specificatori pentru operatori postfix. Alegerea lui x i y n
aceste poziii determin transmiterea informaiei asociative. Presupunem c nu exist
paranteze, un y semnific faptul c argumentul poate conine operatori de aceeai sau mai
mic clas de preceden dect acest operator. Pe de alt parte, un x semnific faptul c orice
operatori ai argumentului trebuie s aib o clas de preceden strict mai mic dect a
operatorului. Imaginai-v ce nseamn acest lucru pentru operatorul +, declarat ca yfx.
Pentru a+b+c exist dou interpretri posibile: (a+b)+c sau a+(b+c), a doua
interpretare fiind exclus deoarece presupunem c argumentul dup primul + trebiue s
conin un operator de aceeai preceden (nc un +, de exemplu). Acest lucru contrazice
prezena unui x dup f-ul specificatorului.
n plus, un operator declarat yfx este asociativ la stnga iar un operator declarat xfy
este asociativ la dreapta. Dac cunoatem asociativitatea pe care dorim s i-o asigurm unui
operator infix pe care-l declarm, aceasta nseamn c specificatorul este unic determinat.
Semnificaia lui x i y este aceeai i n celelalte cazuri. Aceasta nseamn c, de
exemplu, secvena
not not a
este, sintactic posibil dac not este declarat ca fy, dar este imposibil dac este declarat
fx.
44
LEC IA 6.
PREDICATE PREDEFINITE
n acest capitol vom introduce cteva din predicatele predefinite pe care un sistem
Prolog le poate ncorpora. Ce nelegem atunci cnd spunem c un predicat este predefinit?
Aceasta nseamn c definiia predicatului este furnizat n avans de ctre sistemul Prolog, n
loc de a fi furnizat prin propriile clauze. Predicatele predefinite pot furniza faciliti ce nu pot
fi obinute cu ajutorul definiiilor n sistemul Prolog pur. Ele pot furniza faciliti convenabile
n scopul de a salva programatorul de a le defini el nsui. Am ntlnit deja anumite predicate
predefinite: predicatele pentru citire i scriere discutate n capitolul 5. Deasemenea tietura
poate fi considerat ca un predicat predefinit.
1.22 Introducerea de noi clauze
Atunci cnd scriei un program Prolog, vei dori s spunei sistemului ce clauze s
utilizeze, tot att de bine cum dorii s punei ntrebri despre ele. Ai putea dori ca ntr-o
clauz nou s scriei ceva la terminal sau s spunei sistemului Prolog s preia clauze dintr-
un fiier pe care-l avei pregtit n prealabil. De fapt, aceste dou operaii se aseamn din
punctul de vedere al sistemului Prolog, deoarece terminalul este vzut ca orice alt fiier,
avnd numele user. Exist dou predicate predefinite de baz pentru citire n clauzele noi:
consult i reconsult.
consult(X)
Predicatul predefinit consult este valoros pentru acele situaii cnd dorii ca,
clauzele dintr-un anume fiier (sau care s fie tiprite la terminal) s creasc clauzele dintr-o
baz de date. Argumentul trebuie s fie un atom ce furnizeaz numele fiierului din care s fie
preluate clauzele. Care atomi constituie un nume de fiier legal, aceasta va depinde de tipul
calculatorului.
Cnd ncearc s satisfac scopul consult, Prolog citete din fiier, adugnd
clauzele pe care le gsete la sfritul bazei de date. Ca rezultat, noile clauze vor aprea dup
oricare clauz deja existent pentru acelai predicat. Dac este gsit o ntrebare n fiier,
aceasta va fi tratat ca o ntrebare obinuit, exceptnd faptul c rspunsul nu va fi afiat. n
mod obinuit nu are sens s combinm ntrebrile cu clauzele noi ntr-un fiier, exceptnd
situaia cnd avem de-a face cu declararea de noi operatori i afiarea de mesaje utile.
reconsult(X)
Predicatul reconsult este exact la fel ca predicatul consult, exceptnd faptul c,
clauzele citite sunt preluate prin suprascrierea tuturor clauzelor existente pentru acelai
predicat. Datorit acestui lucru, reconsult este potrivit pentru corectarea greelilor de
programare. Dac se citete din mai multe fiiere de clauze i apoi se descoper c exist o
greeal ntr-o clauz, aceasta poate fi corectat fr citirea din nou a tuturor fiierelor. Pentru
aceasta, trebuie doar aplicat scopul reconsult fiierului ce conine setul corect de clauze
pentru predicatul n discuie. Se poate obine clauza corect fie prin scrierea ei la terminal
(reconsult(user)) fie prin editarea unui fiier fr a iei din Prolog (posibil doar n
anumite implementri) i apoi reconsultarea aceluiai fiier. Bineneles, scrierea clauzei
revizuite la terminal va altera ceea ce Prolog vede n baza de date, dar nu va schimba fiierul
original defect, din care provine clauza.
45
1.23 Succes i eec
n execuia normal a unui program Prolog, un scop reuete cnd el poate fi
satisfcut, i eueaz atunci cnd nu exist nici o modalitate de satisfacere a lui. Exist dou
predicate ce fac mai uor de specificat dac un scop reuete sau eueaz. Acestea sunt
predicatele true i fail.
true
Aceast scop reuete ntotdeauna. El nu este de fapt necesar, deoarece clauzele i
scopurile pot fi reordonate i recombinate pentru a obine orice folosire a lui true. Totui, el
exist prin convenie.
fail
Aceast scop eueaz ntotdeauna. Exist dou locuri n care el este util. Un loc este
combinaia tietur-euare, care a fost descris n seciunea 4.3. O conjuncie de scopuri de
forma
..., !, fail.
este folosit pentru a spune dac execuia continu din acest punct, atunci cineva poate
abandona ncercarea de a satisface acest scop. Conjuncia eueaz datorit predicatului
fail, iar scopul printe eueaz datorit tieturii.
Un alt loc n care este folosit predicatul fail este acela n care se dorete n mod explicit s
se utilizeze alt scop pentru a trece prin toate soluiile. Este posibil s se doreasc afiarea
tuturor soluiilor.
1.24 Determinarea tipului
Dac dorim s definim predicate care vor fi folosite cu o mare varietate de tipuri de
argumente, este util s fim capabili s distingem n definiie ce trebuie s fie fcut pentru
fiecare tip posibil. Predicatele urmtoare permit programatorului s includ aceste condiii
suplimentare n clauzele sale.
var(X)
Scopul var(X) reuete dac X este n acel moment o variabil neiniializat. Astfel
ne putem atepta la urmtorul comportament:
?- var(X).
yes
?- var(23).
no
?- X = Y, Y = 23, var(X).
no
nonvar(X)
Scopul nonvar(X) reuete dac X nu este n acel moment o variabil neiniializat.
Predicatul nonvar este n consecin opusul predicatului var. ntr-adevr, el poate fi scris
n Prolog prin:
46
nonvar(X):-var(X),!,fail.
nonvar(_).
atom(X)
Scopul atom(X) reuete dac X nlocuiete n acel moment un atom Prolog. Drept
rezultat, are loc urmtorul comportament:
integer(X)
Scopul integer(X) reuete dac X nlocuiete n acel moment un ntreg
atomic(X)
Scopul atomic(X) reuete dac X nlocuiete n acel moment fie un ntreg, fie un
atom. Predicatul atomic poate fi definit prin predicatele atom i integer astfel
atomic(X):-atom(X).
atomic(X):-integer(X).
1.25 Tratarea clauzelor ca termeni
Prolog permite programatorului s examineze i s modifice programul (clauzele ce
sunt utilizate pentru a satisface scopurile sale). Aceasta este simplu n particular, deoarece o
clauz poate fi vzut ca o structur Prolog obnuit. n consecin, Prolog furnizeaz
predicate predefinite pentru a permite programatorului s:
S construiasc o structur ce reprezint o clauz ntr-o baz de date;
S adauge o clauz, reprezentat printr-o structur dat, la o baz de date;
S elimine o clauz, reprezentat printr-o structur dat, dintr-o baz de date.
Majoritatea operaiilor asupra bazelor de date pot fi realizate prin folosirea acestor predicate,
mpreun cu operaiile Prolog obinuite de construire i descompunere a structurilor. nainte
de a studia predicatele predefinite relevante, este important s vedem modul n care o clauz
Prolog poate fi vzut ca o structur.
Regula, pe de alt parte, poate fi vzut ca o structur al crui operator principal este
:-, cu dou argumente. Acest operator este declarat ca un operator infix. Primul argument
este antetul clauzei iar al doilea este corpul ei.
n final, cnd exist mai mult de un scop n regul, scopurile sunt considerate legate
mpreun de ctre functorul , (cu dou argumente). Acesta este declarat de asemenea ca un
operator infix.
n acest caz acestea sunt predicate ce permit programatorului s examineze i s
modifice clauzele.
listing(A)
Satisfacerea unui scop de forma listing(A), unde A este iniializat cu un atom
determin ca toate clauzele care au atomul drept predicat s fie scrise, n sensul sistemului
Prolog, n fiierul curent de ieire. Acesta este modul n care se verific ce clauze sunt folosite
n mod curent pentru un anume predicat. Formatul exact al ieirii va depinde de
implementarea sistemului Prolog. S observm c, se vor vedea toate clauzele n care acel
atom este predicat, fr a ine seama de ct de multe argumente are. Folosirea scopului
listing poate fi util n descoperirea unei greeli dintr-un program.
47
clause(X,Y)
Satisfacerea unui scop de forma clause(X,Y) determin ca X i Y s fie identificate
cu antetul i corpul unei clauze existente n baza de date. Cnd se face o ncercare de a
satisface scopul, X trebuie s fie iniializat astfel nct predicatul principal al clauzei s fie
cunoscut. Dac nu exist clauze pentru predicat, atunci scopul eueaz. Dac exist mai mult
de o clauz ce se potrivete, Prolog o va alege pe prima. n acest caz, dac se face o ncercare
de a resatisface scopul, celelalte clauze care corespund vor fi pierdute, cte una la un moment
dat.
S reinem c, dei scopul clause are ntotdeauna un argument pentru corpul
clauzei, nu fiecare clauz are ntotdeauna un corp. Dac o clauz nu are corp, se consider c
are corpul true. Vom numi astfel de clauze fapte. Prin furnizarea parametrilor X i Y
iniializai sau nu, se pot urmri toate clauzele pentru un predicat dat i numrul de argumente,
sau toate clauzele care se potrivesc cu un anumit ablon. Predicatul clause este foarte
important dac dorim s construim programe ce examineaz sau execut alte programe.
asserta(X), assertz(X)
Cele dou predicate predefinite asserta i assertz permit adugarea de noi
clauze la baza de date. Cele dou predicate acioneaz exact n acelai mod, exceptnd faptul
c asserta adaug o clauz la nceputul bazei de date, n timp ce assertz adaug o
clauz la sfrit. Aceast convenie poate fi uor reinut deoarece a este prima liter a
alfabetului iar z este ultima. n scopul asserta(X), X trebuie s fie deja instaniat cu ceva
ce reprezint o clauz; ntr-adevr, ca i pentru clauze, este suficient s fie fcut iniializarea
astfel nct s fie cunoscut predicatul principal.
Este important de reinut c aciunea de adugare a unei clauze la baza de date nu este
reversibil atunci cnd are loc revenirea. n consecin, odat ce am utilizat asserta sau
assertz pentru a aduga o clauz nou, acea clauz va fi nlturat doar dac facem explicit
acest lucru (folosind retract).
retract(X)
Predicatul predefinit retract permite unui program s nlture clauze din baza de
date. Predicatul are un singur argument, reprezentnd un termen care trebuie s se potriveasc
cu clauza. Termenul trebuie s fie suficient iniializat astfel nct s poat fi determinat
predicatul clauzei (la fel ca pentru asserta, clause, etc). Cnd se ncearc s se satisfac
scopul retract(X), X este identificat cu prima clauz din baza de date care se potrivete, i
acea clauz este nlturat. Cnd se face o ncercare de resatisfacere a scopului, Prolog
continu cutarea acestei clauze, cutnd alta care se potrivete. Dac gsete una, se ntmpl
acelai lucru ca mai nainte. Dac se face o ncercare de resatisfacere a scopului, cutarea
continu pentru o alt clauz corespunztoare, i aa mai departe. S reinem c, odat ce o
clauz a fost nlturat ea nu mai este niciodat refcut, chiar i n cazul n care
backtracking-ul ncearc s resatisfac scopul retract. Dac la un moment dat cutarea nu
mai poate gsi nici o clauz care s corespund, scopul eueaz.
Deoarece argumentul X corespunde cu o clauz care va fi nlturat, este posibil s
vedem exact ce clauz a fost nlturat, chiar dac X indic un obiect cu mai multe variabile
neiniializate n el. Astfel cineva poate utiliza scopul retract pentru a duplica funcionarea
lui clause, n cazul n care se dorete nlturarea clauzei dup gsirea ei.
1.26 Crearea i accesul componentelor unei structuri
n mod normal, atunci cnd dorim s accesm o structur de un anumit tip ntr-un
program Prolog, realizm acest lucru prin menionarea structurii. Astfel, dac un predicat
48
are nevoie s lucreze cu o varietate de tipuri diferite de structuri ce apar n calitate de
argument, n mod normal furnizm doar o clauz separat pentru fiecare tip de structur.
n anumite programe nu putem anticipa toate structurile care pot apare. Elementul
esenial este c dorim ca acest program s lucreze cu orice tip de structur pe care i-o
furnizm. Bineneles, o posibilitate este de a furniza o clauz pentru fiecare operator pe care
este posibil s-l creem. Dar aceasta este o sarcin pe care nu o vom termina niciodat,
deoarece n anumite programe ar putea exista o infinitate de operatori. Modalitatea de a scrie
un astfel de program este de a folosi predicate predefinite ce realizeaz operaii pe structuri
arbitrare. Vom descrie acum cteva dintre acestea predicatele functor, arg i =... De
asemenea vom descrie un predicat ce lucreaz cu atomi, predicatul name.
functor(T,F,N)
Predicatul functor este definit astfel nct functor(T,F,N) nseamn T este o
structur care are operatorul F i numrul de argumente N. El poate fi utilizat n principiu
n dou moduri. n prima modalitate, T este deja iniializat. Scopul eueaz dac T nu este un
atom sau o structur. Dac T este un atom sau o structur, F corespunde operatorului iar N
corespunde cu un ntreg egal cu numrul de argumente al operatorului. S reinem c n acest
context un atom este considerat a fi o structur cu numrul de argumente egal cu zero.
Trebuie s considerm o a doua utilizare posibil a lui functor. Aceasta are loc
atunci cnd primul argument al scopului (T) este neiniializat. n acest caz, celelalte dou
argumente trebuie s fie iniializate specificnd operatorul i respectiv numrul de
argumente. Un scop de aceast form va reui ntotdeauna i ca rezultat T va deveni iniializat
cu o structur avnd operatorul i numrul de argumente furnizate. Acesta este modul de
construire a structurilor arbitrare, dat prin specificarea operatorului i numrului su de
argumente. Argumentele unei astfel de structuri construit cu ajutorul predicatului functor
are variabile neiniializate. De aceea structura va corespunde cu orice alt structur avnd
acelai operator i numr de argumente.
arg(N,T,A)
Predicatul arg trebuie utilizat ntotdeauna cu primele dou argumente iniializate. El
este folosit pentru a accesa un argument particular al unei structuri. Primul argument al
predicatului arg specific ce argument este cerut. Al doilea specific structura n care va fi
gsit argumentul. Prolog gsete argumentul corespunztor i apoi ncearc s-l potriveasc
cu al treilea argument. Astfel arg(N,T,A) reuete dac cel de-al N-lea argument al lui T
este A.
Predicatele functor i arg furnizeaz o modalitate de creare i accesare a
argumentelor unor structuri arbitrare. Predicatul =.. (pronunat univ din motive istorice)
furnizeaz o modalitate alternativ, care este util dac se dorete obinerea mpreun a
tuturor argumentelor unei structuri, sau dac se dorete construirea unei structuri dup o list
de argumente. Scopul X=..L semnific L este lista constnd din operatorul X urmat de
argumentele lui X. Un astfel de scop poate fi folosit n dou moduri, aceleai n care poate fi
folosit scopul functor. Dac X este iniializat, Prolog construiete lista corespunztoare i
ncearc s o potriveasc cu L. Pe de alt parte, dac X este neiniializat, lista va fi folosit
pentru a construi o structur corespunztoare care s corespund lui X. n acest caz, antetul lui
L trebuie s fie un atom (el va deveni operatorul lui X).
49
name(A,L)
n timp ce predicatele functor, arg i =.. sunt utilizate pentru construirea i
accesarea structurilor arbitrare, predicatul name se ocup cu atomi arbitrari. Predicatul name
leag un atom de o list de caractere (coduri ASCII). Aceasta poate fi util fie pentru a gsi
caracterele unui atom dat, fie pentru a gsi atomul care are date anumite caractere. Scopul
name(A,L) semnific faptul c, caracterele pentru atomul A sunt membrii ai listei L.
Dac argumentul A este iniializat, Prolog creaz o list de caractere i ncearc s le
potriveasc cu L. n caz contrar, Prolog utilizeaz lista L pentru a realiza un atom pentru a-l
nlocui pe A.
1.27 Modificarea comportamentului la backtracking
Exist dou predicate predefinite ce modific secvena normal de evenimente care au
loc pe durata revenirii. n principiu, ! nltur posibilitile de resatisfacere a scopurilor, iar
repeat ofer noi alternative care nu existau nainte.
!
Simbolul tietura poate fi considerat ca un predicat predefinit ce impune
sistemului Prolog anumite posibiliti pe care le are. Pentru mai multe detalii despre tietura
vezi capitolul 4.
repeat
Predicatul predefinit repeat este furnizat ca o modalitate suplimentar de a genera
soluii multiple cu ajutorul backtracking-ului. Dei el este predefinit, poate fi gndit ca avnd
definiia urmtoare:
repeat.
repeat:-repeat.
O problem care apare cu scopul repeat este aceea c ntotdeauna are o soluie de
refcut atunci cnd backtracking-ul o reconsider. Astfel, backtracking-ul nu va fi niciodat
capabil s reconsidere alternativele alese mai devreme de ultimul apel al scopului repeat,
cu excepia cazului cnd gestionm anularea alegerii printr-un anume mod. Datorit acestui
lucru, definiia de mai sus trebuie rescris astfel:
1.28 Construirea de scopuri compuse
n regulile i ntrebrile de forma X:-Y sau ?-Y, termenul care apare drept Y poate
consta dintr-un singur scop, o conjuncie de scopuri sau o disjuncie de scopuri. Mai mult, este
posibil s avem variabile drept scopuri i s satisfacem un scop n cazul n care el eueaz
folosind not. Predicatele descrise n aceast seciune furnizeaz modaliti de specificare a
acestor ci complicate de exprimare a scopurilor.
X,Y
Operatorul , specific o conjuncie de scopuri. Acest operator a fost introdus n
capitolul 1. Dac X i Y sunt scopuri, scopul X,Y reuete dac X reuete i dac Y reuete.
Dac X reuete i apoi Y eueaz, atunci se face o ncercare de resatisfacere a lui X. Dac X
eueaz, atunci ntreaga conjuncie eueaz. Aceasta este esena backtracking-ului. Operatorul
, are o declaraie ncorporat ca un operator infix asociativ la dreapta, astfel nct X,Y,Z
este echivalent cu X,(Y,Z).
50
X;Y
Operatorul ; specific o disjuncie (cu neles de sau) de scopuri. Dac X i Y sunt
scopuri, atunci scopul X;Y reuete dac X reuete sau dac Y reuete. Dac X eueaz,
atunci se face o ncercare de satisfacere a lui Y. Dac Y eueaz apoi, atunci ntreaga
disjuncie eueaz. Putem folosi operatorul ; pentru a exprima alternative n cadrul
aceleiai clauze.
call(X)
Se presupune c X este iniializat cu un termen care poate fi interpretat ca un scop.
Scopul call(X) reuete dac o ncercare de satisfacere a lui X reuete. Scopul call(X)
eueaz dac o ncercare de satisfacere a lui X eueaz. La prima vedere, acest predicat poate
prea redundant, deoarece cineva s-ar putea ntreba de ce argumentul scopului call nu poate
pur i simplu s apar el nsui drept scop?
not(X)
Se presupune c X este iniializat cu un termen care poate fi interpretat ca un scop.
Scopul not(X) reuete dac o ncercare de satisfacere a lui X eueaz. Scopul not(X)
eueaz dac o ncercare de satisfacere a lui X reuete. n acest fel, not se aseamn cu
call, exceptnd faptul c succesul sau eecul argumentului, interpretat ca un scop, este
inversat.
1.29 Egalitate
Aceast seciune se ocup pe scurt cu diverse predicate predefinite pentru testarea
egalitiii n Prolog.
X=Y
Cnd Prolog ntlnete scopul X=Y, el ncearc s fac pe X i Y egale prin potrivirea
lor mpreun. Dac le poate potrivi, scopul reuete (att X ct i Y pot deveni acum mai
iniializate). n caz contrar scopul eueaz. O discuie mai complet despre acest predicat este
dat n seciunea 2.4. Predicatul de egalitate este definit prin
X=X.
X\=Y
Predicatul X\=Y este opusul predicatului = n termeni de succes i eec. Astfel,
X\=Y reuete dac X=Y eueaz i invers. Dac scopul X\=Y reuete (X i Y nu pot fi
potrivite), iniializrile lui X i Y nu vor fi deloc schimbate.
X == Y
Predicatul == reprezint un test de egalitate mult mai strict dect =. Astfel, dac
X==Y reuete atunci i X=Y reuete tot att de bine. Pe de alt parte, reciproca nu este
adevrat. Modalitatea prin care == este mult mai strict este dat de modul n care se
consider variabilele. Predicatul = va considera o variabil neiniializat ca fiind egal cu
orice altceva, deoarece se va potrivi oricum. Pe de alt parte, == va considera doar c o
variabil neiniializat este egal cu o alt variabil neiniializat care este deja partajat cu ea.
n caz contrar testul va eua.
51
X\==Y
Acest predicat este pentru == acelai lucru cum este \= pentru =. Astfel, un
scop implicnd acest predicat va reui exact atunci cnd acelai scop pentru == va eua i
invers.
1.30 Intrri i ieiri
Predicatele ce sunt disponibile pentru citirea i scrierea caracterelor i termenilor au
fost descrise n capitolul 5. Acum le prezentm pe scurt pe fiecare.
get0(X)
Acest scop reuete dac X poate fi potrivit cu urmtorul caracter ntlnit din irul
curent de intrare. Scopul get0 reuete doar o dat (el nu poate fi resatisfcut). Operaia de
mutare a urmtorului caracter nu este refcut la backtracking, deoarece nu exit nici o
modalitate de a pune caracterul napoi n irul de intrare curent.
get(X)
Acest scop reuete dac X poate fi potrivit cu urmtorul caracter afiabil ntlnit n
irul de intrare curent. Caracterele afiabile au un cod ASCII care este mai mare dect 32.
Orice caracter neafiabil este ignorat. Scopul get reuete doar o dat (el nu poate fi
resatisfcut). Operaia executat de get nu este refcut la backtracking, deoarece nu exit
nici o modalitate de a pune un caracter napoi n irul de intrare curent.
skip(X)
Acest scop citete i ignor caracterele din irul curent de intrare pn cnd este gsit
un caracter care se potrivete cu X. Scopul skip reuete doar o dat.
read(X)
Acest scop citete urmtorul termen din irul curent de intrare i l potrivete cu X. Un
scop read reuete doar o dat. Termenul trebuie s fie urmat de un punct ., care nu este
parte a termenului, i cel puin un caracter neafiabil. Punctul este nlturat din irul de intrare
curent.
put(X)
Acest scop scrie ntregul X ca un caracter n irul de ieire curent. Scopul put reuete
doar o dat. Dac X nu este iniializat are loc o eroare.
nl
Scrie o secven de control n irul de ieire curent ce determin o linie nou. Pe
displayul unui calculator, dup folosirea scopului nl toate caracterele apar pe urmtoarea
linie a paginii. Scopul nl reuete doar o dat.
tab(X)
Scrie o cantitate de X spaii n irul de ieire curent. Are loc o eroare dac X nu este
iniializat. Scopul tab reuete doar o dat.
write(X)
Acest scop scrie termenul X n irul de ieire curent. Scopul write reuete doar o
dat. Orice variabil neiniializat din X este scris ca un numr unic de variabil precedat cu
un _, cum ar fi _239. Variabilele partajate n cadrul aceluiai argument pentru write
52
au acelai numr la afiare. Predicatul write ine cont de declaraiile operatorului curent
cnd afieaz un termen. De exemplu un operator infix va fi afiat ntre argumentele sale.
display(X)
Predicatul display lucreaz exact n acelai mod ca i write exceptnd faptul c
ignor orice declaraii de operator. Cnd este utilizat display, orice structur este afiat
avnd mai nti operatorul urmat de argumentele sale n parantez.
op(X,Y,Z)
Aceast scop declar un operator avnd clasa de preceden X, poziia i asociativitatea
Y, i numele Z. Specificarea poziiei i asociativitii este preluat din urmtoarele seturi de
atomi:
fx fy xf yf xfx xfy yfx yfy
Dac declaratia operatorului este legal atunci scopul op va reui. Vezi seciunea 5.5.
pentru mai multe detalii.
1.31 Tratarea fiierelor
Predicatele de care dispune Prolog pentru modificarea irurilor curente de intrare i
ieire pentru fiiere au fost prezentate n capitolul 5. Aici prezentm pe scurt pe fiecare din
ele.
see(X)
Acest scop deschide fiierul X, dac nu este deja deschis i definete irul curent de
intrare ca avnd surs fiierul X. Dac X nu este iniializat sau dac numele variabilei X nu
reprezint un fiier existent, are loc o eroare.
seeing(X)
Acest scop reuete dac numele irului de intrare curent se potrivete cu X, i eueaz
n caz contrar.
seen
Acest scop nchide irul de intrare curent, i definete irul de intrare curent ca fiind
tastatura terminalului (calculatorului).
tell(X)
Acest scop deschide fiierul X, dac nu este deja deschis i definete irul de ieire
curent pentru scriere n fiier. Dac X nu este iniializat are loc o eroare. Mai nti tell este
utilizat asupra unui fiier care nu este deja deschis, dac X denumete un fiier care nu exist,
atunci este creat un fiier cu acel nume. n caz contrar, dac X denumete un fiier care
exist, atunci coninutul anterior al fiierului este distrus.
telling(X)
Acest scop reuete dac X corespunde cu numele irului de ieire curent, i eueaz n
caz contrar.
told
Acest scop nchide irul curent de ieire, determinnd ca un marker de sfrit de fiier
s fie scris n fiier. irul curent de ieire redevine displayul calculatorului.
53
1.32 Evaluarea expresiilor aritmetice
Expresiile aritmetice au fost discutate mai nti n seciunea 2.5. n aceast seciune
vom prezenta pe scurt folosirea predicatului is, i ce operatori sunt disponibili pentru
construirea expresiilor aritmetice.
X is Y
Y trebuie s fie iniializat cu o structur ce poate fi interpretat ca o expresie aritmetic
aa cum este descris n seciunea 2.4. Mai nti, structura iniializat pentru Y este evaluat
pentru a furniza un ntreg, denumit rezultat. Rezultatul este comparat cu X, i predicatul is
reuete sau eueaz n funcie de rezultatul comparrii. Operatorii pot fi folosii pentru a
realiza structuri diferite de predicatul is, dup cum urmeaz:
X+Y
Este operator de adunare. Cnd este evaluat cu ajutorul predicatului is, rezultatul su
este suma aritmetic a celor dou argumente ale sale. Argumentele trebuie s fie iniializate cu
ntregi sau cu structuri care sunt evaluate drept ntregi.
X-Y
Este operator de scdere. Cnd este evaluat cu ajutorul predicatului is, rezultatul su
este diferena aritmetic a celor dou argumente ale sale. Argumentele trebuie s fie
iniializate cu ntregi sau cu structuri care sunt evaluate drept ntregi.
X*Y
Este operator de nmulire. Cnd este evaluat cu ajutorul predicatului is, rezultatul su
este produsul aritmetic a celor dou argumente ale sale. Argumentele trebuie s fie iniializate
cu ntregi sau cu structuri care sunt evaluate drept ntregi.
X/Y
Este operator de mprire ntreag. Cnd este evaluat cu ajutorul predicatului is,
rezultatul su este ctul ntreg a celor dou argumente ale sale. Argumentele trebuie s fie
iniializate cu ntregi sau cu structuri care sunt evaluate drept ntregi.
X mod Y
Este operator modulo ntreg. Cnd este evaluat cu ajutorul predicatului is, rezultatul
su este restul ntreg care este generat atunci cnd X este mprit cu Y. Argumentele trebuie
s fie iniializate cu ntregi sau cu structuri care sunt evaluate drept ntregi.
Anumite implementri particulare de Prolog pot include mai multe operaii aritmetice,
cum ar fi exponenierea. Exemplele artate n aceast carte necesit doar pe cele artate mai
sus.
1.33 Compararea numerelor
Prolog furnizeaz ase predicate pentru compararea numerelor (ntregi). Aceste
predicate au fost prezentate mai nti n seciunea 2.5. unde am discutat aritmetica. Fiecare
predicat este descris ca un operator infix avnd dou argumente.
X = Y
Predicatul de egalitate, descris n seciunea 6.8, reuete ntotdeauna atunci cnd cele
dou argumente de tip ntreg sunt aceleai.
54
X /= Y
Predicatul de inegalitate, descris i el n seciunea 6.8, reuete atunci cnd cele dou
argumente ale sale nu reprezint acelai ntreg.
X < Y
Predicatul mai mic reuete cnd argumentul ntreg din membrul stng este mai mic
dect argumentul ntreg din membrul drept. Ambele argumente trebuie s fie iniializate.
X > Y
Predicatul mai mare reuete cnd argumentul ntreg din membrul stng este mai
mare dect argumentul ntreg din membrul drept. Ambele argumente trebuie s fie iniializate,
altfel are loc o eroare.
X >= Y
Predicatul mai mare sau egal reuete cnd argumentul ntreg din membrul
stng este mai mare sau egal dect argumentul ntreg din membrul drept. Ambele argumente
trebuie s fie iniializate.
X =< Y
Predicatul mai mic sau egal reuete cnd argumentul ntreg din membrul stng
este mai mic sau egal dect argumentul ntreg din membrul drept. Ambele argumente trebuie
s fie iniializate. S reinem faptul c predicatul se scrie =< i nu <=, astfel nct <=
este liber pentru a fi utilizat ca un alt operator.
1.34 Urmrirea Prolog-ului n lucru
Aceast seciune descrie predicatele predefinite ce permit urmrirea programelor pe
timpul execuiei lor. n continuare vom descrie sumar aceste predicate predefinite, urmnd ca
n capitolul 8 s fie studiat mai n detaliu depanarea i trasarea execuiei programelor.
trace
Efectul de a satisface scopul trace este de a executa o urmrire exhaustiv. Aceasta
nseamn c din acest moment se poate urmri fiecare scop pe care l genereaz programul, n
fiecare din cele patru porturi principale.
notrace
Efectul scopului notrace este de a opri urmrirea exhaustiv din momentul apelrii
ei. Totui, este continuat orice urmrire datorit prezenei punctelor de vizualizare.
spy P
Predicatul spy este utilizat atunci cnd dorim s acordm o atenie special scopurilor
ce implic anumite predicate specifice. Acest lucru se poate realiza prin setarea punctelor de
vizualizare n cadrul lor. Predicatul este definit ca un operator prefix, astfel nct nu este
necesar s se pun paranteze n jurul argumentului. Argumentul poate fi unul din urmtoarele:
- Un atom. n acest caz, punctul de vizualizare este pus n toate predicatele ce
utilizeaz acest atom; totui sunt utilizate mai multe argumente.
- O structur de forma Nume/Dimensiune, unde Nume este un atom iar
Dimensiune este un ntreg.
- O list. n acest caz, lista trebuie s fie terminat cu [], i fiecare element al listei
55
trebuie s fie el nsui un argument permis predicatului spy. Prolog va pune puncte de
vizualizare n toate locurile specificate n list.
debugging
Predicatul predefinit debugging permite aflarea tuturor punctelor de vizualizare
care sunt setate n mod curent. Lista punctelor de vizualizare este afiat ca un efect lateral al
satisfacerii scopului debugging.
nodebug
Scopul nodebug determin nlturarea tuturor punctelor de vizualizare curent.
nospy
Ca i operatorul spy, nospy este un operator de tip prefix. Acest operator este mult
mai selectiv dect nodebug, deoarece se poate specifica cu exactitate ce puncte de
vizualizare trebuie s fie nlturate. Acest lucru se poate face prin furnizarea unui argument n
exact aceeai form ca i pentru predicatul spy.
56
LEC IA 6
EXEMPLE DE PROGRAME
Fiecare seciune a acestui capitol trateaz o aplicaie particular a programrii n
Prolog. Sugerm parcurgerea tuturor seciunilor acestui capitol. Nu v facei probleme dac
nu nelegei scopul programului deoarece nu suntei la curent cu aplicaia respectiv. Ceea ce
este important este nelegerea tehnicilor de programare disponibile n Prolog, indiferent de o
aplicaie particular.
Sperm c am inclus suficiente aplicaii pentru a satisface cele mai multe exigene.
Normal, toate aceste aplicaii lucreaz cu arii care sunt specifice modului n care Prolog i
reprezint lumea exterioar. Din pcate, scopurile unei cri ca aceasta fac imposibil discuia
programelor mai mari de o pagin de text, programe care fac obiectul unei audiene mai mari
la specialiti.
6.1. Cutarea n labirint
Este o noapte ntunecoas i cu o furtun puternic. Deoarece conducei maina pe un
drum lturalnic, i aceasta s-a defectat, oprii n faa unui castel splendid. Mergei la u, o
gsii deschis i ncepei cutarea unui telefon. Cum cutai n castel fr s v pierdei, i s
tii c ai cutat n toate camerele? De asemenea, care este cea mai scurt cale ctre telefon?
Acestea sunt pericolele pentru care a fost proiectat acest model.
n multe programe, cum ar fi cele pentru cutarea n labirint, este util pstrarea listei
cu informaii i cutarea n list atunci cnd este necesar o informaie ntr-un anumit
moment. De exemplu, dac am decis s cutm telefonul n castel, este nevoie s pstrm o
list cu numrul camerelor vizitate anterior astfel nct s nu intrm ntr-o vizit ciclic n
anumite camere. Pentru aceasta notm numrul camerelor vizitate pe o hrtie. nainte s
intrm n camer verificm dac numrul acesteia este pe list. Dac acest lucru se ntmpl
ignorm camera deoarece a fost vizitat anterior. Dac nu este n list mai nti scriem
numrul n list i apoi intrm n camer. Procesul se continu pn la gsirea telefonului.
Sunt cteva rafinamente ce se pot face la metod, care vor fi prezentate atunci cnd vom
discuta cutarea n grafuri. Mai nti ns s scriem n ordine paii, pentru a ti ce probleme
avem de rezolvat:
1. Mergei la ua fiecrei camere;
2. Dac numrul camerei este n list, ignorai camera i revenii la pasul 1.
Dac din camera n care am ajuns nu putem intra n alte camere, atunci revenim n
camera anterioar din care am intrat n camera curent pentru a cuta o nou cale;
3. Altfel adaug numrul camerei n list;
4. Caut n camera respectiv telefonul;
5. Dac nu este, revin-o la pasul 1. Altfel stop, iar n list se afl calea pe care
trebuie s o urmm pentru a ajunge la camera corect.
Vom presupune c numerele camerelor sunt constante, dar nu conteaz dac acestea
sunt integer sau atom. Mai nti, putem rezolva problema cutrii numerelor de camer din
list folosind predicatul membru definit n seciunea 3.3, considernd bucata de hrtie ca
list. Acum putem trata problema cutrii n labirint. Iat un mic exemplu n care avem un
etaj de cas, n care camerele sunt etichetate cu litere astfel:
57
Observai c orificiile din perei sunt uile iar spaiul din afara casei este reprezentat ca
fiind camera a. Sunt ui ntre camerele a-b, c-d, f-e, i aa mai departe. Faptele care
arat unde sunt ui pot fi reprezentai n Prolog astfel:
d(a,b) .
d(b,e) .
d(b,c) .
d(d,e) .
d(c,d) .
d(e,f) .
d(g,e) .
Observai c informaiile referitoare la ui nu sunt redundante. De exemplu, dei exist
ua ntre camerele g i e nu am reprezentat ca fiind u ntre e i g: deoarece nu exist
d(e,g). Sau, putem face ca programul s recunoasc faptul c fiecare fapt u poate fi
interpretat pe dou ci. Aceasta este alternativa folosit n programul ce urmeaz.
Pentru a merge dintr-o camer n alta trebuie s recunoatem unul din urmtoarele
dou cazuri:
suntem n camera n care dorim sau
intrm pe u i revenim n situaia descoperirii celor dou cazuri (recursiv).
Considerm scopul trece(X,Y,T), care precizeaz dac se poate trece din camera
X n camera Y. Al treilea argument T este lista pe care o avem, care d irul camerelor care au
fost vizitate anterior .
Condiia limit de trecere din camera X n camera Y este s ne aflm deja n camera Y
(adic, dac X=Y). Aceasta este reprezentat sub forma clauzei:
trece(X,X,T).
Pe de alt parte, vom alege cteva camere intermediare, numite Z, i vedem dac am
fost n ele anterior. Dac nu am fost, atunci vom trece din Z n Y, adugnd Z la list. Toate
acestea se reprezint prin urmtoarele clauze:
trece(X,Y,T):-
d(X,Z),not(membru(Z,T)),trece(Z,Y,{Z|T}).
Ceea ce n cuvinte poate fi redat astfel:
Pentru a merge din X n Y fr a trece prin camerele din T, gsete o u d care
face legtura ntre X i o camer oarecare (Z), asigur-te c Z nu este deja n list, i mergi
din Z ctre Y folosind lista T la care adaugi Z.
58
Sunt trei ci care pot duce la eec folosind aceast regul. Prima, dac X este izolat
(nu are legtur cu o alt camer). A doua, dac ua aleas este n list. A treia, dac nu putem
merge din Z n Y atunci eecul se va regsi n decursul recursivitii. Dac primul scop
d(X,Z) eueaz, atunci acesta va determina eecul schemei. La nivelul cel mai de sus (nu
ntr-un apel recursiv) aceasta nseamn c ntre X i Y nu exist cale. La nivelul cel mai de jos,
nseamn c trebuie s revenim i s gsim o alt u.
Programul prezentat trateaz uile ca fiind inversabile. Dac presupunem c avnd o
u ce d din camera a n camera b, aceasta este acelai lucru ca i cnd am avea u din b
ctre a, acum va trebui s facem asta explicit, aa cum s-a indicat mai sus. n schimbul
realizrii unui duplicat pentru fiecare factor d ns cu argumentele inverse, sunt alte dou ci
pentru a pune aceste informaii n program. Cea mai evident cale este prin a aduga o nou
regul, dnd:
trece(X,X,T).
trece(X,Y,T):-
d(X,Z),not(membru(Z,T)),trece(Z,Y,[Z|T]).
trece(X,Y,T):-
d(Z,X),not(membru(Z,T)),trece(Z,Y,[Z|T]).
Sau se poate folosi predicatul ; (pentru disjuncie):
trece(X,X,T).
trece(X,Y,T):-
(d(X,Z);d(Z,X)).
not(membru(Z,T)).
trece(Z,Y,[Y|T]).
Acum pentru a gsi telefonul: considerm scopul are_telefon(X) care este
adevrat dac n camera X este telefonul. Dac dorim s oferim c n camera g se afl telefon,
vom face asta prin nscrierea n baza de date a are_telefon(g). Presupunnd c plecm
din camera a, o ntrebare posibil pe care o punem pentru a determina calea ctre telefon este:
? - trece(a,X,[ ]),are_telefon(X).
Aceast ntrebare este o generare i testare , pentru gsirea unei posibile camere,
care are telefon. O alt cale este de a satisface are_telefon(X) primul, atunci cnd trecem
din camera a n X :
? - are_telefon(X),trece(a,X,[ ]).
Aceast metod este mult mai eficient, dar implic cunoaterea unde se afl telefonul
nainte de a ncepe cutarea. Iniializnd al treilea argument cu o list vid aceasta nseamn
c la nceput vom avea o list vid. Aceasta poate fi schimbat astfel nct s produc
variante: ntrebarea Gsii telefonul fr s intrai n camerele d i f poate fi exprimat n
Prolog astfel:
?-are_telefon(X), trece(a,X,[d,f]).
59
6.2. Turnurile din Hanoi
Turnurile din Hanoi este un joc ce se joac cu trei axe i un set de discuri. Discurile
sunt gradate n diametru, i ca s intri pe ax fiecare disc are n centru o gaur. Iniial toate
discurile sunt pe axul din stnga. Scopul jocului este s mui toate discurile pe axul central.
Axul din dreapta poate fi folosit ca ax de schimb, un loc temporar pentru discuri. De fiecare
dat un disc este mutat de la un pol la altul; dou lucruri trebuie avute n vedere: numai
discul din vrful axului poate fi mutat i un disc cu diametrul mai mare nu poate fi pus peste
un disc cu diametrul mai mic.
Stnga Centru
Dreapta
Muli oameni care au jucat acest joc n-au descoperit o strategie simpl i rapid ca s
joace corect jocul Turnurile din Hanoi cu trei axe i N discuri. V scutim de efortul de a
descoperi relevnd aici:
condiia limit se ntmpl atunci cnd nu avem discuri pe axul surs (axul
din stnga).
mutai N-1 discuri de la axul surs la axul de rezerv (din dreapta) folosind
destinaia ca temporar. Observai c aceasta este o micare recursiv.
mutai un singur disc de la polul surs la polul destinaie.
n final, mutai N-1 discuri de pe polul de rezerv la destinaie, folosind
sursa ca rezerv.
Programul Prolog ce implementeaz aceast strategie este definit dup cum urmeaz.
Am definit un predicat hanoi avnd un argument, astfel c hanoi(N) nseamn tiprirea
secvenei micrilor cnd N discuri sunt pe polul surs. Cele dou clauze muta, prima este
condiia limit descris mai sus i a doua clauz implementeaz cazurile recursive, predicatul
muta are patru argumente: primul este numrul discurilor ce vor fi mutate. Celelalte trei
reprezint axele care sunt: surs, destinaie i rezerv pentru mutarea discurilor. Predicatul
inform folosete write pentru tiprirea numerelor axelor implicate n mutarea unui disc.
hanoi(N):- muta(N, stanga, centru, dreapta).
muta(0,-,-,-):-!
muta(N,A,B,C):-
M is N-1
muta(M,A,C,B), inform(A,B), muta(M,C,B,A).
inform(X,Y) :-
write([muta, discul, din, polul, X, in, polul,Y]).
nl.
60
6.3. Procesarea listelor
n aceast seciune vom descrie cteva predicate de baz folosite n manipularea
listelor. Deoarece Prolog-ul face structurile de date arbitrare disponibile, listele nu vor avea un
rol prea mare aa cum se ntmpl n alte limbaje de programare cum ar fi LISP i POP-2.
Dac programele vor folosi sau nu liste este important de neles cum lucreaz predicatele,
deoarece ele folosesc principii ce pot fi aplicate la manipularea diferitelor structurii de date.
Gsirea ultimului element dintr-o list: scopul ultim(X,L) reuete dac X este
ultimul element din lista L. Condiia limit este cnd lista are un singur element. Aceasta este
prima regul de controlat. A doua regul reprezint formele de caz recursiv.
ultim(X,[X]).
ultim(X,[_|Y]:-ultim(X,Y).
?-ultim(X,[caut, un, breloc]).
X=breloc
Verificarea elementelor consecutive: scopul consecutiv(X,Y,L) reuete dac
elementele X i Y sunt elemente consecutive n lista L. Din cauza modului de lucru cu
variabilele, att X, sau Y, sau amndou pot fi neinstaniate cnd o ncercare este determinat
s satisfac scopul. Prima clauz, care verific condiia limit trebuie s in cont c mai pot
exista elemente dup X i Y. Aceasta deoarece variabilele anonime apar la sfritul listei.
consecutiv(X,Y,[X,Y|_].
consecutiv(X,Y,[_|Z]):-consecutiv(X,Y,Z).
Adugarea n liste: am vzut acest exemplu n seciunea 3.6. scopul
adauga(X,Y,Z) arat c Z este o list construit prin adugarea lui Y dup X. De
exemplu:
?-adauga([a,b,c],[d,e,f],Q).
Q=[a,b,c,d,e,f]
Scopul adauga este definit astfel:
?-adauga([ ],L,L).
adauga([X|L1], L2, [X|L3]):-adauga(L1,L2,L3).
Condiia limit este atunci cnd primul argument este list vid. Aceasta deoarece
adugnd lista vid la o list, aceasta din urm nu se schimb. Mai mult, ne vom apropia
treptat de condiia limit deoarece fiecare rechemare a lui adauga mut nc o dat un
element de la capul primului argument. Atenie c oricare dou argumente ale lui adauga
pot fi instaniate, i adauga va instania al treilea argument la rezultatul cel mai apropiat.
Aceast proprietate este adevrat pentru multe predicate definite n acest capitol. Datorit
flexibilitii lui adauga, putem acum s definim alte cteva predicate astfel:
ultim(El,List):-adauga(_,[El],List).
consecutiv(El1,El2,List):-adauga(_,[El1,El2|_],List).
membru(El,List):-adauga(_,[El|_],List).
61
Inversarea unei liste: scopul invers_lista(L,M) reuete dac rezultatul
inversrii elementelor din lista L este lista M. Programul utilizeaz un standard tehnic, unde
ntoarcerea n list nseamn schimbarea primului element din list cu ultimul. {i ce cale mai
bun de a muta ultimul element avem dect folosirea lui invers_lista ! Condiia limit
este cnd primul argument este redus la o list vid, n care caz rezultatul este lista vid.
invers_lista([ ], [ ]).
invers_lista([H|T],L):-
invers_lista(T,Z), adauga(Z,[H],L).
Atenie c am inclus pe H n paranteze drepte n al doilea argument al lui adauga.
Aceasta deoarece H a fost selectat ca, cap al primului argument i capul unei liste nu este
neaprat o list. Prin convenie coada unei liste este ntotdeauna o list. Pentru o
implementare mai eficient a lui invers_lista, putem ncorpora adugarea n clauze
pentru invers_lista.
invers_lista(L1,L2):-invers_listaac(L1,[ ],L2).
invers_listaac([X|L],L2,L3):-
invers_listaac(L,[X|L2],L3),
invers_listaac([],L,L).
Al doilea argument al lui invers_listaac este folosit pentru a ine rspunsul
departe cu alte cuvinte, un acumulator, introdus n seciunea 3.7. Oricum, este descoperit o
nou pies( X) a rspunsului, acumulatorul nou trece la rezultatul programului i acumulatorul
vechi este combinat cu noua pies X. La sfrit, ultimul acumulator este trimis napoi pentru a
fi rspuns la scopul original.
tergerea unui element: Scopul scoate_X_din_Y(X,Y,Z) este mutarea primei
apariii a lui X n lista Y, dnd o nou configuraie lista Z. Dac X nu este element n lista Y,
predicatul eueaz. Condiia limit este cnd am gsit elementul. Altfel, ne ntoarcem la coada
lui Y.
scoate_X_din_Y(A,[A|L],L):- !.
scoate_X_din_Y(A,[B|L],[B|M]):-
scoate_X_din_Y(A,L,M).
Este uor a aduga o clauz astfel nct predicatul s nu eueze cnd al doilea
argument este redus la o list vid. Noua clauz care reprezint noua condiie limit este:
scoate_X_din_Y(_,[ ], [ ] ).
tergerea tuturor apariiilor unui element: scopul sterge(X,L1,L2)
construiete o list L2 prin tergerea tuturor elementelor X din lista L1. Condiia limit este
cnd L1 este list vid, ceea ce nseamn c am parcurs ntreaga list. Altfel, dac X este n
list, atunci rezultatul este coada listei, excepie fcnd cazul cnd tergem din list. Cazul
final este acela cnd am vzut altceva dect X n al doilea argument : atunci relum cutarea.
sterge(_,[ ],[ ]).
sterge(X,[X|L],M):- !, sterge(X,L,M)
sterge(X,[Y|L1],[Y,L2]):- sterge(X,L1,L2).
62
Substituirea: Aceasta este aproape similar cu sterge nlocuind tergerea
elementului dorit cu inserarea altui element n locul lui. Scopul substituire(X,L,A,M)
va realiza construirea unei liste noi M fcut din elementele listei L, cu excepia faptului c
orice apariie a lui X va fi nlocuit de A. Sunt trei cazuri. Primul este chiar condiia limit,
ntocmai ca la sterge. Al doilea caz este cnd X este gsit n al doilea argument i al treilea
caz este cnd se gsete altceva dect X.
substituire(_, [ ],_,[ ] ).
substituire(X,[X|L],A,[A|M]):-!,
substituire(X,L,A,M).
substituire(X,[Y|L],A,[Y|M):-
substituire(X,L,A,M).
Subliste: Lista X este o sublist a listei Y dac fiecare parte din X apare i n Y,
consecutiv i n aceeai ordine. Urmtorul scop reuete:
sublist([la,club],[lume,multa,la,club,astazi]).
Programul sublist necesit dou predicate: unul care gsete primul element care
se potrivete i unul care asigur c ceea ce rmne din prima potrivire a primului argument
se potrivete element cu element cu ceea ce rmne din al doilea argument:
sublist([X|L],[X|M]):- prefix(L,M),!
sublist(L,[_|M]):- sublist(L,M).
prefix([ ],_).
prefix([X|L],[X|M]):-prefix(L,M).
Eliminarea duplicatelor: Predicatul elimin_duplicat terge direct o list de
orice elemente i face o list nou. Dei lista poate conine elemente n duplicat la intrare, la
ieire lista va conine cte un exemplar din fiecare element. Scopul
elimin_duplicat(L,M) construiete din lista L o nou list M n care dublurile dispar.
Definiia folosete un predicat auxiliar duplicat_acum n care acumulatorul (vezi
seciunea 3.7) este argument secund, iniializat la lista vid. Se folosete de asemenea
predicatul membru de la seciunea 3.3.
elimin_duplicat(L,M):- duplicat_acum(L,[ ],M).
duplicat_acum([ ],A,A).
duplicat_acum([H|T],A,L):-membru(H,A),
duplicat_acum(T,A,L).
duplicat_acum([H|T],A,L):-
duplicat_acum(T,[H|A],L).
Predicatul duplicat_acum are trei clauze. Prima este condiia limit, cnd lista de
intrare este vid, rezultatul fiind trecut ntr-un acumulator. A doua clauz verific dac
urmtorul element din list este un membru al listei acumulate. Dac este, revenim simplu la
coad, fr nici o schimbare a acumulatorului. Altfel, folosind urmtoarea clauz, revenim la
coada listei de intrare, cu un acumulator care are adugat un nou element (H).
Maparea: o tehnic puternic este capacitatea de a converti o list n alt list prin
aplicarea unei funcii fiecrui element al primei liste, folosind ca rezultate succesive
elementele aflate n cea de-a doua list. Programul din capitolul 3, pentru schimbarea unei
propoziii n alta, este un exemplu de mapare. Spunem c facem "maparea unei propoziii n
alta".
63
6.4. Reprezentarea i manipularea mul imilor
Mulimea este una dintre cele mai importante structuri de date utilizate n matematic,
operaiile cu mulimi gsindu-i aplicaii n programarea pe calculator. O mulime este o
colecie de elemente, asemenea unei liste, n care ordinea enumerrii elementelor nu este
important.
Astfel, mulimea {1,2,3} este la fel cu mulimea {2,3,1}, deoarece problema este
dac un element dat este sau nu al mulimii. Mulimile pot, de asemenea, avea alte mulimi n
calitate de elemente. Operaia de baz asupra unui mulimi este de a determina dac un
element aparine unei mulimi date. Nu este surprinztor faptul c o reprezentare convenabil
pentru mulimi este aceea de liste. O list poate conine elemente arbitrare, inclusiv alte liste i
este posibil definirea unui predicat de apartenen la o list. Cu toate acestea, cnd
reprezentm o mulime ca o list, vom aranja ca lista s aib doar un element pentru fiecare
obiect aparinnd mulimi. Legturile cu listele, fr duplicarea elementelor, simplific unele
operaii cum ar fi tergerea elementelor. Vom trata doar listele fr duplicate. Predicatele
descrise n aceast seciune menin aceast proprietate. Este uzual definirea urmtoarelor
operaii peste mulimi. Vom folosi notaii matematice uzuale pentru acelea care sunt uzuale:
Apartenena: XeY
X este un membru al unui mulimi Y dac X este un element al lui Y.
Exemplu: ae{c,a,t}
Submulime: XcY
Mulimea X este un submulime a mulimii Y dac fiecare element al lui X este de
asemenea element al lui Y. Y poate conine unele elemente pe care X nu le are.
Exemplu: {x,r,u}c{p,q,r,s,t,u,v,w,x,y,z}
Intersecie: XY
Intersecia mulimilor X i Y este mulimea care conine acele elemente care sunt
comune att lui X ct i lui Y.
Exemplu: {r,a,p,i,d}{p,i,c,t,u,r,a}={r,i,p,a}.
Reuniunea: XY
Reuniunea mulimilor X i Y este mulimea coninnd elementele din X sau Y, sau din
ambele luate o singur dat.
Exemplu: {a,b,c}{c,d,e}={a,b,c,d,e}
Exist operaii de baz care sunt n mod normal folosite pentru manipularea
mulimilor. Putem scrie acum programe n Prolog care s le implementeze pe fiecare n parte.
Prima operaie de baz, calitatea de membru, este acelai predicat membru pe care l-am
vzut de cteva ori nainte. Totui, definiia sa pe care o folosim nu conine simbolul
"tietura" n cazuri limit astfel c putem genera elemente succesive ale listei prin
backtracking.
membru(X,[X|_]).
membru(X,[_|Y]):-membru(X,Y).
Apoi, un predicat submultime pentru care submultime(X,Y) va reui dac X
este o submulime al lui Y. A doua clauz n definiie a concretizat notaia matematic c
64
submulimea vid este o submulime a fiecrei mulimi. n Prolog, aceast notaie se
transform ntr-o cale de a verifica condiia limit a primului argument; ne vom ntoarce la
detaliile lui.
submultime[A|X],Y):-membru(A,Y),submultime(X,Y).
submultime([ ],Y).
Definim acum intersecia. Scopul intersectie(X,Y,Z) va reui dac intersecia
lui X cu Y va fi Z. Iat unde va trebui s presupunem c listele nu conin elemente duplicate.
intersectie([ ],X,[ ]).
intersectie([X|R],Y,[X|Z]):- membru(X,Y), ! ,
intersectie(R,Y,Z).
intersectie([X|R] Y,Z):-intersectie(R,Y,Z).
n sfrit, reuniunea. Scopul reuniune(X,Y,Z) va reui dac reuniunea lui X i Y
este Z. Notai c reuniune arat mai curnd ca un aranjament ntre intersectie i
adauga:
reuniune([],X,X).
reuniune([X|R,Y,Z):-membru(X,Y),!,reuniune(R,Y,Z).
reuniune([X|R],Y,[X|Z]):-reuniune(R,Y,Z).
Aceasta ncheie repertoarul nostru de predicate dedicate procesrii unei mulimi. Dei
mulimile nu se pot prezenta n tipul de programare pe care intenionm s-l facem, merit
osteneala s studiem aceste exemple pentru a obine o nelegere bun a modului cum putem
face recursivitate i backtracking.
Bibliografie
1. Podaru, V., Inteligen artificial i siteme expert, Editura Academiei Tehnice
Militare, 1997