13 inteligenta artificiala sisteme expert
Embed Size (px)
DESCRIPTION
.TRANSCRIPT

Mircea NEAGOE
INTELIGENŢĂ ARTIFICIALĂ
ŞI SISTEME EXPERT
2008
REPROGRAFIA UNIVERSITĂŢII “TRANSILVANIA” DIN BRAŞOV


i
Inteligenţa Artificială Cuprins
CUPRINS
1. Inteligenţa artificială ................................ ................................ ................................ ................. 1
1.1 Introducere ................................ ................................ ................................ .................... 1
1.2 Definiţii ale inteligenţei artificiale (IA) ................................ ................................ .........3
1.3 Scurt istoric al IA ................................ ................................ ................................ ........... 3
Rezumat ................................ ................................ ................................ ............................... 4
2. Limbajul LPA–Prolog ................................ ................................ ................................ ............... 5
2.1. Alfabetul şi elemente de sintaxa limbajului Prolog ................................ ...................... 5
2.2. Vocabularul şi termenii limbajului Prolog ................................ ................................ ...6
2.3. Structura unui program PROLOG ................................ ................................ .............. 10
2.4. Aspectul declarativ şi procedural al programelor Prolog ................................ ........... 11
2.5. Liste. Prelucrarea listelor ................................ ................................ ............................ 14
2.6. Operatori ................................ ................................ ................................ ..................... 15
2.7. Controlul backtraking-ului în limbajul Prolog ................................ ........................... 16
Rezumat ................................ ................................ ................................ ............................. 18
Probleme propuse ................................ ................................ ................................ ............. 18
Test de autoevaluare ................................ ................................ ................................ .......... 21
3. Limbaje de ordinul I................................ ................................ ................................ ................ 23
3.1. Limbajul de calcul propoziţional ................................ ................................ ................ 23
3.1. Sintaxa şi semantica calculului propoziţional................................ ................. 23
3.1.2. Principiul deducţiei ................................ ................................ ...................... 25
3.1.3. Echivalenţă logică ................................ ................................ ........................ 25
3.2. Metode de demonstrare a teoremelor în limbajul de calcul
propoziţional ................................ ................................ ................................ .......... 26
3.2.1. Metode semantice ................................ ................................ ........................ 26
3.2.2. Metode sintactice ................................ ................................ ......................... 27
3.2.3. Demonstrarea teoremelor utilizând metoda deducţiei
formale ................................ ................................ ................................ .......28
3.2.4. Principiul rezoluţiei ................................ ................................ ..................... 29
Rezumat ................................ ................................ ................................ ............................. 32
Exerciţii şi probleme propuse ................................ ................................ ........................... 32
Test de autoevaluare ................................ ................................ ................................ .......... 34
4. Structuri şi strategii de căutare în spaţiul de stări ................................ ............................... 35
4.1. Inteligenţa artificială ca reprezentare şi căutare ................................ ......................... 35
4.1.1. Reprezentarea cunoştinţelor................................ ................................ .........35
4.1.2 Căutarea ................................ ................................ ................................ ........35
4.2. Strategii de căutare ................................ ................................ ................................ .....38
4.2.1. Algoritmi de căutare exhaustivă ................................ ................................ ..38
4.2.2. Algoritmi de căutare euristică ................................ ................................ ......41
Rezumat ................................ ................................ ................................ ............................. 45
Probleme propuse ................................ ................................ ................................ ............. 45
Test de autoevaluare ................................ ................................ ................................ .......... 46

ii
5. Sisteme de Producţie................................ ................................ ................................ ................ 47
5.1. Definiţia sistemelor de producţii ................................ ................................ ................ 47
5.2. Controlul căutării în sistemele de producţie ................................ ............................... 51
5.2.1. Selecţia modului de căutare: data-driven sau goal-driven ........................... 51
5.2.2.Controlul căutării prin intermediul strategiei de rezolvare a
conflictului ................................ ................................ ................................ .53
Rezumat ................................ ................................ ................................ ............................. 54
Probleme propuse ................................ ................................ ................................ .............. 54
Test de autoevaluare ................................ ................................ ................................ .......... 55
6. Planning ................................ ................................ ................................ ................................ ....57
6.1. Prima metodă de planning (John McCarthy) ................................ .............................. 58
6.2. Metoda STRIPS (STanford Research Institute Planning System) ............................... 61
Rezumat ................................ ................................ ................................ ............................. 64
Probleme propuse ................................ ................................ ................................ .............. 64
Test de autoevaluare ................................ ................................ ................................ ..........65
7. Sisteme Expert ................................ ................................ ................................ ......................... 67
7.1. Inteligenţa artificială şi sistemele expert ................................ ................................ ....67
7.1.1. Sisteme Expert. Definiţii ................................ ................................ ............. 67
7.1.2. Originea Sistemelor Expert. Experimentări şi realizări ............................... 69
7.2. Structura generală a unui sistem expert ................................ ................................ ......72
7.2.1 Componentele sistemelor expert................................ ................................ ...72
7.2.2. Categorii de aplicaţii ................................ ................................ .................... 76
7.2.3. Alternative în construcţia unui sistem expert ................................ .............. 78
7.2.4. Etape ale realizării unui sistem expert ................................ ......................... 79
7.3. De la sistemele de producţii la sistemele expert. Un mic exemplu ............................ 81
Rezumat ................................ ................................ ................................ ............................. 84
Test de autoevaluare ................................ ................................ ................................ .......... 85

Inteligenţă Artificială Cap.1. Introducere
1
Inteligenţa artificială
Obiectivele disciplinei
Însuşirea noţiunilor de bază şi crearea abilităţilor practice necesare în rezolvarea
problemelor complexe din inginerie şi economie prin metode specifice Inteligenţei Artificiale:
calcul propoziţional, algoritmi de căutare, sisteme de producţii, planning, sisteme expert, logică
fuzzy, reţele neuronale.
1.1. Introducere
Termenul de inteligenţă artificială a fost folosit pentru prima dată în 1956 de omul de
ştiinţă american John McCarthy. Până atunci, inteligenţa artificială îşi făcuse simţită prezenţa în
unele domenii de investigaţie, cum ar fi:
1. Raţionamentul automat: poate un calculator demonstra o teoremă dintr-un anumit
domeniu, cum ar fi Geometria?
2. Procesarea limbajelor naturale: poate un calculator să comunice cu utilizatorul
într-un limbaj de toate zilele, de exemplu, limba Engleză?
3. Sistemele expert: poate un calculator să întreprindă o expertiză într-un anumit
domeniu, să zicem, medicina? Dacă calculatorului i se dau simptomele pacientului,
poate acesta să stabilească diagnosticul şi să prescrie tratamentul medicamentos
adecvat?
4. Jocuri: un calculator poate juca competitiv un joc, cum ar fi şah-ul?
5. Vederea artificială: poate un calculator "privind" imaginea unei scene, de exemplu,
o bucătărie cu un robinet deschis, să interpreteze scena respectivă? Dacă da, un
robot dirijat de un astfel de controller este capabil să localizeze robinetul şi să
închidă apa?
6. Învăţare: Poate un calculator, care operează într-un domeniu de tipul celor de mai
sus, să-şi îmbunătăţească performanţele în timp? Învăţând din experienţă, poate
deveni, de exemplu, un mai bun jucător de şah?
Se ştie că un calculator face numai ceea ce un program îi spune să facă. Deci, studiul
inteligenţei artificiale presupune studierea unor tehnici specifice de programare a calculatoarelor,
astfel încât acestea să devină capabile să îndeplinească, într-un anumit domeniu, sarcini considerate
ca ţinând de domeniul inteligenţei.
Nu există o definiţie riguroasă a inteligenţei artificiale. Definiţiile existente în diverse
lucrări poartă amprenta domeniului particular în care aceasta este aplicată. O încercare de definiţie
ar putea fi următoarea:
Inteligenţa artificială (IA) poate fi definită ca acea ramură a "computer science" care se
ocupă cu automatizarea comportamentului inteligent.
Obiectivul major al IA este de a construi maşini inteligente (în IA termenii de maşină şi
Cap.1

Inteligenţă Artificială Cap.1. Introducere
2
calculator sunt sinonimi). Inteligenţa artificială trebuie privită ca o completare sau prelungire a
inteligenţei umane şi nu ca o înlocuire a acesteia, aşa cum invenţia automobilului nu a desfiinţat
mersul pe jos. Automobilul a fost conceput în ideea de a sluji omul. La fel şi IA.
Deoarece obiectivul inteligenţei artificiale este de a construi maşini care afişează inteligenţă,
ne punem întrebarea dacă putem defini precis această inteligenţă. Inteligenţa are multe aspecte:
abilitatea de a raţiona, de a învăţa din experienţă, de a se adapta la situaţii noi etc. Încercarea de a
da o definiţie riguroasă inteligenţei ne-ar introduce într-un domeniu de speculaţii psihologice şi
filozofice.
Unul dintre scopurile fundamentale ale cercetărilor în domeniul IA este reproducerea, de
către calculator, a raţionamentelor umane.
Pentru a stabili dacă o maşină dată este inteligentă, matematicianul britanic Alan Turing
(1912-1954) a propus un test, cunoscut azi sub numele de testul Turing. În esenţă testul Turing
poate fi descris astfel:
O persoană, denumită interogator, conversează prin intermediul unui terminal cu doi
interlocutori, invizibili din punctul lui de vedere. Unul dintre aceştia este o maşină, iar
celălalt este un interlocutor uman. Maşina încearcă să răspundă la întrebările
interogatorului ca şi cum ar fi un interlocutor uman. Persoana, desigur, răspunde normal ca
un interlocutor uman. Dacă, după conversaţia pentru o perioadă de timp cu cei doi
interlocutori, interogatorul nu este capabil să-i distingă pe cei doi interlocutori, atunci se
poate spune că maşina este inteligentă.
Testul Turing a fost deseori criticat în literatură, reproşându-i-se că decizia depinde de
modul în mare măsură de interogatorul respectiv. Acest reproş poate fi contracarat prin desfăşurarea
testului cu mai mulţi interogatori, fiecare dintre ei lucrând independent de ceilalţi. Rezultatul
testului va fi în acest caz decizia celor mai mulţi dintre interogatori.
Inteligenţa Artificială este o ramură a ştiinţei promovată recent în universităţi şi laboratoare
de cercetare. Astfel de tehnici au început să fie promovate cu succes şi în industrie. Se apreciază ca
în viitor tratarea problemelor inginereşti cu metode specifice inteligenţei artificiale va creşte
considerabil. În plus, tehnicile dezvoltate pe baza programării clasice dau rezultate corespunzătoare
când se utilizează în descrierea elementelor finite, la simularea circuitelor, prelucrarea problemelor
algoritmice, nefiind adecvate la o serie de probleme inginereşti. Metodele inginereşti pot fi
caracterizate prin utilizarea algoritmilor euristici în scopul determinării celei mai bune soluţii într-o
situaţie concret dată.
Inteligenţa artificială (IA) este arta de a programa calculatoarele, pentru a le determina să
realizeze "lucruri" care sunt considerate inteligente, atunci când sunt făcute de oameni. IA implică,
deci, capacitatea de abstracţie şi de raţiune, iar auxiliarul său indispensabil este memoria.
Inteligenţa artificială urmăreşte simularea pe calculator a mecanismelor intelectului uman.
În sens larg, IA include anumite aspecte de senzaţie şi percepţie artificială (vederea artificială,
înţelegerea limbajului vorbit etc.) şi presupune capacităţi de învăţare şi adaptare. În sens restrâns,
IA înseamnă arta de a crea medii artificiale care să simuleze procesele cognitive, adică
conceptualizarea şi raţionarea asupra conceptelor.
Antecedentele IA trebuiesc căutate la vechii greci (Gorder 1986), dar ideea formării unei
discipline de cercetare a inteligenţei umane şi a raţionării formale a condus diverse grupuri din
S.U.A. şi Europa după cel de-al doilea război mondial.

Inteligenţă Artificială Cap.1. Introducere
3
Evoluţia ştiinţei calculatoarelor şi comportarea umană au stimulat interesele raţionării pe
maşină.. Aceasta a determinat o nouă disciplină, cea a inteligenţei artificiale.
Prin cercetarea începută în 1956 şi cu evenimentul consolidării prin Summer Research
Project realizat la Darthmounth College, John McCarty a stabilit termenul de IA. Primele succese
sunt datorate programelor capabile să demonstreze teoreme ale logicii matematice (1963) ce au
determinat noua deschidere către programe ce folosesc tehnici de IA şi o revigorare a domeniului
IA, devenind astfel o disciplină, mai mult decât o căutare matematică pentru maşinile inteligente. În
timp, a apărut ideea benefică a înglobării filozofilor, lingviştilor şi neurologilor în aceste domenii.
Se dau mai jos câteva exemple de zone ştiinţifice asupra cărora se extinde IA:
vederea artificială – ce presupune recunoaşterea formelor, identic cu vederea umană;
robotica – focalizează producerea dispozitivelor mecanice capabile să reproducă mişcarea;
prelucrarea vocii – ce priveşte constituirea şi sinteza vocii umane;
prelucrarea în limbaj natural – înţelegerea şi vorbirea în limbaj natural;
demonstrarea (producerea) teoremelor – în matematică şi logică;
"General Problem Solving" – rezolvarea unei clase generale de probleme exprimate în
limbaje formale;
recunoaşterea formelor – recunoaşterea şi clasificarea diferitelor forme;
teoria jocurilor;
învăţarea automată – maşini ce acumulează cunoştinţe prin observarea exemplelor.
Analizând literatura de specialitate, se pot distinge două direcţii fundamentale în care se
desfăşoară cercetările în acest domeniu:
1. Reţele neuronale - maşina este modelată ca reţea neuronală, imitând modelul anatomic al
creierului uman;
2. Calculul simbolic - Newell şi Simon a demonstrat că activitatea inteligentă se desfăşoară
prin operaţii logico-matematice asupra unor simboluri (model fiziologic al creierului
uman).
1.2. Definiţii ale inteligenţei artificiale (IA)
IA este ştiinţa care permite realizarea de maşini care au competenţa de a fi inteligente (M. Minsky,
1975);
IA este disciplina care are ca obiect înţelegerea naturii şi construirea de programe pe calculator
imitând inteligenţa umană (A. Bonnet, 1984);
IA este studiul facultăţilor mentale în vederea utilizării lor ca modele pentru calculator, ca
depozite de inteligenţă pentru maşinile construite de om.
IA este încercarea de conversie a datelor analogice furnizate de simţurile umane în date logice
utile maşinilor construite de om.
1.3. Scurt istoric al IA
Preocupările privind inteligenţa artificială îşi au începutul în anii 50, odată cu apariţia unui
articol al lui Turin care afirma că maşinile pot deveni inteligente (Les machines savent-elles
penser?). Turin demonstrează că un automat poate face ceea ce face omul, cu condiţia de a avea un
program adecvat de comandă.
O altă serie de cercetători îşi puneau aceeaşi întrebare: se pot concepe programe de calculator
inteligente?

Inteligenţă Artificială Cap.1. Introducere
4
În 1956, disciplina numită Tratarea informaţiei complexe sau Programare euristică devine
Inteligenţă artificială. În conferinţa de la Darmouth College, un grup de cercetători de renume
(John Mc Carthy, Marvin Minsky, Herbert Simon, Allan Newell, Claude Shennon) au adoptat
termenul de IA. Anii care au urmat lui 1956 au făcut să apară primele programe de demonstrare a
teoremelor bazate pe logica propoziţiilor (General Problem Solver, autori Newell, Shaw şi Simon).
În istoria IA au existat două categorii de maşini: maşinile de calcul şi automatele.
Maşini de calcul
De la abac la calculator, s-au parcurs mai multe etape:
Pascal – 1641 (la 18 ani) inventează o maşină pentru calcule aritmetice;
Babbage – 1832 prezintă maşina diferenţială, numită de curioşi maşina de gândit;
În 1842 – apare maşina analitică;
Hollerich – 1890 construieşte o maşină clasificatoare;
Burroughs – 1892 construieşte o maşină cu adiţie;
Turing – 1936 construieşte o maşină universală;
Von Neumann – 1945 construieşte o maşină de calcul cu o structură apropiată de cea a
calculatoarelor actuale.
Automate şi roboţi
Automatele sunt maşini care imită mişcarea, funcţiile sau acţiunile efectuate de un corp în
mişcare;
Pe baza conceptelor dezvoltate de neurologul Gray Walter, în 1950 se construieşte o
broască mecanică, capabilă să se cupleze la priză atunci când bateriile de alimentare se
descărcau sub o anumită limită;
În anul 1953, inginerul francez Dicqricq a construit o serie de animale cibernetice,
capabile să înveţe;
În 1967, o echipă de la Stanford Research Institute au construit o serie de automate
cibernetice, cărora le-au dat numele de roboţi. Noţiunea de robot fusese introdusă în 1920
de Karel Capek;
Roboţii din a treia generaţie, consideraţi inteligenţi, incorporează tehnicile IA.
REZUMAT
1. Inteligenţa Artificială urmăreşte crearea instrumentelor logice capabile să genereze
artificial procese specifice inteligenţei naturale. Cu alte cuvinte, scopul este de a realiza o
imagine, evident prin aproximare, a inteligenţei umane (a proceselor specifice).
2. În prezent, inteligenţa artificială este în simbioză deplină cu informatica. De aceea,
specialiştii în domeniu reconsideră denumirea de „inteligenţă artificială” în raport cu o
nouă denumire, cea de „inteligenţă computaţională”.
3. Diferenţa majoră dintre un program de inteligenţă artificială şi unul clasic constă în
concepţia rezolvării problemei: clasic, rezolvarea este implementată în program explicit,
printr-o structură algoritmică; în inteligenţă artificială, rezolvarea se reduce la căutarea
soluţiei în spaţiul de stări asociat problemei, accentul fiind pus pe descrierea problemei şi
mai puţin pe rezolvarea ei.

Inteligenţa Artificială Cap. 2 : Limbajul LPA–Prolog
5
Limbajul LPA–Prolog
Obiective 1. Însuşirea principiilor de bază privind structura, sintaxa şi mecanismele de inferenţă specifice
unui limbaj de Inteligenţă Artificială, în general, şi limbajului LPA Prolog, în special.
2. Însuşirea corectă a utilizării predicatelor (predefinite şi utilizator) în rezolvarea problemelor
de IA.
3. Dezvoltarea abilităţilor practice de programare a problemelor de IA în limbajul Prolog.
Durata: 3 ore
Istoria programării logice cuprinde câteva etape reprezentative:
1970 – Robert Kowalsky, Edinburgh University şi Alain Colmerauer, Université d’Aix
Marseille au pus bazele unei colaborări cu un obiectiv comun: utilizarea formalismului logicii
matematice la definirea unui limbaj de programare. Cercetările lui R. Kowalsky au constituit
cadrul teoretic necesar, iar A. Colmerauer şi P. Roussel au scris primul interpretor şi au definit
limbajul Prolog (PROgrammation LOGique). Primul compilator Prolog (Kowalsky) a fost
realizat la Warren Edinburgh University, Department of AI.
1980 – Borland a elaborat versiunea Turbo Prolog, implementabilă pe IBM PC, ceea ce a dus la
răspândirea şi cunoaşterea limbajului.
William Clocksin şi Christopher Mellish publică în 1981 cartea „Programming in Prolog”,
care defineşte standardul Edinburgh al limbajului Prolog. Standardul Borland este mai restrictiv
referitor la posibilităţile de calcul simbolic.
LPA (London Prolog Associates) elaborează LPA Prolog, care are la bază standardul
Edinburgh, dar aduce şi o serie de dezvoltări proprii (metapredicate).
Cele prezentate în cele ce urmează se referă la versiunea LPA Prolog, ce constituie totodată
şi suportul aplicaţiilor prezentate. Implementarea LPA derivă din mai bine cunoscuta versiune
Edinburgh Prolog, căreia firma londoneză producătoare (London Prolog Associates) i-a adus
îmbunătăţiri şi dezvoltări suplimentare (metapredicate, facilităţi grafice etc.). Versiunea de referinţă
Edinburgh Prolog a fost definită de W.F.Clocksin şi C.S.Mellish în cartea “Programming in
Prolog”, lucrare considerată la ora actuală un standard neoficial al limbajului Prolog.
Prolog este un limbaj declarativ, spre deosebire de alte limbaje (C, Pascal, Basic etc.) care
sunt procedurale (descriu modul de rezolvare a problemelor) .
2.1. Alfabetul şi elemente de sintaxa limbajului Prolog
Alfabetul limbajului. La scrierea programelor Prolog se poate utiliza întreaga tabelă de
caractere ASCII, atât caracterele uzuale cuprinse în prima jumătate a tabelei (având codurile ASCII
cuprinse între 0 şi 127, fapt pentru care sunt denumite impropriu caractere pe 7 biţi), precum şi
caracterele din cea de a doua jumătate a tabelei ASCII (având codurile între 128 şi 256). Setul de
caractere din partea superioară a tabelei ASCII depinde de pagina de cod sau fontul cu care se
lucrează. Acesta include de obicei literele greceşti, precum şi diverse caractere semigrafice.
Separatori şi terminatori. Principalul separator al termenilor limbajului este virgula (“,”).
Virgula poate să apară de asemenea ca separator între elementele unei liste (de fapt o listă este un
Cap.2

Inteligenţa Artificială Cap. 2 : Limbajul LPA–Prolog
6
caz particular de termen compus). Spaţiul este utilizat ca separator între termeni şi operatori, de
fiecare dată când natura acestora impune introducerea unui spaţiu pentru delimitare (spaţiul nu este
necesar atunci când termenii şi operatorii sunt de natură diferită, adică unul este alfanumeric, iar
celălalt simbolic). De exemplu, dacă plus este un operator binar, iar ++ şi ** sunt doi termeni,
sintaxa termenului compus: ++plus** este corectă. Terminarea unui enunţ Prolog se realizează prin
caracterul punct (“.”) urmat în mod obligatoriu de spaţiu sau terminatorul de sfârşit de linie
(caracterele CR ,LF). Punctul poate să apară însă şi în componenţa unui termen simbolic cum ar fi
**.**, context în care acesta nu are rol de terminator.
Comentariile. Pentru documentare, într-un program Prolog se pot introduce oricând
comentarii. În funcţie de întinderea (amploarea) acestora, există două modalităţi de introducere a
comentariilor. Caracterul % defineşte drept comentariu conţinutul liniei, începând cu caracterul
însuşi şi până la sfârşitul acesteia. Inserarea unui comentariu pe mai multe rânduri se face încadrând
textul respectiv între delimitatorii /* şi */.
2.2. Vocabularul şi termenii limbajului Prolog
Termenii limbajului. În Prolog, termenii constituie tipurile fundamentale de date ale
limbajului şi pot fi utilizaţi atât pentru reprezentarea unor date elementare (scalare), cât şi pentru
reprezentarea unor structuri foarte complexe (de exemplu o bază de date relaţională). Termenii sunt
de fapt cărămizile din care se compun clauzele limbajului (clauza este cel mai mic element sintactic
având semnificaţie de sine stătătoare în Prolog sau, mai exact, este cel mai mic enunţ compilabil).
Termenii pot fi simpli sau compuşi.
Termenii simpli constituie practic vocabularul limbajului de programare, aceştia fiind cele
mai mici unităţi lexicale având o anumită semnificaţie în cadrul limbajului. Termenii simpli sau
atomici ai limbajului Prolog sunt numerele întregi sau reale, variabilele, atomii şi şirurile de
caractere. Un termen compus se formează prin combinarea unor termeni simpli şi/sau compuşi. Din
categoria termenilor compuşi fac parte listele şi listele de octeţi, termeni cu o aplicabilitate aparte în
cadrul limbajului. În tabelul 1 este prezentată o clasificare a termenilor limbajului Prolog şi sunt
descrise predicatele predefinite prin care programatorul poate testa dacă un termen aparţine unuia
din tipurile specificate mai sus. Totodată, predicatul type/2 permite determinarea tipului unui
anumit termen dat.
Termeni simpli
Variabilele. O variabilă este denumită în Prolog printr-un identificator care trebuie să
înceapă în mod obligatoriu cu o majusculă (o literă de la A la Z) sau cu caracterul “_”
(“underscore”). Secvenţa de caractere din denumirea variabilei poate să includă, de asemenea,
caracterul “_”, acesta fiind de fapt considerat literă. De exemplu, următorii identificatori sunt
denumiri corecte de variabile:
Anonim _variabila X Y Cristy
Numere întregi. Ca în oricare limbaj de programare, un număr întreg se reprezintă printr-o
succesiune de cifre, eventual precedată de semnul plus sau minus. Convenţia de reprezentare este
algebrică pe 4 octeţi, domeniul numerelor întregi reprezentabile fiind cuprins între -2147483648 şi
2147483647.
Numerele reale. Un număr real poate fi precedat de semn şi este format dintr-o secvenţă de
una sau mai multe cifre, punctul zecimal şi o secvenţă de una sau mai multe zecimale. Opţional
numărul poate fi urmat (fără a se lăsa spaţiu) de litera e (sau E) şi o secvenţă de cifre eventual
precedată de semn (în format exponenţial). După cum se poate constat, numerele reale au sintaxa
similară cu cea din Pascal (punctul zecimal trebuie cadrat în mod obligatoriu de cifre). Fiecare din
termenii de mai jos sunt corecţi şi reprezintă numere reale:
1.0 258.0752 -12.59432 2.0E7 +1.85e10 ,

Inteligenţa Artificială Cap. 2 : Limbajul LPA–Prolog
7
în timp ce nici una din următoarele succesiuni de caractere
1. 12E3 12.3 E4
nu sunt corecte sintactic.
Numere întregi într-o bază oarecare. Un număr întreg într-o bază oarecare b se poate
reprezenta în Prolog scriind baza b urmată de un apostrof şi cifrele numărului în baza respectivă. De
exemplu, succesiunea de caractere
2’1100100
este corectă şi reprezintă reprezentarea în baza 2 a numărului 100. Acelaşi număr se poate
reprezenta în format hexazecimal (în baza 16) scriind 16’64. Pentru o mai bună edificare, la
prompterul ?- al fereastra de dialog se pot introduce pe rând comenzile:
X is 16’64. <Enter> respectiv X is 2’01100100. <Enter>
şi în ambele situaţii interpretorul Prolog va răspunde prin X=100.
Trebuie evidenţiat aici un caz similar şi anume atunci când în faţa apostrofului apare cifra 0
(care evident nu poate fi baza unui sistem de numeraţie), iar în locul cifrelor un caracter. În această
situaţie secvenţă 0’<caracter> desemnează codul ASCII al caracterului citat după apostrof. De
exemplu termenul 0’d desemnează numărul întreg 100, care este codul ASCII al caracterului “d”.
Atomii. Atomii sunt denumiri alfanumerice sau simbolice prin care programatorul poate
desemna obiecte, proprietăţi ale acestora, precum şi diverse relaţii stabilite între acestea. Lungimea
maximă a unui atom este de 255 de caractere. Există patru tipuri de atomi: alfanumerici, simbolici,
de tip şir de caractere şi atomi rezervaţi.
Atomi alfanumerici. Un atom alfanumeric este format dintr-o literă mică (a-z) urmată de o
secvenţă formată din zero sau mai multe litere (a-z, A-Z) sau cifre (0-9). Caracterele din jumătatea
superioară a tabelei ASCII sunt considerate litere mici. Utilizarea acestor caractere nu este însă
recomandă din motivele deja menţionate la descrierea alfabetului. Următorii termeni sunt corecţi şi
reprezintă atomi alfanumerici:
mar cristy michael bmw a123
Atomi simbolici. Un atom simbolic este format dintr-o secvenţă formată din unul sau mai
multe din caracterele speciale enumerate mai jos:
# $ & = - ^ ~ \ @
‘ ; - / + * ? < >
sau din caractere din partea superioară a tabelei ASCII. Următorii termeni
& && + ++ << >> -> <- */* <$>
constituie exemple corecte de atomi simbolici.
Atomi de tip şir. Un atom de tip şir sau “quoted” atom este o succesiune de caractere
cuprinsă între apostrofuri. Dacă se doreşte inserarea unui apostrof în cadrul şirului de caractere,
atunci apostroful se dublează.
Caracterul ~ (tilda) poate fi utilizat pentru definirea unor caractere speciale sau de control.
De exemplu termenul
‘~<Literă>’
semnifică caracterul <Ctrl> <Literă>, în timp ce termenul
‘~<Număr>’
reprezintă caracterul al cărui cod ASCII este <Număr>, Număr{0,1,…,255}.
Atomi rezervaţi. Atomii simbolici enumeraţi mai jos
! ; [] {} = :-
au o semnificaţie prestabilită în cadrul limbajului şi nu pot fi utilizaţi pentru denumirea unor entităţi
utilizator.
Şirurile de caractere. Un şir de caractere este o succesiune de caractere cuprinsă între
apostrofuri invers înclinate (caracterul `). Deşi şirurile de caractere sunt considerate termeni simpli,
deci de tip “atomic” (vezi tabelul 1), acestea nu sunt considerate atomi şi nu trebuie confundate cu

Inteligenţa Artificială Cap. 2 : Limbajul LPA–Prolog
8
atomii “quoted”. Pentru a nu crea confuzii de acest tip, în cele ce urmează, pentru a desemna
termenii de acest tip se va utiliza termenul strig. Deosebirea dintre un termen de tip “string” şi un
“quoted” atom constă în primul rând în modul intern de reprezentare al acestora. În plus, termenii de
tip string pot fi supuşi unor operaţii proprii şirurilor de caractere. Există totuşi posibilitatea
(predicatul atom_string/2) de a se realiza conversia de la atom la tipul string şi reciproc.
Termenii compuşi.
Un termen compus are următoarea sintaxă:
functor(t1,t2,…, tn) ,
unde functor este un atom (de oricare din cele trei tipuri descrise mai sus), iar argumentele
t1,t2,,…,tn sunt termeni, care pot fi simpli sau structuraţi la rândul lor. Functorul defineşte practic
modul de structurare al termenului respectiv. Având în vedere faptul că numărul de argumente al
functorului este variabil, iar gradul de imbricare este teoretic nelimitat, un termen compus poate
reprezenta practic orice structură relaţională de date, indiferent de gradul de complexitate al
acesteia. În sintaxa imbricată a unui termen compus, functorul cel mai exterior este denumit functor
principal.
Un termen compus are următoarea sintaxă:
Următoarele construcţii sintactice reprezintă exemple corecte de termeni compuşi:
a(b,c(d,e(f,g))) alfa(X,Y) color(blue,yellow) +++(<<,>>,ok).
Functorul cel mai exterior se numeşte functor principal.
Fiecărui termen îi este asociată o aritate (numărul de argumente). Termenii simpli au
aritatea = 0, iar cei compuşi au aritatea 1.
Este a+b un termen Prolog? Da, +(a,b) este un termen Prolog de tip infix şi aritate 2.
Structura descrisă de un termen compus poate fi ilustrată grafic prin reprezentarea acesteia
sub forma unui arbore. Astfel, functorul principal va reprezenta şi eticheta rădăcina arborelui, care
va avea un număr de descendenţi egal cu aritatea (numărul de argumente) functorului respectiv,
fiecare dintre aceştia corespunzând unuia din argumentele sale. Dacă argumentul este un termen
simplu, nodul corespunzător va constitui o frunză a arborelui, iar în caz contrar functorul respectiv
va eticheta rădăcina unui subarbore construit în maniera recursivă astfel definită. De exemplu,
primul dintre termenii citaţi mai sus se poate reprezenta printr-un arbore a cărui mulţime de noduri
este {a,b,c,d,e,f,g} şi a cărui mulţime de muchii este {[a,b],[a,c],[c,d],[c,e],[e,f],[e,g]}, nodul a fiind
rădăcina, iar b,d,f şi g nodurile terminale sau frunzele arborelui respectiv.
Observaţie. Un arbore este de fapt un graf neorientat, deci oricare dintre noduri poate fi considerat
rădăcina arborelui. Totuşi, având în vedere situaţia de faţă nodul corespunzător functorului principal
va fi considerat rădăcina arborelui.
Liste. O listă este o secvenţă formată dintr-un număr oarecare de elemente. O listă se poate
reprezenta în Prolog enumerând, între paranteze pătrate, elementele sale componente separate prin
virgulă. De exemplu, următorii termeni sunt corecţi şi reprezintă liste:
[a,b,c,d] [jerry] [1,2,3,4,5] [a,2,[1,2,3],a(b,c),d] []
Ultima dintre acestea constituie un caz particular şi reprezintă lista vidă (lista fără nici un element).
Orice listă este compusă din cap şi coadă. Capul este primul element al listei, iar coada este lista
formată din restul elementelor. De exemplu, prima din listele citate mai sus are capul a şi coada
functor termen ( )
,
termen compus

Inteligenţa Artificială Cap. 2 : Limbajul LPA–Prolog
9
[b,c,d], iar cea de a doua are capul jerry şi coada []. Lista vidă nu se poate descompune în cap şi
coadă.
Listele sunt de fapt cazuri particulare de termeni compuşi şi au o aplicabilitate deosebită în
limbajele de programare orientate spre calculul simbolic. Functorul care desemnează o structură de
tip listă este punctul, iar aritatea acestuia este 2. Primul argument este capul, iar cel de al doilea este
coada listei. De exemplu, lista [a,b,c,d] se poate reprezenta, în sintaxa standard Edinburgh Prolog,
prin termenul compus .(a,.(b,.(c,.(d,[])))). Atenţie, nu se va lăsa spaţiu între punct şi paranteza
deschisă. De fapt acest mod de scriere corespunde modului intern de reprezentare al listei, aceasta
fiind de fapt un arbore binar. Dată fiind însă lizibilitatea destul de redusă a acestei construcţii
sintactice, limbajul Prolog acceptă reprezentarea sub formă de enumerare a listelor, dar aceasta
reprezintă doar un mod de reprezentare externă a acestora. Tot pentru a veni în ajutorul
programatorului o listă se poate exprima şi sub forma:
[cap | coadă]
deci despărţind printr-o bară verticală capul listei de coada acesteia. Totodată o listă se poate descrie
şi sub forma:
[element1,element2,…elementn | coadă],
dar având grijă că după simbolul | trebuie scrisă o listă şi nu un element. De exemplu, fiecare din
termeni de mai jos este corect şi reprezintă aceeaşi listă [a,b,c,d]:
[a|[a,b,c,d]] [a,b|[c,d]] [a,b,c|[d]] [a,b,c,d|[]]
[a|[b|[c|[d]]]] [a,b|[c|[d]]] [a,b,c|[d|[]]]
Observaţie. Modalităţile diverse de reprezentare a listelor permit, graţie mecanismului de unificare,
extragerea şi/sau identificarea elementelor componente ale unei liste.
Liste de octeţi. O listă de octeţi este o succesiune de caractere de orice tip cuprinsă între
ghilimele. Structura de date astfel definită constă în lista codurilor ASCII ale caracterelor care
compun şirul. Pentru a insera caracterul “ în cadrul unei liste acesta se dublează. De exemplu
termenul:
“Aceasta este o lista”
este corect şi reprezintă lista
[65,99,101,97,115,116,97,32,101,115,116,101,32,111,32,108,105,115,116,97].
Ca şi în cazul atomilor de tip “quoted”, caracterul ~(tilda) poate fi utilizat pentru definirea unor
caractere speciale, de exemplu termenul “~G” reprezintă lista [7].
Observaţie. Listele de octeţi nu trebuie confundate cu şirurile de caractere sau cu atomii de tip
“quote”, dat fiind faptul că acestea diferă sintactic doar prin tipul de apostrofuri utilizate (“ `
respectiv ‘) pentru încadrarea succesiunii de caractere care le compun. Deşi modul de reprezentare,
structurile de date aferente şi modul de operare cu aceste structuri sunt diferite, limbajul LPA Prolog
dispune însă de predicate specifice care permit conversia între oricare din cele trei tipuri (“quoted”
atomi, şiruri de caractere, liste de octeţi).
Tabelul 1. Termenii limbajului Prolog
Tipul termenului predicat /aritate
variabilă var /1, nonvar /1
atomi alfanumerici atom /1
atomi simbolici atom /1
“quoted” atomi atom /1
Întregi integer /1
atomic
atomic/1
numere
number/1 reale float /1
termeni
simpli
simple/1
şiruri de caractere string /1
termeni
compuşi
termen compus functor(t1,t2,…, tn)
(în particular liste, liste de octeţi)
compound /1

Inteligenţa Artificială Cap. 2 : Limbajul LPA–Prolog
10
2.3. Structura unui program PROLOG
Enunţurile care intră în componenţa unui program LPA Prolog pot fi de unul din următoarele
tipuri:
clauze;
reguli de rescriere;
comenzi;
dintre care numai primele sunt obligatorii, ultimele două tipuri de enunţuri fiind opţionale.
Regulile de rescriere permit programatorului definirea unui limbaj propriu prin definirea
regulilor de rescriere prin care pot fi generate frazele limbajului respectiv. Cu alte cuvinte, aceste
reguli nu sunt altceva decât producţiile unei gramatici independente de context (concept definit de
N. Chomsky), utilizată pentru generarea limbajului ce se doreşte a fi definit. Odată ce un astfel de
limbaj (gramatică) a fost definit (definită), programatorul poate testa dacă un anumit enunţ aparţine
sau nu limbajului respectiv. Aceste aspecte vor fi reluate şi dezvoltate într-unul din capitolele
următoare.
O comandă este aproape identică cu o formulă de interogare, singura deosebire constând în
faptul că aceasta are ca prefix simbolul :- (două puncte liniuţă). Prin urmare, formatul unei comenzi
este:
:- predicat1, predicat2, …,predicatn . (k1)
Denumirea de comandă provine de la faptul că termenii executabili din componenţa acesteia sunt
executaţi în mod automat la fiecare (re)încărcare a programului sursă care incorporează respectiva
comandă De exemplu, dacă într-un program se inserează comanda:
:- write(‘Hello !’), nl.
acesta ne va adresa un salut la fiecare încărcare a sa.
Clauzele limbajului.
Clauzele sunt enunţurile sau “cărămizile” din care se compun programele Prolog. Altfel
spus, clauza este cel mai mic enunţ compilabil. Clauzele sunt de două tipuri: fapte şi reguli.
Un fapt este de forma:
antet.
unde, din punct de vedere sintactic, antet este un atom sau un termen compus, al cărui functor
trebuie să fie diferit simbolul „:-” sau „=”. Sintactic, un fapt se termină prin punct, ce trebuie urmat
obligatoriu de spaţiu sau de terminatorul de sfârşit de linie.
Un fapt are sintaxa unui termen şi reprezintă un predicat, care poate fi de aritate 0 sau orice aritate
1.
Într-un limbaj Prolog, orice functor principal reprezintă un predicat. Argumentele oricărui
predicat, dacă există, sunt termeni şi nu pot fi alte predicate; de aceea, limbajul se numeşte de
ordinul I.
O regulă este de forma:
predicat/0
,
fapt
predicat/1 termen ( )
,
.

Inteligenţa Artificială Cap. 2 : Limbajul LPA–Prolog
11
antet :- t1, t2,…,tk. (1)
unde antet constituie capul sau concluzia regulii şi apare în partea stângă a simbolului :-, iar t1,
t2,…,tk, k1 constituie premisele regulii. Fiecare tk este un predicat sau un termen executabil
denumit în limba engleză “call term” sau “goal”. Regula este terminată printr-un punct urmat de
spaţiu sau terminatorul de sfârşit de linie. Intuitiv, un termen este denumit executabil dacă
consistenţa sau valoarea de adevăr a acestuia poate fi dedusă din contextul clauzelor programului
Prolog. Din punct de vedere al logicii matematice, regula (1) este echivalentă cu implicaţia (virgula
are semnificaţia de conjuncţie logică, iar simbolul :- de implicaţie inversă):
antet t1 t2 … tk , (2)
deci inferarea concluziei antet se poate face dacă, pentru un anumit mod de “instanţiere” a
variabilelor din componenţa acestora, premisele t1, t2,…,tk. pot
simultan satisfăcute.
Pentru a înţelege noţiunea de termen executabil sau goal trebuie plecat de la premisa că într-
un program Prolog orice functor principal este un simbol predicativ (predicat) şi are în consecinţă o
valoare de adevăr.
Dacă în logica matematică scriem abc, adică ab, scriem ac, în Prolog se obţine: a :- b; c.
Mulţimea acestor clauze poartă denumirea de Program.
Definirea unui fapt de forma:
fapt(a1,…,ak).
presupune specificarea (asertarea) faptului că predicatul fapt(a1,…,ak) este adevărat. Astfel faptele
permit declararea unor piese de cunoaştere presupuse adevărate (date, ipoteze), iar regulile
specificarea unor reguli de inferenţă (axiome, teoreme) prin care pot fi deduse noi fapte sau piese de
cunoaştere.
2.4. Aspectul declarativ şi procedural al programelor Prolog
Caracteristica principală a limbajului Prolog constă în faptul că este un limbaj declarativ,
spre deosebire de cele procedurale (limbaje specializate în descrierea procedurală a rezolvării unei
probleme).
2.4.1. Aspectul declarativ
Operaţia principală care se poate executa asupra termenilor limbajului Prolog este
UNIFICAREA. Doi termeni S şi T ai limbajului sunt unifiabili dacă:
cei doi termeni sunt identici, ST;
substituţia astfel încât ST.
Exemplu: T = data(ziua, aprilie, A); S = data(Z, Luna, 2001);
= {ziua = 1, Z=1, Luna=aprilie, A=2001}.
ST = data(1, aprilie, 2001).
cmgu({S, T}) = {ziua=Z, Luna=aprilie, A=2001}.
predicat regulă
,
. :- predicat
antet
corpul regulii
Conjuncţie
Disjuncţie ;

Inteligenţa Artificială Cap. 2 : Limbajul LPA–Prolog
12
Regulile conform cărora doi termeni doi termeni sunt unifiabili
1) dacă S şi T reprezintă două constante, atunci acestea sunt unifiabile numai dacă sunt
identice;
2) dacă unul din termeni este o variabilă liberă, atunci aceasta poate fi unificată cu orice
termen (simplu sau compus);
3) dacă ambii termeni sunt variabile libere, unificarea se realizează prin legarea celor două
variabile. Deşi cele două variabile nu sunt instanţiate (iniţializate), ele se comportă ca şi
cum ar reprezenta o variabilă unică; ca urmare, orice instanţiere a uneia dintre variabile
atrage după sine şi instanţierea celeilalte cu aceeaşi valoare.
4) doi termeni compuşi sunt unifiabili dacă sunt îndeplinite următoarele condiţii:
au acelaşi functor şi aceeaşi aritate;
argumentele de pe poziţiile corespunzătoare sunt unifiabile între ele.
Un program Prolog este o secvenţă de clauze:
P :- Q, R.
P – consecinţa logică a lui Q şi R;
Pentru a demonstra P se demonstrează mai întâi Q, iar apoi se demonstrează R. Programul
Prolog poate fi interogat prin precizarea unei clauze obiectiv (goal):
(G): G1, G2 ... Gn – pentru ce valori ale variabilelor, predicatele G1, G2 ... Gn sunt adevărate
(simultan)? Sau, În ce condiţii G este o consecinţă logică a formulelor din program? Pentru ce
valori ale variabilelor G este adevărată (satisfiabilă)?
Definiţia 1. Fie P = {C1, C2, …, Cn} un program Prolog şi Q o formă predicativă. Q este o
consecinţă logică a lui P sau Q este adevărată dacă sunt îndeplinite următoarele condiţii:
1) o instanţă I a unei clauze din P al cărei antet este unifiabil cu Q: CP şi substituţia
astfel încât Q = antet(C);
2) Toate predicatele din corpul regulii C (dacă există) sunt adevărate (satisfiabile).
OBS. Un fapt poate fi privit ca o regulă avânt drept antet predicatul respectiv şi al cărei corp
este clauza vidă.
Dacă formula Q conţine variabile Q=Q(x1, x2, ..., xn), valorile variabilelor pentru care
formula Q este adevărată sunt (x1), (x2), ...,(xn).
2.4.2. Aspectul procedural
Fie P = {C1, C2, …, Cn} un program Prolog şi Q o formă predicativă. Q este o consecinţă
logică a lui P sau este satisfiabilă din P dacă:
astfel încât P ╞ Q.
Formula Q se numeşte obiectiv (goal).
Interpretorul limbajului Prolog are următorul mod de lucru:
Indicatorul yes înseamnă că există o substituţie astfel încât din P este deductibil Q (P ╞
Q), adică o instanţă a lui Q este deductibilă din P, deci Q este o consecinţă logică a mulţimii P.
Program
PROLOG P
Goal
Interpretor
PROLOG
Inference engine
Indicator = yes + substituţia Q
astfel încât P ╞ Q (dacă Q
conţine variabile)
Indicator = no (Q nu este o consecinţă
logică sau nu este deductibilă din P)
P ╞/ Q .

Inteligenţa Artificială Cap. 2 : Limbajul LPA–Prolog
13
Indicatorul no înseamnă că din P nu este deductibil Q (P ╞/ Q), adică Q nu este o
consecinţă logică a mulţimii P.
În cazul răspunsului yes¸ mecanismul inferenţial returnează substituţia .
Variabilele instanţiate (iniţializate) pot fi privite ca parametrii de intrare ai procedurii libere,
iar variabilele libere ca parametri de ieşire ai procedurii, parametri ce vor fi instanţiaţi cu valorile
corespunzătoare de interpretorul Prolog .
Mulţimea clauzelor unui program care corespund unui aceluiaşi predicat poartă numele de
procedură. Aceste proceduri sunt mult mai flexibile decât cele din limbajele de programare. O
procedură Prolog poate fi aplicată în mai multe moduri (flow pattern), programatorul putând inversa
parametrii de intrare cu cei de ieşire.
Exemplu: Predicatul p/2 {(i,i), (i,o), (o,i), (o,o)} – i– input; o– output.
prieten(marius, ion).
:?– prieten(Cine, Cui). % (o,o)
:?– prieten (Cine, ion). % (o,i) Cine=maria
:?– prieten (maria, Cui). % (i,o) Cui=ion
:?– prieten (maria, ion). % (i,i) yes
Fiecare predicat executabil poate fi considerat ca o procedură, în sensul cunoscut din
programarea clasică. O procedură mai returnează şi acel indicator de răspuns ( yes sau no).
După ce un program Prolog a fost editat şi compilat, utilizatorul poate introduce în fereastra
de dialog diverse formule de interogare a sistemului. O formulă de interogare, denumită goal în
terminologia engleză, este de forma:
p1,p2, … , pn. (n1)
unde p1,p2,…,pn sunt termeni executabili, iar virgula are semnificaţia de conjuncţie logică. O
formulă de interogare poate fi de două feluri:
determinită: nu conţine variabile libere, răspunsul sistemului la o astfel de formulă fiind yes sau
no, după cum formula respectivă este sau nu o consecinţă logică a clauzelor din
program;
nedeterministă: conţine una sau mai multe variabile libere, sistemul determinând prin backtracking
toate instanţierile posibile ale variabilelor pentru care respectiva formulă este o
consecinţă logică a clauzelor din program.
Exemplu: place (ion, X) :- are_zestre(X), frumoasă (X).
are_zestre(X) :- bogată(Y), fata (X, Y).
:?– place (ion, Fata). %(i, o)
Remarca 1: De fiecare dată când are de satisfăcut un goal introdus în fereastra de interogare
sau din corpul unei reguli, interpretorul Prolog începe scanarea tuturor clauzelor din program
începând cu prima dintre acestea, în vederea găsirii unei clauze al cărei antet este unifiabil cu goal-
ul curent.
{place(ion, X), place(ion, Fata)} cmgu {Fata=X}.
Remarca 2: Dacă un goal a fost unificat cu antetul unei reguli, se trece la demonstrarea
predicatelor (subgoal-urilor) din corpul regulii respective. Încercarea de a satisface aceste fapte se
face în ordinea în care acestea apar în corpul regulii. Astfel, se trece la a demonstra bogata (Y) –
devine goal curent.
Remarca 3: Dacă un predicat din corpul unei reguli a fost demonstrat, se trece la
demonstrarea predicatului următor; în caz contrar, se revine la ultimul punct de breakpoint aflat în
program. Goal-ul curent devine fata(X, veta).
Când mai multe clauze din program sunt unifiabile cu goal-ul curent, interpretorul plasează
un punct de breakpoint pe următoarea clauză unifiabilă din program.

Inteligenţa Artificială Cap. 2 : Limbajul LPA–Prolog
14
fata(X, veta)
fata(geta, veta), C = {X=geta}
= ◦C = {Fata=X=geta, Y=veta}
frumoasa(geta).
Remarca 4: Când un goal este dovedit inconsistent, se revine prin backtracking la ultimul
punct de breakpoint plasat în program. O dată cu revenirea la ultimul punct de breakpoint, se
eliberează toate variabilele instanţiate după plasarea în program a respectivului punct de
breakpoint. Variabila X este eliberată (dezlegată de valoarea geta).
Revenindu-se la punctul de breakpoint, variabila X este instanţiată din nou cu valoarea
maria. În acest caz, goal-ul frumoasa (maria) poate fi demonstrat şi Prolog, ţinând cont de
substituţia curentă, răspunde Fata=maria.
Următoarele 2 caracteristici exprimă o particularitate relevată a limbajului P rolog:
Singura modalitate de instanţiere a unei variabile este procedura de unificare
(programatorul nu poate atribui o valoare unei anumite variabile).
Variabilele pot fi eliberate numai prin mecanismul de backtracking al interpretorului
Prolog.
În Prolog, simbolul „=” este un operator infix care face apel la procedura de unificare; în
urma unificării variabilelor din cei doi termeni, instanţierea se realizează dacă X este liberă.
X=1+2 are drept efect instanţierea lui X cu expresia 1+2 dacă X este liberă: ={X=1+2}.
X=1 are ca efect instanţierea variabilei X = 1, dacă X este liberă. ={X=1}.
X=1, X=X+1: ={X=1} 1=1+1 – inconsistent => fail, (1+1).
Exemple BAF şi CAF:
prezent(alina). prezent(georgiana). prezent(elena). prezent(mircea). pr ezent(dan).
lista:-
prezent(X), write(X), nl, fail.
lista. % BAF(Backtracking After Fail)
lista:-
prezent(X), write(X), nl, X=dan, !. % CAF(Backtracking After Fail)
Precizare: O formulă de interogare Q trebuie privită ca un apel la mecanismul inferenţial al
interpretorului (demonstratorul) Prolog, care generează soluţiile lui Q.
2.5. Liste. Prelucrarea listelor
2.5.1. Listele Prolog
O listă este o colecţie de zero sau mai multe obiecte. Lista fără nici un obiect se numeşte
vidă şi se reprezintă prin []. Celelalte liste sunt formate din:
cap, primul element;
coada, lista celorlalte elemente, în particular lista vidă.
OBS: Lista vidă [] nu se poate descompune în cap şi coadă.
În Prolog o listă se reprezintă printr-un termen compus. Orice termen poate fi reprezentat printr-un
arbore. Fie termenul compus:
functor(termen 1, termen 2, ..., termen n).
– rădăcina arborelui este etichetată cu functorul principal al termenului ( functor).
– fiecărui nod etichetat cu un termen compus (rădăcină) îi corespunde un număr de
descendenţi egal cu aritatea termenului respectiv. Aceşti descendenţi vor fi etichetaţi cu
argumentele termenului respectiv.
– nodurile care corespund unor termeni simpli (atomici) sunt noduri finale.
Listele fac excepţie de la această regulă, fiind reprezentate prin functorul „.” de aritate 2 (cap şi
coadă).
Exemplu: [1, 2, a, b, evrika, 29]

Inteligenţa Artificială Cap. 2 : Limbajul LPA–Prolog
15
. (1, . (2, . (a, . (b, . (evrika, . (29))))))
Să se descrie arborele asociat listei de mai sus!
Exemplu de listă: [1, 2, a, b | [evrika | [29]]]. Termenul amplasat după simbolul | trebuie să
fie o listă.
2.6. Operatori
Dat fiind faptul că limbajul Prolog este orientat mai degrabă în vederea efectuării calculelor
simbolice decât numerice, operatorii trebuie priviţi ca un mod aparte de reprezentare a termenilor
compuşi de aritate unu sau doi. Deci un operator nu semnifică de regulă efectuarea unei operaţii, ci
indică mai degrabă modul de agregare a operanzilor în cadrul structurii desemnată de acel operator.
Există totuşi şi o serie de operatori prin care programatorul poate forţa la nevoie evaluarea unei
expresii. Spre deosebire de sintaxa standard a unui termen compus, situaţie în care functorul precede
paranteza ce conţine lista argumentelor sale, operatorii permit scrierea termenilor de aritate 1 sau 2
într-o nouă sintaxă, care într-un anumit context poate fi mult mai agreabilă.
Operaţii cu termeni. Orice operator care constituie functorul principal al unui termen
compus are o semnificaţie predicativă şi are în consecinţă o valoare de adevăr. În funcţie de rolul şi
semnificaţia acestora, operatorii utilizabili la formarea “expresiilor” Prolog se pot împărţi în
următoarele patru categorii precizate mai jos.
Operatorul de unificare. Cea mai importantă operaţie pe mulţimea termenilor este
unificarea (de fapt aceasta este operaţia de bază a limbajului Prolog). Se ştie că doi termeni t1 şi t2 se
numesc unifiabili dacă există o substituţie astfel încât termenii (t1) şi (t2)să devină identici.
Operaţia de unificare este desemnată prin operatorul infix =. Termenul executabil t1=t2 este de fapt
un apel la rutina de unificare a interpretorului Prolog. Dacă cei doi termeni sunt unifiabili, atunci
predicatul t1=t2 este satisfăcut şi variabilele libere din cei doi termeni sunt substituite prin valorile
lor corespunzătoare din cmgu(t1,t2). În caz contrar, termenul t1=t2 este inconsistent, iar variabilele
din componenţa acestora rămân nemodificate.
Se poate testa dacă doi termeni t1=t2 sunt unifiabili şi fără a produce instanţieri ale
variabilelor prin apelarea predicatului predefinit unifiable(t1,t2).
Operatorul \= este complementul operatorului =. Astfel t1\=t2 este adevărat dacă t1 şi t2 sunt
neunifiabili şi este fals când t1 şi t2 sunt unifiabili.
Operatori de comparaţie lexicografică. Operatorul == (două semne de egalitate) permite
compararea lexicografică a doi termeni. Termenul (predicatul) t1==t2 este valid dacă cei doi
termeni t1 şi t2 sunt lexicografic identici. De exemplu, termenul a+b==b+a este inconsistent,
deoarece termenii a+b şi b+a nu sunt identici, în schimb predicatul a+b==a+b este valid.
Operatorul \== (back slash şi două semne de egalitate) este negaţia operatorului precedent. Astfel,
predicatul a+b\==b+a este adevărat, în timp ce predicatul a+b\==a+b este fals. Operatorii din
această categorie nu produc instanţieri ale variabilelor.
Operatorul de evaluare. După cum s-a precizat mai sus, limbajul Prolog este orientat pentru
efectuarea calculului simbolic, operatorii fiind utilizaţi mai degrabă pentru reprezentarea unor
structuri. Evident, sfera de utilizare a limbajului ar fi puternic diminuată, dacă acesta nu ar permitea
efectuarea unor calcule matematice. Dar, aceste calcule se fac numai la cererea expresă a
programatorului. De exemplu, dacă X este o variabilă liberă, termenul executabil X = 1+2 are ca
efect instanţierea variabilei X cu valoarea (termenul) 1+2 (ceea ce era de aşteptat întrucât 1+2 este
substituţia de unificare a celor doi termeni ai operatorului =). Operatorul prin care programatorul
poate cere în mod expres evaluarea unei expresii este desemnat prin atomul rezervat is. În partea
stângă a operatorului is trebuie să apară în mod obligatoriu o variabilă (liberă sau nu), iar în partea
dreapta o expresie algebrică, ale cărei variabile (dacă există) să fie iniţializate cu valori numerice.
Astfel, dacă X este o variabilă liberă, apelul termenului X=1+2 va avea ca efect instanţierea
variabilei X cu valoarea 3. Trebuie menţionat faptul că un termen executabil de forma:
X is <Expresie> ,
nu trebuie confundată cu o instrucţiune de atribuire. De fapt, deşi pare oarecum şocant, limbajul

Inteligenţa Artificială Cap. 2 : Limbajul LPA–Prolog
16
Prolog nu are instrucţiune de atribuire ! . Mai mult, un predicat de forma:
X is X+1 ,
este inconsistent, deoarece variabila X din membrul drept trebuie să fie instanţiată şi, indiferent de
valoarea acesteia, aceasta nu poate fi nici cum egală cu X+1.
După cum s-a menţionat anterior, în Prolog unificarea este singurul mod de instanţiere a
unei variabile, după cum mecanismul de backtracking este singurul mod posibil de eliberare al
acesteia.
Operatori relaţionali. Limbajul Prolog conţine următorii operatorii relaţionali, ce pot fi
utilizaţi pentru comparaţia numerică a două expresii. Toate variabilele cuprinse în cele două
expresii trebuie să fie instanţiate în momentul apelului termenului respectiv.
E1=:=E2 egalitate
E1=\=E2 neegalitate
E1<E2 mai mic
E1=<E2 mai mic sau egal
E1>E2 mai mare
E1>=E2 mai mare sau egal
Fiecare din termenii de mai sus produce evaluarea numerică a expresiilor algebrice E1 şi E2,
valoarea de adevăr a termenilor de mai sus fiind calculată ca în orice alt limbaj de programare.
Operatorii relaţionali nu produc instanţieri ale variabilelor din cele două expresii.
Observaţie. Operatorii mai mic sau egal şi mai mare sau egal trebuie scrişi în maniera ilustrată mai
sus, scrierile <= respectiv => nefiind acceptate de compilatorul Prolog.
2.7. Controlul backtraking-ului în limbajul Prolog
Există două procedee prin care programatorul poate interveni în funcţionarea procedurii de
backtraking:
C(X)
apel predicat
C(X)
!
corpul ciclului
q1(X), q2(X), …, qn(X)
p(a1) p(a2) … p(an)
apel predicat nedeterminist
p(X)
Mai breakpoints
sau variante
neîncercate ale lui
p(X)
Da
Nu
fail
fail

Inteligenţa Artificială Cap. 2 : Limbajul LPA–Prolog
17
– predicatul fail (predicat inconsistent), are drept efect forţarea mecanismului de breaktraking
pentru revenirea în ultimul breakpoint plasat în program;
– predicatul cut (predicatul !) este consistent (valid) şi are drept efect suprimarea punctelor de
breakpoint plasate de predicatele precedente acestuia din corpul regulii în care acesta se
găseşte sau a breakpoints corespunzătoare unor clauze ale predicatului ce constituie antetul
regulii.
Exemple: 1) % max/3 2) a:-b,c,!,d,e.
a) max(A,B,A):- A>=B. a:-f,g.
max(A,B,B):- B>A. h:-k,l,a,m.
b) max(A,B,A):- A>=B, !.
max(A,B,B):- B>A.
c) max(A,B,A):- A>=B, !.
max(A,B,B).
Prelucrarea listelor
3) Membru al unei liste
member(X,L), X – element, L – listă.
{(i,i), (o,i)}: determinist (i,i) sau nedeterminist (o,i).
Implementarea se face ţinând cont că un element aparţine unei liste dacă:
o este un element al capului listei;
o face parte din coada listei respective.
member(X, [X|_]).
member(X, [_|T]):- member(X, T).
:?– member(b, [a, b,c]). %(i, i) yes
:?– member(X, [a, b,c]). %(o, i) X=a; X=b ; X=c.
4) Adăugarea unui element la listă dată
5) Concatenarea a două liste
concat([], L, L).
concat([H|T], L2, [H|T2]):- concat(T, L2, T2).
6) Ştergerea uni element al unei liste
del(X, L, L1).
Prin ştergerea unui element X din lista L se obţine lista L 1.
del(X, [X|T], T).
del(X, [H|T], [H|T1]):- del(X, T, T1).
:?– del(b, [a,b,c,b,d],L).
L=[a,c,b,d]
L=[a,b,c,d]
7) Inserarea unui element într-o listă
L E
L E
add(E, L, [E|L])
L1 L2
L
concat(L1, L2, L)
L1 L2

Inteligenţa Artificială Cap. 2 : Limbajul LPA–Prolog
18
insert(X, L, L1):- del(X, L1, L).
8) Permutarea elementelor unei liste perm (L, L1)
perm([], []).
perm([H|T], L):- perm(T, T1), insert(H, T1, L).
9) Numărarea elementelor unei liste count(L, N)
count([], 0).
count([H|T], N):- count(T,M), N is M+1.
sau
count([], N, N).
count([_|T], Numar, N):-
NouNumar is Numar+1, count(T,NouNUmar, N).
Numar se va initializa cu zero.
:?– count([1,2,3,4,5], 0, Cate).
Cate=5
count(L, N):-count(L,0,N).
:?– count([1,2,3,4,5], Cate). Cate=5.
REZUMAT
Limbajul LPA Prolog reprezintă un instrument simplu şi eficient de abordare a problemelor
specifice de Inteligenţă artificială. Aceste caracteristici sunt conferite de următoarele aspecte
principale ale limbajul Prolog:
1) Sintaxă simplă. 2) Un program Prolog reprezintă, în general, o colecţie de clauze (fapte şi reguli) care descriu
problema (prin reprezentarea cunoştinţelor), fără a fi necesară descrierea algoritmului de
rezolvare! 3) Orice clauză are o valoare de adevăr (fals sau adevărat), purtând şi denumirea de predicat. 4) Nu există instrucţiunea de atribuire! O variabilă primeşte valori numai prin instanţiere,
generată de mecanismul de UNIFICARE. 5) Variabilele pot fi eliberate de valori numai prin mecanismul de BACKTRACKING al
interpretorului Prolog. Prin backtracking se revine la punctele de întrerupere din program şi
astfel noi substituţii sunt automat testate.
PROBLEME PROPUSE
Problema 1: Descrierea relaţiilor din filmul Santa Barbara
Pornind de la intriga şi personajele din binecunoscutul film Santa Barbara, să se scrie un
program Prolog care să corespundă etapelor precizate mai jos.
1. Să se descrie următoarele fapte prin clauze Prolog

Inteligenţa Artificială Cap. 2 : Limbajul LPA–Prolog
19
predicat: femeie(persoană) predicat: barbat(persoană)
Pamela este femeie.
Sophia este femeie.
Minx este femeie.
Augusta este femeie.
Julia este femeie.
Santana este femeie.
Kelly este femeie.
Eden este femeie.
Laken este femeie.
Rosa este femeie.
CC este barbat.
Mason este barbat.
Lionel este barbat.
Cruz este barbat.
Ted este barbat.
Brick este barbat.
Brandon este barbat.
Warren este barbat.
predicat: mama(mama, fiica/fiu) predicat: tata(tata, fiica/fiu)
Sophia este mama lui Eden.
Sophia este mama lui Ted.
Sophia este mama lui Brick.
Sophia este mama lui Kelly.
Augusta este mama lui Warren.
Augusta este mama lui Laken.
Minx este mama lui Lionel.
Rosa este mama lui Santana.
Santana este mama lui Brandon.
CC este tatăl lui Mason.
CC este tatăl lui Eden.
CC este tatăl lui Ted.
Lionel este tatăl lui Brick.
Lionel este tatăl lui Laken.
Lionel este tatăl lui Warren.
2. Descrieţi următoarele reguli prin clauze Prolog
Predicat Antet Descrierea (corpul) regulii
parinte(parinte, copil) parinte(X, Y) if X este mama lui Y sau
if X este tatăl lui Y.
tata(tata) tata(X) if X este tatăl cuiva („ _”).
mama(mama) mama(X) if X este mama cuiva.
parinte(parinte) parinte(X) if X este parintele cuiva.
bunica(bunica, nepot) bunica(X, Y) if X mam lui Z şi Z este părintele lui Y.
bunic(bunic, nepot) bunic(X, Y) if X este tatăl lui Z şi Z este părintele lui
Y.
sora(persoană,
persoană) sister(X, Y)
if X este femeie, M este mama lui X şi M
este mama lui Y, X<>Y, T este tatăl lui X
şi T este tatăl lui Y.
frate(persoană,
persoană) frate(X, Y)
if X este bărbat, M este mama lui X şi M
este mama lui Y, X<>Y, T este tatăl lui X
şi T este tatăl lui Y.
3. Lansaţi programul în execuţie (Comanda Run Compile) şi chestionaţi rezolver-ul Prolog:
Natural language question Prolog goal
Este Kelly femeie? ?:- femeie(kelly).
Este Eden barbat?
Cine este femeie?
Cine este mama lui Eden?
Cine este tatăl lui Kelly?
Este CC tatăl lui Mason?
Al cui tată este CC?
A cui mama este Sophia?
Al cui frate este Mason?

Inteligenţa Artificială Cap. 2 : Limbajul LPA–Prolog
20
Cine este bunica lui Brandon?
Este Brandon tatăl lui Kelly?
Cine este bunic?
Este CC tatăl lui Brandon?
Problema 2: Podurile din Königsberg
Grafurile constituie un instrument practic şi eficient de reprezentare a obiectelor şi a
relaţiilor dintre acestea. Teoria grafurilor a fost introdusă la începutul secolului al XVIII-lea de
matematicianul austriac Leonhard Euler în vederea soluţionării celebrei probleme cunoscută sub
numele de “podurile din Königsberg”. Königsberg este un orăşel austriac aşezat pe ambele maluri
ale râului Pregel, râu care formează două insule. Malurile şi cele două insule sunt conectate prin
sistemul de poduri ilustrat în figura 1a. Problema, care a frământat multe persoane până la Euler,
este următoarea: poate un călător să parcurgă întregul orăşel, trecând pe fiecare pod, fără să
parcurgă un pod de două ori ?
Mulţi au încercat să găsească o soluţie, însă fără succes. Euler este acela care a demonstrat
matematic că problema nu are soluţie!, imaginând grafurile pentru reprezentarea problemei
(fig. 1b). Problema de mai sus, cunoscută sub numele de “lanţ eulerian” într-un graf, nu mai pune
azi nici un fel de probleme, cunoscându-se faptul că un astfel de drum există dacă numărul
nodurilor de conectivitate impară este 0 sau 2. Problema este cunoscută şi sub denumirea de “lanţ
(drum) hamiltonian”, Hamilton aducându-şi contribuţia la stabilirea unor algoritmi pentru generarea
acestor drumuri. Mai mult, se ştie că într-un graf există un circuit eulerian dacă şi numai dacă graful
este conex şi pseudosimetric. Un graf este pseudosimetric dacă din fiecare vârf pleacă atâtea arce
câte intră în vârful respectiv.
Revenind la problema podurilor din Königsberg, baza de cunoştinţe se poate reprezenta
utilizând un predicat denumit “leaga” şi utilizând două astfel de predicate pentru fiecare pod:
leaga(i1,i2,p1). leaga(i2,i1,p1).
leaga(m1,i1,p2). leaga(i1,m1,p2). leaga(m1,i1,p3). leaga(i1,m1,p3).
leaga(m1,i2,p4). leaga(i2,m1,p4). leaga(m2,i1,p5). leaga(i1,m2,p5).
leaga(m2,i1,p6). leaga(i1,m2,p6). leaga(m2,i2,p7). leaga(i2,m2,p7).
unde, s-a notat prin: i1, i2 - cele două insule; m1, m2 - cele două maluri ale râului; p1,p2,p3,p4,p5,p6,p7 -
cele şapte poduri.
Considerând dif(p,q) predicatul care exprimă faptul p şi q reprezintă două poduri diferite, în
limbajul de calcul al predicatelor, existenţa unui drum eulerian s-ar putea reprezenta prin expresia
următoare:
X1( X2( X3( X4( X5( X6( X7(
leaga(X1,X2,P1)leaga(X2,X3,P2)leaga(X3,X4,P3)leaga(X4,X5,P4)
leaga(X5,X6,P5)leaga(X6,X7,P6)leaga(X7,X8,P7)dif(P1,P2)dif(P1,P3)dif(P1,P4)
dif(P1,P5)dif(P1,P6)dif(P1,P7)dif(P2,P3)dif(P2,P4)dif(P2,P5)
dif(P2,P6)dif(P2,P7)dif(P3,P4)dif(P3,P5)dif(P3,P6)dif(P3,P7)
dif(P4,P5)dif(P4,P6)dif(P4,P7) dif(P5,P6)dif(P5,P7)dif(P6,P7)
) ) ) ) ) ) ) exista_lant_eulerian.
`
m1
m2
Pregel
p2 p3 p4
p7 p6 p5
p1 i1 .
i2 i1 i2
m2
m1
p1
p2
p3
p4
p7
p6
p5
a) Oraşul Königsberg. b) graful asociat

Inteligenţa Artificială Cap. 2 : Limbajul LPA–Prolog
21
Domeniul variabilelor: X1..X7 {i1, i2, m1, m2}.
Fără a avea pretenţia că este cea mai simplă forma de soluţionare a problemei, dacă un astfel
de drum există, predicatul: exista_lant_eulerian va avea valoarea true.
TEST DE AUTOEVALUARE
1. Care este principalul separator al
termenilor limbajului:
a. «!» (semnul exclamării).
b. «,» (virgula) .
c. «;» (punct si virgula).
2. Terminarea unui enunţ Prolog se
realizează prin caracterul:
a. Punct («.») .
b. Spaţiu.
c. Punct şi virgula.
3. Inserarea unui comentariu pe mai
multe rânduri se face încadrând
textul respectiv între:
a. Paranteze ().
b. Delimitatori /* si */ .
c. Ghilimele ( .
4. O variabilă începe obligatoriu cu o
majuscula sau cu caracterul:
a. «».
b. «*/*».
c. «_» .
5. Un „quated” atom se defineşte ca
fiind:
a. succesiune de caractere
cuprinsa intre apostrofuri.
b. succesiune de cifre cuprinse
între paranteze.
c. succesiune de termeni
separaţi prin virgula unul de
celălalt.
6. Care din următoarele forme
defineşte sintaxa unui termen
compus:
a. xy = yx.
b. functor(t1, t2, …, tn) .
c. functor(!).
7. Clauza de tip fapt este de forma:
a. fapt(V1, V2, …, Vn).
b. antet.
c. antett1t2.
8. Clauza de tip regula are forma:
a. antet:-t1,t2, …, tk .
b. functor(t1,t2, …, tk).
c. /* regula */.
9. Predicatul = se numeşte:
a. instanţiere.
b. unificare.
c. backtracking.
10. Functorul unei liste este caracterul:
a. Virgulă.
b. Dolar.
c. Punct.
11. Predicatul ‚fail’ este un predicat:
a. Consistent.
b. Inconsistent.
c. Valid.
12. Predicatul ‚cut’ are ca efect
suprimarea punctelor de:
a. Breaktracking.
b. Breakpoint.
c. Breaktrace.
13. Caracterul % are rolul de:
a. Comentariu până la sfârşit
de linie.
b. Calcul în procente.
c. Salt la sfârşitul clauzei.
14. Construcţia [a,b,c,d] reprezintă:
a. Un set de date.
b. O listă.
c. O mulţime.
15. Predicatul condiţional IF este
descris sintactic prin secvenţa:
a. «-:-».
b. «:-:».
c. «:-».
Răspuns
1. b 6. b 11. b
2. a 7. b 12. b
3. b 8. a 13. a
4. c 9. b 14. b
5. a 10. c 15. c

Inteligenţa Artificială Cap. 2 : Limbajul LPA–Prolog
22

Inteligenţă Artificială Cap.3. Limbaje de ordinul I
23
Limbaje de ordinul I
Obiective 1. Însuşirea noţiunilor de bază privind limbajul de calcul propoziţional.
2. Reprezentarea cunoaşterii în limbaj de calcul propoziţional.
3. Metode de demonstrare a teoremelor în limbajul de calcul propozi ţional
4. Dezvoltarea abilităţilor practice de operare cu elemente de calcul propoziţional.
Durata: 2 ore
3.1. Limbajul de calcul propoziţional
3.1.1. Sintaxa şi semantica calculului propoziţional
Calculul propoziţional a fost definit de Whitehead şi Rusell (1910) în celebra carte “Principia
Mathematica”. Importanţa matematică a calculului propoziţional este deosebită, acesta stând la baza
definirii oricărui sistem logic formal. Calculul propoziţional modern se bazează pe dezvoltările şi
modernizările aduse ulterior de Hilbert şi Ackermann.
3.1.1.1. Vocabularul limbajului de calcul propoziţional
Vocabularul limbajului este format din următoarele categorii de simboluri:
- Variabilele propoziţionale notate prin simbolurile a, b, c,…,a1, b1, c1, …. Mulţimea variabilelor
propoziţionale (propoziţiilor) se notează în cele ce urmează cu V;
- Conectivele logice (conjuncţie), (disjuncţie) şi (negaţie);
- Parantezele rotunde “(” şi “)”;
3.1.1.2. Sintaxa calculului propoziţional
Definiţia 1.
Mulţimea formulelor (enunţurilor sintactic corecte) ale calculului propoziţional, mulţime notată
cu P, se defineşte recursiv prin următoarele reguli:
1) simbolurile propoziţionale aparţin lui P:
xVx
2) dacă a, bP atunci ab, ab, a, (a)P;
3) o combinaţie de simboluri din V aparţine lui P dacă şi numai dacă ea se obţine prin aplicarea
de un număr finit de ori a regulilor 1) şi 2).
Se consideră algebra (B2,,,’) unde B2={0,1} şi, pentru orice x, yB2, operaţiile , şi ‘ sunt
definite de relaţiile:
xy=min{x, y}=xy; (1)
xy=max{x, y}=x+y-xy;
x’=1–x.
Propoziţia 1. Algebra (B2,,,’) este o algebră booleană.
3.1.1.3. Semantica limbajului de calcul propoziţional
Cap. 3

Inteligenţă Artificială Cap.3. Limbaje de ordinul I
24
Definirea semanticii calculului propoziţional presupune definirea unei funcţii I:PB2, care să
atribuie fiecărei formule o valoare de adevăr. Dat fiind faptul că funcţia I dă o semnificaţie formulelor
limbajului P, permiţând interpretarea acestora, aceasta este denumită interpretare.
Definiţia 2. Se numeşte interpretare orice morfism al algebrelor (P,,, ) şi (B2,,,’).
Din definiţia 2 rezultă că orice interpretare I, I:PB2, satisface următoarele proprietăţi oricare ar
fi formulele a, bP:
I(ab)=I(a)I(b)=max{I(a),I(b)}; (2)
I(ab)=I(a) I(b)=min{I(a),I(b)};
I( a)=1-I(a).
Remarca 1. Având în vedere că în calculul propoziţional orice interpretare satisface prin
definiţie proprietăţile (2), rezultă că valoarea de adevăr a oricărei formule FP este bine determinată de
valorile de adevăr atribuite de interpretarea I variabilelor propoziţionale. Dacă în formula F apar n
variabile propoziţionale atunci există 2n interpretări posibile ale formulei F (funcţii I).
O interpretare asociază fiecărei formule FP o valoare de adevăr notată I(F)B2, convenind că
valoarea de fals=0, iar valoarea de adevărat=1.
Notând cu x1, x2,…,xn variabilele care apar în F, atunci pentru orice interpretare I, valoarea de
adevăr a formulei F este dată de o relaţie de forma:
I(F)=I(F(x1, x2,…,xn))=f(I(x1), I(x2),…,I(xn)) (3)
În această viziune, fiecare formulă F poate fi echivalată cu o funcţie logică f.
Pe mulţimea P se introduc două conective (operaţii) noi, şi , numite implicaţie logică,
respectiv echivalenţă logică, a căror semantică este definită după cum urmează:
;1
;0)(1)(0)(
bIaIbaI (4)
.0
;1)()(1)(
abIbaIbaI (5)
Oricare ar fi formulele a, bP, se obţine următoarea semnificaţie a conectivelor şi :
I(a) I(b) I(ab) I(ba) I(ab)
0 0 1 1 1
0 1 1 0 0
1 0 0 1 0
1 1 1 1 1
Definiţia 3. Se spune că formula FP este consistentă dacă există o interpretare I pentru care I(F)=1
(pentru care formula este adevărate). O formulă care nu este consistentă se numeşte inconsistentă. O
mulţime de formule {F1,F2,…,Fn} este consistentă dacă există o interpretare I pentru care I(F1)=
I(F2)=… =I(Fn)=1 (pentru care toate formulele sunt adevărate).
Remarca 2. Mulţimea {F1,F2,…,Fn} este consistentă dacă şi numai dacă formula F1F2 …Fn
este consistentă.
Definiţia 4. O formulă FP se numeşte validă sau irefutabilă dacă este adevărată în orice
interpretare, adică I, I(F)=1. O formulă validă se mai numeşte şi tautologie. O formulă care nu este
validă este denumită invalidă.
Ex.: a a.
Remarca 3. O formulă invalidă poate fi adevărată într-o interpretare particulară, în timp ce o
formulă inconsistentă este întotdeauna falsă.

Inteligenţă Artificială Cap.3. Limbaje de ordinul I
25
Relaţiile dintre conceptele de validitate, consistenţă, invaliditate, inconsistenţă şi valorile de
adevăr luate de expresii pentru combinaţiile de valori de adevăr ale formulelor atomice componente sunt
ilustrate în tabelul de mai jos.
Validă Invalidă
Întotdeauna
adevărată
Nu întotdeauna adevărată
şi nu întotdeauna falsă
Întotdeauna falsă
Consistentă Inconsistentă
Contingentă
Se observă existenţa unei categorii de expresii, care nu sunt nici întotdeauna valide, nici
întotdeauna inconsistente. Astfel de expresii, care pentru unele combinaţii ale valorilor de adevăr ale
formulelor atomice componente iau valoarea "adevărat", iar pentru alte combinaţii ale valorilor de adevăr
ale formulelor atomice componente iau valoarea "fals", sunt denumite expresii contingente.
Definiţia 5. Fie S={F1,F2,…,Fn}P o mulţime de formule şi CP o formulă. Se spune că C este
deductibilă semantic din S sau C este o consecinţă logică a lui S, dacă pentru orice interpretare I pentru
care I(F1)=I(F2)=…=I(Fn)=1 avem I(C)=1. Se notează acest fapt prin
{F1,F2,…,Fn}╞ C (6)
Remarca 4. Se spune că expresia {F1,F2,…,Fn}╞ C este o teoremă, {F1,F2,…,Fn} constituind
ipoteza, iar C concluzia teoremei respective. Semnul “╞ “ este denumit simbol de asertare a validităţii.
Remarca 5. Dacă mulţimea premizelor este vidă, teorema se rescrie sub forma ╞ C, ceea ce
semnifică faptul că C este o tautologie (adevărată în orice ipoteză). Având în vedere acest aspect, orice
tautologie a calculului propoziţional poate fi considerată o teoremă. De asemenea, a demonstra teorema
{F1,F2,…,Fn}╞ C revine în a demonstra că formula F1F2 …Fn C este o tautologie, adică ╞ F1F2
…Fn C.
Există anumite tautologii ale calculului propoziţional denumite axiome, prin asertarea cărora se
pot deduce toate celelalte tautologii ale limbajului. Sistemul axiomatic al calculului propoziţional, definit
de Hilbert şi Ackermann are la bază următoarele axiome:
i) ╞ AAA principiul tautologiei;
ii) ╞ AAB principiul adiţiunii;
iii) ╞ ABBA principiul comutativităţii;
iv) ╞ (AB)((CA)(CB)) principiul însumării.
3.1.2. Principiul deducţiei
Propoziţia 2. (Principiul deducţiei)
Se spune că {F1,F2,…,Fn}╞C dacă şi numai dacă {F1,F2,…,Fn, C} este inconsistentă.
3.1.3. Echivalenţă logică
Definiţia 6. Două formule F1, F2P se numesc echivalente dacă, pentru orice interpretare I,
există egalitatea I(F1)=I(F2): F1 ≈ F2 I, I(F1)=I(F2).
Ex.:
a(ab) ≈ a
aa ≈ a
Propoziţia 3. Relaţia de echivalenţă logică are următoarele proprietăţi:
i) FG ≈ GF; FG ≈ GF (comutativitate)
ii) F(GH) ≈ (FG)H; F(GH) ≈ (FG)H (asociativitate)
iii) F(GH) ≈ (FG) (FH); F (GH)≈ (FG) (FH)

Inteligenţă Artificială Cap.3. Limbaje de ordinul I
26
iv) FF ≈ F, FF ≈ F (idempotenţă)
v) F(FG) ≈ F, F (FG) ≈ F (absorbţie)
vi) FF ≈ t; FF≈ f
vii) (F) ≈ F (principiul dublei negaţii)
viii) (FG) ≈FG
(FG) ≈FG (De Morgan)
oricare ar fi formulele F, G, H P, t=true, f=false.
3.2. Metode de demonstrare a teoremelor în limbajul de calcul
propoziţional
Există mai multe metode prin care se poate verifica dacă o anumită formulă este sau nu o
teoremă (o tautologie) a calculului propoziţional. Cele mai cunoscute dintre acestea sunt
prezentate în continuare.
3.2.1. Metode semantice
Se consideră o formulă F=F(x1,x2,…,xn)P şi se doreşte demonstrarea (sau infirmarea)
faptului că F este o tautologie. Metodele semantice au la bază definiţia 4 şi constau în verificarea
faptului că în orice interpretare formula F este adevărată. Pentru aceasta se construieşte tabelul
valorilor de adevăr asociat formulei F. Tabelul va conţine câte o coloană pentru fiecare din
simbolurile propoziţionale x1, x2,…,xn şi o coloană pentru formula F, eventual câteva coloane
auxiliare care să faciliteze evaluarea lui I(F). Numărul de linii al tabelului este 2n, fiecare din
acestea corespunzând unei interpretări a formulei F.
Considerând teoremele de forma:
F1, F2, …, Fn ╞ C, (7)
unde F1, F2 ,…,Fn (virgula în membrul stâng are rol de conjuncţie) reprezintă ipoteza teoremei
(7), iar C concluzia acesteia, se pot utiliza două metode semantice pentru demonstrarea teoremei.
Metoda directă. Se verifică că pentru toate interpretările pentru care premizele sunt
simultan adevărată, concluzia este adevărată, adică I, pentru care I(F1)= I(F2)=… =I(Fn)=1,
avem I(C)=1. Procedeul utilizat este următorul. Se marchează în tabelul de adevăr liniile în care
premizele sunt simultan îndeplinite şi se verifică pentru aceste linii dacă în coloana
corespunzătoare concluziei toate valorile de adevăr sunt egale cu 1.
Metoda inversă. Se verifică că pentru orice interpretare I, pentru care I(C)=0, cel puţin
una din premize este nesatisfăcută, adică există o formulă Fi pentru care avem I(Fi)=0. Se
construieşte tabelul de adevăr şi se marchează liniile în care concluzia este falsă. Pentru aceste
linii se verifică că cel puţin una dintre premize nu este satisfăcută.
Remarca 6. Dezavantajul metodelor semantice constă in faptul că numărul liniilor din
tabelul de adevăr creşte exponenţial în raport cu numărul variabilelor propoziţionale. Acest
inconvenient a fost eliminat în cazul metodele sintactice.
Exemplu: Să se demonstreze, prin metoda directă şi –inversă, teorema
a, ab ╞ b (modus ponens).

Inteligenţă Artificială Cap.3. Limbaje de ordinul I
27
a b ab b MD MI
0 0 1 0 *
0 1 1 1
1 0 0 0 *
1 1 1 1 *
Concluzie: Teorema este demonstrată!
Să se demonstreze: ACD, A, BC, B ╞ D.
3.2.2. Metode sintactice
Spre deosebire de metodele prezentate în § 3.2.1, metodele sintactice operează cu
simbolurile propoziţionale fără a ţine cont de semnificaţia semantică a formulelor în care acestea
apar. Una dintre cele mai cunoscute metode sintactice este algoritmul lui WANG, care este
aplicabil teoremelor de forma:
F1F2…Fn ╞ C1C2…Cm. (8)
Presupunând că în membrul stâng al simbolului de asertare a validităţii conectiva implicită este
, iar în membrul drept , teorema se poate rescrie sub forma:
F1, F2, …, Fn ╞ C1, C2…,Cm (9)
Algoritmul presupune ca formulele să fie în prealabil aduse la o formă echivalentă care să nu
conţină decât conectivele , şi . Eliminarea conectivelor şi se realizează ţinând cont de
următoarele echivalenţe logice:
FG FG, respectiv FG (FG) ( FG) (FG)(FG) (10)
Exemplu: Să se aducă la forma echivalentă formulele din următoarea teoremă:
ACD, A, BC, B ╞ D.
Soluţie: ACD ≈ (AC)D ≈ ACD; BC ≈ BC.
În final, teorema se poate scrie în forma echivalentă:
ACD, A, BC, B ╞ D.
Algoritmul lui WANG
1) Se aduce teorema la forma (9).
2) Se execută procedeul iterativ constând prin aplicarea repetată a uneia din operaţiile
descrise la punctele (2.1)-(2.3) până la îndeplinirea condiţiilor de oprire specificate la pasul 3.
2.1. Eliminarea negaţiilor:
Dacă într-unul din cei doi membri ai teoremei apare o formulă de formaF, atunci formula
respectivă se trece în membrul opus suprimându-se operatorul de negaţie.
F ╞ F.
2.2. Eliminarea conectivelor implicite:
a) Dacă în membrul stâng apare o formulă de forma F=F1F2, atunci operatorul este
suprimat şi se pune virgulă în locul acestuia.
F1F2 ╞ F1, F2.
b) Dacă în membrul drept apare o formulă de forma F=F1F2, atunci operatorul este
suprimat şi se pune virgulă în locul acestuia.
F1F2 ╞ F1, F2.

Inteligenţă Artificială Cap.3. Limbaje de ordinul I
28
2.3 Descompunerea teoremei:
a) Dacă în membrul stâng apare o formulă de forma F=F1F2, atunci teorema respectivă
se descompune în două subteoreme, fiecare dintre acestea conţinând în locul
termenului F=F1F2 câte unul din termenii disjuncţiei respective. A demonstra
teorema iniţială revine în a demonstra cele două subteoreme astfel generate.
b) Dacă în membrul stâng apare o formulă de forma F=F1F2, atunci teorema respectivă
se descompune în două subteoreme, fiecare dintre acestea conţinând în locul
termenului F=F1F2 câte unul din termenii conjuncţiei respective. A demonstra
teorema iniţială revine în a demonstra cele două subteoreme astfel generate.
3) Condiţii de oprire:
3.1) Dacă într-o teoremă (subteoremă) apare aceeaşi formulă F în ambii membri ai
simbolului ╞, atunci teorema este demonstrată.
3.2) Dacă nici una din transformările (2.1)-(2.3) nu mai este aplicabilă şi condiţia (3.1) ne
este satisfăcută, atunci “teorema” este infirmată (nu este de fapt o teoremă).
Exemplu:
Fie teorema (T): ACD, A, BC, B ╞ D.
Se descompune T în următoarele subteoreme:
(T1): A, A, BC, B ╞ D 1.2
A, BC, B ╞ D, A. (3.1)
(T2): C, A, BC, B ╞ D *
(T3): D, A, BC, B ╞ D . (3.1)
*
C, A, B, B ╞ D 1.2
C, A, B ╞ D, B. (3.1)
C, A, C, B ╞ D 1.2
A, B ╞ D, C. (3.1)
3.2.3. Demonstrarea teoremelor utilizând metoda deducţiei formale
Definiţia 8. Se numeşte regulă de inferenţă un procedeu prin care, pe baza asertării unor
formule F1, F2,…, Fn, se poate deduce (infera) o nouă formulă adevărată C. Se notează acest fapt
prin
F1, F2,…, Fn ├ C.
Regula este numită consistentă dacă generează doar acele formule care sunt o consecinţă
logică a formulelor {F1, F2,…, Fn}.
Precizări:
Pentru a emite judecăţi şi aprecieri asupra formulelor scrise în limbajul calculului propoziţional,
s-au folosit semnele metalingvistice "╞ " şi "├ ", a căror semnificaţie este explicată mai jos.
― Expresia "╞ A" semnifică faptul că formula A este validă, deci în tabela de adevăr se află numai
valoarea 1, indiferent de valorile de adevăr ale propoziţiilor atomice componente.
― Expresia "A╞ B" semnifică faptul că formula B este o consecinţă validă a formulei A, deci B va
avea valoarea 1 peste tot unde A are valoarea 1.
― Expresia "├ A" semnifică faptul că formula A este deductibilă, adică există o secvenţă finită de
formule astfel încât fiecare formulă este fie o axiomă, fie se deduce din două formule
precedente prin aplicarea regulei de inferenţă modus ponens (regulă asupra căreia vom reveni
ulterior), iar ultima formulă a secvenţei este A.
― Expresia "A├ B" semnifică faptul că formula B este deductibilă din formula A; deci, există o

Inteligenţă Artificială Cap.3. Limbaje de ordinul I
29
secvenţă finită de formule încheiată cu formula B. Fiecare formulă componentă (printre care se
găseşte şi A) poate fi o axiomă sau poate fi dedusă din două reguli precedente prin aplicarea
regulei modus ponens,
Cea mai cunoscută regulă de inferenţă este regula
A, A→B├ B,
cunoscută sub numele de modus ponens.
Similar, regula modus tolens afirmă că
A→B,B ├ A.
Există reguli de introducere sau eliminare a conectivelor logice. Astfel regula
A, B ├ AB
este cunoscută sub numele de -introducere, în timp ce regula:
AB ├ A şi AB ├ B
este denumită -eliminare.
Similar, regula:
AB ├ BA
este denumită “” eliminare.
Definiţia 9. Fie S={F1,F2,…, Fn} şi C o formulă. Se spune că C este deductibilă din S
dacă există un şir de formule C1, C2,…, Cm=C, a cărei ultimă formulă este C, iar celelalte
formule sunt axiome, formule din S sau sunt deduse din două formule anterioare utilizând regula
de inferenţă modus ponens.
Exemplul 1. Să se demonstreze teorema:
{ACB, BD, A, C} ├ D.
Demonstraţie.
A,C ├ AC. (-introducere)
AC, ACB├ B (modus ponens)
B, BD├ D. (modus ponens)
3.2.4. Principiul rezoluţiei
Definirea metodei de demonstrare utilizând principiul rezoluţiei necesită definire în prealabi l a unor
noţiuni suplimentare.
Def 1: Se numeşte literal un simbol propoziţional (literal pozitiv) sau negaţia acestuia (literal
negativ).
Def 2: Prin atom se înţelege o variabilă propoziţională.
Def 3: Se numeşte clauză este o disjuncţie de literali:
C=L1L2…Ln, Li C,
unde Li este un literal pozitiv sau un literal negativ.
Def 4: Se spune că o formulă F este scrisă în formă normală conjunctivă (FNC) sau în formă
clauzală, dacă aceasta este o conjuncţie de clauze:
F=C1C2…Cm, unde Ci , i=1,..,m, este o clauză.
Mulţimea clauzelor (formelor clauzale) ale calculului propoziţional se va nota cu C.
Def 5: Clauza fără nici un literal este denumită clauza vidă şi se notează cu “” sau “nil”. Prin
definiţie I()=0.
Def 6: Se numeşte formă normală disjunctivă (FND) o disjuncţie de formule de forma:

Inteligenţă Artificială Cap.3. Limbaje de ordinul I
30
L1L2…Ln.
Aplicând principiul rezoluţiei, teorema {F1, F2, …, Fn}╞ C, echivalentă cu F1F2…Fn ╞ C,
este demonstrată dacă mulţimea {F1, F2, …, Fn, C} este inconsistentă (principiul
deducţiei). Pentru ca metoda de derivare prin rezoluţie să poată fi aplicată, trebuie ca
formulele din mulţimea de mai sus (sau formula F1F2 …FnC) să fie adusă la forma
normal conjunctivă (FNC).
Propoziţia 9. Orice formulă FP poate fi rescrisă sub o formă clauzală echivalentă.
Demonstraţie. Aplicând următorul procedeu, orice formulă FP este scrisă sub forma
FCC şi în orice interpretare I(F)=I(FC), adică (FFC).
1) Se elimină conectiva , utilizând echivalenţa logică (10):
AB (AB)(AB).
2) Se elimină conectiva , utilizând echivalenţa logică (10):
AB AB.
3) Se aplică relaţiile lui De Morgen astfel încât fiecare operator de negaţie să fie aplicat
unui singur simbol propoziţional:
(AB) A B
(AB) B B
A A, () A, B P.
4) Se utilizează proprietăţile de distributivitate ale operatorilor şi pentru aducerea
formulei la formă clauzală:
A (BC) (AB)(AC) (FNC)
A (BC) (AB) (AC).
5) Se utilizează proprietăţile de idempotenţă, absorbţie etc. pentru simplificarea FNC
obţinute.
Procedeul de demonstrare a teoremelor utilizând metoda deducţiei este destul de simplu din
punct de vedere teoretic, dar este foarte dificil de implementat pe calculator. Dificultatea constă în
alegerea regulii de inferenţă aplicabilă la un anumit moment, astfel încât în final să se ajungă la
obţinerea scopului dorit. Având în vedere acest inconvenient, rezolvatoarele automate au la bază o
metodă de demonstrare a teoremelor bazată pe principiul rezoluţiei datorat lui J. A. Robinson.
Avantajul metodei rezoluţiei, în raport cu metodele de deducţie, constă în faptul că la demonstrarea
teoremelor se utilizează o singură regulă de inferenţă şi anume regula rezoluţiei definită prin:
aF, aG ├ FG , (11)
unde a este o variabilă propoziţională, iar F, G sunt clauze ale limbajului P. Formula FG poartă
denumirea de rezolvanta clauzelor aF şi aG. Două clauze de tipul celor din membrul stâng al
relaţiei de asertare a deductibilităţii (11) se numesc rezolubile.
Regula rezoluţiei poate fi demonstrată imediat: se constata cu uşurinţă că pentru orice interpretare I
pentru care I(aF)= I(aG)=1 avem fie I(F)=1 fie I(G)=1, deci I(FG)=1.
Propoziţia 10. Fie S o mulţime de clauze S = {F1, F2, …, Fn} şi R = rez(Fi, Fj) rezolvanta a două
clauze din mulţimea S. Forma normală conjunctivă S(F1F2 …Fn) este echivalentă cu
FCN desemnată prin S R(F1F2 …FnR).
Exemplu: Să se demonstreze regula modus ponens (caz particular al principiului rezoluţiei):
a, a b ├ b.

Inteligenţă Artificială Cap.3. Limbaje de ordinul I
31
a
a b
───────────
b
Def 7: Fie S = {F1, F2, …, Fn} o mulţime de clauze şi R o clauză. Se numeşte deducţie prin
rezoluţie sau derivare rezolutivă o secvenţă de clauze R1, R2, …, Rn=R cu proprietatea că
pentru orice i = 1..n, Ri este rezolvanta a două clauze, Ri = rez(Fi1, Fi2), unde FikS sau Fik=
Ri, j<i.
Propoziţia 11. O mulţime de cauze S = {F1, F2, …, Fn} este inconsistentă dacă şi numai dacă
clauza vidă poate fi obţinută prin rezoluţie liniară din mulţimea S.
Pentru demonstrarea teoremelor utilizând metoda rezoluţiei se porneşte de la rezultatul prezentat în
propoziţia 2 (principiul deducţiei) şi de la rezultatul exprimat prin următoarea propoziţie.
Teorema 1. (Teorema de consistenţă şi completitudine) O mulţime de clauze este
inconsistentă dacă si numai dacă din mulţimea respectivă se poate deriva prin rezoluţie clauza
vidă.
{F1,F2,…,Fn,C}rezolutie
nil.
Recapitulând, pentru a demonstra teorema exprimată prin rel. 6, {F1, F2, …, Fn}╞ C,
revine, conform principiului deducţiei, la a demonstra că mulţimea de clauze S, obţinută prin
scrierea sub formă clauzală a mulţimii de formule {F1,F2,…,Fn,C} este inconsistentă. În baza
teoremei 1, totul se reduce la derivarea clauzei vide din mulţimea S.
Se spune că o clauză este factorizată, dacă un acelaşi literal nu apare de două ori în contextul
clauzei respective. În baza proprietăţii de idempotenţă a operaţiei de disjuncţie, orice clauză se poate
simplifica prin scrierea o singură dată a tuturor literalilor care apar de mai multe ori în cadrul acesteia
(operaţie denumită factorizare). În caz contrar, algoritmul poate să cicleze în anumite cazuri
particulare.
Algoritmul de demonstrare utilizând regula rezoluţiei este prezentat în pseudocod mai
jos:
for all F in S do F:=factor(F); while ( în S două clauze rezolubile F1 şi F2) and (S) do
begin R:= rez(F1,F2); C:= factor(R); S:=S{C} end;
unde prin rez(F1,F2) s-a notat rezolvanta clauzelor F1 şi F2, iar factor(R) este clauza obţinută prin factorizarea clauzei R. Conform celor expuse mai sus, teorema este demonstrată dacă după, terminarea procesului iterativ ilustrat în algoritmul precedent, clauza vidă S. Exemplul 2: Să se demonstreze, utilizând metoda rezoluţiei, teorema ACD, A, BC, B ╞ D..
Rescriind formulele din mulţimea {ACB, BD, A, C, D} sub formă clauzală se obţine următoarea mulţime de clauze:
(C1) ACB
(C2) BD
(C3) A
(C4) C
(C5) D de unde procesul rezolutiv se poate desfăşura în felul următor:

Inteligenţă Artificială Cap.3. Limbaje de ordinul I
32
(C6) rez(C1,C3)= CB.
(C7) rez(C6,C2)= CD.
(C8) rez(C7,C4)= D.
(C9) rez(C8,C5)= . şi astfel teorema este demonstrată. În Prolog, demonstraţia poate fi efectuată astfel:
a. c. ?-d. b :- a, c. d :- b. yes
REZUMAT
Limbajul de calcul propoziţional are următoarele caracteristici principale:
1. Are rolul de a stabili validitatea (adevărat sau fals) unor afirmaţii într-un context dat.
2. Formulările în limbaj natural devin, în limbajul de calcul propoziţional, expresii simbolice în
care intervin simboluri (propoziţii elementare) şi conective logice: şi (), sau (), not (),
implicaţie (), echivalenţă ().
3. Există 3 categorii de metode pentru demonstrarea unei teoreme: a) metode semantice (directă
şi inversă), b) metode sintactice (algoritmul lui WANG), c) metoda deducţiei formale
(regulile de inferenţă, principiul rezoluţiei).
4. Principiul rezoluţiei utilizează o singură regulă de inferenţă şi anume regula rezoluţiei,
ceea ce permite implementarea ei în rezolvatoarele automate.
EXERCIŢII ŞI PROBLEME PROPUSE Exerciţiul 1. Să se arate că:
1. ab ≈ ab
2. (ab) ≈ ab
3. (ab) ≈ a b
4. ab ≈ (ab) (ba) ≈ (b a) ( a b)
Aplicaţie: a – dacă e soare; b – e frumos.
Exerciţiul 2. Să se demonstreze utilizând pe rând metodele 3.2.1, 3.2.2 şi 3.2.4 următoarele teoreme de bază ale calculului propoziţional:
i) ╞ A(BA)
ii) ╞ (AB) ((A(BC)) (AC))
iii) ╞ (A(AB))B
iv) ╞ A(BAB)
v) ╞ (AB)A
vi) ╞ (AB)B
vii) ╞ AAB
viii) ╞ BAB
ix) ╞ (AC)((BC)(ABC))
x) ╞ (AB)((AB)A)

Inteligenţă Artificială Cap.3. Limbaje de ordinul I
33
xi) ╞ AA
xii) ╞ (AB)((BA)(AB))
xiii) ╞ (AB)(AB)
xiv) ╞ (AB)(BA)
xv) ╞ (AB)(AB)
xvi) ╞ (AB)(AB)
Exerciţiul 3. Convertiţi următoarele formule în formă clauzală:
(a (bc)) d Răspuns: ad, b cd.
(a b) (c d) Răspuns: abc, abd, c da, c db.
( a b) (c d) Răspuns: ac, ad, bc, b d.
Exerciţiul 4. Să se demonstreze, aplicând principiul rezoluţiei, următoarele teoreme:
a, c, abc ╞ ab
a, ac, abc ╞ abc
b, ec, ed, ad, ab ╞ c
Problema 1:
Tom nu merge la biserică şi Hary nu merge la biserică este falsă. Dacă Alice nu merge la
biserică, atunci Hary nu merge la biserică. Dacă Tom merge la biserică, atunci Hary merge la
biserică.
Demonstraţi că Alice merge la biserică.
a – Alice merge la biserică; b – Tom merge la biserică; c – Hary merge la biserică.
( b c), a c, bc ╞ a.
Problema 2:
Celebrul explorator, antropolog, etnograf, muzicolog, botanist, optician şi inventator Max
de Wax a studiat un timp obiceiurile bărbaţilor de pe o mică şi uitată insulă din oceanul Pacific.
Iată sinteza însemnărilor sale:
1. Toţi ce care cunosc vechea limbă a acestei populaţii poartă ochelari.
2. Nici un filatelist nu are nepoţi.
3. Toţi cei ce frecventează unicul club de pe insulă sunt stângaci.
4. Nici unul dintre insularii care nu ştie să înoate nu cultivă trandafiri.
5. Toţi cei ce nu au nepoţi cântă la cimpoi.
6. Toţi cei ce poartă haine cadrilate frecventează clubul.
7. Numai filateliştii nu vorbesc vechea limbă a acestei populaţii.
8. Nici un stângaci nu cântă la cimpoi.
9. Toţi cei care ştiu să înoate poartă haine cadrilate.
Întorcându-se acasă, Max şi-a amintit că a omis un lucru foarte important: nu a stabilit ce
legătură există între purtatul ochelarilor şi cultivarea trandafirilor. A vrut să se întoarcă pe insulă,
dar, cercetându-şi cu atenţie notiţele, şi-a dat seama că cei care cultivă trandafiri poartă
ochelari.
Demonstraţi concluzia lui Max de Wax, utilizând principiul rezoluţiei.

Inteligenţă Artificială Cap.3. Limbaje de ordinul I
34
P1– cunosc vechea limbă P6– este stângaci
P2– poară ochelari P7– ştie să înoate
P3– este filatelist P8– cultivă trandafiri
P4– are nepoţi P9– cântă la cimpoi
P5– frecventează clubul P10– poartă haine cadrilate
1. P1 P2 6. P10 P5
1. P3 P4 7. P1 P3
2. P5 P6 8. P6 P9
3. P7 P8 9. P7 P10
4. P4 P9 Concluzie: P8 P2
TEST DE AUTOEVALUARE
1. Regula de inferenţă, denumită
modus ponens, se exprimă prin:
a. AB├ AB
b. A, AB├ B
c. AB, B├ A
2. Se numeşte clauză:
a. O regulă de inferenţă.
b. O disjuncţie de literari.
c. Un atom.
3. Regula rezoluţiei este definită prin:
a. AC, AB ├ CB
b. AC, AB ├ CB
c. AB, AC ├ BC
4. O mulţime de clauze S={F1, F2,…,
Fn} este inconsistenta dacă:
a. S nu este rezolutiva.
b. Dacă şi numai dacă clauza
vida poate fi obţinută din
mulţimea S.
c. Dacă S se poate factoriza.
5. Regula modus tolens afirma ca:
a. A, A |- .
b. = (.
c. , |- .
6. Să se precizeze care dintre
următoarele echivalenţe logice este
adevărată:
a. ab ≈ ab.
b. ab ≈ a b.
c. ab ≈ a b.
7. O formulă F este scrisă în forma
normala conjuctivă dacă aceasta
este:
a. Clauza vida.
b. Conjucţie de clauze.
c. Regula modus tolens.
8. Proprietatea de distributivitate a
operatorului este:
a. C = C.
b. C = C.
c. C = C.
9. Pentru demonstrarea teoremelor in
limbaj de calcul propoziţional se
poate utiliza o singură regulă de
inferenţă şi anume:
a. Regula silogismului.
b. Regula rezoluţiei .
c. Regula modus ponens.
10. Dacă un acelaşi literal nu apare de
două ori în contextul clauzei
respective se spune că aceasta este:
a. Rezolutibilă.
b. O instanţă.
c. Factorizată.
Răspuns
1. b 6. a
2. b 7. b
3. c 8. a
4. b 9. b
5. c 10.c

Inteligenţa Artificială Cap. 4. Structuri şi strategii de căutare
35
Structuri şi strategii de căutare în spaţiul de stări
Obiective 1. Însuşirea noţiunilor de bază privind reprezentarea problemelor de inteligenţă artificială ca
structuri de stări şi rezolvarea acestora cu ajutorul metodelor de că utare.
2. Formarea deprinderilor de reprezentare corectă şi eficientă a problemelor de inteligenţă
artificială în spaţiul de stări.
3. Dezvoltarea abilităţilor practice de operare cu strategiile inteligente de rezolvare prin
metode de căutare în structuri arborescente (grafuri, în general).
Durata: 2 ore
4.1. Inteligenţa artificială ca reprezentare şi căutare
În lucrarea “ACM Turing Award Lecture”, Newell şi Simon (1976) demonstrează că activitatea
inteligentă, umană sau artificială, se realizată prin intermediul:
1. Simbolurilor pentru reprezentarea aspectelor semnificative din domeniul problemei;
2. Operaţii pe aceste simboluri pentru generarea unor potenţiale soluţii ale problemei;
3. Căutarea în vederea selectării unei soluţii dintre aceste posibilităţi.
Cu alte cuvinte, trebuie definită o reprezentare simbolică a obiectelor din domeniul
aplicaţiei şi trebuie definiţi nişte operatori prin care se poate modifica această reprezentare.
Rezolvarea unei probleme de către o “maşină gânditoare” presupune reprezentarea
cunoştinţelor şi căutarea soluţiei, cele două principii fiind într-o interdependenţă reciprocă.
4.1.1. Reprezentarea cunoştinţelor
Înainte ca un calculator să poată începe soluţionarea unei probleme, trebuie ca detaliile
problemei respective să fie reprezentate şi codificate într-un limbaj înţeles de calculator.
Programatorul de inteligenţă artificială trebuie să abstractizeze aceste detalii şi să introducă în
calculator numai acele date indispensabile rezolvării problemei.
4.1.2 Căutarea
Un al doilea aspect subliniat de Newell şi Simon este acela că o problemă este soluţionată
prin căutarea soluţiei printre nişte alternative posibile. Acest aspect este susţinut de analogia cu
gândirea umană. Omul utilizează de asemenea un număr de strategii în modul lui de a rezolva o
problemă. De exemplu, un jucător de şah analizează un anumit număr de mişcări viitoare,
alegând mişcarea în funcţie de un criteriu de eficienţă, astfel ales încât să-i asigure un avantaj
maxim. Un matematician alege dintre diferite strategii, nu mai puţin complexe, pe acelea care-i
permit demonstrarea unei teoreme complexe; un fizician poate investiga un anumit număr de
Cap. 4.

Inteligenţa Artificială Cap. 4. Structuri şi strategii de căutare
36
cauze posibile ale unui anumit fenomen ş.a.m.d. Acest aspect al inteligenţei conturează aşa
numita tehnica de rezolvare prin căutare în spaţiul de stări.
Prin stare se înţelege o anumită configuraţie a problemei investigate. De exemplu, în jocul
de şah o stare este o anumită poziţie de pe tabla de şah. În calculator, o poziţie este reprezentată
printr-o aşa numită bază de date, bază a cărei complexitate depinde de natura problemei
abordate, mergând de la câteva numere până la o bază de date relaţională. În procesul de
rezolvare a unei probleme, omul sau maşina poate utiliza anumite reguli, poate aplica anumite
procedee sau artificii sau, în cazul jocurilor, poate efectua anumite mutări. De exemplu, în jocul
de şah poate efectua oricare din mutările posibile. Aceste reguli, procedee sau mutări vor
produce modificări asupra bazei de date, aceasta reflectând starea curentă a problemei.
Totalitatea acestor stări vor constitui un spaţiu pe care-l vom denumi spaţiul de stări. Dintre
acestea, vom deosebi o stare denumită stare iniţială reflectând datele iniţiale ale problemei. De
asemenea, stările ce constituie soluţii posibile ale problemei vor fi denumite stări finale.
Grafurile constituie un instrument practic şi eficient de reprezentare a obiectelor şi a
relaţiilor dintre acestea. Teoria grafurilor a fost introdusă la începutul secolului al XVIII-lea de
matematicianul austriac Leonhard Euler în vederea soluţionării celebrei probleme cunoscută sub
numele de “podurile din Königsberg”.
Grafurile oferă un instrument ideal de reprezentare al spaţiului de stări al unei probleme.
Astfel, nodurile vor reprezenta stările distincte ale problemei, iar arcele regulile, operaţiile sau
mutările efectuate în procesul de rezolvare al problemei. La un astfel de graf deosebim un nod
corespunzător stării iniţiale, nod ce va constitui rădăcina grafului. De asemenea, graful va
conţine cel puţin un nod care va constitui starea finală sau soluţia problemei (evident, în ipoteza
că problema are soluţie). Acest astfel de nod este denumit nod final sau goal.
Utilizând grafurile pentru reprezentarea spaţiului de stări, rezolvarea problemei se reduce la
căutarea în graful asociat a unui drum de la nodul iniţial la unul din nodurile finale.
O implementare eficientă a unui algoritm de căutare cere programatorului să analizeze şi să
prevadă comportarea algoritmului, acesta fiind confruntat cu următoarele probleme:
conduce algoritmul respectiv la o soluţie?
algoritmul conduce la o soluţie într-un număr finit (rezonabil) de paşi sau poate intra
într-un ciclu infinit?
dacă o soluţie este găsită este aceasta optimă?
cât de amplu este procesul de căutare în termenii timpului de calcul consumat şi al
memoriei afectate?
Exemplul 1. Este foarte cunoscut aşa numitul joc 15-Puzzle constituit din 15 jetoane pătrate
numerotate de la 1 la 15 dispuse într-un chenar, jucat de majoritatea copiilor. Fie, pentru
simplitatea reprezentării, un joc 8-puzzle:
1 2 3
8 4
7 6 5

Inteligenţa Artificială Cap. 4. Structuri şi strategii de căutare
37
Câteva aspecte interesante privitoare la procesul de rezolvare a problemelor pot fi
evidenţiate pe acest joc.
Deşi mişcările fizice sunt efectuate prin mutarea micilor jetoane numerotate de la 1 la 8, este
mult mai simplu să ne imaginăm că mutăm spaţiul liber reprezentat prin pătrăţelul negru. Astfel,
următoarele mutări sunt permise:
mutarea pătrăţelului negru în sus
mutarea pătrăţelului negru la dreapta
mutarea pătrăţelului negru în jos
mutarea pătrăţelului negru la stânga
Pentru a aplica aceste mutări, trebuie avut grijă ca pătrăţelul negru să nu părăsească tabla de
joc. Prin urmare, nu toate dintre cele patru mutări sunt aplicabile la un moment dat. De exemplu,
când pătrăţelul negru este într-unul din colţuri numai două din mişcări sunt posibile.
Dacă se specifică o stare iniţială şi una finală, se poate reprezenta graful de căutare propriu
problemei propuse. Stările se pot reprezenta ca tablouri 33. Utilizând calculul predicatelor, o
stare, sau baza de date curentă se poate reprezenta printr-un predicat “stare” conţinând 9
argumente. De exemplu, starea iniţială poate fi reprezentată utilizând predicatul:
stare(1,4,3,7,0,6,5,8,2) unde s-a notat cu 0 pătrăţelul negru.
Patru proceduri, definind cele patru mişcări posibile vor defini arcele grafului de
reprezentare a spaţiului de stări. Ca şi în cazul precedent, multe stări pot avea diferiţi
descendenţi, prin urmare digraful asociat nu este o arborescenţă. Un drum de la starea iniţială la
starea finală în digraful astfel generat nu reprezintă altceva decât strategia sau secvenţa de
mişcări care conduce la rezolvarea problemei.
1 3
7 4 6
5 8 2
4 3
1 7 6
5 8 2
1 4 3
5 7 6
8 2
1 4 3
7 8 6
5 2
1 4 3
7 8 6
5 2
1 4
7 6 3
5 8 2
1 4 3
7 6 2
5 8
1 3
7 4 6
5 8 2
1 3
7 4 6
5 8 2
1 4 3
7 6
5 8 2
1 4 3
7 8 6
5 2
1 4 3
7 6
5 8 2
1 4 3
7 6
5 8 2
up left down right
left right up down left right up down
Fig. 1. Spaţiul de stări în cazul unui 8-puzzle

Inteligenţa Artificială Cap. 4. Structuri şi strategii de căutare
38
Trebuie de remarcat că în acest caz digraful generat nu mai este aciclic, o anumită
configuraţie a dispunerii celor 8 numere putându-se repeta în cadrul jocului. Dar, dacă în graful
generat există un drum de la starea iniţială la cea de goal atunci există sigur şi un drum elementar
între cele două stări. Explorând numai drumurile elementare riscul ca algoritmul de căutare să
“pice” într-un ciclu infinit este exclus.
4.2. Strategii de căutare
Clasificarea algoritmilor de căutare
1. Direcţia de căutare
– căutare directă („forward chaining”, „data driven”): se porneşte de la starea iniţială
şi se identifică drumul către starea finală.
– căutare inversă („forward chaining”): se porneşte de la goal şi ajunge în starea
iniţială.
– căutare mixtă: căutare în ambele direcţii.
2. Spaţiul de căutare
– căutare completă (exhaustivă), pe întreaga mulţime S.
– căutare incompletă, pe o mulţime S ’ S. Este cercetat numai un subspaţiu al
mulţimii S („hill climbing”, „beam search”).
3. Strategia de căutare
– irevocabilă (fără revenire, metode de gradient).
– cu revenire sau backtracking.
4. Exploatarea informaţiei stocate în starea curentă (informativitate)
– căutare oarbă sau neordonată „blind search”).
– căutare euristică (informată), estimează distanţa de la starea curentă la soluţie în
vederea selectării celui mai promiţător descendent.
4.2.1. Algoritmi de căutare exhaustivă
Căutarea pe întreg spaţiul de stări poate fi implementată cu ajutorul a doi algoritmi
reprezentativi:
1. Depth First (căutare în adâncime);
2. Breadth First (căutare pe nivel).
În implementarea celor două metode de căutare se utilizează două liste:
– Lista Open conţine stările care urmează a fi expandate (explodate, cercetate);
– Lista Close conţine stările care au fost deja cercetate.
Elementele acestor liste sunt de forma (s, p): s – stare curentă, p –starea părinte.

Inteligenţa Artificială Cap. 4. Structuri şi strategii de căutare
39
4.2.1.1. Algoritmul Depth-First (căutare în adâncime)
procedure DepthFirst
begin
Open [(s0¸ nil)];
Close [ ];
while Open [ ] do
begin
extract ((s, p), Open) {Extrage primul element al listei Open}
insert ((s, p), Close) {inserează primul element în lista Close}
if goal (s) then begin
compune_solutia; exit/continue;
end;
D {d S | dst
, t T}
for d in D do
if ((d, _) Open) ((d, _) Close) then insert ((d,s), Open);
{Se inserează (d,s) la începutul listei Open);
end;
writeln(‘Problema nu are soluţie’)
end;
Dezavantajele căutării de tip Depth First:
nu găseşte în general soluţia optimă;
algoritmul se poate pierde în explorarea unor ramuri foarte lungi, programul putând fi
întrerupt datorită depăşirii resurselor de memorie.
s0
s1 s2 s3
s4 s5 s6
s7 s8 s9
Breadth First
s0
s1 s8 s9
s2 s6 s7
s3 s4 s5
Depth First
Lista Close
Lista Open
Algoritmul Depth First Algoritmul Breadth First
Lista Close
Lista Open

Inteligenţa Artificială Cap. 4. Structuri şi strategii de căutare
40
Exemplu: Să se descrie evoluţia listelor Open şi Close în problema de căutare reprezentată mai
jos prin algoritmul Depth First.
1
2 5 9
3 4 6 10 11
7 8
a
b
c d
e
f
g h
i
j k
goal
Rezolvare
Open =[ a], Close =[ ]
1. Open =[ ], x = a
D(x) =b, e, i;
Close =[ a], Open =[ b, e, i],
2. x = b, Open =[ e, i],
Dx=c, d;
Close =[ a, b], Open =[ c, d, e, i],
3. x = c, Open =[ d, e, i], Close =[ a, b, c],
4. x = d, Open =[ e, i], Close =[ a, b, c, d],
5. x = e, Open =[ i], Close =[ a, b, c, d, e],
D(x)= d, f; % d nu se mai examinează
Open =[ f, i],
6. x = f, Open =[i], Close =[a, b, c, d, e, f],
D(x) = g, h; Open =[ g, h, i],
7. x = g, Open =[h, i], Close =[ a, b, c,
d, e, f, g].
În lista Close se regăsesc perechile (S,
P) – (Stare, Părinte)
(b, a), (c, b), (d, b), (e, a), (i, a), (f, e),
(g, f).
Soluţia problemei: aefg.
D(x) – mulţimea descendenţilor stării x
4.2.1.2. Algoritmul Breadth-First (căutare pe nivel)
Dacă algoritmul Depth First implementează o strategie de tip stivă (LIFO), algoritmul
Breadth First are la bază o strategie de tip coadă (FIFO).
Algoritmul Breadth-First este simular cu cel prezentat la metoda Depth First, cu diferenţa că
starea (d,s) se inserează la sfârşitul listei Open şi nu la începutul acesteia (v. fig. de mai jos).
Avantaj: găseşte soluţia de lungime minimă.
0
1 2 3
4 5 6 7 8 9 10 11 12
13 14
s
s
d1 d2 d3
Close
Open

Inteligenţa Artificială Cap. 4. Structuri şi strategii de căutare
41
Dezavantaj: resursele de memorie necesare sunt foarte mari, acestea crescând exponenţial
cu nivelul de adâncime explorat.
4.2.2. Algoritmi de căutare euristică
George Polya asocia termenul „euristic” semnificaţia de studiu al metodelor şi regulilor
descoperirii şi inventicii. În dicţionarul limbii române contemporane euristic = adjectiv al
procedeelor metodologice cu semnificaţia care serveşte la descoperirea unor soluţii noi .
Lenat (1982): prin euristică se defineşte acel tip de cunoaştere având caracterul de
raţionament bazat pe experienţă, specializare, generalizare şi analogie cu ajutorul căruia se
efectuează o interpretare, se ia o decizie sau se acţionează în vederea atingerii unui obiectiv.
Euristic = euristico = a descoperi <<EUREKA>>
În IA, căutarea euristică se utilizează în 2 sisteme de bază:
1. Problema nu are soluţie exactă datorită inerentelor ambiguităţi din datele problemei. Un
diagnostic medical poate fi un exemplu în acest sens: aceleaşi simptome pot avea la bază mai
multe cauze. Un medic utilizează o euristică pentru stabilirea celui mai probabil diagnostic.
2. Problema are o soluţie exactă, dar resursele necesare determinării acesteia pot fi inaccesibile
sau insurmontabile. Ex: jocul de şah are 10120
stări.
Fie S – spaţiul stărilor şi f : S + (N ) denumită euristică care face o evaluare a stărilor
având sS, f(s) desemnând şansa sau probabilitatea ca s să se găsească pe drumul cel mai scurt
spre soluţia problemei.
Funcţia f se mai numeşte şi funcţie cost sau lungime. O stare este cu atât mai bună cu cât f
este mai mic. Se calculează min f(di) pentru 1 i k, adică se alege descendentul de la care
costul determinării soluţiei este cel mai mic. Se spune că descendentul dmin are şanse mai mari
sau se găseşte cu o probabilitate mai mare pe drumul optim de la starea s la soluţia problemei.
Atunci când spaţiul stărilor este foarte mare, acesta nu poate fi memorat sau parcurs într-un
timp rezonabil.
Căutarea euristică este incompletă, dar informaţională. Având în vedere caracterul incomplet
al căutării, un algoritm de căutare euristică poate conduce la o soluţie suboptimală sau poate
chiar eşua, în sensul că nu poate determina o soluţie. Cu toate acestea, în multe situaţii căutarea
euristică constituie singurul mod de rezolvare a unei mod a unei probleme.
Căutarea euristică poate fi:
completă sau incompletă. Cele incomplete pot fi cu 1 descendent (Hill Climbing) sau
cu câţiva (cei mai buni – Beam search);
cu revenire sau fără revenire (Hill Climbing).
d1
s
d2 dk d1
s
d2 dk dj
f(dj)=min f(d)
Algoritmul Hill Climbing Algoritmul Beam search
decendenţii cu valorile f minimale
Exemplul 1: TIC–TAC–TOE
Se consideră că maşina (calculatorul) joacă prima (cu simbolul ×), iar jucătorul cu caracterul
o. Euristica se defineşte astfel: unei stări oarecare i se atribuie ca valoare euristică numărul

Inteligenţa Artificială Cap. 4. Structuri şi strategii de căutare
42
posibilelor combinaţii (linii+coloane+diagonale) câştigătoare ale calculatorului, deci numărul
liniilor/coloanelor/diagonalelor care conţin × şi nu conţin simbolul o.
o
×
×
o
×
×
o
×
×
o
×
×
o
× ×
o
×
×
× o
×
o
× ×
o
×
o
×
×
Maşina
Jucatorul A
3 4 4 5 5 4 4 4
Exemplul 2: 8 puzzle
h1(s) – numărul jetoanelor care nu se găsesc pe poziţia corectă.
h2(s) – suma deplasărilor
jetoanelor spre poziţia corectă.
h1(s) = 8.
h2(s) = 1+1+3+3+1+1+3+3= 16.
4.2.2.1. Algoritmul „Hill climbing”
A fost propus şi aplicat de Pearl în 1984. Este un algoritm fără revenire şi cu o strategie
incompletă. Este aplicabil în probleme de optimizare utilizând metoda gradientului.
Se urmăreşte optimizarea funcţiei f(x1, x2,..., xn), în sensul determinării max f, şi fie vectorul
soluţie Xk la pasul k ,
112
1121 ,,,,,, k
nkkk
nkk xxxxxx 1kk
XX .
Soluţia la pasul k+1 se stabileşte astfel:
kn
kk
i
xxxx
f,,, 21
k1k
XX .
În acest mod, mergând pe gradient, se asigură traseul către valoarea de max (local sau
global) a funcţiei f.
Căutare oarbă: căţărătorul este nerăbdător şi orb. Se alege panta cea mai abruptă până când
se ajunge la un punct de la care nu se mai poate continua: s-a atins soluţia sau s-a ajuns la un
maxim local. Căutarea poate să eşueze. Samuel Pearl a utilizat cu succes acest algoritm în
implementarea jocului de dame.
4.2.2.2. Algoritmul „Beam search”
Este un algoritm cu revenire (backtracking), cu căutare incompletă. Din mulţimea
succesorilor se reţin numai aceia cu şanse maxime (şi relativ apropiate) de a figura pe drumul
optim.
1 2 3
4 5 6
7 8
Starea s 8 1 6
3 2 7
5 4

Inteligenţa Artificială Cap. 4. Structuri şi strategii de căutare
43
4.2.2.3. Algoritmul BEST FIRST (cu revenire)
Acest algoritm se obţine din algoritmul Depth First cu
amendamentul că descendenţii stării curente sunt ordonaţi
crescător, prin funcţia de evaluare, înainte ca aceştia să fie
depuşi la începutul listei Open.
Euristica f este concepută în modul următor:
f(s) = g(s) + h(s),
g(s) – adâncimea stării s;
h(s) – estimare euristică a lungimii (costului) soluţiei
pornind de la starea s.
procedure BestFirstSearch
begin
Open := [(s¸ nil, 0, h(s)]; Close := [ ];
while Open [ ] do
begin
extract ((s, p, g, h), Open)
insert ((s, p, g, h), Close)
if goal (s) then begin
compune_solutia (Close); exit;
end;
D:={d S | dst
, t T}
for d in D do
begin
gc := g + Cost(t); fc := gc + h(d);
end;
case d of
(d, _, _, _)Open Close: insert ((d, s, gc, fc), Open);
(d, pe, ge, fe)Open:
if fc<fe then
begin
remove ((d, pe, ge, fe), Open);
insert ((d, pc, gc, fc), Open);
end;
(d, pe, ge, fe)Close:
if fc<fe then
begin
remove ((d, pe, ge, fe), Close);
insert ((d, pc, gc, fc), Open);
end;
end; {case}
Ordonează(Open); { f minimal pe prima poziţie}
end; {while}
writeln(‘Problema nu are soluţie’)
end;
s
s
d1 d2 d3
Close
Ordonare

Inteligenţa Artificială Cap. 4. Structuri şi strategii de căutare
44
Exemplul 1: Căutare într-un spaţiu cu obstacole
Euristica: f(s) = f(x, y) = |xg–x| + |yg–y|. f(s) = 5
Exemplul 2: 8 puzzle
h(s) – numărul pieselor care nu se găsesc în poziţia corectă (fără a include spaţiul liber);
Funcţia de evaluare va fi de forma f(s) = g(s) + h(s):
g(s) – adâncimea sau costul cu care a fost generată starea s;
h(s) – estimare euristică a costului soluţiei pornind din starea s.
2 8 3
1 6 4
7 5
Starea curentă
1 2 3
8 4
7 6 5
Starea finală (goal)
2 8 3
1 6 4
7 5
2 8 3
1 4
7 6 5
2 8 3
1 6 4
7 5
g = 1
h = 3
f = 4 h = 5
f = 6
h = 5
f = 6
2 8 3
1 4
7 6 5
2 3
1 8 4
7 6 5
2 8 3
1 4
7 6 5
g = 2
h = 3
f = 5 h = 4
f = 6
h = 3
f = 5
2 3
1 8 4
7 6 5
2 3
1 8 4
7 6 5
g = 3
h = 2
f = 5
h = 4
f = 7
Operatori
s
g
a
b
c
d
e f i
j
k
l h
m p r
i 3 6 9
j 3 4 7
k 3 6 9
l 3 4 7
m 4 3 7
n 5 4 9
p 5 2 7
r 6 1 7
q 6 2 8
g 7 0 7
g h f
s 0 5 5
a 1 4 5
b 1 4 5
c 1 6 7
d 1 6 7
e 2 3 5
f 2 5 7
h 2 5 7
n
q

Inteligenţa Artificială Cap. 4. Structuri şi strategii de căutare
45
1
2 5 9
3 4 6 10 11
7 8
a
b
c d
e
f
g h
i
j k
goal
REZUMAT
1. Rezolvarea unei probleme de către o “maşină gânditoare” presupune reprezentarea
cunoştinţelor şi căutarea soluţiei.
2. Tehnica de rezolvare prin căutare în spaţiul de stări presupune reprezentarea simbolică a
obiectelor din domeniul aplicaţiei (definirea parametrilor de stare) şi definirea unor
operatori prin care se poate modifica această reprezentare (funcţii generatoare de stări).
3. Spaţiul de stări asociat unei probleme este frecvent reprezentat sub formă arborescentă.
4. Căutarea soluţiei se poate realiza prin mai multe tehnici (algoritmi): exhaustivă (în
adâncime, pe nivel), cu evaluare euristică (de ex., Best First), cu sau fără revenire.
PROBLEME PROPUSE
Problema 1: Utilizând metodele a) Depth First; b) algoritmul Breadth First şi c) Best First, să se
găsească drumul de la Start la Goal în labirintul din figura de mai jos.
12
10 11 1
9 2 3 4
8 7 6 5
Ordinea operatorilor:
Problema 2:
Să se descrie evoluţia listelor
Open şi Close în problema de căutare reprezentată
mai jos, prin algoritmul Breadth First.
Start Goal

Inteligenţa Artificială Cap. 4. Structuri şi strategii de căutare
46
TEST DE AUTOEVALUARE
1. Prin stare înţelegem:
a. Un instrument practic şi eficient
de reprezentare a obiectelor.
b. O anumită configuraţie a
problemei investigate.
c. Reprezentarea cunoştinţelor şi
căutarea soluţiei.
2. Spaţiul de stări reprezintă:
a. Totalitatea regulilor, procedeelor
sau mutărilor care produc
modificări asupra bazei de date.
b. Totalitatea grafurilor.
c. Totalitatea stărilor din domeniul
problemei.
3. Estimarea distanţei de la starea curentă
la soluţie, în vederea selectării celui
mai promiţător descendent, se
realizează prin:
a. Căutare completă.
b. Căutare euristică.
c. Căutare neordonată.
4. Depth First reprezintă un algoritm de:
a. Căutare pe nivel.
b. Căutare fără revenire.
c. Căutare în adâncime.
5. La implementarea algoritmilor Depth
First şi Breadth First, lista Close
conţine:
a. Stările care au fost cercetate.
b. Stările iniţiale şi finale.
c. Totalitatea stărilor posibile.
6. Algoritmul Beam Search prezintă:
a. Căutări euristice incomplete cu un
descendent.
b. Căutări euristice incomplete cu
câţiva descendenţi.
c. Căutări euristice complete.
7. Lista Open conţine:
a. Stările care au fost cercetate.
b. Stările ce urmează a fi cercetate.
c. Stările ce nu vor fi cercetate.
8. Best First reprezintă un algoritm cu
evaluare euristică a descendenţilor de
tip:
a. Căutare in adâncime.
b. Căutare pe nivel.
c. Căutare fără revenire.
9. Breadth First reprezintă un algoritm
de:
a. Căutare in adâncime.
b. Căutare pe nivel.
c. Căutare cu revenire sau
backtracking.
10. Algoritmul Hill Climbing realizează:
a. Căutări euristice incomplete cu un
descendent .
b. Căutări euristice complete.
c. Căutări euristice incomplete cu
câţiva descendenţi.
Răspuns
1. b 3. b 5. a 7. b 9. b
2. c 4. c 6. b 8. a 10. a.

Inteligenţa Artificială Cap.5. Sisteme de producţie
47
Sisteme de Producţie
Obiective
1. Însuşirea noţiunilor de bază privind reprezentarea problemelor de inteligenţă artificială ca
sisteme de producţii şi rezolvarea acestora.
2. Formarea deprinderilor de reprezentare corectă şi eficientă a problemelor de inteligenţă
artificială prin stări şi producţii.
3. Dezvoltarea abilităţilor practice de operare cu raţionamentele specifice sistemelor de
producţii.
Durata: 2 ore
5.1. Definiţia sistemelor de producţii
În 1972, Newell şi Simon prezintă un model al raţionamentului uman, fiind precursorii
uneia dintre paradigmele de bază ale inteligenţei artificiale, şi anume sistemele de producţie.
Un sistem de producţii este un model matematic având o importanţă particulară în
inteligenţa artificială, atât pentru implementarea algoritmilor de căutare cât şi pentru modelarea
rezolvării umane a problemelor.
După definiţia dată de Brownston (1985), un sistem de producţii constă din:
1. O mulţime finită de reguli de producţie, denumită baza de reguli. Aceste reguli sunt
numite simplu producţii. O producţie este o pereche ordonată (condiţie, acţiune), adeseori notată
condiţie -> acţiune,
a cărei interpretare este următoarea:
Dacă condiţie este îndeplinită ATUNCI se poate executa acţiune.
Partea din regulă, care conţine condiţia, specifică acele criterii care trebuie să fie îndeplinite
pentru ca regula să fie aplicată, deci ca acţiunea pe care aceasta o menţionează să aibă loc.
2. Memoria de lucru (working memory) conţinând piese de cunoaştere (declarativă sau
factuală), memorate nerestrictiv într-o colecţie denumită context. Contextul reprezintă starea
curentă a procesului de rezolvare a unei probleme. La debutul acestui proces, contextul este
iniţializat cu datele iniţiale ale problemei. Dacă condiţia unei reguli este satisfăcută de piesele de
cunoaştere din context, se spune că regula respectivă este aplicabilă. Mulţimea regulilor aplicabile
poartă denumirea de mulţime conflictuală.
3. Strategia de control sau ciclul de corespondenţa (sau recunoaştere, selecţie) şi acţiune,
înţelegând prin acesta algoritmul care face posibilă funcţionarea sistemului de producţii, algoritm
care constă, de obicei, din următorii paşi :
Corespondenţa (selecţia). Sunt selecţionate toate regulile din baza de producţii pentru care
s-au găsit piese de cunoaştere în contextul actual al problemei care satisfac partea de condiţie
(condiţia poate fi unificată cu o clauză din contextul problemei). Mulţimea acestor reguli astfel
selectate se numeşte mulţime conflictuală deoarece regulile acestei mulţimi intră într-o competiţie
din care una singură va fi declanşată.
Cap. 5.

Inteligenţa Artificială Cap.5. Sisteme de producţie
48
Rezolvarea conflictului. Dacă prin procesul de corespondenţă se obţin mai multe reguli
aplicabile, atunci se elimină mai întâi acele reguli care produc replici ale unor simboluri (elemente)
deja existente în context (astfel se evită ciclurile), iar apoi regulile rămase se ordonează potrivit
unor strategii de rezolvare a conflictelor de prioritate şi, astfel, se selectează regula care va fi
declanşată. Rezolvarea conflictului se poate face simplu prin selectarea primei reguli aplicabile
care nu produce un ciclu sau prin utilizarea unei funcţii euristice.
Acţiunea. Se execută partea de acţiune a regulii declanşate. Dacă nu există producţii
(reguli) aplicabile (mulţimea conflictuală e vidă), sistemul de producţie se opreşte. Evident,
execuţia unei astfel de reguli va modifica corespunzător contextul problemei.
Reluarea ciclului. Se resetează toate producţiile selectate (mulţimea conflictuală) şi se reia
ciclul de la faza de corespondenţă folosindu-se contextul modificat în ciclul anterior. Dacă un ciclu
nu produce acţiuni, sistemul se opreşte. Oprirea mecanismului interpretativ poate avea loc şi ca
urmare a executării unei producţii la care partea de acţiune specifică oprirea.
Un sistem de producţie, simplist implementat, nu este prevăzut cu o strategie de revenire
(backtracking) din aşa numitele situaţii "dead-end". De aceea, utilizarea sistemelor de producţii la
implementarea unor algoritmi de rezolvare a problemelor trebuie făcută în conexiune cu utilizarea
unor algoritmi de căutare "depth-first", "breadth-first" sau, mult mai elegant, "best-first", strategia
de rezolvare a conflictului fiind "euristica" pentru implementarea acestuia din urmă.
Exemplu. Funcţionarea unui sistem de producţii poate fi uşor ilustrată făcând apel la un
exemplu simplu şi anume rearanjarea în ordine alfabetică a simbolurilor unui şir de caractere .
Producţii:
1. ba -> ab
2. ca -> ac
3. cb -> bc
Şirul (contextul) iniţial: cbaca
Iteraţia Context Mulţimea
conflictuală
Regula
declanşată
0 cbaca 1,2,3 1
1 cabca 2 2
2 acbca 2,3 2
3 acbac 1,3 1
4 acabc 2 2
5 aacbc 3 3
6 aabcc Φ Halt
Trasarea algoritmului de rearanjarea a caracterelor şirului iniţial este ilustrată în tabelul de
mai sus.
Ideea utilizării producţiilor aparţine aparţine lui Post (1943), care a propus un model bazat
pe reguli de producţie ca o teorie formală a calculului. Ideea are la bază formalismul gramaticilor
generative introduse de N. Chomsky, în special gramaticile contextuale. Aplicaţii interesante ale

Inteligenţa Artificială Cap.5. Sisteme de producţie
49
sistemelor de producţie apar în lucrările lui Newell şi Simon de la Carnegie Institute of
Technology. De asemenea, ideea sistemelor de producţii stă la baza algoritmilor Markov şi a
maşinilor Turing.
Pentru familiarizarea cu acest concept, de o importanţă majoră în inteligenţa artificială, sunt
prezentate în continuare două exemple.
Exemplul 5-1. Spaţiul de stări generat de un 8-puzzle este destul de complex pentru a
prezenta interes, astfel încât acesta este un exemplu frecvent utilizat în inteligenţa artificială. În
cele ce urmează este prezentată soluţia acestei probleme utilizând un sistem de producţii.
Pentru simplitatea soluţiei, se va presupune din nou că pătrăţelul liber (negru) este mutat şi
nu piesele.
Starea iniţială Goal
2 8 3 1 2 3
1 6 4 8 4
7 5 7 6 5
Producţii:
Contextul conţine starea goal -> Halt
Patrăţelul negru nu este sus -> mută pătrăţelul negru în sus
Patrăţelul negru nu este în stânga -> mută pătrăţelul negru la stânga
Patrăţelul negru nu este în dreapta -> mută pătrăţelul negru la dreapta
Patrăţelul negru nu este jos -> mută pătrăţelul negru în jos
Contextul (Memoria de lucru) conţine configuraţia curentă
Strategia de control:
1. Încearcă fiecare producţie în ordine;
2. Evită ciclurile;
3. Opreşte-te dacă ai ajuns la Goal.
După cum se poate constata din analiza punctelor 1 şi 2 ale strategiei de control a căutării,
rezolvarea conflictului se realizează prin alegerea primei reguli (producţii) care nu produce un
ciclu. Aceasta este una dintre cele mai simple strategii de rezolvare a conflictului. Implementarea
unui astfel de algoritm trebuie să se facă impunând o condiţie de limitare a adâncimii, altminteri
algoritmul se va "pierde" în investigarea unor drumuri foarte lungi sau va descoperi o soluţie deloc
optimală (problema la descrierea algoritmului "depth-first"). Evident, o implementare simplistă,
fără un procedeu de revenire (backtracking), poate uşor devia de la soluţia problemei.
Exemplul 5-2. Problema traseului calului de şah este de asemenea un exemplu des utilizat
în inteligenţa artificială pentru sublinierea unor aspecte importante privind implementarea
sistemelor de producţie.
Pentru început, se consideră o tablă formată din 3×3 pătrăţele. Tot pentru s implitate cele 9
pătrăţele se vor numerota cu cifrele arabe de la 1 la 9, şi nu cu o pereche de tip (C,L) notaţie
utilizată uzual în jocul de şah.

Inteligenţa Artificială Cap.5. Sisteme de producţie
50
1 2 3
4 5 6
7 8 9
Regulile de producţie vor reprezenta în acest caz mutările egale ale calului de şah şi anume:
1 Calul este în părăţelul 1 -> Mută calul în pătrăţelul 8
2 Calul este în părăţelul 1 -> Mută calul în pătrăţelul 6
3 Calul este în părăţelul 2 -> Mută calul în pătrăţelul 9
4 Calul este în părăţelul 2 -> Mută calul în pătrăţelul 7
5 Calul este în părăţelul 3 -> Mută calul în pătrăţelul 4
6 Calul este în părăţelul 3 -> Mută calul în pătrăţelul 8
7 Calul este în părăţelul 4 -> Mută calul în pătrăţelul 9
8 Calul este în părăţelul 4 -> Mută calul în pătrăţelul 3
9 Calul este în părăţelul 6 -> Mută calul în pătrăţelul 1
10 Calul este în părăţelul 6 -> Mută calul în pătrăţelul 7
11 Calul este în părăţelul 7 -> Mută calul în pătrăţelul 2
12 Calul este în părăţelul 7 -> Mută calul în pătrăţelul 6
13 Calul este în părăţelul 8 -> Mută calul în pătrăţelul 3
14 Calul este în părăţelul 8 -> Mută calul în pătrăţelul 1
15 Calul este în părăţelul 9 -> Mută calul în pătrăţelul 2
16 Calul este în părăţelul 9 -> Mută calul în pătrăţelul 4
Memoria de lucru va conţine starea curentă existentă pe tabla şi starea de goal. Rezolvarea
conflictului presupune şi în acest caz alegerea primei producţii care nu produce o buclă. Strategia
de control este simplă constând în aplicarea regulilor până la atingerea poziţiei de goal, caz în care
algoritmul ia sfârşit. De asemenea, strategia de control ar trebui să implementeze mecanismul de
backtracking. În aceste condiţii, modul în care sistemul de producţii determină soluţia problemei
este ilustrat în tabelul următor.
Iteraţia Poziţia calului Mulţimea
conflictuală
Regula
declanşată
Curentă Goal
0 1 2 1,2 1
1 8 2 13,14 13
2 3 2 5,6 5
3 4 2 7,8 7
4 9 2 15,16 15
5 2 2 - Halt
Strategia de control sau ciclul de recunoaştere şi acţiune se poate implementa utilizând o
procedură recursivă Path(X,Y), unde X reprezintă poziţia iniţială a calului de şah, iar Y poziţia în
care acesta trebuie mutat.
procedure Path(X,Y) begin

Inteligenţa Artificială Cap.5. Sisteme de producţie
51
if X=Y then halt else begin Corespondenţa: alege dintre producţii pe cele a căror parte de condiţie poate fi unificată cu regula move(X,Y) Rezolvarea conflictului: alege din mulţimea conflictuală prima producţie a cărei aplicare nu produce mutarea calului într-un pătrăţel anterior vizitat (excluderea ciclurilor) fie move(X,Z) producţia selectată Acţiunea: % declanşarea producţiei move(X,Z) mută calul în pătrăţelul Z X := Z stochează în memoria de lucru informaţia că pătrăţelul Z a fost vizitat % path(Z,Y) afişează(Z) end end; Implementarea procedurii precedente într-un limbaj de calcul al predicatelor (respectiv
Prolog) este foarte simplă, aceasta constând în scrierea a două clauze, un fapt şi o regulă:
X path(X,X). X, Y path(X,Y) Z move(X,Z) (been(Z)) assert(been(Z)) path(Z,Y). După cum se poate constata regula path este recursivă. Pentru prevenirea ciclurilor în baza
de date se adaugă, utilizând în acest scop predicatul assert câte un fapt been(Z) de fiecare dată ce
un nod Z este întâlnit în procesul de căutare.
Cum iniţial X=1 şi Y=2, subgoal-ul move(X,Z) este unificat cu prima regulă din baza de
reguli şi anume producţia move(1,8), variabila Z fiind instanţiată cu 8. Cum calul nu a fost încă
plasat în pătrăţelul 8, regula respectivă este selectată şi declanşată. Acţiunea regulii constă în
actualizarea stării curente X:=Z=8 şi stocarea în memoria de lucru a informaţiei că pătrăţelul 8 a
fost vizitat. Procedura apelându-se recursiv, acest procedeu se reia până la atingerea stării Y=2.
Trebuie remarcat faptul că este esenţial ca subgoal-urile regulii path să fie executate în ordinea în
care acestea apar în corpul regulii.
5.2. Controlul căutării în sistemele de producţie
Modelul sistemelor de producţie oferă câteva mecanisme prin care proiectantul unui astfel
de sistem poate interveni dirijând procesul de căutare: selecţia modului de căutare data-driven sau
goal-driven, structura regulilor de producţie şi strategia de rezolvare a conflictului.
5.2.1. Selecţia modului de căutare: data-driven sau goal-driven
În căutarea Data-driven (directă) se începe de la descrierea iniţială a problemei (o secvenţă
de axiome, simptomele unei boli, o colecţie de date ce trebuie interpretate etc.) şi se deduc noi
cunoştinţe din aceste date. Deducerea noilor cunoştinţe este consecinţa aplicării unor reguli de
inferenţă logică, efectuarea unor mutări în cazul jocurilor sau, în general, aplicarea unor operatori

Inteligenţa Artificială Cap.5. Sisteme de producţie
52
de tranziţie stării curente a problemei. Noua stare, rezultată în urma aplicării operatorului de
tranziţie, va fi adăugată bazei de cunoştinţe a problemei în cauză.
Descrierea precedentă accentuează oportunitatea utilizării sistemelor de producţie pentru
implementarea proceselor de căutare. Contextul (sau memoria de lucru) va fi construit din datele
presupuse a fi adevărate (ipoteze) şi cele deduse ca fiind adevărate prin utilizarea unor producţii în
ciclurile precedente.
O producţie este selectată dacă condiţia acesteia
este unificată cu un fapt din contextul problemei.
Aplicarea (declanşarea) unei reguli are ca efect execuţia
acţiunii asociate, acţiune care va avea drept efect
modificarea contextului (memoriei de lucru), prin
modificarea unor informaţii sau adăugarea unor
informaţii noi.
În tabelul de mai jos este ilustrat modul de
căutare al grafului AND/OR ilustrat în figura 5.1 şi
descris prin producţiile următoare:
1. pq goal
2. rs p
3. wr q
4. tu q
5. v s
6. start vrq
Iteraţia Contextul
(memoria de lucru)
Mulţimea
conflictuală
Regula
aplicată
0 start 6 6
1 start,v,r,q 6,5 5
2 start,v,r,q,s 6,5,2 2
3 start,v,r,q,s,p 6,5,2,1 1
4 start,v,r,q,s,p,goal 6,5,2,1 Halt
Observaţie. Graful de mai sus nu este cunoscut a priori, ci este generat în procesul de
căutare.
După cum se poate constata din analiza datelor din tabelul de mai sus, s-a utilizat o
strategie simplă de rezolvare a conflictului şi anume alegerea/selectarea acelei reguli aplicabile
care a fost cel mai puţin recent utilizată sau nu a fost utilizată deloc.
În varianta data-driven producţiile sunt de forma CONDIŢIE ACŢIUNE şi anume dacă
condiţia este satisfăcută de elementele din memoria de lucru se poate efectua acţiunea respectivă.
În această situaţie, când producţiile sunt implicaţii logice şi acţiunea adaugă noi informaţii în
memoria de lucru, actul de aplicare a unei reguli este, de fapt, modus-ponens. Aplicarea unei astfel
de reguli generează un nou nod al grafului AND/OR cercetat.
v
r
q
s
p
goal
start
Fig. 5.1

Inteligenţa Artificială Cap.5. Sisteme de producţie
53
Un sistem de producţie poate fi implementat şi prin utilizarea unei metode goal-driven de
căutare. Pentru exemplificare, să considerăm secvenţă de reguli de producţie de mai jos, reguli care
generează graful AND/OR alăturat.
1. pq goal
2. rs p
3. wr p
4. tu q
5. v s
6. start vrq
În această situaţie o producţie CONDIŢIE
ACŢIUNE este aplicabilă dacă acţiunea acesteia
poate fi unificată cu un element din memoria de
lucru. Aplicarea unei reguli implică adăugarea
condiţiei regulii respective informaţiilor din
memoria de lucru. Procesul de căutare se opreşte
când în baza de date se găseşte un fapt echivalent cu
datele iniţiale ale problemei. Trasarea acestui
algoritm, pe cazul exemplului propus, este ilustrată în tabelul următor.
Iteraţia Contextul
(memoria de lucru)
Mulţimea
conflictuală
Regula
aplicată
0 goal 1 1
1 goal,p,q 1,2,3,4 2
2 goal,p,q,r,s 1,2,3,4,5 3
3 goal,p,q,r,s,w 1,2,3,4,5 4
4 goal,p,q,r,s,w,t,u 1,2,3,4,5 5
5 goal,p,q,r,s,w,t,u,v 1,2,3,4,5,6 6
6 goal,p,q,r,s,w,t,u,v,start 1,2,3,4,5,6 halt
Analizând tabelul de mai sus se constată că strategia de rezolvare a conflictului este aceeaşi
cu cea utilizată în căutarea data-driven.
5.2.2.Controlul căutării prin intermediul strategiei de rezolvare a conflictului
După cum s-a specificat mai sus, sistemele de producţii permit implementarea unor funcţii
euristice pentru rezolvarea conflictului. În cele ce urmează sunt prezentate principiile utilizate
pentru implementarea strategiilor generale de rezolvare a conflictului. Evident, eficienţa procesului
de căutare nu este aceeaşi dacă se implementează o strategie eficientă de rezolvare a conflictului
sau se alege cea mai simplă dintre ele: selectarea primei reguli care nu conduce la un ciclu.
Cele mai reprezentative aspecte care trebuie avute în vedere la implementarea unei strategii
generale de rezolvare a conflictului sunt următoarele:
v
r
q
s
p
goal
start
Fig. 5.2
w t u

Inteligenţa Artificială Cap.5. Sisteme de producţie
54
Refracţia. Dacă o regulă a fost aplicată, aceasta nu mai poate fi aplicată până ce
contextul în care această regulă a fost aplicată nu s-a modificat (rolul
refracţiei este de a evita ciclurile).
Recentitatea. Sunt preferabile acele reguli ale căror condiţii sunt unificate cu cele mai
recente fapte adăugate în memoria de lucru (se influenţează continuarea unei
anumite linii de raţionament).
Specificitatea. O regulă mai specifică este preferabilă în raport cu una generală. O regulă
este mai specifică decât altă regulă dacă partea de condiţie a regulii
respective este mai restrictivă decât a celeilalte.
REZUMAT
1. Un sistem de producţii constă dintr-o mulţime finită producţii, reguli de forma condiţie ->
acţiune, şi o bază de date (memoria de lucru) care conţine starea curentă a problemei
(contextul).
2. Sistemele de producţii au următoarea strategie de control, aplicabilă în fiecare ciclu de
execuţie: a) se testează condiţiile producţiilor din baza de cunoştinţe şi se formează
mulţimea conflictuală (a regulilor aplicabile, ale căror condiţii sunt îndeplinite de datele din
context); b) se selectează regula care va fi declanşată (la un ciclu se execută o singură
regulă, selectată din mulţimea conflictuală după o strategie anterior stabilită); c) se execută
partea de acţiune a regulii declanşate, ceea ce conduce la modificarea contextului
problemei.
3. Se resetează toate producţiile selectate (mulţimea conflictuală) şi se reia ciclul de la faza
de corespondenţă folosindu-se contextul modificat în ciclul anterior. Dacă un ciclu nu
produce acţiuni, sistemul se opreşte. Oprirea mecanismului interpretativ poate avea loc şi
ca urmare a executării unei producţii la care partea de acţiune specifică oprirea (în general,
la găsirea soluţiei).
PROBLEME PROPUSE
Problema 1. Să se obţină prin metoda sistemelor de producţii ordonarea alfabetică a şirului de
caractere: cabbcba.
Producţii:
1. ba -> ab
2. ca -> ac
3. cb -> bc
Şirul (contextul) iniţial: cabbcba.
Problema 2. Să se rezolve problema 8-puzzle din figura de mai jos utilizând un sistem de
producţii.

Inteligenţa Artificială Cap.5. Sisteme de producţie
55
Starea iniţială Goal
8 3 2 1 2 3
6 4 1 8 4
5 7 7 6 5
Producţii:
Contextul conţine starea goal -> Halt
Patrăţelul negru nu este sus -> mută pătrăţelul negru în sus
Patrăţelul negru nu este în stânga -> mută pătrăţelul negru la stânga
Patrăţelul negru nu este în dreapta -> mută pătrăţelul negru la dreapta
Patrăţelul negru nu este jos -> mută pătrăţelul negru în jos
Contextul (Memoria de lucru) conţine configuraţia curentă
Strategia de control:
1. Încearcă fiecare producţie în ordine;
2. Evită ciclurile;
3. Opreşte-te dacă ai ajuns la Goal.
TEST DE AUTOEVALUARE
1. Ce este o producţie:
a. Pereche ordonata (condiţie, acţiune) .
b. Pereche ordonata (acţiune, condiţie).
c. Pereche neordonată.
2. În cazul unei mulţimi conflictuale:
a. Regulile acestei mulţimi intra într-o competiţie din care toate vor fi declanşate.
b. Regulile acestei mulţimi intra într-o competiţie din care una va fi declanşată .
c. Regulile componente se vor declanşa fără competiţie.
3. În cazul metodei goal-driven, o producţie e aplicabilă dacă:
a. Condiţia acesteia nu poate fi unificată cu un element din context.
b. Acţiunea acesteia poate fi unificată cu un element din memoria de lucru.
c. Condiţia acesteia poate fi unificată cu un element din memoria de lucru.
4. Ce reprezintă contextul?
a. Starea curenta a procesului de rezolvare a unei probleme.
b. Starea anterioara a procesului de rezolvare a unei probleme.
c. Starea viitoare a procesului de rezolvare a unei probleme.
5. Prin declanşarea unei reguli are loc:
a. Se opreşte necondiţionat programul.
b. Se reia ciclul fără modificarea contextului.
c. Executarea părţii de acţiune din corpul regulii.
6. Strategia de căutare pornind de la descrierea iniţială a problemei poartă denumirea de:
a. Data-driven.
b. Goal-driven.
c. Open-driven.
Răspuns
1. a 3. b 5. c
2. b 4. a 6. a

Inteligenţa Artificială Cap.5. Sisteme de producţie
56

Inteligenţa Artificială Cap. 6. Planning
57
Planning
Obiective
1. Însuşirea noţiunilor de bază privind reprezentarea şi rezolvarea problemelor de
inteligenţă artificială prin metoda de planning.
2. Formarea deprinderilor de reprezentare corectă şi eficientă a problemelor de inteligenţă
artificială prin predicate pentru descrierea starilor problemei şi a operatorilor de tranziţie.
3. Dezvoltarea abilităţilor practice de operare cu raţionamentele specifice metodei planning.
Durata: 2 ore Prin planning se înţelege generarea secvenţei de operaţii care trebuie executate, adeseori de
către un robot, în vederea realizării unui anumit task. Pe lângă aplicaţiile evidente în robotică,
planning-ul este utilizat în sistemele expert, pentru controlul automat al proceselor de fabricaţie,
înţelegerea limbajelor naturale etc.
Exemplele care se vor prezenta în continuare sunt alese din domeniul roboticii.
Componentele sau paşii care compun un plan de operaţii, pe care un robot va trebui să le execute
în vederea îndeplinirii unui anumit task, se vor numi operaţii elementare sau atomi. Un astfel de
plan de operaţii, prin care un robot ar executa o comandă de genul "adu (te rog) obiectul A din
camera B", ar putea fi următorul:
1. Lasă jos ce ai în prehensor;
2. Du-te în camera B;
3. Identifică obiectul A;
4. Prehensează obiectul B;
5. Părăseşte camera B;
6. Revino la poziţia iniţială.
Planurile sunt elaborate prin căutare, în spaţiul generat de operaţiile elementare, a secvenţei
de atomi necesare realizării task-ului propus. Stările acestui spaţiu sunt configuraţiile posibile ale
mediului, mediu care se modifică prin intermediul operaţiilor pe care robotul le execută.
Elaborarea planului de operaţii se poate realiza off-line, acesta nefiind condiţionată de
prezenţa fizică a robotului pentru care planul respectiv este generat. În majoritatea variantelor de
planning, debutate începând cu anul 1960, întregul plan de operaţii era generat înainte ca un robot
să execute prima operaţie a acestui plan. Planurile erau generate în absenţa robotului, partea de
inteligenţă artificială (planning-ul) fiind separată de cea de execuţie (postprocesarea operaţiilor
componente pentru robotul gazdă).
Mai recent, odată cu implementarea unor senzori sofisticaţi şi creşterea considerabilă a
performanţelor microprocesoarelor, cercetările s-au orientat în direcţia integrării dintre generarea şi
execuţia operaţiilor unui task (on line). Evident, acest nivel superior de planning dă o mai mare
autonomie robotului, un astfel de plan ne mai fiind static, ci generat dinamic, permiţând
conceperea unor roboţi autonomi de explorare, roboţi capabili să rezolve situaţii pentru care nu au
fost programaţi în mod explicit (ex. Lunahod).
Cap. 6.

Inteligenţa Artificială Cap. 6. Planning
58
Deşi planning-ul este o problemă de căutare în spaţiul de stări, aceasta ridică câteva
probleme particulare, probleme ce vor fi punctate în continuare.
Prima dintre problemele ridicate de planning decurge din complexitatea stărilor. În
exemplul considerat, o stare constă în descrierea configuraţiei curente a mediului, fiind de o
complexitate mult mai mare decât cea a stărilor utilizate până acum în problemele de căutare. O
astfel de stare este modelată de obicei printr-o colecţie de aserţiuni în limbajul de calcul al
predicatelor.
Complexitatea stărilor atrage după sine dificultăţi în ceea ce priveşte modelarea
operatorilor de tranziţie şi a impactului pe care aceşti operatori îl au asupra mediului. Astfel, o
particularitate care apare în cazul planning-ului este necesitatea caracterizării situaţiilor care rămân
neschimbate în urma execuţiei unei anumite operaţii elementare. De exemplu, ridicarea unui obiect
schimbă poziţia obiectului şi faptul că prehensorul nu mai este liber, ci conţine obiectul respectiv;
în schimb, acea operaţie nu schimbă poziţia altor obiecte din mediul robotului.
6.1. Prima metodă de planning (John McCarthy)
Problema specificării a ceea ce se modifică şi ce rămâne invariant în descrierea unei stări
prin aplicarea unui operator de tranziţie este cunoscută sub numele de "problemă de elaborare a
planului" ("frame problem", McCarthy & Hayes 1969, McCarthy 1980). Cu cât descrierea unei
stări este mai complexă, cu atât această problemă este mai dificilă. Pentru exemplificarea acestei
metode se consideră situaţia prezentată în fig. 6.1. Se presupune că toate obiectele notate a, b, c şi d
sunt de formă cubică, identice ca mărime şi că prehensorul robotului poate să prehenseze oricare
din aceste cuburi cu condiţia ca obiectul respectiv să nu aibă un alt cub situat deasupra sa (spunem
că obiectul respectiv este liber).
Fig. 6.1. Dispunerea obiectelor în mediul robotului
Se presupune că braţul articulat al robotului poate executa următoarele operaţii elementare
(primitive):
pickup(W) Ridică cubul W de pe masă. Se presupune că cubul W este liber şi
prehensorul era liber în momentul lansării comenzii.
pudown (W) Pune cubul W pe masă. Cubul W trebuie să fie prehensat în momentul
activării comenzii.
takeoff (U, V) Ridică cubul U de deasupra cubului V. U trebuie să fie situat deasupra lui V,
V să nu aibă un alt cub deasupra sa şi prehensorul să fie liber.
puton (U, V) Pune cubul U deasupra cubului V. Cubul U trebuie să fie prehensat, iar
cubul V să fie liber în momentul lansării comenzii.
Starea curentă din mediul robotului poate fi descrisă prin utilizarea următoarele predicate:
on (U, V) - cubul U este situat deasupra cubului V.

Inteligenţa Artificială Cap. 6. Planning
59
clear (X) - cubul X este liber (poate fi prehensat).
hold (W) - prehensorul conţine obiectul W.
empty - prehensorul est liber.
ontable (Y) - obiectul Y este situat pe masă.
Regulile de mai jos descriu anumite proprietăţi cunoscute în domeniul aplicaţiei
considerate:
1. ( X clear(X) ( Y on(Y, X)))
2. ( Y X on(Y, X) ontable(Y))
3. ( Y hold(Y) empty)
şi anume cele trei proprietăţi afirmă că:
1. Un obiect oarecare X este liber dacă nu există nici un bloc Y situat deasupra sa.
2. Dacă un bloc este pe masă el, nu se găseşte deasupra altui bloc.
3. Prehensorul este liber dacă şi numai dacă acesta nu conţine un obiect.
Expresiile de mai sus au, înainte de toate, un aspect declarativ, descriind anumite relaţii şi
proprietăţi. Totodată, aceste expresii au şi un aspect semantic (sau procedural), sugerând procedeul
prin care aceste proprietăţi pot fi îndeplinite. Astfel, interpretată semantic, prima regulă spune că
un obiect X poate fi eliberat prin înlăturarea eventualelor obiecte Y situate deasupra sa.
Descrierea situaţiei iniţiale din mediul robotului (v. fig.6.1), se realizează prin următoarele
aserţiuni:
Stare 1:
empty clear (a). clear (b). on (a, c). on (b, d). ontable (c). ontable (d). Pornind de la această stare, spaţiul de stări este generat prin aplicarea operatorilor de
tranziţie corespunzători operaţiilor elementare ale robotului. Specificul acestei metode constă în
faptul că operatorii de tranziţie sunt de forma:
(A(BC)),
în care formulele A, B şi C au următoarele semnificaţii:
A – operatorul de tranziţie;
C – condiţie pe care starea curentă trebuie să o îndeplinească ca operatorul să fie aplicabil;
B – colecţie de predicate care arată proprietăţile noi ale stării generate prin aplicarea
operatorului de tranziţie respectiv.
Cele patru operaţii elementare pot fi descrise prin următoarele reguli:
(R1) X (pickup(X)
(hold(X) (empty ontable(X) clear(X))))
(R2) X (putdown(X)
((ontable(X) clear(X) empty) (hold(X)))))
(R3) X Y (puton(X, Y)
((on(X, Y) clear(X) empty) (hold(X) clear(Y))))
(R4) X Y (takeoff(X, Y)
((clear(Y) hold(X) (on(X, Y) clear(X) empty)))

Inteligenţa Artificială Cap. 6. Planning
60
Observaţie: Cele patru reguli de mai sus sunt de forma A (B C); operatorul A se
poate utiliza pentru producerea noilor predicate B când condiţiile C sunt îndeplinite. Dar, pentru
aplicarea operatorilor de tranziţie trebuie rezolvată, în prealabil, problema de elaborare a planului,
definind aşa numitele axiome de elaborare a planului ("frame relations"). Axiomele de elaborare
a planului sunt reguli care descriu care din predicatele din descrierea stării curente rămân
invariante la aplicarea unui operator de tranziţie, acestea fiind copiate ca atare în descrierea stării
generate prin aplicarea operatorului respectiv.
În cazul exemplului considerat, se pot scrie mai multe astfel de axiome. De exemplu,
următoarele două axiome exprimă faptul că un cub situat pe masă nu este afectat de operatorii
puton şi takeoff:
X Y Z (puton(Y, Z) (ontable(X) ontable(X))),
X Y Z (takeoff(Y, Z) (ontable(X) ontable(X))),
regulile având aceeaşi semnificaţie. Astfel, dacă predicatul ontable (X) există în descrierea stării
curente, acesta va fi copiat şi în noua stare generată (pentru toate instanţierile posibile ale variabilei
X), dacă unul din cei doi operatori este aplicat.
Alte axiome de elaborare a planului ar putea preciza că on şi clear sunt afectate de
operatorii puton şi takeoff doar în cazuri particulare. De exemplu, on (b, a) nu este afectat de takeoff(c, d). Nu mai insistăm asupra celorlalte axiome de elaborare a planului care se pot defini pentru
cazul considerat, dar să subliniem faptul că trebuie definite aceste axiome pentru toate situaţiile
care pot surveni în contextul considerat; acesta este un aspect care evidenţiază încă o dată
complexitatea elaborării planului de operaţii.
Împreună, operatorii de tranziţie şi axiomele de elaborare a planului definesc un spaţiu.
Pentru ca un operator să poată fi aplicat trebuie să fie îndeplinite condiţiile C din definiţia acestuia.
Astfel, pentru ca operatorul takeoff să poată fi aplicat trebuie ca toate cele trei condiţii:
on(X, Y), clear(X) şi empty să fie îndeplinite. Aceste condiţii sunt satisfăcute pentru două substituţii posibile ale variabilelor X
şi Y. Aplicat prin unificarea {b/X, d/Y} operatorul takeoff va produce următoarele două predicate
clear(d) şi hold(b). Noua stare generată, Stare 2, va fi descrisă din acele predicate din descrierea stării curente,
probate ca invariante prin aplicarea axiomelor de elaborare a planului, la care se adaugă noile
predicate generate de operatorul de tranziţie (lista A).
Stare 2
ontable(c) ontable(d) clear(a)
on(a, c) hold(b) clear(d)
Deşi teoretic problema pare simplă, rezolvarea practică este foarte dificilă, numărul
axiomelor de generare a planului crescând exponenţial, în funcţie de numărul predicatelor utilizate în
descrierea stării. Complexitatea unui astfel de proces de căutare impune necesitatea descompunerii
unui goal în două sau mai multe subgoal-uri independente sau liniare (care se pot executa
secvenţial). Aici apare o nouă problemă. O greşită interpretare a independenţei acestor subgoal-uri
poate face ca realizarea unui subgoal să facă imposibilă realizarea unui alt subgoal.

Inteligenţa Artificială Cap. 6. Planning
61
6.2. Metoda STRIPS (STanford Research Institute Planning System)
Standford Reasearch Institute (SRI), nume de care se leagă multe din realizările valoroase
în domeniul inteligenţei artificiale, este creatoarea a ceea ce se numeşte STRIPS (Stanford
Research Institute Planning System) implementat la începutul anilor '70 pentru controlul robotului
SHAKEY, prin utilizarea unei metode eficiente de planning. Sistemul este prevăzut cu o metodă de
învăţare, planurile rezolvate cu succes sunt stocate într-o bază de cunoştinţe sub formă de macro-
operatori, care pot fi reutilizaţi în situaţii similare ivite în viitor.
Caracteristic sistemului de producţie conceput de cercetătorii de la Standford Reasearch
Institute este modul de reprezentare al operatorilor de tranziţie . Concret, un operator de tranziţie
este un triplet ordonat (P, A, D). Primul element al tripletului reprezintă precondiţiile care trebuie
îndeplinite de starea curentă pentru ca operatorul respectiv să poată fi aplicat. Cel de al doilea
element defineşte lista de predicate pe care operatorul le va adăuga (A–add) în descrierea noii stări
generale (proprietăţi noi ale stării generale). Ultimul element al tripletului defineşte secvenţa de
predicate din descrierea stării curente care vor fi eliminate (D–delete) în descrierea noii stări,
acestea ne mai fiind consistente în contextul stării generate de operator.
Această reprezentare este mult mai naturală şi are avantajul de a ne scuti de povara
formulării axiomelor de elaborare a planului.
Revenind la exemplul anterior, cei patru operatori corespunzători operaţiilor elementare ale
robotului sunt reprezentaţi în felul următor:
pickup(X) P: ontable(X), clear(X), empty
A: hold(X)
D: ontable(X), clear(X), empty
putdown(X) P: hold(X)
A: ontable(X), clear(X), empty
D: hold(X)
takeoff(X) P: on (X, Y), clear(X), empty
A: clear(Y), hold(X)
D: on(X,Y), clear(X), empty
puton(X, Y) P: hold(X), clear(Y)
A: on(X, Y), clear(X), empty
D: hold(X), clear(Y)
Observaţie: În contextul listelor P, A, D de mai sus, virgula are semnificaţia de conjuncţie logică.
Un dezavantaj minor al modelării operatorilor de tranziţie, prin utilizarea celor trei liste,
constă în păstrarea unor informaţii redundante în listele respective. De exemplu, în cazul
operatorului takeoff inserarea predicatului hold(X) implică ştergerea de la sine a predicatului
empty. Acest dezavantaj este însă minor în raport cu facilităţile oferite de această modelare a
operatorilor de tranziţie şi anume toţi descriptorii unei stări care nu sunt citaţi în listele A(add) sau
D(delete) rămân nemodificaţi în descrierea noii stări.
Spaţiul stărilor, generat cu oricare din cele două metode prezentate mai sus, este ilustrat în
figura 6.2.

Inteligenţa Artificială Cap. 6. Planning
62
Fig. 6.2. Spaţiul generat prin aplicarea operatorilor takeoff, puton, putdown şi pickup
Problemele rezolvate, a căror soluţie este memorată, pot fi utilizate pentru rezolvarea altor
probleme similare. De aceea, se impune stocarea unor soluţii într-o formă fixă. Forma fixă propusă
de cercetătorii de la SRI poartă numele de tabela triunghiulară şi este prezentată mai jos.
0
empty clear(a) on(a,c) ontable(c) clear(b) on(b,d) ontable(d)
takeoff(b,d)
1 clear(a) on(a,c) ontable(c) ontable(d)
hold(b) clear(d)
putdown(b)
2 clear(a) on(a,c) ontable(c) ontable(d)
clear(d) clear(b) ontable(b) empty
takeoff(a,c)
3 ontable(c) ontable(d)
clear(d) clear(b) ontable(b)
hold(a) clear(c)
0 1 2 3
Starea iniţială este înscrisă în linia 0, coloana 0. Lista add corespunzătoare operatorului O1
(primul aplicat) în linia 1 coloana 1. În linia 1 coloana 0 se înscrie rezultatul obţinut prin ştergerea
din starea iniţială a predicatelor din lista delete a operatorului O1. Cu alte cuvinte, starea după
aplicarea operatorului O1 este înscrisă în coloanele din linia 1. Rezultatul aplicării operatorului O2

Inteligenţa Artificială Cap. 6. Planning
63
la această stare va fi memorat în linia 3 ş.a.m.d. Starea înscrisă în ultimul rând al tabelului
triunghiular satisface starea obiectiv.
Tabelele triunghiulare pot fi generalizate prin introducerea variabilelor, definind aşa
numiţii macrooperatori. Prin stocarea în baza de cunoştinţe a macrooperatorilor, sistemul STRIPS
şi-a sporit mult eficienţa de elaborare a planurilor, prin reutilizarea macrooperatorilor o dată
"învăţaţi" în situaţii similare.
În diagrama de mai jos este prezentată o tabelă triunghiulară generalizată. Operaţiile
elementare ale planului sunt înscrise de-a lungul diagonalei. Acestea sunt cele patru operaţii
cunoscute: pickup, putdown, takeoff şi puton.
În coloana 1 este precizată starea iniţială, iar în linia 7 –starea finală.
Precondiţiile fiecărei operaţii sunt înregistrate în linia care precede numele operaţiei.
Postcondiţiile (conţinute în listele add şi delete) sunt înscrise în coloana situată sub numele
comenzii. Predicatele respective sunt înscrise în liniile corespunzătoare operaţiilor care le
utilizează drept precondiţii, organizând astfel tabela într-o manieră relevantă pentru succesiunea
operaţiilor.
Tabela triunghiulară generalizată
1
clear(Y) on(Y,V) empty
takeoff(Y,V)
2 hold(Y) putdown(Y)
3 clear(X) on(X,U)
empty takeoff(X,U)
4 hold(X) putdown(X)
5 ontable(U) clear(U) empty pickup(U)
6 clear(V) hold(U) puton(U,V)
7 ontable(V) ontable(Y)
clear(Y) ontable(X)
clear(X) on(U,V) clear(U)
1 2 3 4 5 6 7
Se numeşte nucleu de ordin n intersecţia dintre liniile având numărul cel puţin egal cu n (r
n) şi coloanele având numărul cel mult egal cu n (c n). În figură este reprezentată îngroşat
nucleul de ordin 2. În executarea unui plan reprezentat printr-o tabelă triunghiulară, operaţia i poate
fi efectuată numai dacă toate predicatele conţinute în nucleul i sunt adevărate.
Tabela triunghiulară permite reluarea şi refacerea planului ca urmare a apariţiei unor
evenimente neaşteptate. De exemplu, când robotul execută primul operator puton(c,d), el scapă
goalul c. Presupunând că robotul poate localiza cubul c prin intermediul unei camere video, starea
curentă satisface clauzele cuprinse în nucleul 4, ceea ce face ca robotul să reia planul cu operaţia pickup(c). Fiind dată o tabelă triunghiulară, orice stare ce satisface toate clauzele înscrise într-un
nucleu al tabelei triunghiulare poate fi convertită în starea obiectiv.

Inteligenţa Artificială Cap. 6. Planning
64
REZUMAT
1. Planning-ul poate fi privit ca o problemă de căutare în spaţiul de stări;
2. Stările sunt generate prin aplicarea operatorilor de tranziţie şi a axiomelor de elaborare a
planului;
3. Problema constă în găsirea, în graful ce modelează spaţiul de stări, a unui drum de la starea
iniţială la cea finală, denumită obiectiv. Operaţiile corespunzătoare arcelor ce compun
acest drum constituie planul de operaţii pentru realizarea obiectivului propus.
4. Două metode reprezentative s-au impus în rezolvarea problemelor de planning: a) metoda
John McCarthy şi b) metoda STRIPS.
PROBLEME PROPUSE
Problema 1. Descrieţi stările iniţială şi finală ale problemei de planning de mai jos şi generaţi o
soluţie a acesteia prin cele două metode expuse anterior.
a. b.
Fig. 1
Problema 2. Să se rezolve problema turnurilor din Hanoi tratată ca problemă de planning.
Fig. 2. Turnurile din Hanoi
Pentru descrierea situaţiei curente se vor utiliza predicatele din tabelul de mai jos.

Inteligenţa Artificială Cap. 6. Planning
65
Predicat Semnificaţie
handempty Prehensorul este liber
hold(D) Discul D este prehensat
turnempty(T) Turnul T nu conţine nici un disk
ontable(D,T) Discul D se află la baza turnului T
clear(D) Discul D este liber (poate fi prehensat)
on(X,Y) Discul X este situat deasupra discului Y
Concepeţi şi completaţi listele P, A şi D corespunzătoare operaţiilor primitive indicate în
tabelul de mai jos.
Operaţia Conţinutul listelor P, A, D
pickup(X) P
A
D
putdown(D,T) P
A
D
takeoff(X,Y) P
A
D
puton(X,Y) P
A
D
Condiţia de a nu plasa un disc de diametru mai mare peste unul de diametru mai mic este
deja implementată în contextul operaţiei puton, a cărui operator de tranziţie este reprodus mai
jos:
move(puton(X,Y),Stare,Delete,Add) :- % Pune discul X disc(X), disc(Y), % peste un disc Y diam(X,D1), diam(Y,D2), D1<D2, Preconditii=[ * * * ], subset(Preconditii,Stare),
Delete=[ * * * ], Add=[ * * * ].
TEST DE AUTOEVALUARE
1. În exemplu (pickup (x)(hold (x)(empty ontable (x) clear (x)))) formula hold (x) are
următoarea semnificaţie:
a. Produce noi predicate.
b. Este o condiţie pe care starea curentă trebuie să o îndeplinească ca operatorul să fie aplicabil.
c. Colecţie de predicate care arata proprietăţile noi a le stării prin aplicarea operatorului de
tranziţie respectiv.

Inteligenţa Artificială Cap. 6. Planning
66
2. Axiomele de elaborare a planului sunt:
a. Reguli care descriu care dintre predicate rămân invariante la aplicarea unui operator de
tranziţie.
b. Reguli care descriu care dintre predicate se schimbă la aplicarea unui operator de tranziţie.
c. Reguli care generează noi operatori de tranziţie.
3. Macrooperatorii se folosesc, în probleme de planning, pentru:
a. Mărirea operatorilor de tranziţie.
b. Generalizarea tabelei triunghiulare prin introducerea variabilelor.
c. Micşorarea operatorilor de tranziţie la aplicarea unui operator de tranziţie.
4. Tabela triunghiulară reprezintă:
a. Reprezentarea tuturor soluţiilor sub forma triunghiulară.
b. Introducerea simbolurilor triunghiulare în rezolvarea problemei.
c. O modalitate de stocare a unei soluţii într-o formă fixă triunghiulară.
5. În forma operatorului de tranziţie (A(BC)), formula C are următoarea semnificaţie:
a. Operator de tranziţie.
b. Condiţie pe care starea curentă trebuie să o îndeplinească ca operatorul să fie aplicabil .
c. Colecţia predicatelor noi generate prin aplicarea operatorului de tranziţie.
6. În exemplul următor: P: on (x,y), clear (x), empty; A: clear (y), hold (x); D: on (x,y), clear (x),
empty; tripletul ordonat (P, A, D) are următoarea semnificaţie:
a. Lista predicatelor adăugate, a precondiţiile şi a predicatelor eliminate.
b. Lista precondiţiilor, a predicatelor adăugate şi a celor eliminate .
c. Lista predicatelor eliminate, a celor adăugate şi a precondiţiilor.
Răspuns
1. c 3. b 5. b
2. a 4. c 6. b

Inteligenţa Artificială Cap.7. Sisteme Expert
67
Sisteme Expert
Obiective
1. Însuşirea noţiunilor de bază privind structura şi rolul sistemelor expert.
2. Însuşirea noţiunilor privind reprezentarea cunoştinţelor şi implementarea acestora în
sisteme bazate pe cunoştinţe.
3. Dezvoltarea abilităţilor practice de operare cu raţionamentele specifice sistemelor expert.
Durata: 3 ore
7.1. Inteligenţa artificială şi sistemele expert
Utilizarea în ultimii ani a sistemelor expert a fost asociată cu cercetările de inteligenţă
artificială deoarece structura şi proprietăţile sunt apropiate de produsele IA. Sistemele expert
(SE) beneficiază de cercetările ce au fost realizate în diferite zone ale IA. În fig. 7.1. se evidenţiază
relaţiile între sistemele expert şi celelalte domenii ale IA.
Ştiinţa calculatoarelor
Fig. 7.1. Domenii ale inteligenţei artificiale
În prezent, sistemele expert sunt tot mai mult asociate direct cu modurile de raţionare şi
cunoştinţele reprezentate. SE sunt de fapt dezvoltări în noile câmpuri ale achiziţiei de cunoştinţe
ca forme specializate de învăţare, în care cunoştinţele sunt achiziţionate direct de la expert. Alte
SE ca tehnici de IA include explicaţii, învăţare inteligentă, planificare, rezolvarea problemelor
distribuite, cercetări ce sunt adresate direct IA.
7.1.1. Sisteme Expert. Definiţii
O ramură a Inteligenţei Artificiale (IA) este reprezentată şi de către sistemele expert. Un
sistem expert este un program care urmăreşte cunoştinţele, raţionează pentru obţinerea
rezultatelor într-o activitate dificilă întreprinsă uzual doar de experţii umani. Dacă un
expert uman are cunoştinţe într-un domeniu specific, un sistem expert utilizează cunoştinţele ce
Cap. 7.
Inteligenţa
Artificială
Lingvistică
Filozofie
Prelucrare în
limbaj natural
Planificare Vedere artificială
Logică
matematică
Sisteme
expert
Psihologie
Robotică

Inteligenţa Artificială Cap.7. Sisteme Expert
68
sunt stocate într-o bază de cunoştinţe, bază formată din cunoştinţele asociate domeniului
respectiv. Experţii umani raţionează şi ajung la concluzii pe baza cunoştinţelor ce le posedă,
sistemele expert raţionează utilizând cunoştinţele stocate în baza de cunoştinţe.
Din punct de vedere funcţional, un sistem expert poate fi definit astfel:
Un sistem expert (SE) este un program care urmăreşte un grup de cunoştinţe pentru
obţinerea în acelaşi mod ca şi experţii umani a rezultatelor despre activităţi dificil de
examinat. Principala caracteristică a sistemelor expert este derivată din baza de cunoştinţe
împreună cu un algoritm de căutare specific metodei de raţionare. Un sistem expert
tratează cu succes probleme pentru care nu există o soluţie algoritmică clară.
Sistemele expert sunt programe aplicative de inteligenţă artificială bazate pe cunoaştere
specializată de nivel înalt, nivel atins în societate de cei mai competenţi experţi umani ai
domeniilor aplicative ce se implementează în aceste sisteme. Denumirea de "sisteme expert" derivă
din capacitatea acestor programe de a egala unele din performanţele de gândire şi de intuiţie pe
care experţii umani le obţin atunci când aplică o astfel de cunoaştere pentru rezolvarea unor
probleme complexe din domeniul de expertiză.
Din punct de vedere funcţional un sistem expert este definit ca un program ce oferă
cunoştinţe pentru obţinerea rezultatelor taskurilor dificile rezolvate uzual de experţii umani.
Din punct de vedere structural şi arhitectural SE au următoarele caracteristici:
sunt construite în general pentru focalizarea taskurilor cu gamă limitată de
aplicabilitate;
există o separare explicită între cunoştinţe şi metodele de raţionare utilizate în
vederea obţineri unor concluzii pe baza cunoştinţelor;
sunt capabile să explice propriile acţiunii şi linii de judecată.
Avantajele sistemelor expert faţă de aplicaţiile având complexitate comparabilă, dar
rezolvate cu ajutorul metodelor convenţionale de programare a calculatoarelor, constau în
puterea lor de a soluţiona problemele în baza cunoaşterii asupra întregului domeniu specific, în
capacitatea lor de a reprezenta şi de a învăţa, în uşurinţa cu care folosesc şi combină diferite
strategii de rezolvare. O caracteristică principală a sistemelor expert, care derivă din conceptele
aplicate la elaborarea acestora, este flexibilitatea. Când unele proceduri existente sunt
actualizate, sau sunt adăugate noi proceduri, nu este necesară rescrierea sau actualizarea
celorlalte programe care alcătuiesc sistemul.
Sistemele expert au fost acceptate cu entuziasm într-o mulţime de domenii: afaceri, industrie
şi alte sfere profesionale, ca o cale de fructificare a experienţei, disponibilă oricând este necesară. SE
sunt binevenite în domenii particulare în care experţii umani existenţi au suficientă experienţă pe care
o pot furniza.
Tehnologiile de programare utilizate în dezvoltarea sistemelor expert pot fi privite ca o
evoluţie timpurie a limbajelor calculatoarelor în noul nivel al exprimării, ce permite utilizarea
reprezentării a foarte multor cunoştinţe. Limbajele timpurii sunt dificil de utilizat, exceptând
specialiştii în calculatoare. Recentele limbaje de programare sunt binevenite pentru utilizarea şi
includerea diverselor forme de expresie umană.
Tehnologiile de programare specifice SE marchează alţi paşi în această direcţie. Pentru a
fi utilizată efectiv, fiecare tehnologie nouă este însoţită de un set de ghiduri şi metodologii pentru
utilizare. Aceasta ajută noii utilizatori la creşterea eficienţei utilizării şi a maximizării

Inteligenţa Artificială Cap.7. Sisteme Expert
69
productivităţii. Din acest motiv utilizarea tehnicilor specifice în SE cu foarte multe cunoştinţe va
necesita un nou set de metodologii, bazate pe experienţa crescută, în dezvoltarea aplicaţiilor.
Expertul care înţelege necesitatea utilizării unui SE în domeniul său de cunoaştere poate
de asemenea obţine un ajutor de la inginerul de cunoştinţe (adică, a specialistului în calculatoare
priceput în SE) deoarece, în urma discuţiilor cu acesta, anumite cunoştinţe vor fi reformulate. În
concluzie, prin interacţiunea între expertul uman şi inginerul de cunoştinţe poate fi făcut un
schimb între domeniile de experienţă ale fiecăruia. Deci, inginerul de cunoştinţe, în general un
ignorant al domeniului cunoaşterii specifice expertului, iar expertul cu foarte puţine cunoştinţe
despre sisteme expert au puncte de vedere ce vor fi puse de acord în urma acestei colaborări.
Prin urmare, nu este uşor pentru un expert să găsească un inginer de cunoştinţe în vederea
colaborării deoarece cunoştinţele sunt expansive şi greu de formulat într-o manieră concisă.
Aceasta motivează necesitatea ca experţii umani să aibă mai multe cunoştinţe despre sistemele
expert. Sunt necesare cât mai multe utilitare specifice dezvoltării sistemelor expert, trebuie să fie
posibil ca eventual mai mulţi experţi să fie adepţii utilizării SE fără a fi utilizate cunoştinţele lor
în acelaşi timp de către inginerii de cunoştinţe. În orice eventualitate, punctele de vedere ale
inginerului de cunoştinţe sunt utilizate în proiectare şi este limpede că procesul construirii
sistemelor expert este mai eficient dacă expertul este cunoscător asupra tehnologiilor şi
metodologiilor sistemelor expert.
7.1.2. Originea Sistemelor Expert. Experimentări şi realizări
După ce s-a trecut de limitările de spaţiu şi timp, apreciate la câteva ordine de mărime, au
fost marcate succese în comercializarea mai multor programe ce furnizează taskuri specifice cu
cele ale experţilor umani, numite şi sisteme expert. În 1960 NASA a hotărât trimiterea unui
vehicul pe Marte, unul dintre scopuri fiind cercetarea structurii chimice a solului acestei planete.
Pentru aceasta cercetătorii de la Stanford au construit un program ce a trebuit să înglobeze
experienţa chimiştilor în identificarea structurii chimice a unor substanţe pornind de la
spectrograma de masă. În dezvoltarea programului numit DENDRAL sunt investigate
cunoştinţele experţilor umani în domeniul spectrografiei de masă, analizei structurilor chimice,
descoperindu-se cu acest prilej şi o serie de erori în literatură. Datorită înglobării experienţei
chimiştilor, utilizând atât deducţiile empirice cât şi raţionamente ştiinţifice, DENDRAL a fost
considerat primul sistem expert. El a fost scris în FORTRAN şi cunoştinţele proprii ale
domeniului erau integrate cu mecanismul de inferenţă, motiv pentru care ameliorarea sa este
greu fezabilă. DENDRAL a fost urmat de un mare număr de alte SE utilizate în rezolvarea de
probleme similare cu cele realizate de experţii umani.
Se consideră că istoria sistemelor expert a început în anul 1964 cu elaborarea programului
DENDRAL-64, conceput în vederea construirii, enumerării şi notării moleculelor organice, ca
structuri arborescente şi grafuri ciclice. Acest sistem generează reprezentări structurale plauzibile
pentru moleculele organice, pornind de la spectogramele de masă ale substanţelor analizate.
Dezvoltat şi perfecţionat în decursul mai multor ani de către autorii săi, în cadrul
laboratoarelor de inteligenţă artificială de la Universitatea Standford, sistemul DENDRAL a
servit ca exemplu de pionierat pentru a arăta puterea pe care metodele inteligenţei artificiale o
pot dovedi în aplicaţii deosebit de sofisticate. În domeniul chimiei se mai pot aminti alte realizări
semnificative, sistemul CRYSALIS, realizat de Engelmore şi Terry, care interpretează

Inteligenţa Artificială Cap.7. Sisteme Expert
70
diagramele de densitate ale electronilor pentru proteine, sau sistemul SECS (Wipke, 1974) care
acordă utilizatorilor asistenţă la conceperea schemelor pentru sinteza chimică organică.
În domeniul geneticii moleculare, sistemul MOLGEN asistă pe cercetători la elaborarea
planurilor pentru experimentele cu ADN. Acest sistem a introdus în inteligenţa artificială unele
dezvoltări privind planificarea în sistemele expert.
Domeniul medicinii este reprezentat în numeroase şi variate sisteme expert, dintre care
cel mai reprezentativ fiind sistemul expert MYCIN, bazat pe reprezentarea relaţiilor cauzale cu
ajutorul regulilor de producţie. Sistemul funcţionează interactiv pentru elaborarea diagnosticului
în cazul infecţiilor bacteriene ale sângelui, folosind cunoaşterea despre simptome şi datele
rezultate din analiza sângelui, producând în acelaşi timp şi recomandări privind tratamentul
medicamentos adecvat. Pornind de la experienţa acumulată la elaborarea sistemului MYCIN, s-a
dezvoltat un alt sistem EMYCIN. Acesta din urmă este un sistem expert instrumental, capabil de
a fi încărcat cu cunoaştere specifică diferitelor domenii ale practicii clinice, generând astfel
sisteme expert specializate. În acest fel a fost obţinut sistemul expert PUFF pentru diagnosticarea
bolilor pulmonare sau sistemul HEADMED pentru diagnosticarea şi medicaţia unor afecţiuni
neuro-psihiatrice. Un alt sistem bine cunoscut în practica medicală, sistemul INTERNIST, este
bazat pe cunoaşterea privind diagnosticul în medicina internă şi supravegherea clinică a
pacienţilor (Pople, Myers,Miller 1977).
Sistemul CASNET (Weiss,1978), destinat diagnosticării bolilor de ochi, organizează
cunoaşterea despre boli pe următoarele trei niveluri:
simptome şi teste de laborator care alcătuiesc probe directe ale existenţei bolii;
stări fiziopatologige ale pacientului, presupuse a putea fi prezente fără a fi considerate mutual
exclusive;
categoriile de boli, descrise pe baza de pattern-uri de stări.
Prin organizarea bazei de cunoştinţe şi prin prevederea mai multor strategii de control, sistemul
expert CASNET se detaşează ca un sistem mai elaborat, în ceea ce priveşte tratarea conceptelor
fundamentale, de adâncime şi de complexitate, ale cunoaşterii despre domeniul de expertiză.
Un ultim exemplu din domeniul medicinii, sistemul expert MDX, are o structură mai
complexă, alcătuită dintr-o colecţie de mici subsisteme expert, care comunică între ele prin
intermediul unei zone de comunicaţii cu ajutorul unei tehnici speciale (de broacasting).
În domeniul explorărilor geologice pentru descoperirea zăcămintelor de minerale,
sistemul expert PROSPECTOR acordă asistenţă geologilor la evaluarea interesului pe care o
anumită zonă dedicată prospecţiunilor şi forajelor geologice, o prezintă în privinţa existenţei
depozitelor minerale de un anumit tip căutat.
Un sistem expert cu performanţe deosebite în ceea ce priveşte nivelul şi calitatea
rezultatelor obţinute este sistemul AM destinat descoperirii conceptelor în matematici. Prin
combinarea şi adaptarea diferitelor metode ale inteligenţei artificiale, folosirea cunoaşterii
declarative, normative şi euristice, sistemul conduce la producerea unor raţionamente rafinate
comparabile cu cele obţinute de experţii de mare clasă.
Sistemul expert HEARSAY-II, destinat înţelegerii vorbiri, se caracterizează prin
utilizarea unor tehnici deosebite de organizare a cunoaşterii, de control şi de comunicaţie între
componente. Cunoaşterea este organizată în unităţi procedurale denumite surse de cunoaştere,
care sunt alcătuite dintr-o componentă care evaluează aplicabilitatea sursei de cunoaştere
(componenta condiţională) şi o componentă care reprezintă însuşi programul de acţiune pe care

Inteligenţa Artificială Cap.7. Sisteme Expert
71
trebuie să îl îndeplinească o sursă de cunoaştere aplicabilă, sau invocată spre aplicare. Aceste
concepte au fost dezvoltate ulterior în sistemul HEARSAY-III, care este un sistem cadru
independent de domeniu, destinat implementării, pe bază exclusivă de cunoaştere expertă, a unor
tipuri diverse de sisteme expert dedicate.
Cu toate că elaborarea sistemelor expert independente de domeniu este încă la primele
încercări şi realizări, se poate afirma că viitorul îi aparţine. Aceasta se datorează necesităţii de
asigurare a unor componente cognitive şi rezolutive performante pentru orice fel de domeniu
aplicativ. Un astfel de sistem expert independent de domeniu este sistemul INTEXP.
În informatică, sunt cunoscute sisteme expert pentru asistarea elaborării de programe, ca
de exemplu sistemul PECOS care generează programe în limbajul LISP pornind de la descrierea
algoritmilor. Sistemul expert APE generează programe în limbajul INTERLISP, pornind de la
specificaţiile unor algoritmi abstracţi şi tipuri abstracte de date prelucrate.
În domeniul ingineriei cunoaşterii şi inteligenţei artificiale, instrumentele elaborate
reprezintă doar unele căutări şi experimentări. De exemplu, sistemul TEIRESIAS oferă
utilizatorilor de sisteme de tip MYCIN posibilităţi de achiziţie a cunoaşterii experte. Un
instrument mai general de implementare a unor noi sisteme expert, a fost dezvoltat la
Universitatea Standford, sub denumirea de AGE. Acest sistem este rodul experienţei colectivului
de inteligenţă artificială a acestei universităţi, experienţă ilustrată de numeroase sisteme expert
de mare succes, dintre care să menţionăm numai sistemele DENDRAL, META-DENDRAL,
MYCIN, AM, MOLGEN, CRYSALIS, SACON.
Dezvoltarea SE cere noi specialişti pentru captarea cunoştinţelor şi exprimarea acestora
sub formă de reguli. Devine necesară o nouă specializare numită "inginer de cunoştinţe", un
intermediar între specialistul în calculatoare şi expertul uman.
Metodologia de captare a cunoştinţelor este cunoscută sub numele de ingineria
cunoaşterii. Ca urmare se poate concluziona:
un SE poate fi expert într-o singură chestiune. Dacă se construieşte un SE ce rezolvă două
probleme sunt posibile critici pentru fiecare dintre acestea;
un SE poate să rezolve numai acele probleme pe care expertul uman le-a transmis. Dacă se
construieşte un SE fără a fi consultat expertul uman acesta are cunoştinţe limitate şi deci este
mai slab decât expertul uman;
un SE nu va putea niciodată să înlocuiască omul.
O caracteristică specifică SE este marcată de faptul că acestea pot fi adaptive,
caracteristică marcată prin faptul că schimbările efectuate la diferite intervale de timp nu
determină modificări ale programelor. Pentru aceasta cunoştinţele sunt ţinute sub formă de reguli
care pot fi uşor citite şi modificate de utilizator cu mici intervenţii din partea acestuia. În multe
SE uzuale există o distincţie netă între cunoştinţe şi mecanismele ce manipulează aceste
cunoştinţe. Prin modificarea naturii cunoştinţelor utilizate, un SE devine capabil a fi utilizat în
alte zone ale aceluiaşi domeniu. De exemplu, un SE destinat diagnosticului medical, prin
schimbarea cunoştinţelor medicale şi substituirea acestora de cunoştinţe inginereşti poate deveni
expert în domeniul autodiagnozei.
O caracteristică specifică a sistemelor expert este organizarea pe reguli în loc de
instrucţiuni. Pe când calculatoarele convenţionale folosesc programe ce intră linie cu linie în
execuţie, SE constau dintr-o colecţie de reguli ce nu sunt executate secvenţial decât atunci când
condiţia de aplicabilitate este îndeplinită. Conceptual, punctul de vedere este rezonabil pentru că

Inteligenţa Artificială Cap.7. Sisteme Expert
72
în SE fiecare linie începe prin cuvântul IF, care în accepţiunea clasică înseamnă că grupul de
instrucţiuni din corpul său sunt executate numai dacă valoarea condiţiei este adevărată.
7.2. Structura generală a unui sistem expert
Aşa cum s-a arătat şi în capitolul anterior, sistemele expert acoperă o clasă foarte mare de
programe ce au o serie de caracteristici comune, dar diferă în multe privinţe faţă de programele
clasice. În cazul SE, baza de cunoştinţe are o serie de caracteristici care oferă o independenţă a
cunoştinţelor, cum sunt:
- granularitatea cunoştinţelor (independenţa acestora);
- ordinea în care sunt stocate cunoştinţele în baza de cunoştinţe nu influenţează rezultatele;
- modificarea elementelor bazei de cunoştinţe nu are implicaţii deosebite asupra
programului;
- sistemul expert poate fi caracterizat ca o nouă modalitate de programare declarativă.
Pentru a se putea înţelege mai bine modul în care funcţionează un sistem expert, se va
prezenta în figura 7.2 conceptul de bază al funcţionării unui SE. Utilizatorul furnizează
sistemului expert fapte sau alte informaţii şi primeşte, ca răspuns, "sfaturi" sau "e xpertize".
Fig. 7.2. Conceptul de bază al funcţionării unui SE
O caracteristică a sistemelor expert este cea privind competenţa acestora de a furniza
explicaţii asupra raţionamentelor întreprinse pentru ajungerea la rezultat, explicaţii care trebuie
să fie exprimate într-un limbaj cât mai apropiat de limbajul natural.
7.2.1 Componentele sistemelor expert
Toate aceste caracteristici determină o structură specifică pentru sistemele expert,
structură ce poate fi grupată în jurul a trei module principale, module ce determină şi ceea ce se
numeşte sistem esenţial:
Baza de cunoştinţe este reprezentată ca o structură de date ce conţine ansamblul
cunoştinţelor specializate introduse de către expertul uman. Cunoştinţele stocate în baza de
cunoştinţe sunt în principal descripţii de obiecte în conjuncţie cu relaţiile dintre acestea. Baza
de cunoştinţe face parte din sistemul cognitiv, cunoaşterea fiind memorată într-un spaţiu
special organizat. Forma de stocare a informaţiei experte trebuie să asigure căutarea pieselor
Utilizator
Baza de cunoştinţe
Motor de inferenţă
Fapte
Expertize
Sistem Expert

Inteligenţa Artificială Cap.7. Sisteme Expert
73
de cunoaştere specificate direct prin simboluri identificatoare, căutarea pieselor de cunoaştere
referite indirect prin proprietăţi asociate sau valori atribuite acestora, căutarea pieselor de
cunoaştere prin inferenţe sau lanţuri inferenţiale ce pornesc de la alte piese de cunoaştere sau
de la proprietăţi asociate acestora, menţinerea bazei de cunoştinţe în concordanţă cu evoluţia
domeniului de expertiză.
Mecanismul de inferenţă reprezintă noutatea sistemelor expert. El preia cunoştinţele din
baza de cunoştinţe ce sunt utilizate pentru construirea raţionamentului. Mecanismul de
inferenţă urmăreşte o serie de obiective majore cum sunt: alege strategia de control funcţie de
problema curentă ce o are de rezolvat, elaborează planul de rezolvare a problemei după
necesitate, execută comutarea de la o strategie de control la alta, execută acţiunile prevăzute
în planul de rezolvare, constituie informaţiile de control pentru mecanismele fundamentale
ale mecanismului de inferenţă. Cu toate că în esenţă mecanismul de inferenţă este constituit
dintr-un ansamblu de proceduri în sensul obişnuit al termenului, modul în care utilizează
cunoştinţele nu este prevăzut prin nici un program, acesta fiind condiţionat de datele şi
cunoştinţele pe care le posedă.
Baza de fapte este reprezentată de o memorie auxiliară ce conţine toate datele utilizatorului
(faptele iniţiale ce descriu enunţul problemei de rezolvat), şi rezultatele intermediare produse
în cursul procedurii de deducţie. Conţinutul bazei este păstrat într-o memorie RAM şi poate
fi conservată doar la cererea utilizatorului.
Pe lângă aceste module un sistem expert mai conţine o serie de module ce asigură
comunicarea cu operatorul şi expertul uman.
Modulul de comunicaţie este destinat furnizării interfeţelor specifice pentru utilizatorii
sistemului expert cât şi pentru achiziţia de cunoştinţe. În compunerea acestui modul intră
procesoare specifice pentru limbajele de comunicare înglobând limbaje de comunicare cu
utilizatorul, limbaje pentru achiziţia cunoştinţelor, procesoare pentru comunicarea internă între
sistemul expert şi echipamente auxiliare pentru stocarea cunoaşterii, procesoare speciale pentru
intrări/ieşiri grafice, achiziţia senzorială şi instrumentală a cunoaşterii, comanda elementelor de
execuţie.
Interfaţa utilizator este cea care asigură dialogul între utilizator şi sistem în limbaj
cvasinatural prin translatarea limbajului intern. Tot ea este cea care comunică mecanismului de
inferenţă cererile utilizatorului, rezultatul acestora fiind furnizat utilizatorului. În egală măsură
facilitează achiziţia enunţului problemei iniţiale şi comunicarea rezultatului. Sunt situaţii în care
interfaţa utilizator este mai sofisticată, integrând dicţionare, fiind capabilă de analize
lexico-sintactice, verificări semantice, corecţii ortografice, gestiunea prescurtărilor etc.
Modulul de achiziţie a cunoştinţelor preia cunoştinţele specializate furnizate de
expertul uman sau inginerul de cunoştinţe într-o formă ce nu este specifică reprezentării interne.
O serie de cunoştinţe pot fi furnizate prin fişiere specifice bazelor de date sau alte programe
externe. El recepţionează cunoştinţele, verifică validitatea acestora şi în final generează o bază de
cunoştinţe coerentă.
Modulul de explicaţii permite trasarea drumului urmat în raţionare de către sistemul
rezolutiv şi emiterea justificărilor pentru soluţiile obţinute, evidenţiindu-se în acest mod cauza
greşelilor sau motivul eşecului. El ajută expertul să verifice consistenţa bazei de cunoştinţe.

Inteligenţa Artificială Cap.7. Sisteme Expert
74
În fig. 7.4,a se prezintă o structură generală a unui sistem expert ce înglobează toate
modulele descrise mai sus. Aşa cum se observă, în figură se disting mai multe activităţi începând
cu achiziţia cunoştinţelor, reprezentarea acestora, tratarea cunoştinţelor şi utilizarea lor.
Înglobarea modului de achiziţie a cunoştinţelor face oricând posibile modificări ale bazei de
cunoştinţe odată cu rafinarea acestora.
Puterea rezolutivă a sistemelor expert se bazează pe abilitatea acestora de a memora, a
întreţine şi a manevra cantităţi mari de piese de cunoaştere specifice domeniului de expertiză, de
a oferi o înaltă flexibilitate de reprezentare a cunoaşterii, indiferent de complexitatea acesteia,
de a elabora strategii şi planuri de rezolvare rafinate, şi de a-şi îmbunătăţi aceste performanţe
prin învăţare şi experienţă.
Deoarece sistemele expert sunt de fapt sisteme inteligente bazate pe cunoaştere (KBS-
Knowledge Based expert System) pentru rezolvarea problemelor, structura acestora este
presupusă a satisface cerinţele care definesc orice sistem formal. De aceea, sistemele expert sunt
dotate cu mecanisme fundamentale, axiomatice, care se aplică pe un suport alcătuit din piese de
cunoaştere despre obiecte, acţiuni şi relaţii, cu ajutorul cărora sunt generate noi entităţi bine
formate de tip obiectual, procesual sau relaţional.
Indiferent de cerinţele particulare ale domeniului de expertiză dat, orice sistem expert poate fi
conceput în concordanţă cu următoarea schemă generală de structură (fig. 7.4,b):
Fig. 7.4,a Structura generală a unui sistem expert
Expert uman
Inginer de
cunoştinţe
Utilizator
Mo
du
l d
e ac
hiz
iţie
a c
un
oşt
inţe
lor
Inte
rfaţ
a u
tili
zato
r
Baza
de
cunoştinţe
Mecanism
de
inferenţă
Modul
de
explicare
Baza
de
fapte
Achiziţia de
cunoştinţe
Reprezentare
cunoştinţelor
Tratarea
cunoştinţelor
Utilizarea
cunoştinţelor

Inteligenţa Artificială Cap.7. Sisteme Expert
75
Sistemul cognitiv, care este dedicat realizării următoarelor funcţii şi obiective
legate de cunoaştere:
- memorarea cunoaşterii experte într-un spaţiu de memorare special organizat în acest
sens, denumit bază de cunoştinţe;
- căutarea pieselor de cunoaştere specificate direct, prin simboluri identificatoare;
- căutarea pieselor de cunoaştere referite indirect, prin proprietăţi asociate şi/sau valori
atribuite acestora;
- căutarea pieselor de cunoaştere prin inferenţe sau lanţuri inferenţiale care pornesc din
alte piese de cunoaştere;
- menţinerea bazei de cunoştinţe în actualitate cu evoluţia domeniului de expertiză;
Sistemul rezolutiv, care este dedicat următoarelor funcţiuni şi obiective legate de
rezolvarea problemelor:
- alegerea strategiei de control adecvate pentru tipul problemei curente;
Prelucrarea
cunoaşterii
despre domeniu
Prelucrarea cunoaşterii
despre sistem
Fig. 7.4,b. Structura generală a unui sistem expert
Index:
pbd - problemă bine definită
cpc - cerere piesă de cunoaştere
ipc - introducere piesă de cunoaştere
pc - piesă de cunoaştere
dr - drumuri de raţionament
j - justificări
amf - adecvare mecanisme fundamentale
pmc - piesă de metacunoaştere
Sistem
metarezolutiv
Sistem
rezolutiv
Sistem
cognitiv
Sistem
explicativ
Sistem
de comunicare
Baza de cunoştinţe
Nivelul metacunoaşterii
Nivelul cunoaşterii conceptuale
Nivelul cunoaşterii factuale
Solicitare
Răspuns
amf
pbd
dr
j
ipc
cpc
pc
cpc
cpc
pc ipc
pc
amf
amf
pmc

Inteligenţa Artificială Cap.7. Sisteme Expert
76
- comutarea controlată de la o strategie la alta;
- elaborarea planului de rezolvare a problemei curente;
- desfăşurarea acţiunilor prevăzute în planul de rezolvare;
- verificarea consistenţei paşilor de rezolvat;
- trasarea drumurilor de raţionament prin arbori deductivi.
Sistemul explicativ, care este dedicat următoarelor funcţiuni şi obiective legate de
justificarea soluţiilor obţinute de sistemul expert la problemele utilizatorilor:
- interpretarea drumurilor de raţionament trasate de către sistemul rezolutiv şi emiterea
justificărilor pentru soluţiile obţinute;
- evidenţierea cauzelor greşelilor sau eşecului;
- evidenţierea pieselor de cunoaştere care lipsesc în lanţul de inferenţe, sau a celor care
sunt suspecte de a furniza cunoaştere eronată.
Sistemul de comunicare, care este dedicat comunicării dintre sistemul expert şi
utilizatorul acestuia. Acest dialog se poate realiza pe mai multe căi:
- în mod interactiv, întrebare-răspuns;
- sistem de meniuri;
- limbaj natural;
- interfaţă grafică;
În funcţie de complexitate sistemului expert şi de modul de realizare a acestui dialog, sistemul de
comunicare poate incorpora:
- procesoare pentru limbajele de comunicare cu utilizatorul;
- procesoare pentru limbajele de reprezentare a cunoaşterii;
- procesoare pentru comunicarea internă între sistemul expert şi echipamentele auxiliare
de stocare a cunoaşterii;
- procesoare speciale: intrare/ieşire grafică, achiziţia senzorială şi instrumentală a
cunoaşterii, comanda dispozitivelor cu caracter efectorial.
Sistemul meta-rezolutiv este dedicat unor funcţiuni şi obiective legate de adecvarea
mecanismelor fundamentale ale sistemului expert la caracteristicile domeniului de expertiză:
- adecvarea mecanismelor fundamentale ale sistemului cognitiv: metoda de reprezentare
a cunoaşterii, mecanismele inferenţiale aplicate peste baza de cunoştinţe, metode da căutare şi
revenire prin grafuri şi arbori, criteriile de clasificare şi organizare a bazelor de cunoştinţe.
- adecvarea mecanismelor fundamentale ale sistemului rezolutiv: structura informaţiei de
control, metodele de rezolvare, strategiile de control, mecanismele de comutaţie pentru strategii,
planuri şi metode, mecanisme de trasare şi revenire;
- adecvarea mecanismelor fundamentale ale sistemului explicativ: tipuri de întrebări,
adânvimea justificărilor;
- adecvarea mecanismelor fundamentale ale sistemului de comunicare: gramatica
limbajului de comunicare, lexicul, sistemul de priorităţi şi restricţii legate de numărul posturilor de
lucru cu sistemul şi de clasificarea utilizatorilor.
7.2.2. Categorii de aplicaţii
Ne propunem să analizăm care sunt diferenţele dintre sisteme expert realizate pentru
diferite aplicaţii, dacă acestea se pot grupa în clase, modul în care are loc transferul
cunoştinţelor. La multe din aceste întrebări nu se poate da un răspuns net şi precis, însă pot

Inteligenţa Artificială Cap.7. Sisteme Expert
77
apărea elemente ce fac obiectul cercetărilor viitoare. În acest context este necesară o analiză
asupra limitărilor sistemelor expert, cât şi a posibilităţilor viitoare de evoluţie. Odată stabilite
aceste chestiuni se va încerca să se definească principiile de bază ale metodologiei de construcţie
a unui sistem expert.
Fără a propune o grupare a sistemelor expert foarte diferite în clase, putem face o
diferenţiere, în funcţie de natura scopului urmărit, deci de utilizare. Astfel, aceste sisteme se pot
împărţi în trei mari categorii:
1) SE de clasificare - interpretare, pot realiza spre exemplu clasificarea cauzelor
posibile ale unei disfuncţionări (cantitative, calitative, vizuale) în scopul de a determina
semnificaţiile acestor tipuri de date. Acest tip de SE este cel mai vechi (diagnostic, prospecţii) şi
cel mai des utilizat. Dezvoltate cu precădere pentru aplicaţiile în medicină, cercetările au
influenţat aplicaţiile ulterioare rezultând ceea ce numim diagnostic tehnic. Dintre sistemele
utilizate în domeniul medical, MYCIN este un exemplu perfect. Sistemul utilizat pentru
diagnosticarea infecţiilor bacteriene utilizează o reprezentare a cunoştinţelor sub formă de reguli,
descriind legăturile între simptome şi bolile posibile. Cunoştinţele folosite aici sunt cu precădere
empirice şi de aceea mai sunt numite şi "cunoştinţe de suprafaţă". Este util să remarcăm faptul că
sistemele ce utilizează cunoştinţe de suprafaţă nu pot să justifice raţionamentul ce explică
deducţiile realizate. La nivelul raţionamentelor utilizate în MYCIN se disting două caracteristici
principale:
- raţionare înainte (singurul mod);
- cercetare exhaustivă – se referă la aplicarea tuturor regulilor posibile pentru a creşte
sau a diminua factorul de certitudine al concluziei.
2) Sisteme expert de control (monitorizare) - sunt caracterizate prin introducerea
noţiunii "timp", care este primordială, şi au sarcina de a supraveghea buna evoluţie a unui proces.
Aceste sisteme supraveghează evoluţia datelor sau semnalelor provenind de la procesul
controlat. Ele tratează, deci date continue într-o logică nemonotonă ca în exemplul:
(dacă A este adevărat la un moment T,
atunci A este lansat în execuţie la momentul T+Q).
Pentru aceste sisteme măsura intervalelor regulate de timp trebuie să fie interpretată,
generând declanşarea unei acţiuni imediate, atâta timp cât anumite condiţii sunt îndeplinite. Este
necesară deci o structură de control ce permite evoluţia datelor altfel decât în cazul clasic al
diagnosticării.
Cunoştinţele pot fi reprezentate sub formă de tabele cu date care, în funcţie de valoarea
mărimii controlate selectează strategiile ce vor fi aplicate la momentele următoare.
3) SE de anticipare - acestea sunt caracterizate printr-o alocare a resurselor ţinând cont
de restricţii. Ex. CAO (anticiparea unui rezultat) pentru meteorologie, pentru anticiparea
evoluţiei în viitor pe baza datelor prezente şi a evoluţiilor trecute, pentru ordonarea şi
planificarea producţiei. Această compartimentare a fost făcută pentru a permite studiul şi
căutarea după caz a sistemului cadru pentru dezvoltarea unei aplicaţii. Spre exemplu, sistemele
expert utilizate în diagnoză nu pot fi utilizate la dezvoltarea aplicaţiilor de conducere a
proceselor.
În concluzie, este deci indispensabilă determinarea clasei aplicaţiei şi căutarea sistemului
de dezvoltare adecvat.

Inteligenţa Artificială Cap.7. Sisteme Expert
78
7.2.3. Alternative în construcţia unui sistem expert
Pentru construirea unui sistem expert sunt posibile două alternative:
existenţa unei aplicaţii care în urma analizei justifică abordarea cu un sistem expert în
detrimentul programării clasice;
existenţa unui sistem expert cadru pentru o anumită categorie de aplicaţii la care se ataşează
o bază de cunoştinţe specializată în problema ce se cere rezolvată.
Hotărârea de a utiliza un sistem expert pentru rezolvarea problemei este luată după
examinarea următoarelor situaţii:
dacă o problemă este bine rezolvată prin modele numerice clasice (programarea liniară sau
altele) este inutilă dezvoltarea unui sistem expert. Din contră, dacă problema nu este bine
rezolvată în maniera clasică decât în condiţii ideale rar atinse, sau numărul parametrilor de
natură simbolică puşi în joc este dificil de luat în consideraţie într-un model numeric, atunci
se poate apela la o rezolvarea utilizând sisteme expert.
existenţa expertului uman, recunoscut ca fiind persoana ce cunoaşte bine lucrul studiat.
Aceasta explică de ce construcţia unui sistem expert depinde de un expert uman pentru baza
sa de cunoştinţe şi de ce dacă problema nu este rezolvată de persoane nu poate fi rezolvată
nici de un sistem expert;
dacă evoluţia cunoştinţelor în domeniu este caracterizată de o dinamică rapidă, necesită
frecvente schimbări, atunci un sistem expert se poate aplica. În această situaţie se poate folosi
şi un program clasic, însă amendamentele aparent minore, aduse la acest program îi pot
modifica profund comportamentul.
Realizarea programelor clasice este un proces rigid, greu, ce creează dificultăţi în
elaborarea specificaţiilor, proces ce conduce la programe lipsite de supleţe şi fără posibilităţi de
îmbunătăţire. Din contră, sistemele expert prin însăşi construcţia lor se pretează la modificări
locale numeroase, în condiţiile în care modificările nu afectează coerenţa bazei de cunoştinţe:
principalele calităţi ale expertului uman sunt exprimate în cunoştinţele transferate sistemului,
cunoştinţe ce sunt în general de bun simţ şi nu formalizate. Nu trebuie înţeles însă, că
sistemul expert nu poate raţiona utilizând cunoştinţe puternic formalizate, însă marele câştig
se regăseşte în utilizarea cunoştinţelor slab formalizate;
problemele pentru a căror rezolvarea sunt necesare câteva ore de muncă umană şi nu sunt
repetitive, nu se pretează la rezolvarea cu sisteme expert pentru a căror rezolvare activitatea
este mult mai complexă. Dacă, de exemplu, stabilirea unei configuraţii pentru un sistem de
calcul necesită o zi de muncă umană, ţinând cont de faptul că o problemă similară este
rezolvată practic în fiecare zi, un sistem expert este adecvat;
o cotă a rotaţiei de personal ridicată (cerută des în tehnică) este în aceeaşi măsură un semn că
utilizarea sistemelor expert permite memorarea experienţei acumulate de persoanele ce
lucrează în domeniu (perenitatea informării);
când într-o clasă bine definită de probleme, nu se ştie care va fi rezolvarea precisă,
variabilele de intrare, numărul de terminale, tipul lor, tipuri de comunicaţie numeroase nu
permit scrierea programelor pentru toate variantele în forma clasică.
Tabelul 7.1 sumarizează posibilele utilizări ale sistemului expert.

Inteligenţa Artificială Cap.7. Sisteme Expert
79
Tabelul 7.1
Problema
Soluţia
Precisă şi stabilă
Precisă, dar evoluează
frecvent
Fluctuantă într-un
domeniu bine
stabilit
Cunoscută
Programare clasică
SE uşor de actualizat
ca urmare a evoluţiei
SE pentru că se poate
adapta la fiecare
problemă
Necunoscută
SE pentru găsirea
soluţiei, apoi abandonat
în favoarea programării
clasice
SE pentru căutarea
soluţiei, apoi adaptat
pentru exploatare
SE pentru căutarea
soluţiei, uşor de
exploatat pentru că se
adaptează la problema
precisă
7.2.4. Etape ale realizării unui sistem expert
Paralel cu derularea procesului de transfer al experienţei, procesul de realizare a unui
sistem expert poate fi descompus în trei perioade:
A. Un studiu de fezabilitate realizat mai întâi cu ajutorul unei machete de sistem expert;
B. Realizarea prototipului - vizează construirea unui prototip pe care se experimentează
diferitele moduri de reprezentare a cunoştinţelor, mecanismele de inferenţă realizate;
C. În final, sistemul expert este realizat pornind de la prototip. Dacă rezultatele sunt
satisfăcătoare şi structura sistemului realizat ca prototip, permite obţinerea eficacităţii maxime,
urmează etapa de industrializare.
Fig. 7.5. Etapele dezvoltării sistemului expert
În fig. 7.5 se reprezintă cele cinci faze aferente transferului de cunoştinţe în conjuncţie cu
cele trei etape de dezvoltare. Aceasta arată că studiul de fezabilitate este foarte restrâns, însă
dezvoltarea prototipului şi experimentarea reprezintă părţi importante ale procesului de
construcţie. Diferenţa între machetă şi prototip nu poate fi foarte clară, însă, precis prin prototip
se înţeleg subansambluri ale sistemului expert final pe când macheta este total independentă.
Identificare
Conceptualizare
e
Formalizare
Implementare
Validare Industrializare
Prototip
Studiu
de
fezabilitate

Inteligenţa Artificială Cap.7. Sisteme Expert
80
Etapa de prototip permite verificarea rapidă (două sau patru luni) dacă pentru problema
dată se justifică utilizarea sistemului expert. Ea presupune realizarea unei machete care nu
rezolvă decât câteva cazuri tipice. Macheta este realizată fără a urmări aspecte legate de
optimizarea timpului de răspuns şi a memoriei ocupate, sau de validarea formalismului utilizat.
Inginerul de cunoştinţe utilizează pentru aceste reprezentări simple şi flexibile, nuclee existente
fără să urmărească validarea formalismului utilizat.
La finalul acestui studiu, problema trebuie să fie clar definită, permiţând să se ia o decizie
asupra desfăşurării ulterioare a lucrării. Soluţii distincte ale problemei trebuiesc testate şi
comparate pe parcursul dezvoltării prototipului (care poate fi o extensie a machetei). Pentru
aceasta, cel mai comod de utilizat sunt sistemele expert cadru. Acest prototip trebuie, în
majoritatea cazurilor să rămână modest în principiu, el va fi abandonat atunci când inginerul de
cunoştinţe are o idee precisă asupra dezvoltărilor viitoare ale sistemului expert pe baza
experienţelor realizate. În final, este preferabilă abandonarea prototipului, modificările nu pot
garanta eficacitatea sistemului, chiar dacă prototipul este la un moment dat mult mai bine
cunoscut.
Pentru ilustrare să considerăm o comparaţie imaginară: extensia unui prototip (sau a unei
machete) este similară cu aceea de a mări un cart pentru a obţine o maşină de formula I. Aceasta
nu va atinge niciodată performanţele unei maşini construite în acest scop, deficienţele provenind
din însăşi arhitectura cartului. Diferenţa esenţială între această etapă şi etapele precedente rezidă
în faptul că la acest nivel se ştie foarte exact ce facem şi cum facem. Se procedează acum la o
rescriere a prototipului testat în etapa anterioară urmărind satisfacerea condiţiilor de eficacitate.
Baza de cunoştinţe continuă să evolueze pe parcursul acestei faze încorporând cazuri reale şi din
ce în ce mai complexe. Sistemul expert începe să devină utilizabil înainte ca baza de cunoştinţe
şi obiectivul fixat iniţial să fie realizat complet.
Dezvoltarea în varianta clasică descompune problema în subprobleme realizate
independent unele de altele. Din contră, abordarea de viitor este abordarea experimentală şi
incrementală a machetei, prototipului sau a tuturor elementelor. Se observă în varianta clasică
descompunerea în subprobleme cu rezolvarea acestora în paralel. Astfel rezolvarea este limitată,
subproblemele fiind parcurse independent. Construcţia printr-un proces experimental şi
incremental este bazată pe luarea în consideraţie la anumite etape a tuturor subproblemelor într-o
manieră detaliată.
Multe companii se găsesc astăzi la sfârşitul etapei A, o machetă a fost realizată, însă
problemele nu au fost clar delimitate. Dacă decizia de trecere la etapa B era luată (şi multe sunt
deja luate) partea cea mai importantă începe aici. Ca efect, un studiu asupra domeniului va fi
necesar şi indispensabil. El permite determinarea cunoştinţelor utilizate de expertul uman şi
maniera de a le reprezenta, sprijinindu-se pe experienţa deja acumulată în acest domeniu (faza de
conceptualizare, formalizare). Această etapă este importantă căci ea condiţionează urmarea
studiului. Lucrurile care sunt efectuate (reprezentarea cunoştinţelor, utilitare, mecanism de
inferenţă) determină caracteristicile sistemelor expert viitoare şi performanţele lor. Primele
rezultate ale studiului pe teren, permit enunţarea criteriilor de căutare a utilitarelor utilizate în
dezvoltarea sistemului expert.
Prototipul obţinut, deci baza de cunoştinţe nu trebuie să fie voluminoasă, ea serveşte doar
ca suport de decizie pentru autorizarea trecerii la faza următoare. Etapa C începe prin
determinarea utilitarelor corespunzătoare realizării finale (ce pot fi aceleaşi cu cele ale fazei B).

Inteligenţa Artificială Cap.7. Sisteme Expert
81
Realizarea acestei etape se sprijină pe prototipul construit în etapa precedentă insistând pe
eficacitatea performanţelor. Baza de cunoştinţe a SE final se măreşte lent pe măsura avansării
proiectului, prin noi cunoştinţe şi prin rezultatele testelor ce demonstrează validitatea coerenţei
cunoştinţelor. Trebuie amintit că faza de extracţie a cunoştinţelor este lungă şi delicată, ea
consumă o mare parte din timpul total de realizare a sistemului expert.
7.3. De la sistemele de producţii la sistemele expert.
Un mic exemplu
Există o asemănare între structura sistemelor expert şi cea a sistemelor de producţii
prezentate în capitolul precedent. Această asemănare nu este o simplă întâmplare, sistemul de
producţii fiind precursorul sistemului expert. De fapt, Newell şi Simon au elaborat modelul
sistemului de producţii în ideea modelării raţionamentului uman.
Dacă privim structura sistemelor expert prin prisma sistemelor de producţii, baza de
cunoştinţe este o mulţime de reguli. În sistemul expert, producţiile (condiţie, acţiune) sunt
organizate ca reguli, de forma
Regula x: if precondiţii
then concluzie,
condiţia regulii de producţie constând în precondiţiile regulii (partea if), iar acţiunea în concluzia
regulii (partea then). Sistemul rezolutiv al sistemelor expert, acel "inference engine", este
corespondentul ciclului de corespondenţă şi control al sistemelor de producţii.
Ca şi în cazul sistemelor de producţii se pot implementa algoritmi de căutare înainte sau
înapoi. Multe probleme par a fi mai natural implementate utilizând o strategie de căutare înainte. În
situaţii când datele iniţiale ale problemei sunt date şi este dificil de a formula un ipotetic goal,
datele iniţiale sunt plasate în memoria de lucru şi sistemul va utiliza o strategie de căutare înainte.
Sistemele expert utilizează de regulă strategia de căutare inversă (goal-driven expert
system). Iniţial, obiectivul (starea goal) este plasat în memoria de lucru. Sistemul unifică această
stare cu concluziile regulilor din baza de cunoştinţe, selectând o regulă şi plasând premizele
acesteia în baza de cunoştinţe. Acest pas are drept efect descompunerea problemei în subgoal-uri
mai simple. Procesul continuă, premizele adăugate în baza de date devenind noi subgoal-uri ce vor
fi unificate cu concluziile regulilor sistemului. Astfel, pornind de la starea goal şi încercând apoi
verificarea premizelor, sistemul are o comportare asemănătoare cu raţionamentul uman
(verificarea anumitor ipoteze în vederea tragerii unei anumite concluzii).
În sistemele expert, unele subgoal-uri sunt deseori rezolvate prin chestionarea utilizatorului
asupra faptului respectiv. Cazurile în care sistemul solicită "ajutorul" utilizatorului depind de la o
implementare la alta. Astfel, la generarea sistemului expert se pot preciza acele întrebări la care
sistemul va cere răspunsul utilizatorului. Alte sisteme expert cer ajutorul utilizatorului în cazul în
care un subgoal nu poate fi unificat cu nici una din concluziile regulilor din baza sa de cunoştinţe.
Pentru claritatea celor discutate, în continuare să ne imaginăm un mic sistem expert pentru
diagnosticul unei pene de automobil:
Regula 1: if
motorul se alimentează and
demarorul învârteşte arborele cotit,

Inteligenţa Artificială Cap.7. Sisteme Expert
82
then problema este bujiile.
Regula 2: if
demarorul nu învârteşte arborele cotit and
luminile nu se aprind
then problema este bateria sau cablurile.
Regula 3: if
demarorul nu învârteşte arborele cotit and
luminile se aprind
then problema este demarorul.
Regula 4: if
este carburant în rezervor and
este carburant în carburator
then motorul se alimentează.
Să presupunem că sistemul expert este solicitat pentru diagnosticarea unei pene de
automobil, utilizatorul plasând în baza de cunoştinţe întrebarea:
"problema este X" problem(X).
Trei din regulile sistemului expert sunt aplicabile: regula 1, regula 2 şi regula 3. Dacă
rezolvarea conflictului se face în favoarea regulii cu numărul cel mai mic (prima regulă aplicabilă),
atunci regula 1 va fi declanşată. Aplicarea acestei reguli va avea drept consecinţă instanţierea
variabilei X cu valoarea "bujiile" şi premizele regulii 1 vor fi copiate în memoria de lucru (fig.
7.6). Sistemul va încerca deci să analizeze ipotetica cauză că bujiile ar fi defecte .
De remarcat, că regula 1 are două premize şi amândouă dintre acestea trebuie să fie
îndeplinite pentru a se trage concluzia respectivă. Premizele sunt ramurile unui nod AND al
arborelui de deducţie, reprezentând descompunerea problemei (stabilirea faptului că bujiile sunt
defecte) în subprobleme (stabilirea faptelor că "motorul se alimentează" şi "demarorul învârteşte
arborele cotit"). Se poate aplica apoi regula 4, a cărei concluzie este echivalentă cu faptul că
motorul se alimentează cu combustibil. Aplicarea acestei reguli va avea drept efect adăugarea
premizelor corespunzătoare în memoria de lucru (fig. 7.7). În acest moment în memoria de lucru
sunt trei piese de cunoaştere (carburant în rezervor, carburant în carburator, demarorul învârteşte
arborele cotit) care nu pot fi unificate cu concluzia nici uneia din regulile sistemului (fig. 7.8).
Memoria de lucru
problema este X
Reguli:
regula 1
regula 2
regula 3
regula 4
Fig. 7.6. Starea iniţială a sistemului expert

Inteligenţa Artificială Cap.7. Sisteme Expert
83
Astfel, sistemul expert va întreba utilizatorul despre veridicitatea acestora. Dacă utilizatorul
confirmă că toate cele trei premize sunt adevărate, sistemul expert va stabili faptul că bujiile sunt
defecte ("problema este bujiile"), diagnosticând cu succes pana de automobil şi indicând eventual
modul de soluţionare.
Acesta este desigur un exemplu foarte simplu. Nu numai că baza de cunoştinţe este foarte
redusă, dar sunt ignorate o serie de aspecte privind implementarea reală a unui astfel de sistem.
1) Regulile sunt formulate în limbaj natural ci nu într-un limbaj formal de reprezentare.
2) De asemenea, implementarea reală trebuie să incorporeze un mecanism de backtracking. În
exemplul considerat, dacă prin alegerea regulii 1 nu se poate dovedi că bujiile sunt defecte,
mecanismul de backtracking va determina revenirea în punctul în care ultima regulă a fost
selecţionată în vederea alegerii alteia dintre regulile aplicabile (ex. regula 2).
În urma procesului de căutare este generat graful AND/OR ilustrat în fig. 7.12. Sistemul
explicativ are la bază tocmai acest graf. Memorând evoluţia sistemului expert, sistemul explicativ
utilizează un algoritm de trasare pentru a răspunde la întrebări .
În general, unui sistem expert i se pun două tipuri de întrebări: De ce? şi De unde? (sau
Cum?). Utilizatorul pune întrebarea "de ce?" sistemului expert atunci când acesta din urmă cere
anumite informaţii utilizatorului. Întrebarea "de ce?" având semnificaţia "de ce întrebi acest fapt ?",
sau "de ce trebuie să cunoşti acest lucru ?". Răspunsul la întrebarea "de ce?" este de fapt regula
curentă ce a fost declanşată. Prin întrebarea "Cum ?", utilizatorul poate cere sistemului expert să
justifice cum a dedus anumite informaţii "De unde ai această informaţie ?", sau "Cum ai ajuns la
Memoria de lucru
-motorul se alimentează
-demarorul învârteşte
arborele cotit
-problema este bujiile
Reguli:
regula 1 *
regula 2
regula 3
regula 4
Fig. 7.7 Starea sistemului expert după aplicarea regulii 1
Fig. 7.8. Starea sistemului expert după aplicarea regulii 4
Memoria de lucru
-combustibil în rezervor*
-combustibil în carburator*
-motorul se alimentează
-demarorul învârteşte arborele cotit*
-problema este bujiile*
Reguli:
regula 1
regula 2
regula 3
regula 4*

Inteligenţa Artificială Cap.7. Sisteme Expert
84
această concluzie ?". Răspunsul constă, de această dată, în secvenţa de reguli care au generat
subgoal-ul respectiv.
Pentru exemplificare, să considerăm că sistemul expert pentru diagnosticul penelor de
automobil este prevăzut cu un subsistem explicativ şi, să presupunem, că în urma investigaţiilor
preliminare s-a ajuns în situaţia ilustrată în fig. 7.8. Sistemul expert începe dialogul cu utilizatorul
întrebându-l asupra noilor subgoal-uri apărute în memoria sa de lucru:
Este carburant în rezervor ?
Da
Este carburant în carburator ?
Da
Demarorul învârte arborele cotit ?
De ce
Aici, răspunsul "De ce?" al utilizatorului înseamnă "de ce vrei să ştii acest lucru ?". Sistemul expert
va răspunde:
S-a stabilit că:
1. Motorul se alimentează,
deci, dacă
2. demarorul învârteşte arborele cotit,
atunci problema este bujiile.
Deoarece utilizatorul a răspuns afirmativ la primele două întrebări, regula 4 a fost aplicată,
îndeplinindu-se astfel prima premiză a regulii 1. Când utilizatorul a pus întrebarea "De ce?",
sistemul încerca să stabilească cea de a doua premiză a regulii 1. Deşi, explicaţia sistemului este,
după cum se poate constata, doar o exprimare mai naturală a regulii curente, aceasta dă totuşi
o explicaţie foarte clară asupra scopului urmărit prin chestionarea utilizatorului. Să presupunem că
dialogul continuă în modul următor:
De ce se alimentează ?
De data aceasta utilizatorul a întrebat sistemul de unde ştie că motorul se alimentează cu
combustibil. Răspunsul constă în trasarea raţionamentului care a condus la această concluzie.
Trasarea se face începând cu subgoal-ul curent şi mergând în ordine inversă spre ipoteze.
Răspunsul sistemului este de felul următor:
Aceasta este o consecinţă a regulii 4:
if carburant în rezervor, and
carburant în carburator
then motorul se alimentează
carburant în rezervor: confirmată de utilizator,
carburant în carburator: confirmată de utilizator.
REZUMAT
1. Sistemele expert sunt programe aplicative de inteligenţă artificială bazate pe cunoaştere
specializată de nivel înalt, nivel atins în societate de cei mai competenţi experţi umani ai
domeniilor aplicative ce se implementează în aceste sisteme.

Inteligenţa Artificială Cap.7. Sisteme Expert
85
2. Denumirea de "sisteme expert" derivă din capacitatea acestor programe de a egala unele
din performanţele de gândire şi de intuiţie pe care experţii umani le obţin atunci când
aplică o astfel de cunoaştere pentru rezolvarea unor probleme complexe din domeniul de
expertiză.
3. Din punct de vedere funcţional un sistem expert este definit ca un program ce oferă
cunoştinţe pentru obţinerea rezultatelor taskurilor dificile rezolvate uzual de experţii umani.
Din punct de vedere structural şi arhitectural SE au următoarele caracteristici: a) sunt
construite în general pentru focalizarea taskurilor cu gamă limitată de aplicabilitate; b)
există o separare explicită între cunoştinţe şi metodele de raţionare utilizate în vederea
obţineri unor concluzii pe baza cunoştinţelor; c) sunt capabile să explice propriile acţiunii şi
linii de judecată.
4. Subsistemele definitorii ale unui Sistem Expert sunt: a) Baza de cunoştinţe; b) Baza de
fapte; c) Mecanismul de inferenţă; d) Modulul de explicaţii; e) Modulul de comunicaţie; f)
Modulul de achiziţie a cunoştinţelor.
5. Sistemele expert se pot împărţi în trei mari categorii: a) sisteme expert de clasificare –
interpretare; b) Sisteme expert de control (monitorizare); c) sisteme expert de anticipare.
TEST DE AUTOEVALUARE
1. Un sistem expert reprezintă:
a. Un program algoritmic elaborat de colectiv de experţi umani.
b. Un program care asistă expertul uman în rezolvarea problemelor de înaltă dificultate.
c. Un program care este capabil să raţioneze similar unui expert uman.
2. Baza de cunoştinţe a unui sistem expert reprezintă o structură de date care conţine:
a. Ansamblul datelor specializate furnizate de către expertul uman.
b. Ansamblul datelor obţinute la un moment dat prin rularea programului.
c. Ansamblul general al datelor şi cunoştinţelor.
3. Rolul principal al mecanismului de inferenţă într -un sistem expert este:
a. Supraveghează rezolvarea problemei şi intervine în caz de blocare.
b. Alege strategia de control şi elaborează planul de rezolvare a problemei.
c. Achiziţionează date de la utilizator şi de la expertul uman.
4. Prin metacunoaştere se înţelege:
a. Cunoaşterea în domeniul de specialitate al sistemului expert.
b. Un ansamblu de metode de memorare a datelor furnizate de expertul uman.
c. Cunoaşterea despre cunoaşterea însăşi.
5. Ingineria cunoaşterii are ca obiectiv principal:
a. Programarea cunoaşterii.
b. Captarea şi reprezentarea cunoaşterii.
c. Testarea sistemelor expert.
6. Reprezentarea prin condiţii de tipul (dacă A este adevărat la un moment T, atunci A este lansat în
execuţie la momentul T+Q) se utilizează în sisteme expert:
a. de clasificare-interpretare.
b. de control (monitorizare).
c. de anticipare.

Inteligenţa Artificială Cap.7. Sisteme Expert
86
7. Rolul principal al prototipului unui sistem expert constă în:
a. Testarea diverselor moduri de reprezentare a cunoştinţelor şi mecanisme de inferenţă.
b. Identificarea calităţilor sistemului expert după implementarea industrială a acestuia.
c. Identificarea fezabilităţii proiectului de sistemului expert.
8. Justificarea soluţiilor obţinute de sistemul expert la problemele utilizatorilor se obţine prin:
a. Sistemul explicativ.
b. Sistemul de comunicare.
c. Sistemul rezolutiv.
9. Datele utilizatorului şi rezultatele intermediare produse în cursul procedurii de deducţi e sunt
înregistrate în:
a. Baza de date.
b. Baza de cunoştinţe.
c. Baza de fapte.
10. Un sistem expert este recomandat a fi creat şi utilizat în cazul în care:
a. Problema este cunoscută, iar soluţia este cunoscută.
b. Problema prezintă incertitudini şi nu există experţi în domeniu.
c. Domeniul problemei evoluează frecvent, iar soluţia este necunoscută.
Răspuns
1. c 3. b 5. b 7. a 9. a
2. a 4. c 6. b 8. a 10. c