Sunteți pe pagina 1din 180

Zenovic GHERASIM Cătălina-Lucia COCIANU

SISTEME EXPERT ÎN ECONOMIE

Universitatea SPIRU HARET


Descrierea CIP a Bibliotecii Naţionale a României
GHERASIM, ZENOVIC
Sisteme expert în economie/ Zenovic Gherasim, Cătălina-Lucia
Cocianu. – Bucureşti, Editura Fundaţiei România de Mâine, 2005
Bibliogr.
ISBN 973-725-396-5
180 p.; 20,5 cm

I. Cocianu, Cătălina-Lucia
004.891:33

© Editura Fundaţiei România de Mâine, 2005

Redactor: Cornelia PRODAN


Tehnoredactor: Marcela OLARU
Coperta: Cornelia PRODAN

Bun de tipar: 31.10.2005; Coli tipar: 11,25


Format: 16/61×86

Editura şi Tipografia Fundaţiei România de Mâine


Splaiul Independenţei, Nr. 313, Bucureşti, S. 6, O. P. 83
Tel./Fax.: 316 97 90; www.spiruharet.ro
e-mail : contact@edituraromaniademaine.ro

Universitatea SPIRU HARET


UNIVERSITATEA SPIRU HARET

Zenovic GHERASIM Cătălina-Lucia COCIANU

SISTEME EXPERT ÎN ECONOMIE

EDITURA FUNDAŢIEI ROMÂNIA DE MÂINE


Bucureşti, 2005

Universitatea SPIRU HARET


4

Universitatea SPIRU HARET


CUPRINS

Introducere …………………………………………………………. 9

I. DEFINIREA, LOCUL, OBIECTIVELE ŞI STRUCTURA


SISTEMELOR EXPERT ……………………………………… 11
1.1. Definirea, locul şi obiectivele sistemelor expert …………… 11
1.1.1. Inteligenţa artificială ………………………………… 11
1.1.2. Definirea sistemelor expert ………………………….. 14
1.1.3. Noţiunile de cunoaştere şi raţionament din perspectiva
sistemelor expert ……………………………………... 15
1.1.4. Locul şi obiectivele sistemelor expert în economie …. 16
1.1.5. Scurt istoric …………………………………………... 17
1.2. Structura unui sistem expert ………………………………... 18
1.2.1. Prezentarea arhitecturii unui sistem expert ………….. 18
1.2.2. Baza de cunoştinţe …………………………………… 19
1.2.3. Baza de fapte ………………………………………… 20
1.2.4. Motorul de inferenţe …………………………………. 20
1.2.5. Modulul de achiziţie a cunoştinţelor ………………… 20
1.2.6. Modulul explicativ …………………………………… 21
1.2.7. Interfaţa cu utilizatorul ……………………………….. 22
1.3. Tehnologii asociate sistemelor expert ……………………… 22
1.3.1. Sisteme fuzzy …………………………………………. 22
1.3.2. Sisteme conexioniste ………………………………… 25
1.3.3. Sisteme cu calcul evolutiv (calculul evoluţionist şi algoritmi
genetici) ………………………………………………… 28
1.3.4. Sisteme multiagent (agenţi inteligenţi) ……………….. 33
1.3.5. Sisteme multimedia ………………………………….. 36
1.3.6. Raţionamentul bazat pe cazuri ……………………….. 38
1.3.7. Raţionamentul bazat pe modele ……………………… 39
Întrebări de control ………………………………………………. 40

Universitatea SPIRU HARET


2. METODE DE REPREZENTARE A CUNOŞTINŢELOR … 42
2.1. Introducere. Noţiuni de bază specifice reprezentării cunoştinţelor 42
2.2. Tehnici de achiziţie a cunoştinţelor ………………………… 44
2.3. Elemente de calcul propoziţional …………………………... 48
2.3.1. Propoziţii compuse. Analiza propoziţiilor compuse.
Tabele de adevăr ……………………………………... 48
2.3.2. Tautologii şi contradicţii. Echivalenţe logice.
Algebra propoziţională. Forme normale ……………... 53
2.3.3. Implicaţii logice. Demonstraţii formale ……………… 58
2.4. Elemente de calcul predicaţional …………………………… 62
2.4.1. Componentele sintactice ale calculului predicaţional … 63
2.4.2. Interpretări. Validitate ………………………………... 66
2.4.3. Derivări logice ……………………………………….. 69
2.5. Reguli de producţie …………………………………………. 74
2.5.1. Reprezentarea cunoştinţelor prin reguli de producţie ... 75
2.6. Baze de date deductive ……………………………………... 81
Întrebări de control ……………………………………………….. 83

3. SISTEME EXPERT CU REGULI DE PRODUCŢIE …….. 84


3.1. Ciclul de bază al unui motor de inferenţe …………………... 84
3.2. Metode de inferenţă ………………………………………… 86
3.2.1. Metoda deductivă ……………………………………. 87
3.2.2. Metoda inductivă …………………………………….. 90
3.2.3. Metoda mixtă ………………………………………… 91
3.2.4. Metoda de control circumstanţial ……………………. 91
3.3. Baza de cunoştinţe ………………………………………….. 92
3.4. Interfaţa cu utilizatorul ……………………………………... 93
Întrebări de control ……………………………………………….. 94

4. LIMBAJUL DE PROGRAMARE TURBO PROLOG ……... 95


4.1. Noţiuni introductive. Reprezentarea cunoştinţelor în limbajul
Prolog. Clauze Prolog. Variabile şi constante ………………. 95
4.2. Strategia de căutare a soluţiilor în Prolog. Unificare
şi potrivire. Backtracking. Predicatele cut şi fail …………… 100
4.3. Mediul Turbo Prolog ……………………………………….. 110
4.4. Secţiunile programelor în Turbo Prolog …………………… 112
4.5. Operaţii de intrare/ieşire standard în mediul Turbo Prolog … 118

Universitatea SPIRU HARET


4.6. Recursivitate în Prolog. Structurile de listă şi arbore binar.
Domenii compuse …………………………………………... 120
4.6.1. Tipuri de prelucrare a listelor. Reconstrucţia listelor … 122
4.6.2. Structura de arbore binar. Domenii compuse.
Arbori de sortare ……………………………………... 128
4.6.3. Aplicaţie economică utilizând structura de listă
şi domeniile compuse ………………………………... 132
4.7. Baze de date în Turbo Prolog. Aplicaţii economice ………... 135
4.7.1. Baze de date interne ………………………………….. 136
4.7.2. Baze de date externe în mediul Turbo Prolog ………... 139
Întrebări de control ………………………………………………... 147

5. PROIECTAREA ŞI REALIZAREA SISTEMELOR EXPERT 149


5.1. Ciclul de viaţă al sistemelor expert ………………………… 149
5.1.1. Analiza preliminară …………………………………... 150
5.1.2. Modelarea conceptuală ………………………………. 154
5.1.3. Colectarea cunoştinţelor ……………………………... 155
5.1.4. Reprezentarea cunoştinţelor …………………………. 155
5.1.5. Validarea sistemului …………………………………. 156
5.1.6. Introducerea în exploatare şi menţinerea în funcţiune ... 156
5.2. Metode de modelare a sistemelor expert …………………… 157
5.3. Medii şi instrumente de dezvoltare a sistemelor expert ……. 158
5.3.1 Problematica generală ………………………………… 158
5.3.2. Generatorul de sisteme expert Exsys CORVID ……… 159
Întrebări de control ……………………………………………….. 169

Bibliografie ………………………………………………………... 171


Anexă: Abrevieri şi noţiuni utilizate în lucrare …………………... 174

Universitatea SPIRU HARET


8

Universitatea SPIRU HARET


Introducere

Lucrarea „Sisteme expert în economie” este destinată studenţilor


anului IV ai Facultăţii de Management Financiar-Contabil, specializarea
Contabilitate şi informatică de gestiune, din cadrul Universităţii Spiru Haret,
care studiază disciplina Sisteme expert de gestiune, precum şi absolvenţilor
aceleiaşi facultăţi care urmează cursurile de masterat. De asemenea, această
lucrare poate fi utilă tuturor acelora care doresc să se iniţieze şi să-şi
dezvolte abilităţile practice în rezolvarea unor probleme economice de
asistare a deciziei cu ajutorul sistemelor expert de gestiune.
În realizarea lucrării, autorii au urmărit atingerea următoarelor
obiective: fixarea noţiunilor de bază din inteligenţa artificială, în general, şi
din logică, în special; iniţierea în cunoaşterea principiilor, obiectivelor,
arhitecturii, achiziţiei cunoaşterii şi proceselor de inferenţiere (raţionament)
în cazul sistemelor expert de gestiune; câştigarea deprinderilor în folosirea
mediului de dezvoltare Turbo Prolog; cunoaşterea etapelor de realizare a
sistemelor expert de gestiune folosind metode generale şi specifice; iniţierea
în utilizarea generatorului de sisteme expert Exsys CORVID; cuprinderea
unui număr cât mai diversificat de aplicaţii economice ale sistemelor expert
de gestiune.
Se presupune că studenţii Facultăţii de Management Financiar-
Contabil, specializarea Contabilitate şi informatică de gestiune, care abor-
dează disciplina Sisteme expert de gestiune au parcurs deja cursurile de
Informatică de gestiune (baze şi Internet), Informatică de gestiune (Limbaje
şi SGBD) şi Informatică de gestiune (PSI). Aferentă lucrării, s-a editat şi o
broşură cu teste-grilă care se folosesc la examene.
Pentru întocmirea lucrării, s-au folosit numeroase referinţe
bibliografice atât din literatura autohtonă, cât şi din cea străină.
Autorii
septembrie 2005
9

Universitatea SPIRU HARET


10

Universitatea SPIRU HARET


1. DEFINIREA, LOCUL, OBIECTIVELE ŞI STRUCTURA
SISTEMELOR EXPERT

1.1. Definirea, locul şi obiectivele sistemelor expert


1.1.1. Inteligenţa artificială
Sistemele expert fac parte din ramura informaticii denumită inteli-
genţă artificială. Prin inteligenţă artificială, AI, (Artificial Intelligence) se
înţelege tehnologia informatică care priveşte simularea pe calculatorul
electronic a unor elemente ale inteligenţei umane (deducţia logică,
capacitatea de a învăţa din experienţă, obţinerea unor concluzii pe baza
unor date incomplete, recunoaşterea vorbirii etc.). Prin inteligenţă
artificială, cunoştinţele umane sunt captate şi prelucrate simbolic de un
sistem de calcul.
Inteligenţa artificială reprezintă efortul de dezvoltare a sistemelor
bazate pe calculator (atât hardware cât şi software) care se comportă ca şi
oamenii. Astfel de sisteme sunt capabile să înveţe limbaje naturale, să
îndeplinească sarcini fizic coordonate (robotică), folosesc aparatură de
percepţie care asigură informaţii despre comportamentul lor fizic şi
limbaj (sisteme de percepţie vizuală şi orală) şi emulează expertiza umană
şi luarea deciziei (sisteme expert). Astfel de sisteme ar putea, de
asemenea, să se manifeste logic, să aibă intuiţie, să raţioneze. Maşinile
inteligente reprezintă sisteme hardware care îndeplinesc sarcinile
inteligenţei artificiale. Ca urmare, elementele familiei sistemelor de
inteligenţă artificială sunt: maşinile inteligente, prelucrarea limbajului
natural, sistemele expert, robotica şi sistemele de percepţie.
Sistemele de AI de succes sunt bazate pe expertiza umană,
cunoaştere şi modele de raţionamente selectate, dar ele nu se pot
manifesta la nivelul inteligenţei umane. Sistemele de AI existente nu pot
ajunge din urmă pe cele cu soluţii noi de rezolvare a problemelor.
Sistemele existente extind puterea experţilor, dar fără a se putea substitui
11

Universitatea SPIRU HARET


acestora. Pe scurt, sistemelor de AI existente le lipseşte sensul comun şi
generalitatea naturală a fiinţei umane inteligente.
Inteligenţa umană este mult mai complexă şi mult mai largă decât
inteligenţa calculatoarelor. Un factor-cheie care face distincţia dintre
fiinţele umane şi alte animale este abilitatea fiinţelor umane de a dezvolta
asocieri şi de a folosi metafore şi analogii. Folosirea metaforei şi ana-
logiei conduce la crearea de către oameni a noi reguli, aplicarea vechilor re-
guli la noile situaţii şi, de cele mai multe ori, acţiunea intuitivă şi instictivă
în afara regulilor. Multe din ceea ce se denumeşte sens comun sau genera-
litate la fiinţa umană rezultă din abilitatea de a crea metafore şi analogii.
Inteligenţa umană cuprinde, de asemenea, o abilitate unică de a
impune un aparat conceptual asupra lumii înconjurătoare. Metaconceptele
cum sunt „cauza-şi-efectul” „timpul”, ca şi conceptele unei ordini de
nivel scăzut (ca, de exemplu, „mic dejun”, „prânz” sau „cină”) sunt toate
impuse de fiinţele umane asupra lumii care le înconjoară. Gândirea în
termenii acestor concepte şi acţiunea asupra lor reprezintă caracteristici
centrale ale comportamentului uman inteligent.
Deşi aplicaţiile de AI sunt mult mai limitate decât inteligenţa
umană, acestea prezintă mare interes pentru management şi afaceri din
următoarele motive:
ƒ conservarea expertizei care ar putea fi pierdută în situaţia
pensionărilor, demisiilor sau decesului unui expert uman cu cunoştinţe
deosebite într-un anumit domeniu;
ƒ stocarea informaţiei într-o formă activă pentru a se crea o bază
de cunoştinţe organizaţionale pe care angajaţii să o poată consulta
oricând (de exemplu, cărţi sau manuale electronice) astfel încât având la
dispoziţie această sursă, şi alte persoane interesate să poată învăţa reguli
ce nu se găsesc în cărţile în format pe hârtie;
ƒ crearea unui mecanism care nu este dependent de limitele
organismului uman, cum ar fi oboseala sau stresul. De aceea, aceste
sisteme sunt deosebit de utile managerilor în perioade de criză sau atunci
când joburile sunt periculoase pentru om din punct de vedere fizic, mental
sau al mediului în care se desfăşoară;
ƒ eliminarea rutinei şi joburilor ce produc insatisfacţie pentru om;
ƒ îmbunătăţirea bazei de date organizaţionale prin propunerea de
soluţii la problemele specifice care sunt complexe şi masive pentru a fi
analizate de fiinţele umane într-o perioadă scurtă de timp.
12

Universitatea SPIRU HARET


Raţionamentul artificial imită raţionamentul natural, specific
creierului fiinţei umane. Abordarea cognitivă a inteligenţei artificiale
(raţionamentul artificial este o încercare de reproducere a raţionamentului
natural care este o succesiune de stări şi procese mentale ce convertesc
stimulii priviţi ca date de intrare în rezultate sau date de ieşire) a permis
lui E.A. Feigenbaum să definească inteligenţa artificială ca un ansamblu
de tehnici şi metode prin care se asigură capturarea cunoştinţelor umane
şi procesarea simbolică a acestora. S-au obţinut, astfel, sisteme de ges-
tiune a bazelor de cunoştinţe, prin cunoştinţă înţelegând informaţie cu
înţeles şi informaţie care acţionează (acad. Mihai Drăgănescu). Se re-
aminteşte aici că informaţia este o dată care prezintă caracter de noutate,
iar calculatorul electronic realizează prelucrarea automată a datelor.
Prin abordarea pragmatică (modul de obţinere a raţionamentului
artificial diferă de modul oferit de modelul biologic), inteligenţa artificială
este definită ca ramură a informaticii care asigură executarea cu ajutorul
calculatorului a unor sarcini (task-uri) pe care fiinţa umană le execută, în
anumite situaţii, mai bine decât calculatorul.
În sfârşit, prin abordarea conexionistă (raţionamentul artificial este
o încercare de reproducere a raţionamentului natural care este o
succesiune de stări şi procese neuronale), informatica inteligentă este
definită ca acea parte a informaticii care realizează prelucrarea automată a
cunoştinţelor. Se reaminteşte că informatica este ştiinţa care asigură
prelucrarea automată a datelor. În varianta clasică, prelucrarea este
algoritmică (problema de rezolvat este descompusă în paşi elementari,
modul de rezolvare este descris prin dispunerea paşilor într-o anumită
ordine prin folosirea celor trei structuri fundamentale de control specifice
programării structurate - secvenţială, alternativă şi repetitivă şi obţinerea
rezultatului prin prelucrarea serială a datelor). În informatica inteligentă,
sunt prelucrate date sub formă de cunoştinţe, adică acele corelaţii logice şi
semantice dintre fapte puse în evidenţă cu ajutorul regulilor de
raţionament (inferenţiere). Prelucrarea cunoştinţelor este o prelucrare
simbolică (prelucrare nealgoritmică ce nu face diferenţa dintre date şi
programe) şi are caracter declarativ.
Dintre domeniile principale de aplicaţie ale inteligenţei artificiale
se enumeră: sistemele expert, învăţarea automată, demonstrarea automată
a teoremelor, robotica, jocurile dintre om şi calculator, traducerea
automată, recunoaşterea formelor, realitatea virtuală.
13

Universitatea SPIRU HARET


1.1.2. Definirea sistemelor expert
Sistemul expert reprezintă un sistem de programe pe calculator,
fundamentat pe metode şi tehnologii ale inteligenţei artificiale, care
stochează cunoştinţele mai multor experţi umani dintr-un domeniu bine
definit şi pe care apoi le utilizează pentru rezolvarea problemelor dificile
specifice domeniului.
Expertul uman execută acţiuni de recunoaştere, definire şi rezolvare
a problemelor specifice domeniului său de expertiză. Aceste probleme
sunt, de regulă, slab structurate (adică rezolvarea lor nu se poate face pe
cale algoritmică), incomplete, complexe, imprecise, inconsistente, incerte,
adeseori confuze şi care conţin aprecieri vagi. Expertul uman converteşte
aceste probleme din sfera expertizei în sfera cunoştinţelor comune de
specialitate.* Astfel, aceste probleme devin complete, simple, clare,
consistente, certe, precise.
Dicţionarul de calculatoare Collin consideră sistemul expert, ES
(Expert System) ca un soft care aplică cunoştinţele, sfaturile şi regulile
definite de un expert uman într-un domeniu particular, asupra datelor
utilizatorului, pentru a ajuta la rezolvarea unei probleme.
Dicţionarul de informatică Larousse defineşte sistemul expert ca un
soft ce exploatează cunoştinţele explicite relative la un domeniu de
expertiză, pentru a asigura un ajutor prin simularea comportamentului
uman în faza de analiză şi decizie.
Din definiţiile de mai sus sunt de reţinut cuvintele-cheie ale definirii
sistemelor expert: acestea reprezintă sisteme de programe pe calculator
(software); folosesc cunoştinţele ce aparţin unui expert uman (domeniu de
expertiză); asigură un ajutor în rezolvarea problemelor.
Un sistem expert prezintă următoarele caracteristici:
• relevanţa mare;
• specializarea într-un domeniu bine definit;
• natura simbolică a cunoştinţelor prelucrate;
• independenţa cunoştinţelor de mecanismul de raţionament
(inferenţiere);

*
Dorin Zaharie, Pavel Năstase, Felicia Albescu, Irina Bojan,
Florin Mihai, Liana-Anica Popa, Sisteme expert. Teorie şi aplicaţii, Editura
Dual Tech, Bucureşti, 2002.
14

Universitatea SPIRU HARET


• abordarea declarativă a cunoştinţelor;
• posibilitatea de a trata cunoştinţe incomplete şi inexacte;
• capacitatea de a explica raţionamentele efectuate;
• exploatarea dinamică a cunoştinţelor prin intermediul mecanis-
mului de raţionament;
• folosirea unor metode empirice (bazate numai pe experienţă)
alături de metode ştiinţifice în rezolvarea problemelor.
Sistemele expert asigură extinderea prelucrărilor în domenii dificil
de algoritmizat, ce sunt dominate de informaţii calitative (macro-
economic, juridic, politic, educaţional etc.).

1.1.3. Noţiunile de cunoaştere şi raţionament


din perspectiva sistemelor expert
Sistemele expert fac parte din categoria sistemelor informatice
bazate pe cunoştinţe, KBS (Knowledge-Based Systems). Dicţionarele
englez-român asigură pentru termenul englezesc knowledge cel puţin
două echivalente româneşti: cunoaştere şi cunoştinţe. Cunoaşterea, în
sensul cel mai general prezentat de DEX, reprezintă acţiunea de a
cunoaşte şi rezultatul ei. Cunoaşterea reprezintă „reflectarea în conştiinţă
a realităţii existente independent de subiectul cunoscător.”* Cunoaşterea
prezintă astfel caracter individual. Cunoştinţa, sub aspectele care
interesează în teoria sistemelor expert, este definită în acelaşi DEX prin:
1. cunoaştere; 2. (la plural) „totalitatea noţiunilor, ideilor, informaţiilor
pe care le are cineva într-un domeniu oarecare”. În sfârşit, noţiunea de
raţionament este definită în DEX ca o „înlănţuire logică de judecăţi, care
duce la o concluzie”.
Cunoaşterea, privită ca proces, şi raţionamentul reprezintă două
domenii puternic interconectate: cunoaşterea se îmbogăţeşte prin
rezultatele raţionamentului, iar raţionamentele au la bază cunoştinţe.
Altfel exprimat, cunoaşterea şi raţionamentul pot fi considerate ca o
consecinţă logică una alteia.

*
DEX, Dicţionarul explicativ al limbii române, 1996.
15

Universitatea SPIRU HARET


Abordată ca acţiune, cunoaşterea asigură stabilirea unui transfer de
informaţie de la obiect la observator.* Sub acest aspect, procesul de
cunoaştere este denumit observaţie şi asigură informaţie relativă la timpul
prezent. Informaţia obţinută pe această cale reprezintă cunoştinţe care
sunt reţinute, memorate de către subiectul cunoscător şi folosite ulterior,
singular sau prin asociere cu alte cunoştinţe (cunoştinţa este informaţie
care prezintă utilitate şi care acţionează). Cunoştinţele posedă două
componente: componenta subiectivă (asociată cu subiectul cunoscător) şi
componenta obiectivă (asociată cu obiectul cunoaşterii). Informaţia
rezultată din observaţie devine cunoştinţă dacă este tezaurizată în
memoria individuală şi, apoi, în memoria colectivă (cunoaştere).
Cunoaşterea este compusă din piese ale cunoaşterii (pieces) care
reprezintă entităţi, fiecare cu o semnificaţie anume, pe baza căreia aceste
piese ale cunoaşterii sunt capturate (achiziţionate) din ansamblul
cunoaşterii generale şi stocate în baze de cunoştinţe. Totalitatea pieselor
cunoaşterii formează un model al domeniului în care sistemul expert are
acces cu ajutorul unor proceduri de organizare, clasificare, căutare şi
recunoaştere (sistemul cognitiv).
Într-un raţionament, o judecată (premisă) este legată de o altă
judecată (concluzie) prin operaţie logică de derivare (inferenţiere). Există
mai multe tipuri de raţionament: inducţia (trecerea de la particular la
general), deducţia (trecerea de la general la particular) şi transpoziţia
(trecerea de la general la general). Piesele cunoaşterii sunt reprezentate în
memorie prin simboluri care se obţin prin abstractizarea universului real
şi trecerea în domeniul conceptual. Raţionamentul operează cu simbo-
lurile pieselor cunoaşterii.

1.1.4. Locul şi obiectivele sistemelor expert în economie


Sistemele expert pot fi utilizate ca sisteme informatice specializate
sau pot fi integrate ca subsisteme în sisteme informatice hibride, inclusiv
în sisteme informatice de asistare a deciziei (SIAD sau DSS, Decision
Support Systems) şi în sisteme informatice integrate economice, în

*
Marian Zaharia, Claudia Cârstea, Liana Sălăgean, Inteligenţa
artificială şi sistemele expert în asistarea deciziilor economice, Editura
Economică, Bucureşti, 2003.
16

Universitatea SPIRU HARET


conformitate cu concepţia holonică asupra sistemelor (două sau mai
multe sisteme autonome se pot integra, pentru a îndeplini obiective bine
definite, pe baza unor criterii prestabilite, pentru a forma un nou sistem de
referinţă denumit sistem holonic).
Principalele tipuri de sisteme expert utilizate în domeniul
economic sunt: sisteme expert destinate previziunii şi planificării (de
exemplu, previziunea structurii portofoliului de clienţi ai unei societăţi de
asigurări sau planificarea investiţiilor); sisteme expert de diagnosticare
(de exemplu, diagnosticarea situaţiei financiare a unei societăţi
comerciale sau supravegherea procesului de acordare a creditelor într-o
bancă); sisteme expert de control şi monitorizare (de exemplu, gestiunea
trezoreriei). Alte tipuri de sisteme expert (folosite în alte domenii decât
cel economic) au funcţii de depanare şi reparare, proiectare, instruire,
interpretare, simulare, clasificare. Conform unor statistici, cele mai
folosite tipuri de sisteme expert sunt cele de diagnosticare (45%), de
planificare şi previziune (25%), de control şi monitorizare (15%).

1.1.5. Scurt istoric


Sistemele expert au apărut în anii ’70 ai secolului XX, la început
pentru aplicaţii medicale şi tehnice. Dintre primele sisteme expert
realizate, se amintesc MYCIN – pentru diagnosticarea bolilor datorate
infecţiilor bacteriene şi DENDRAL – destinat spectrografiei de masă,
ambele aparţinând Universităţii Stanford din SUA; DART – pentru
depanarea calculatoarelor electronice, aparţinând firmei IBM. Ulterior,
aplicaţiile economice ale sistemelor expert au căpătat o amploare
deosebită, în special în domeniile financiar-contabil, bancar şi de
marketing (exemple: LOAN PROBE al asociaţiei de companii de audit
Big Eight – pentru auditarea împrumuturilor de la bănci,
SURVEILLANCE EXPERT al bursei din New York, destinat supravegherii
tranzacţiilor, PLAN POWER al firmei Applied Expert Systems, Inc. –
planificare financiară individuală, BUSINESSPLAN – planificare finan-
ciară pentru întreprinderi mici, ce aparţine firmei Sterling Wentworth
Corp, ANSPLAN al firmei Ansoft – planificarea firmei pe baza cotei de
piaţă şi diferenţierii produselor, FINANCIAL ADVISOR al firmei
Paliadian Software – gestionarea proiectelor de capitalizare intensivă,
PPAM al firmei Lysia – planificare de marketing pentru un singur produs).
17

Universitatea SPIRU HARET


1.2. Structura unui sistem expert
1.2.1. Prezentarea arhitecturii unui sistem expert
Arhitectura unui sistem expert cuprinde (fig.1.1.): baza de
cunoştinţe, baza de fapte, motorul de inferenţe, modulul de achiziţie a
cunoştinţelor, modulul explicativ şi interfaţa cu utilizatorul.

MODULUL DE
ACHIZIŢIE A
CUNOŞTINŢELOR

MODULUL EXPLICATIV

Fig.1.1. Arhitectura unui sistem expert

Baza de cunoştinţe şi baza de fapte formează baza de date a


sistemului expert.
Baza de cunoştinţe cuprinde date sub formă de cunoştinţe
(reprezentate prin reguli, reţele semantice, reţele neuronale, modele
hibride etc.) ale unui domeniu specializat. Aceste cunoştinţe sunt expresia
entităţilor şi a relaţiilor dintre ele din universul real.
Baza de fapte include date despre problema de rezolvat (formularea
problemei) şi fapte generate de procesul de raţionamente efectuat de
motorul de inferenţe asupra bazei de cunoştinţe.
18

Universitatea SPIRU HARET


Motorul de inferenţe (inference engine) reprezintă partea de pre-
lucrare a sistemului expert şi constituie subsistemul rezolutiv al acestuia.
Modulul de achiziţie a cunoştinţelor permite conversia cunoş-
tinţelor din forma asigurată de inginerul de cunoştinţe în forma internă de
stocare pe suport magnetic specifică sistemului de calcul (reprezentarea
cunoştinţelor). În plus, modulul de achiziţie a cunoştinţelor reprezintă şi o
interfaţă de comunicare cu baza de date a sistemului expert (către
interior) şi cu alte sisteme informatice (către exteriorul sistemului expert).
Modulul explicativ asigură prezentarea în limbaj natural a
justificării raţionamentelor executate de motorul de inferenţe şi a
întrebărilor adresate utilizatorului.
Interfaţa cu utilizatorul permite dialogul utilizatorului cu sistemul
expert, pentru introducerea datelor de intrare şi afişarea rezultatelor pentru
problema de rezolvat.
Baza de cunoştinţe, baza de fapte, modulul de achiziţie a cunoş-
tinţelor şi modulul explicativ formează subsistemul cognitiv al sistemului
expert, ca sistem bazat pe cunoştinţe, KBS (Knowledge-Based System).
Cunoştinţele realizează descrierea rezolvării unei clase de pro-
bleme. Faptele asigură descrierea aserţiunilor (afirmaţiilor) de instanţiere
a unei probleme de rezolvat ce aparţine unei anumite clase de probleme.

1.2.2. Baza de cunoştinţe


Baza de cunoştinţe cuprinde date sub formă de cunoştinţe (repre-
zentate prin reguli, reţele semantice, reţele neuronale, modele hibride
etc.), denumite şi piese ale cunoaşterii într-un domeniu specializat. Aceste
cunoştinţe (piese ale cunoaşterii) reprezintă expresia entităţilor şi a
relaţiilor dintre ele şi universul real. Crearea unei baze de cunoştinţe este
un proces complex, cu multe iteraţii şi teste, la care participă experţii
umani şi inginerii de cunoştinţe (cogniticienii) care sunt similari cu ana-
liştii de sisteme informatice.
Baza de cunoştinţe stochează cunoaşterea. Nivelul conceptual este
specific bazei de cunoştinţe şi conţine concepte, piese ale cunoaşterii
prototip (şablon) ce se referă la descrierea obiectelor standard, precum şi
modul de operare cu aceste elemente.

19

Universitatea SPIRU HARET


1.2.3. Baza de fapte
Baza de fapte include date (piese ale cunoaşterii) despre problema
de rezolvat (formularea problemei) şi fapte generate de procesul de
raţionamente efectuat de motorul de inferenţe asupra bazei de cunoştinţe.
Ca urmare, nivelul faptual specific bazei de fapte conţine, alături de
piesele cunoaşterii, enunţul problemei de rezolvat şi, eventual, rezultatele
intermediare ale procesului de inferenţiere ce sunt disponibile numai pe
durata acestui proces (cunoaştere temporară).

1.2.4. Motorul de inferenţe


Motorul de inferenţe reprezintă partea de prelucrare a sistemului
expert şi constituie subsistemul rezolutiv al acestuia. El are rolul de a
alege strategia de control cea mai potrivită tipului problemei de rezolvat,
de a realiza planul de rezolvare a problemei, de a derula acţiunile de
rezolvare a acesteia, de a verifica consistenţa paşilor de rezolvare a
problemei în raport cu obiectivele stabilite, de a comuta de pe o strategie
de control pe o alta şi de a sumariza informaţiile de control ce se referă la
mecanismele de realizare a raţionamentelor de către motorul de inferenţe.
De exemplu, în cazul sistemelor expert cu reguli de producţie, motorul de
inferenţe preia propoziţii de la intrare (prin interfaţa cu utilizatorul), caută
fapte (din baza de fapte) şi reguli (din baza de cunoştinţe) prin construirea
de raţionamente (inferenţe) şi, în final, trage o concluzie în virtutea căreia
acţionează sistemul expert.
Derularea raţionamentelor de către motorul de inferenţe se face prin
interacţiune continuă cu subsistemul cognitiv de la care cere şi primeşte
piese ale cunoaşterii (piese de cunoaştere conceptuală sau factuală). De
asemenea, prin intermediul interfeţei cu utilizatorul, motorul de inferenţe
oferă explicaţii referitoare la raţionamentele de bază executate şi la
concluziile obţinute ce reprezintă soluţia problemei de rezolvat.

1.2.5. Modulul de achiziţie a cunoştinţelor


Modulul de achiziţie a cunoştinţelor permite conversia cunoştinţelor
(piese ale cunoaşterii) din forma asigurată de inginerul de cunoştinţe în
forma internă de stocare pe suport magnetic specifică sistemului de calcul
(reprezentarea cunoştinţelor). În plus, modulul de achiziţie a cunoştinţelor
20

Universitatea SPIRU HARET


reprezintă şi o interfaţă de comunicare cu baza de date a sistemului expert
(către interior) şi cu alte sisteme informatice (către exteriorul sistemului
expert).
Modulul de achiziţie a cunoştinţelor realizează acest proces de
achiziţie, pe de-o parte prin intermediul expertului uman (introducerea de
piese ale cunoaşterii explicite), iar pe de altă parte, prin autoinstruire
(introducerea de piese ale cunoaşterii implicite) ce se realizează pe baza
experienţei anterioare şi prin mecanismele de inferenţiere (raţionament).
Atunci când se introduce o nouă piesă a cunoaşterii, modulul execută
verificări pentru a menţine consistenţa bazei de cunoştinţe. Atunci când se
constată nerespectarea restricţiilor ce au fost impuse pentru piesele
cunoaşterii, modulul semnalizează utilizatorului toate aceste necon-
cordanţe folosind pentru aceasta modulul explicativ, respectiv interfaţa cu
utilizatorul.
Deoarece bazele de cunoştinţe de dimensiuni mari ce se realizează
prin procedeul manual prezintă costuri ridicate şi fiindcă practica acestor
baze de cunoştinţe a generat necesitatea introducerii unor modificări ale
schemei iniţiale, modulul de achiziţie a cunoştinţelor a suferit numeroase
perfecţionări pentru a deservi convenabil cele două laturi ale procesului
de achiziţie a cunoştinţelor ce au fost prezentate mai sus. Astfel, au fost
realizate două componente distincte ale modulului de achiziţie a
cunoştinţelor: componenta pentru achiziţionarea de cunoaştere explicită
şi componenta de autoinstruire. Autoinstruirea bazei de cunoştinţe se
obţine prin generalizarea din exemple.

1.2.6. Modulul explicativ


Modului explicativ asigură prezentarea în limbaj natural a
justificării raţionamentelor executate de motorul de inferenţe şi a
întrebărilor adresate utilizatorului. Cu ajutorul modulului explicativ,
expertul uman poate verifica consistenţa bazei de cunoştinţe, adică
determinarea eventualelor suprapuneri (redundanţe) şi contradicţii (de
exemplu, conflicte de prioritate şi efecte secundare induse) între piesele
cunoaşterii deja existente în baza de cunoştinţe şi piesele cunoaşterii noi
ce urmează a fi introduse în bază.

21

Universitatea SPIRU HARET


1.2.7. Interfaţa cu utilizatorul
Interfaţa cu utilizatorul permite dialogul utilizatorului cu sistemul
expert, pentru introducerea datelor de intrare şi afişarea rezultatelor pentru
problema de rezolvat. De asemenea, prin intermediul interfeţei cu
utilizatorul ce asigură legătura directă a acestuia cu subsistemul cognitiv,
baza de cunoştinţe poate fi consultată şi dezvoltată în mod direct.

1.3. Tehnologii asociate sistemelor expert


Practica proiectării şi realizării sistemelor expert în economie
demonstrează că arareori aceste sisteme sunt „curate” (neamestecate cu
alte tipuri de tehnologii sau sisteme informatice), adică să existe în mod
singular, în conformitate cu principiile şi arhitecturile ES devenite deja
clasice. Ca urmare, au apărut şi se dezvoltă într-un ritm alert sistemele
inteligente hibride* care reprezintă o combinare a sistemelor expert cu
sistemele fuzzy, sistemele conexioniste, sistemele cu calcul evolutiv
(algoritmi genetici), sistemele multiagent, sistemele multimedia etc. În
realizarea sistemelor expert şi a sistemelor inteligente hibride se utilizează
şi alte tehnologii moderne, cum sunt raţionamentul bazat pe cazuri şi
raţionamentul bazat pe modele.

1.3.1. Sisteme fuzzy


Sistemele fuzzy sunt sisteme informatice bazate pe gândirea, logica
şi seturile fuzzy. Multe dintre activităţile umane sunt inexacte. Gândirea
fuzzy desemnează acel mod de gândire care utilizează termeni vagi şi
ambigui ca, de exemplu: dacă tarifele la hotel sunt mari, atunci numărul
de turişti este mic (gradul de ocupare a hotelului este mic). Termenii vagi
sunt variabile lingvistice.
Programele pe calculator tradiţionale necesită precizia de tipul da-
nu, corect-greşit, albă-neagră, cuplat-decuplat, în timp ce experienţa
umană nu poate fi redusă întotdeauna la o asemenea simplitate a

*
Ioan Andone, Sisteme inteligente hibride. Teorie. Studii de caz pentru
aplicaţii economice. Ghidul dezvoltatorului, Editura Economică, Bucureşti,
2002.
22

Universitatea SPIRU HARET


abordării. Lucrul cu două variabile logice este specific logicii clasice sau
bivalente: adevărat (True) -1 sau fals (False) - 0).
Logica fuzzy sau logica polivalentă (multivaloare) materializează
lucrul cu mai mult de două variabile logice, folosind întregul interval de
valori cuprins între 0 şi 1. De exemplu, dacă 1 este culoarea alb, iar 0 este
culoarea negru, atunci nuanţele de gri cuprinse între alb şi negru (adică
între 1 şi 0) reprezintă variabile fuzzy. Logica fuzzy, cu dezvoltare bazată
pe reguli, de dată relativ recentă în inteligenţa artificială, tolerează
imprecizia şi adesea se foloseşte pentru rezolvarea problemelor care ante-
rior erau considerate ca fiind nerezolvabile. Logica fuzzy constă dintr-o
varietate de concepte şi tehnici pentru reprezentarea şi inferenţierea
cunoştinţelor care sunt imprecise, incerte şi nesigure. Logica fuzzy poate
genera reguli care folosesc valori aproximative sau subiective şi date
incomplete sau ambigue. Printr-o exprimare logică cu o imprecizie
definită cu grijă, logica fuzzy este mai apropiată de modalitatea prin care
oamenii gândesc în prezent.
Seturile fuzzy sau mulţimile vagi sunt seturi cu limite fuzzy, ce
conţin elemente cărora li se atribuie grade de apartenenţă reprezentate
prin numere reale din intervalul [0,1]. De exemplu, culoarea de gri 28%
are gradul de apartenenţă (specificarea fuzzy) de 0.28.
În calculator, un set fuzzy se reprezintă ca o funcţie, cu maparea
elementelor cu gradele lor de apartenenţă. De exemplu, dacă se consideră
mulţimea valorilor indicatorului număr de clienţi al unei firme de turism
în lunile de primăvară (martie, aprilie şi mai) ale anilor 2002-2005,
vectorii corespunzători pentru utilizarea funcţiilor liniare din fig.1.2. se
pot scrie astfel:

Numar_de_clienti_foarte _mic=(0/0, 0.5&25, 1.0/50, 0.5/75, 0/100);


Numar_de_clienti_mic=(0/75, 0.5/100, 1.0/150, 0.5/175, 0/200);
Numar_de_clienti_mediu=(0/175, 0.5/200, 1.0/250, 0.5/275, 0/300);
Numar_de_clienti_mare=(0/275, 0.5/300, 1.0/350, 0.5/375, 0/400);
Numar_de_clienti_foarte mare=(0/375, 0.5/400, 1.0/450, 0.5/475, 0/500).

Universul discursului pentru o variabilă lingvistică este dat de


domeniul valorilor posibile pentru această variabilă. Variabila
Numar_de_clienti are domeniul de valori întregi cuprinse în intervalul
[0,500]. O variabilă lingvistică operează cu conceptul de calificatori ai
23

Universitatea SPIRU HARET


setului fuzzy ce schimbă efectul şi forma acestuia din urmă (realizează
operaţii asupra setului fuzzy). Calificatorii se formează pe bază de
adverbe ca: foarte, mai mult decât, mai puţin decât, suficient de etc.
Regula fuzzy serveşte pentru achiziţia de cunoştinţe şi reprezintă un enunţ
condiţional de forma IF a este M THEN b este N, unde a şi b sunt
variabile lingvistice, iar M şi N sunt valori lingvistice ce au fost obţinute
prin seturi fuzzy asupra discursurilor M, respectiv N. De exemplu,
Regula 1:
IF Numar_de_clienti <100, THEN Numar_de_clienti_foarte_mic.
Regula 2:
IF 100<Numar_de_clienti <200, THEN Numar_de_clienti_mic,
ş.a.m.d.

Fig.1.2. Seturile fuzzy pentru cele cinci categorii de Numar_de_clienti


ai firmei de turism

Raţionamentul fuzzy are două faze: evaluarea premizei regulii (IF)


şi aplicarea rezultatului astfel obţinut părţii de concluzie (THEN).
Procesul de mapare a unei intrări pe o ieşire pe baza seturilor fuzzy
reprezintă inferenţa fuzzy.
24

Universitatea SPIRU HARET


Sistemele fuzzy sunt larg utilizate în Japonia şi câştigă popularitate
în Satele Unite. Popularitatea lor s-a produs parţial deoarece managerii
caută ca să le poată folosi pentru a reduce costurile şi a scurta timpul de
dezvoltare a sistemelor informatice. Codul logicii fuzzy necesită mai
puţine reguli IF-THEN, conferindu-i simplitate în raport cu codurile
programelor tradiţionale.

1.3.2. Sisteme conexioniste


Sistemele conexioniste se bazează pe tehnologia reţelelor
neuronale artificiale, ANN (Artificial Neural Network). Bazele ANN au
fost formulate în anul 1943 de cercetătorii Waren McCulloch şi Walter
Pitts prin formularea principiilor neuronului artificial.
Se apreciază că în prezent a crescut interesul pentru configuraţiile
bottom-up în inteligenţa artificială prin care maşinile de calcul sunt
proiectate pentru a imita fizic prin intermediul proceselor specifice
creierului biologic. Celula nervoasă acţionează ca un comutator
stimulând alţi neuroni şi fiind stimulată la rândul ei de axonii acestora.
Axonul emană dintr-un neuron şi reprezintă o legătură activă electrică la
dendritele altor neuroni. Axonii şi dendritele reprezintă ,,firele” care
conectează electric neuronii unii cu alţii. Joncţiunea dintre axon şi
dendrită este denumită sinapsă. Acest model biologic simplu reprezintă o
metaforă pentru dezvoltarea unei reţele neuronale artificiale. O reţea
neuronală constă din hardware sau software care îşi propun să emuleze
modelele de procese ale creierului biologic.
Creierul uman are aproximativ 100 de miliarde de neuroni, iar
fiecare dintre aceştia dispune de circa 1000 de dendrite care formează
100000 miliarde de sinapse. Neuronii creierului operează în paralel, astfel
încât creierul uman poate realiza aproximativ 10 milioane de miliarde
(1016) interconectări pe secundă. Această valoare imensă depăşeşte
capacitatea oricărei maşini de calcul cunoscute sau planificată a fi
construită cu tehnologiile actuale.

25

Universitatea SPIRU HARET


Fig.1.3. Reţea neuronală artificială cu doi neuroni

Se porneşte de la premisa că neuronul funcţionează ca un circuit


simplu ale cărui intrări sunt ponderate; ponderile pozitive sunt
excitatoare, iar ponderile negative sunt inhibatoare. Suma ponderată a
intrărilor defineşte excitarea totală. Dacă această excitaţie totală depăşeşte
un prag prestabilit, se reduce activarea neuronului, iar la ieşirea f(x) a
acestuia se obţine valoarea +1 (în caz contrar, neuronul nu este activat şi
ieşirea acestuia f(x) are valoarea 0).
Funcţia de răspuns f este funcţie de modelul de reţea neuronală
adoptat. Funcţia f de răspuns este denumită şi funcţie neuronală sau func-
ţie de activare a neuronului. Funcţia f este, de regulă, o funcţie neliniară.
Reţelele neuronale sunt realizate, uzual, după o topologie cu
neuronii organizaţi pe mai multe straturi, denumindu-se astfel reţele
neuronale multistrat strat de intrare, straturi ascunse şi strat de ieşire.
Neuronii din acelaşi strat pot avea sau pot să nu aibă conexiuni între ei.
Interconectarea unei mulţimi de neuroni artificiali defineşte
perceptronul care reprezintă primul model de reţea neuronală artificială
(introdus de Frank Rosenblatt în anul 1958). Perceptronul conţinea sarcini
sinaptice ajustabile şi o funcţie neuronală f, capabilă să producă o ieşire
de +1, dacă intrarea era pozitivă şi de -1, dacă intrarea era negativă.

26

Universitatea SPIRU HARET


Reţelele neuronale artificiale (ANN) sunt reţele de modele de
neuroni ce sunt conectaţi cu ajutorul unor sinapse care se pot regla. Reţele
complexe de neuroni au fost simulate pe calculatoarele electronice.
Fig.1.3. prezintă o reţea neuronală artificială cu doi neuroni*. Rezistorii
din circuite sunt variabili şi pot fi folosiţi pentru învăţarea ANN. Când
reţeua face o greşeală (adică alege o cale nepotrivită prin reţea şi emite o
concluzie falsă), rezistenţa poate fi mărită pe câteva circuite, forţând alţi
neuroni să lucreze. Dacă acest proces de învăţare continuă pentru mii de
cicluri, maşina învaţă răspunsul corect. Altfel exprimat, ANN învaţă prin
ajustări repetate ale sarcinilor asociate neuronilor de intrare. Neuronii sunt
puternic interconectaţi şi lucrează în paralel. O ANN are mai mult noduri
senzitive şi de procesare care interacţionează continuu unele cu altele.
Modelarea neuronală dezvoltă sisteme automate inteligente
autoinstruibile (machine learning) pentru scopuri diverse, având iniţial la
dispoziţie o cantitate redusă de cunoştinţe. Prin conexiunea dintre sisteme
expert şi reţelele neuronale artificiale se obţin sistemele expert neurale,
iar prin includerea tehnicilor fuzzy, se realizează sistemele expert neuro-
fuzzy. Baza de cunoştinţe a sistemului expert neuronal este o reţea
neuronală multistrat.
Sistemele expert emulează sau modelează un expert uman ca şi cale
de rezolvare a unei probleme date, în timp ce constructorii de ANN
revendică faptul că ei nu modelează inteligenţa umană, nu programează
soluţii şi nu sprijină rezolvarea unor probleme specifice. Proiectanţii de
reţele neuronale artificiale includ inteligenţa în hardware sub forma unei
capabilităţi generalizate de a învăţa din experienţă. Dimpotrivă,
sistemele expert au o specificitate ridicată pentru o problemă dată şi nu
pot fi reinstruite uşor.
Aplicaţiile cu ANN sunt realizate în domeniile economic şi de
gestiune, medical, ştiinţei şi pentru a rezolva probleme cu clasificarea
modelelor, predicţie şi analize financiare, precum şi probleme de control
şi optimizare. ANN sunt folosite în finanţe pentru a efectua diferenţa
dintre modele într-o vastă distribuţie de date care pot sprijini firmele de
investiţii să prognozeze performanţele acţiunilor ce reprezintă capitalul

*
Laudon, K, Laudon, J, op.cit., Essentials of Management Information
Systems. Organization and Technology in the Networked Enterprise, Fourth
Editions, JWS, New York, 2001.
27

Universitatea SPIRU HARET


propriu, rating-ul obligaţiunilor sau titlurilor de credit emise de corporaţie
sau falimentul corporaţiei. În comparaţie cu sistemele expert care, de
regulă, asigură explicaţii pentru soluţiile oferite, ANN nu pot întotdeauna
să explice de ce au ajuns la o anumită soluţie particulară. De aceea, aceste
ANN nu pot întotdeauna să garanteze o soluţie completă, ajungerea la
aceeaşi soluţie prin folosirea aceloraşi date de intrare sau să garanteze
întotdeauna cea mai bună soluţie. ANN sunt foarte sensibile şi nu pot
calcula bine dacă instruirea lor acoperă un set prea mic sau prea mare de
date. În cele mai multe aplicaţii actuale, reţelele neuronale artificiale sunt
cel mai bine folosite pentru a sprijini factorii de decizie umană în locul
altor înlocuitori pentru acestea.
1.3.3. Sisteme cu calcul evolutiv
(calculul evoluţionist şi algoritmi genetici)
Algoritmii genetici fac parte din categoria mai largă denumită
algoritmi evolutivi, alături de alte concepte moderne cum sunt
programarea evolutivă, strategiile evolutive, sistemele de clasificare şi
programarea genetică.
Ideea de calcul evolutiv a fost introdusă în 1960 de către
I. Rechenberg în lucrarea Strategii evolutive (Evolutionsstrategie).
Algoritmii genetici, GA (Genetic Algorithms), au fost creaţi de John
Holland, în 1975, odată cu publicarea lucrării Adaption in Natural and
Artificial Systems la Universitatea din Michigan, SUA.
Algoritmul evolutiv reprezintă un concept prin care sunt descrise
sistemele de rezolvare a unei probleme cu ajutorul calculatorului ce
folosesc modele computaţionale ale proceselor evolutive ca elemente-
cheie în proiectarea şi implementarea lor. Aceste sisteme partajează o
bază conceptuală comună de simulare a evoluţiei structurilor individuale
prin intermediul proceselor de selecţie, mutaţie şi reproducere. Aceste
procese depind de performanţa percepută a structurilor individuale astfel
definite de un mediu. Algoritmul evolutiv menţine o populaţie a
structurilor care se dezvoltă în concordanţă cu reguli de selecţie şi alţi
operatori, referiţi ca ,,operatori de căutare” (sau operatori genetici), şi
anume: încruţişarea şi mutaţia.
Fiecare individ al populaţiei recepţionează o măsură a conformităţii
în mediu. Reproducerea este axată pe indivizii de înaltă conformitate. Se

28

Universitatea SPIRU HARET


exploatează astfel informaţia de conformitate/adaptabilitate disponibilă.
Recombinarea şi mutaţia provoacă perturbarea acestor structuri
individuale (indivizi) asigurând euristicile generale pentru exploatare.
De la abordarea simplificată şi până la cea specifică sistemelor
biologice, aceşti algoritmi evolutivi sunt suficient de complecşi pentru a
asigura mecanisme de căutare robuste şi puternic adaptive.
Generic, un algoritm evolutiv, deci şi un algoritm genetic, are
următoarea formă:
Begin algoritm evolutiv
t:=0; // iniţializarea timpului
initpopulation P(t); // iniţializarea unei populaţii aleatoare uzuale
// de structuri individuale
evaluate P(t); //evaluarea conformităţii (potrivirii) tuturor structurilor
// individuale iniţiale (indivizi) din populaţie
whilenot done do // testarea criteriului de ieşire din algoritm
// (timp, conformitate, etc)
t:=t+1; // incrementarea contorului de timp
P’:=selectparents P(t); // selectarea subpopulaţiei pentru producerea
// urmaşului
recombine P’(t); // recombinarea genelor părinţilor selectaţi
mutate P’(t); // perturbarea stochastică a populaţiei pentru
încrucişare
evaluate P’(t); // evaluarea noilor potriviri (conformităţi) ale
populaţiei
// P’
P:= survive P, P’(t); // selectarea supravieţuitorilor dintre actualele
// conformităţi (potriviri)
End algoritm evolutiv.
O iteraţie a buclei este denumită generaţie.
Algoritmul genetic (GA) reprezintă un model pentru maşina de
învăţare ce derivă din comportamentul său, de la o metaforă a proceselor
de evoluţie din natură. În interiorul maşinii de învăţare se creează o
populaţie de structuri individuale (indivizi) reprezentate de cromozomi (în
esenţă, o mulţime de şiruri de caractere) care sunt similare cu o bază de
patru cromozomi ce se întâlneşte într-un DNA. Structurile individuale din
populaţie se transformă astfel prin intermediul unui proces de evoluţie.
29

Universitatea SPIRU HARET


Codificarea informaţiei genetice este denumită genom. Algoritmul
genetic foloseşte procese stochastice (aleatoare), dar rezultatul este
nealeator.
Algoritmii genetici sunt utilizaţi, în principal, în următoarele
domenii de aplicaţie:
− sisteme de clasificare economică;
− analiza datelor şi predicţia în sisteme dinamice neliniare (cum
sunt şi sistemele economice);
− sisteme de control logic fuzzy cu autoorganizare;
− controlul traficului şi evitarea coliziunilor;
− achiziţia cunoştinţelor în sistemele de urmărire a ţintelor;
− învăţarea/antrenarea sistemului de cunoştinţe, KBS (Knowledge-
Based System);
− proiectarea reţelelor neuronale artificiale (ANN);
− traiectoria roboţilor;
− planificarea strategică;
− funcţiuni pentru crearea imaginilor.
Cele mai importante aspecte în definirea algoritmilor genetici sunt:
1. definirea funcţiei obiectiv;
2. definirea şi implementarea reprezentării genetice;
3. definirea şi reprezentarea operatorilor genetici.
În practică, implementarea modelului genetic de calcul presupune
considerarea unor masive de biţi sau caractere care reprezintă
cromozomii. Operaţiile de manipulare a biţilor permit implementarea
încrucişării, mutaţiei şi altor operaţii. Sunt considerate cazurile de
lungime fixă sau de lungime variabilă a şirului de caractere, ca obiect al
programării genetice.
La fiecare iteraţie (generaţie genetică) se caută o îmbunătăţire a
calităţii populaţiei.
Codificarea cromozomilor reprezintă una dintre problemele de bază
care trebuie rezolvate la începutul utilizării algoritmilor genetici.
Codificarea binară este cea mai utilizată şi foloseşte pentru fiecare
cromozom un şir de biţi (0 sau 1). Un astfel de exemplu este prezentat în
fig. 1.4.

30

Universitatea SPIRU HARET


Fig. 1.4. Exemplu de codificare binară a cromozomilor

Codificarea prin permutare utilizează pentru fiecare cromozom un


şir de numere astfel încât, prin permutare, generează o altă structură de
cromozom (fig. 1.5.).

Fig. 1.5. Exemplu de codificare prin permutare a cromozomilor

Codificarea prin valoare permite atribuirea pentru un cromozom a


unui şir de valori (numere reale, caractere, obiecte etc.) ca în fig.1.6.

Fig. 1.6. Exemplu de codificare prin valoare a cromozomilor

Se mai utilizează ca metodă de codificare a cromozomilor


codificarea cu arbori, prin care fiecare cromozom reprezintă un arbore cu
mai multe obiecte (funcţii, comenzi într-un limbaj de programare, de
exemplu, în LISP).
Fiecare genă are propria sa poziţie în cadrul cromozomului.
Genomul este alcătuit din toţi cromozomii (care conţin informaţia
genetică). O mulţime particulară de gene din genom este denumită
genotip.
Genele de la părinţi formează o configuraţie (structură) pentru un
nou cromozom. Urmaşul nou creat poate suferi o mutaţie (în DNA,
anumite elemente au câte un bit schimbat). Aceste schimbări sunt, în
principal, determinate de erorile apărute în procesul de copiere a genelor
de la părinţi. Pentru cazul codificării binare, câte un exemplu de

31

Universitatea SPIRU HARET


încrucişare a doi cromozomi este prezentat în fig.1.7, pentru încrucişarea
într-un singur punct (a), în două puncte (b), încrucişarea uniformă (c) şi
încrucişarea aritmetică (d).

Fig. 1.7. Exemple de încrucişare a doi cromozomi

În cazul mutaţiei genetice, biţii selectaţi sunt inversaţi (fig.1.8.).

Fig. 1.8. Exemplu de mutaţie genetică

În cazul codificării prin permutare, în fig.1.9. sunt prezentate


încrucişarea într-un singur punct (a) şi mutaţia (b).

Fig. 1.9. Exemple de încrucişare a doi cromozomi (a) şi mutaţie (b)


în cazul codificării prin permutare

În mod similar se realizează încrucişarea a doi cromozomi şi


mutaţia în cazurile codificărilor prin valoare şi cu ajutorul arborilor.
Căile de rezolvare pentru mai multe tipuri de probleme din
domeniul optimizării activităţilor economice, proiectarea produselor şi
monitorizarea sistemelor sunt adecvate pentru algoritmii genetici. Mai
multe probleme de afaceri necesită optimizarea deoarece acestea lucrează
cu obiective ca minimizarea costurilor, maximizarea profitului,

32

Universitatea SPIRU HARET


planificarea eficientă şi utilizarea resurselor. Dacă aceste situaţii sunt
foarte dinamice şi complexe, presupunând sute de variabile şi sute de
formule, algoritmii genetici pot urgenta soluţionarea problemelor
deoarece aceştia pot evalua cu rapiditate mai multe soluţii, diferite
alternative dintre care o selectează pe cea mai bună.

1.3.4. Sisteme multiagent (agenţi inteligenţi)


Sistemele multiagent sunt sisteme informatice inteligente formate
din elemente denumite agenţi inteligenţi ce compun grupuri de entităţi
inteligente aflate în interacţiune şi cooperare pentru îndeplinirea unor
obiective prestabilite. Agenţii inteligenţi execută raţionamente asupra
cunoaşterii ce se referă atât la mediul de lucru cât şi la comportamentul
celorlalţi agenţi. Ca urmare, agenţii inteligenţi nu-şi pot îndeplini sarcinile
în mod individual, ci numai în cadrul grupului din care fac parte şi în
cooperare cu celelalte grupuri de agenţi inteligenţi. Agenţii inteligenţi
reprezintă programe software care lucrează în fundal pentru a rezolva
sarcini specifice repetitive şi predictibile pentru utilizatori individuali,
procese de afaceri sau aplicaţii software. Agentul foloseşte o bază de
cunoştinţe încorporată sau instruită pentru a îndeplini sarcini sau a lua
decizii în folosul utilizatorului.
În prezent, dezvoltatorii de sisteme multiagent (cu agenţi
inteligenţi) se axează cu precădere pe sistemele multiagent cu
autoorganizare, cu adaptabilitate dinamică autonomă.
Similitudinea agenţilor inteligenţi cu clasele de obiecte conduce la
utilizarea metodelor şi tehnicilor din analiza şi proiectarea orientată pe
obiect. Există funcţionalităţi generale (specifice domeniului) şi
funcţionalităţi specifice fiecărui agent inteligent.
Fazele rezolvării unei probleme cu ajutorul agenţilor inteligenţi
sunt *: faza de construire a organizaţiei de agenţi inteligenţi, faza de
generare a planului de acţiuni, faza de alocare a sarcinii, faza de integrare
a planului şi faza de execuţie a planului. Pentru fiecare fază sunt definite
strategii corespunzătoare, astfel că acţiunile din fiecare fază urmează
strategia adoptată. O acţiune este definită printr-un comportament

*
Ioan Andone, Al. Ţugui, Sisteme inteligente în management,
contabilitate, finanţe, bănci şi marketing, Editura Economică, Bucureşti, 1999.
33

Universitatea SPIRU HARET


(exteriorizabil sau mascat) al agenţilor inteligenţi. Spaţiul soluţiei
rezultate în urma parcurgerii unei faze este format strategia şi acţiunile
selectate în cadrul acestei faze pentru problema de rezolvat. Fiecare agent
inteligent acţionează în cadrul organizaţiei sale dacă această organizaţie
este bine specificată atât în timpul proiectării cât şi în timpul execuţiei.
De asemenea, combinarea strategiilor de urmat se poate realiza dacă sunt
determinate strategiile de urmat în cadrul fiecărei faze şi sunt definite
dependenţele dintre aceste strategii ale fazelor pentru rezolvarea
problemelor. În alocarea sarcinilor către agenţii inteligenţi sunt avute în
vedere modul în care au fost distribuite resursele şi capabilităţile agenţilor
de a rezolva aceste sarcini.
Faza de construire a organizaţiei de agenţi inteligenţi constă în
specificarea manierei în care agenţii inteligenţi interacţionează unul cu
celălalt. Pentru fiecare obiectiv prestabilit al agentului inteligent sau
pentru grupul de agenţi inteligenţi sunt obţinute structuri organizaţionale
adecvate.
Faza de generare a planului de acţiuni conţine modul în care agen-
ţii inteligenţi iau decizii cu privire la acţiunile pe care urmează să le exe-
cute. Selecţia acţiunilor este fundamentată prin metode ca planificarea
ierarhică sau căutarea bazată pe operator. Pe lângă tehnicile clasice, se
folosesc tehnici moderne de generare a planurilor ca planificarea multi-
agent, sistemul bazat pe tabla neagră, planificarea parţial-globală etc.
Faza de alocare a sarcinii constă în repartizarea unei sarcini acelor
agenţi care vor fi implicaţi în soluţionarea problemei de rezolvat.
Alocarea sarcinilor către agenţii inteligenţi se efectuează în concordanţă
cu capabilităţile acestor agenţi de a participa la rezolvarea sarcinilor
alocate şi în concordanţă cu modul prestabilit de repartizare a resurselor şi
de distribuire a cunoaşterii. Dacă un agent inteligent are un eşec în
îndeplinirea sarcinii, se revine la fazele anterioare (faza de generare a
planului de acţiuni, respectiv faza de construire a organizaţiei de agenţi
inteligenţi). Tehnicile şi strategiile ce pot fi utilizate pentru parcurgerea cu
succes a acestei faze sunt abordarea organizaţională, protocoalele de
contractare reţea, strategia bazată pe resurse, strategia bazată pe
distribuirea cunoaşterii, strategia bazată pe costuri etc.
Faza de integrare a planului semnifică fuzionarea planurilor şi
programelor individuale ale agenţilor inteligenţi ce sunt implicaţi în
soluţionarea problemei de rezolvat, cu eliminarea conflictelor dintre
34

Universitatea SPIRU HARET


aceste planuri şi programe. În caz de eşec, se procedează la reluarea
fazelor anterioare. Tehnicile utilizate în desfăşurarea acestei faze de
integrare a planului sunt planificarea multiagent, planificarea parţial-
globală etc.
Faza de execuţie a planului constă în execuţia şi monitorizarea
tuturor activităţilor efectuate de agenţii inteligenţi.
Agenţii inteligenţi sunt utilizaţi cu preponderenţă în managementul
informaţional din domeniile financiar-contabil, bancar, resurselor umane,
producţie, vânzări, telecomunicaţii, transporturi, proiectare etc. Agenţii
inteligenţi pot fi programaţi pentru a lua decizii având la bază preferinţele
individuale ale utilizatorului, de exemplu, ştergerea poştei electronice,
planificarea întâlnirilor sau navigarea în reţele interconectate pentru a găsi
cel mai ieftin zbor de la Bucureşti la Londra pentru deplasarea delegaţiei
unei firme la o întâlnire de afaceri. Agentul poate fi asignat la un asistent
digital personal ce colaborează cu utilizatorul în acelaşi mediu de lucru.
El poate ajuta utilizatorul prin îndeplinirea sarcinilor în folosul
utilizatorului, instruirea sau învăţarea utilizatorului, ascunderea
complexităţii sarcinilor dificile, sprijinirea utilizatorului în colaborarea cu
alţi utilizatori sau monitorizarea evenimentelor şi procedurilor.
Există mai multe aplicaţii cu agenţi inteligenţi în sistemele de
operare, software de aplicaţie, sisteme de poştă electronică, software de
calcul mobil şi instrumente de reţea. De exemplu, wizard-urile (ghizii)
fundamentaţi ca instrumente software Microsoft Office, au fost incluşi în
facilităţi pentru a arăta utilizatorilor cum se îndeplinesc diferitele sarcini,
cum sunt formatarea documentelor sau crearea graficelor, precum şi
pentru a anticipa momentul când utilizatorii au nevoie de asistenţă.
Un interes special pentru afaceri prezintă agenţii inteligenţi care
asistă navigarea în reţele, inclusiv Internet, pentru căutarea şi regăsirea
informaţiilor. Aceşti agenţi inteligenţi (roboţi) sunt utilizaţi în aplicaţiile
de comerţ electronic pentru a spijini consumatorii să găsească produsele
pe care aceştia le doresc şi pentru a-i asista în compararea preţurilor şi a
altor caracteristici. Deoarece aceşti agenţi mobili sunt personalizaţi,
semiautonomi şi rulează permanent, ei pot sprijini procesul de efectuare a
plăţilor şi de a reduce astfel costurile tranzacţiilor. Agenţii pot sprijini
persoanele interesate în folosirea unui filtru şi regăsirea informaţiei despre
produsele de interes, evaluarea produselor competitive în concordanţă cu
criteriile prestabilite şi negocierea cu vânzătorii a preţului şi a termenului
35

Universitatea SPIRU HARET


de livrare. În aceeaşi idee, se pot regăsi informaţii referitoare la unele
produse comerciale, dacă fabricanţii acestora le mai produc şi la ce preţuri
le oferă.
Se apreciază că în viitor comerţul electronic (B2C – Business-to-
Consumer, B2B - Business-to-Business şi C2C– Customer-to-Consumer)
bazat pe agenţi inteligenţi va deveni mult mai răspândit odată cu creşterea
puterii şi flexibilităţii agenţilor şi a tehnologiei Web. Creşterea folosirii
limbajului de marcare extensibil, XML (Extensible Markup Language), a
limbajului Java şi a obiectelor distribuite va permite agenţilor inteligenţi
şi altor procese automate să acceseze şi să interacţioneze mult mai uşor cu
informaţia bazată pe Web.

1.3.5. Sisteme multimedia


Informaţia este prelucrată în sistemele de calcul sub formă de date
şi se prezintă sub formate diverse: texte statice, tabele, grafice, imagini
statice, imagini în mişcare (animate), imagini video, sunet etc. Reunirea
corelată şi logică a acestor formate ale informaţiei a condus la realizarea
platformelor multimedia integrate cu diverse componente hard şi soft. Pe
aceste platforme multimedia integrate este necesară rezolvarea unui set de
probleme de mare complexitate referitoare la memorarea, clasificarea şi
regăsirea informaţiilor, accesarea online, asimilarea şi învăţarea
cunoştinţelor acumulate. Se apreciază că această complexitate şi dinamică
a informaţiilor în formate multimedia şi hipermedia pot fi „stăpânite” prin
integrarea sistemelor expert cu facilităţi multimedia. Interfeţele inteligente
pentru aplicaţii asigură soluţionarea măririi dimensiunilor aplicaţiilor,
utilizarea unor arhitecturi eficiente şi capabilităţi de raţionament
(inferenţiere) specifice sistemelor inteligenţei artificiale. Aceste interfeţe
inteligente dispun de capacitatea de a procesa datele specifice mediilor
hipertext şi de a oferi rezultate după metodologia specifică sistemelor
bazate pe cunoştinţe.
Sistemele multimedia aplicative folosesc percepţia umană pentru
îmbunătăţirea comunicării interumane prin intermediul reţelelor de
calculatoare şi de comunicaţii. Sistemele hipermedia folosesc o
metodologie specifică (în fapt, o tehnologie ce asociază hipertextul cu
multimedia) de realizare a legăturilor între diferite contexte ce se găsesc
în reţelele de texte şi documente electronice.
36

Universitatea SPIRU HARET


Sistemele intelimedia reprezintă integrarea unui sistem de
inteligenţă artificială (sistem bazat pe cunoştinţe) într-un sistem
hipermedia în scopul managementului dinamic, partajării şi utilizării
cunoştinţelor şi informaţiilor multimedia (text, video, audio).
Implementarea sistemelor intelimedia se realizează cu ajutorul agenţilor
inteligenţi care servesc pentru filtrarea, identificarea şi afişarea datelor
sub formă de informaţii şi cunoştinţe.
Din punctul de vedere al utilizatorului, s-au formulat trei abordări
ale integrării dintre hipermedia şi sistemele expert*: (a) sistem expert
asistat de un sistem multimedia, (b) sistem multimedia asistat de un
sistem expert şi (c) sistem realizat prin integrare complementară a
sistemului expert cu sistemul multimedia.
a) Sistemul expert asistat de un sistem multimedia are ca tehnologie
dominantă cea specifică sistemului expert. Ajutorul acordat sistemului
expert de către sistemul multimedia constă în asistenţă pe timpul fazelor
de dezvoltare, instruirea cogniticienilor, realizarea diagramelor etc.
Cunoaşterea care este extrasă dintr-o sursă nedocumentară (experţii
umani) se prezintă în mai multe formate multimedia, cum sunt
interviurile redactate în documente-text, interviurile înregistrate în format
audio-video, modele mentale sub forma reprezentărilor grafice sugestive
etc. De asemenea, cunoaşterea care este extrasă dintr-o sursă
documentară (cărţi, ziare şi reviste, baze de date, arhive, filme etc.) se
prezintă sub diferite formate multimedia (text, imagine statică, animaţie,
film audio-video etc.). Întreaga cunoaştere captată, extrasă şi colectată
este prezentată sub o formă accesibilă sistemului expert care este asistat
de către sistemul multimedia.
b) Sistemul multimedia asistat de un sistem expert are ca principal
reper ajutorul din partea sistemului expert pentru obţinerea mixajelor
prezentărilor multimedia (mixaje de grafică în text, mixaje de film în text,
mixaje de text în film etc.).
c) Sistemul realizat prin integrarea complementară a sistemului
expert cu sistemul multimedia permite utilizarea concomitentă, de pe
principii de egalitate a celor două tehnologii pentru execuţia unor sarcini
şi activităţi ale aceleiaşi aplicaţii informatice.

*
Ioan Andone, op.cit.
37

Universitatea SPIRU HARET


Dezvoltarea acestor sisteme inteligente performante este nemijlocit
legată şi de progresul pe care-l înregistrează bazele de date inteligente.
Aplicarea lor se realizează cu precădere în diagnostic, servicii, vânzări,
management informaţional, modelare şi simulare, educaţie.

1.3.6. Raţionamentul bazat pe cazuri


Sistemele expert achiziţionează cunoştinţele de la experţii individuali
umani, dar organizaţiile economice dispun, de asemenea, de o cunoaştere
şi o expertiză colectivă pe care le-au acumulat în decursul anilor. Această
cunoaştere organizaţională poate fi capturată şi memorată folosind
raţionamentele bazate pe cazuri. În raţionamentele bazate pe cazuri,
CBR (Case-Based Reasoning), descrierile experienţelor trecute ale
specialiştilor umani, reprezentate ca şi cazuri, sunt memorate într-o bază
de cunoştinţe pentru o regăsire ulterioară când utilizatorul întâlneşte un
nou caz cu parametri similari. Sistemul caută pentru cazurile memorate
cu caracteristicile problemei similare cu ale cazurilor noi, găseşte cel mai
apropiat caz şi aplică soluţiile de la vechiul caz pentru cel nou. Soluţiile
considerate de succes sunt atribuite noului caz şi ambele sunt stocate
împreună cu alte cazuri în baza de cunoştinţe.
Un caz este format din minimum două părţi: partea de prezentare a
problemei (problema) şi partea de descriere a soluţiei (soluţia). Din caz
fac parte, de asemenea, partea de gestiune a problemei (numărul de caz şi
explicaţia), partea de descriere a contextului a problemei, partea de
evaluare a problemei etc. Raţionamentul bazat pe cazuri este orientat pe
procesul denumit modelul R4 (Regăsire, Reutilizare, Revizuire şi
Rememorare). Regăsirea cazurilor similare din baza de cazuri este
urmată de reutilizarea unuia dintre ele, după care se produce revizuirea
soluţiei adoptate pentru soluţionarea problemei şi, în final, rememorarea
cazului nou în baza de cazuri. Există mai multe metode pentru regăsirea
cazurilor (de exemplu, metoda kd-trees – a arborilor decizionali şi metoda
Case Retrieval Nets – ce foloseşte cunoaşterea contextuală din
e-business).
Raţionamentul bazat pe cazuri se aplică în diagnosticare,
planificare, interpretare, clasificare, instruire, proiectare.

38

Universitatea SPIRU HARET


1.3.7. Raţionamentul bazat pe modele
Raţionamentul bazat pe modele reprezintă o tehnologie informatică
aplicată în dezvoltarea sistemelor bazate pe cunoştinţe (KBS) care constă
în dirijarea utilizatorilor asupra unui model formal ce se aplică în procesul
de soluţionare a problemelor complexe de rezolvat. Prin această
tehnologie se adaugă inteligenţă în acest proces. Incertitudinea din
universul real de modelat este materializată la trecerea în lumea
conceptuală specifică inteligenţei artificiale prin caracteristici ca posibil –
imposibil, probabil - improbabil, complet – incomplet, calificabil –
incalificabil etc. Pentru această incertitudine sunt realizate modele
adecvate care servesc pentru rezolvarea problemelor bine structurate şi cu
obiective clar definite. Raţionamentele utilizate sunt de tip euristic şi sunt
însoţite de modele, în special în informatica de gestiune (managerială).
Raţionamentul bazat pe modele se foloseşte în corelaţie cu
conceptele de sistem, structură, comportament şi funcţie. Se reaminteşte
că sistemul este o unitate cu o anumită funcţie, unitate care are în
structura sa subsisteme şi care prezintă un anumit comportament. De
regulă, managerii utilizează abordări calitative ce sunt urmate de modele
calitative cauzale. Modelele sunt o aproximaţie a sistemelor din universul
real şi sunt realizate prin diverse metode şi tehnici ce se deosebesc prin
nivelul de detaliere asigurat. Modelele reprezintă o descriere a sistemului,
scop în care se foloseşte un limbaj de modelare. Cu ajutorul modelului
sunt detaliate structura şi comportamentul sistemului, după care sunt
efectuate analiza, diagnosticul, predicţia asupra acestui sistem.
Raţionamentul calitativ cauzal devine performant şi se foloseşte în
situaţiile când nu există modele asupra sistemelor fizice din universul
real.
Categoriile de modele sunt diferenţiate în funcţie de scop,
cunoaştere disponibilă, resurse, instrumente şi motoare de inferenţe.
Astfel, se deosebesc modele declarative şi procedurale, modele
cantitative şi calitative, modele continue şi discontinue, modele certe şi
incerte, modele statice şi dinamice. Modelele declarative sunt acele
modele care descriu relaţiile dintre elementele, procesele şi fenomenele
universului real prin declaraţii, fără a se face referire la alte direcţionări
ale acestor relaţii.

39

Universitatea SPIRU HARET


Raţionamentul bazat pe modele prezintă avantaje legate de
posibilitatea agregării informaţiilor, consistenţa aplicaţiilor, îmbunătăţirea
puterii de raţionament a expertului uman, interpretarea mai uşoară a
rezultatelor, dezvoltarea favorizată a regulilor euristice. Raţionamentul
bazat pe modele poate înlocui în unele situaţii sistemele expert bazate pe
reguli, iar în alte situaţii realizează completarea acestor sisteme expert,
contribuind eficient la realizarea sistemelor inteligente hibride*.
Raţionamentul bazat pe modele foloseşte cunoaşterea fundamentală
(structurală sau comportamentală) specifică domeniului problemei de
rezolvat. Cunoaşterea structurală serveşte, de regulă, la rezolvarea
problemelor de diagnostic. De exemplu, în diagnosticul financiar sunt
utilizate relaţii calitative care se referă la dinamica activităţilor
organizaţiei economice, cum sunt:

If cifra de afaceri este situată la 10% peste pragul de rentabilitate


Then starea firmei este instabilă.

Întrebări de control
1. Care sunt abordările inteligenţei artificiale?
2. Care sunt domeniile principale de aplicaţie ale inteligenţei
artificiale?
3. Cum se defineşte o problemă dificil de rezolvat?
4. Cum se defineşte un sistem expert?
5. Care sunt caracteristicile unui sistem expert?
6. Care sunt principalele tipuri de sisteme expert folosite în
domeniul economic?
7. Care sunt motivele folosirii sistemelor expert în management şi
afaceri?
8. Ce sunt cunoaşterea şi raţionamentul din perspective sistemelor
expert?
9. Care sunt cele două componente ale cunoştinţelor?

*
Ioan Andone, op.cit.
40

Universitatea SPIRU HARET


10. Care este structura unui sistem expert?
11. Din ce este compus subsistemul rezolutiv?
12. Ce este motorul de inferenţe?
13. Prezentaţi conceptul de bază de cunoştinţe.
14. Ce este baza de fapte?
15. Care este rolul modulului de achiziţie a cunoştinţelor?
16. La ce serveşte modulul explicativ?
17. Ce este sistemul bazat pe cunoştinţe?
18. Ce sunt sistemele inteligente hibride?
19. Ce este inferenţierea?
20. Ce sunt sistemele fuzzy?
21. Ce reprezintă variabilele lingvistice şi care este legătura lor cu
sistemele expert?
22. Ce înseamnă termenul fuzzy?
23. Ce este gândirea fuzzy?
24. Ce este logica fuzzy?
25. Care este diferenţa dintre logica fuzzy şi logica clasică?
26. Ce este setul fuzzy?
27. Ce este regula fuzzy?
28. De cine este dat universul discursului pentru o variabilă
lingvistică?
29. Cum se reprezintă setul fuzzy într-un sistem de calcul?
30. Ce reprezintă calificatorii?
31. Ce este inferenţa fuzzy?
32. Care sunt fazele unui raţionament fuzzy?
33. Ce sunt sistemele conexioniste?
34. Ce este un algoritm genetic?
35. Ce sunt sistemele multiagent?
36. Prezentaţi esenţa raţionamentelor bazate pe cazuri.

41

Universitatea SPIRU HARET


2. METODE DE REPREZENTARE A CUNOŞTINŢELOR

Cercetările efectuate la începutul anilor ’80 asupra sistemelor


bazate pe cunoştinţe (KBS – Knowledge-Based Systems) au avut ca
rezultat definirea unor soluţii viabile din punct de vedere comercial pentru
probleme din viaţa reală. Astfel, sunt identificate metode de dezvoltare
ale KBS într-o manieră sistematică, similar oricărui sistem informaţional.

2.1. Introducere. Noţiuni de bază specifice


reprezentării cunoştinţelor
Din mai multe puncte de vedere, reprezentarea cunoştinţelor este
considerată problema-cheie a sistemelor expert şi inteligenţei artificiale.
Nu întâmplător, referirea cea mai utilizată a acestor produse este cea de
sistem bazat pe cunoştinţe – un sistem expert este caracterizat şi
particularizat prin cunoştinţele pe care le înglobează.
Deşi cunoştinţele sunt specifice fiecărei discipline şi/sau domeniu
de activitate, există o serie de caracteristici generale care definesc modul
de achiziţie, modalităţile de acces la cunoştinţe, respectiv soluţii de
utilizare a lor în anumite probleme care nu corespund în totalitate cu
cazurile de achiziţie – metode de învăţare, stocare, regăsire şi
raţionament, bazate pe cunoştinţe. Aceste caracteristici generale ale
cunoştinţelor sunt încorporate în reprezentarea lor.
În procesul de învăţare, respectiv în cadrul operaţiilor de intrare, un
sistem uman, respectiv un sistem artificial stochează în memorie, în
anumite forme de reprezentare, obiecte, acţiuni, concepte, situaţii, precum
şi relaţiile dintre ele. Cunoştinţele astfel acumulate sunt utilizate în
regăsire (rememorare), combinare (asociere) şi/sau pentru efectuarea unor
anumite raţionamente. În situaţia în care computerul ar fi un mecanism
similar creierului uman, lucru care nu este din păcate adevărat,
42

Universitatea SPIRU HARET


reprezentarea problemelor ar fi, biologic şi psihosocial, o problemă de
identificare a sistemului optim de imitare.
Reprezentarea cunoaşterii (knowledge reprezentation) include
domeniul cunoaşterii, limbajul de reprezentare a cunoaşterii şi strategiile
(mecanismele) de inferenţiere (raţionament). Domeniul cunoaşterii
desemnează ceea ce este necesar a fi reprezentat din domeniul problemei
de rezolvat. De exemplu, domeniul economic cuprinde cunoaşterea
despre entităţile reale şi proprietăţile acestora (agenţi economici, procese,
fenomene, evenimente, indicatori, bunuri etc.), politici şi strategii, norme
şi normative, decizii, tranzacţii economice, contexte de activitate, opinii
de audit, planuri şi programe (cu obiective, cu eşalonare în timp, pe
persoane şi activităţi), proceduri de lucru etc. Limbajul de reprezentare a
cunoaşterii asigură metodele, modelele şi modul cum trebuie realizată
reprezentarea cunoaşterii. Strategiile (mecanismele) de inferenţiere arată
modul în care se pot utiliza regulile. Regulile permit descrierea modului
în care se pot folosi faptele. Faptele, prezentate sub formă de aserţiuni,
sunt constituite din informaţiile primare care realizează descrierea
elementelor domeniului cunoaşterii. Într-o manieră similară cu structurile
de date, se definesc structurile de cunoştinţe care servesc pentru
memorarea şi prelucrarea cunoştinţelor printr-un proces de inferenţiere
(raţionament).
Metodele de reprezentare a cunoştinţelor sunt clasificate în funcţie de:
• natura şi tipul cunoştinţelor (valabile sau perimate, certe sau
incerte, complete sau incomplete, pot/nu pot să fie modificate etc.);
• domeniul cunoaşterii (există domenii pentru care unele metode
de reprezentare a cunoştinţelor nu se pot aplica);
• clasa de cunoştinţe (materiale sau conceptuale);
• modelul specific luat în considerare;
• existenţa excepţiilor ce pot apare la reprezentarea cunoştinţelor;
• tipul problemei de rezolvat.
Metodele de reprezentare a cunoştinţelor se divid, în funcţie de
modelul specific, în metode declarative şi metode procedurale. Metodele
declarative cuprind logica predicatelor (calculul predicatelor), cadrele
(frames) sau obiectele structurate, reţelele semantice. Reprezentările
bazate pe logica (calculul) predicatelor fac parte, alături de calculul
propoziţional, din grupul metodelor bazate pe logică. Logica este o ştiinţă
43

Universitatea SPIRU HARET


a demonstraţiei care se ocupă cu stabilirea condiţiilor corectitudinii
gândirii, precum şi a formelor şi a legilor generale de realizare a
raţionamentelor corecte. Cunoştinţele sunt reprezentate sub formă de
propoziţii, predicate şi expresii de calcul logic. Reprezentările bazate pe
logica (calculul) predicatelor asigură ca o propoziţie să fie divizată în
obiecte (argumente) şi predicate (aserţiuni despre atributele obiectelor)
prin folosirea enunţurilor logicii simbolice (matematice). Aserţiunea,
considerată la modul general [DEX], este un enunţ care este dat ca
adevărat (true). Reprezentările bazate pe calculul propoziţional au la bază
o logică simbolică pentru manipularea propoziţiilor. Propoziţia este un
enunţ care poate avea valoare logică (adevărat, true sau fals, false).
Propoziţia compusă este formată din propoziţii elementare legate prin
intermediul conectorilor logici ↔ (echivalenţă), → (implicaţie), ^(AND
adică ŞI – conjuncţie), v(OR adică SAU – disjuncţie), ~(NOT adică NU –
negaţie). Reprezentarea cunoştinţelor prin cadre (frames) este o metodă
structurată de reprezentare (Minsky, 1975) care ia în considerare atât
informaţia declarativă cât şi procedurală prin captarea sub forma unor
relaţii predefinte. Cadrele (frames) sau obiectele structurate asigură
reprezentarea structurilor fixe sub formă de structuri arborescente, atât
pentru stocarea cunoştinţelor, cât şi pentru organizarea acestora în ierarhii
sau reţele succesorale (cu moştenire). Reprezentarea cunoştinţelor prin
reţele semantice are la bază un model grafic cu structură în reţea. Reţeaua
semantică este un graf orientat în care nodurile se folosesc pentru
reprezentarea conceptelor (entităţi sub formă de obiecte), iar arcele
servesc pentru reprezentarea legăturilor specifice conceptelor (relaţiilor
dintre obiecte). Metodele procedurale cuprind regulile de producţie.
De un real succes se bucură, în ultima vreme, şi metodele bazate
pe reţele neuronale, scenarii, arbori decizionali, liste, reţele Petri
stochastice etc.

2.2. Tehnici de achiziţie a cunoştinţelor


Abordarea utilizată în achiziţia cunoştinţelor determină atât
calitatea acestora, cât şi cantitatea de efort depusă pentru achiziţionare;
tehnica selectată afectează performanţa şi resursele necesare dezvoltării
sistemului expert considerat. În cadrul acestei secţiuni vom realiza o
trecere în revistă a tehnicilor sociale şi psihosociale utilizate pentru
44

Universitatea SPIRU HARET


achiziţionarea cunoştinţelor. Astfel, au fost dezvoltate o serie de tehnici şi
instrumente de achiziţie a cunoştinţelor, fiecare având limitări, respectiv
avantaje specifice.
Interviul este cea mai des utilizată metodă pentru obţinerea
cerinţelor în analiza şi proiectarea sistemelor informaţionale. Este, de ase-
menea, larg utilizată pentru obţinerea cunoştinţelor necesare dezvoltării
sistemelor expert. În general, există două forme de intervievare. Varianta
primară, nestructurată, implică sesiuni întrebare-răspuns, iniţiate de obicei
prin întrebarea „Cum rezolvi problema aceasta?” şi urmate de întrebări
prin care sunt solicitate explicaţii şi clarificări ulterioare. Avantajul
utilizării intervievării nestructurate, libere, rezidă în faptul că expertul
care achiziţionează cunoştinţele poate obţine informaţii neprevăzute.
Dificultăţile utilizării acestei tehnici constau în general în faptul că, cu cât
repondentul este mai specializat în domeniul în cauză, cu atât cantitatea
de informaţie obţinută de la el este mai mică.
Interviul structurat este orientat pe scop şi impune organizarea
comunicării iniţiate în scopul achiziţiei cunoştinţelor. Spre deosebire de
interviul liber, structurarea, prevăzută prin formularea clară a scopului
fiecărei întrebări, reduce gradul de subiectivism datorat repondentului,
specialist în domeniul respectiv. Utilizarea acestei tehnici presupune
existenţa unor chestionare proiectate conform unui tipar informaţional. În
particular, chestionarele sunt utile în determinarea obiectelor domeniului,
a relaţiilor şi incertitudinilor prezente în sistem.
Observarea este o modalitate evidentă prin care este „descoperit”
modul în care este rezolvată o problemă reală şi implică urmărirea efec-
tivă a „algoritmului” aplicat în obţinerea soluţiei. Tehnica de achiziţionare
a cunoştinţelor prin observare permite expertului repondent să lucreze în
mediul lui obişnuit, fără a fi întrerupt şi oferă avantajul obţinerii de
cunoştinţe complexe şi corecte despre problema în cauză. O limitare
majoră a tehnicii observării este aceea că raţionamentul dezvoltat de
expertul repondent în scopul rezolvării problemei considerate nu este în
general ,,înregistrat” în nici un fel de persoana care achiziţionează
cunoştinţele.
Analiza protocolului, numită şi ,,gândirea cu voce tare” este o
formă de analiză a datelor cu origine în psihologia clinică. Aplicare
acestei tehnici revine la descrierea scenariului problemei în cauză şi
chestionarea expertului repondent asupra raţionamentului efectuat pe
45

Universitatea SPIRU HARET


parcursul rezolvării problemei date. Procesul de „gândire cu voce tare”
este înregistrat video şi apoi analizat. Scopul este de a identifica tipurile
de obiecte cu care a operat repondentul, atributele acestor obiecte, relaţiile
dintre obiecte, precum şi tipul de inferenţe dedus din aceste relaţii. Deşi
tehnica de analiză a protocolului prezintă o serie de avantaje, nu poate fi
aplicată în toate situaţiile reale.
Pe lângă metodele clasice pentru achiziţionarea cunoştinţelor
descrise mai sus, au fost dezvoltate tehnici de achiziţie a cunoştinţelor în
colaborare. Tehnicile presupun existenţa mai multor experţi repondenţi şi
mai multor persoane care să achiziţioneze datele şi sunt aplicate în cazul
sistemelor expert de complexitate ridicată. Metodele clasice prezentate
pot fi utilizate în achiziţia cunoştinţelor în colaborare prin intervievarea
sau observarea secvenţială a fiecărui expert al echipei de repondenţi.
Achiziţia serială a cunoştinţelor are ca principale dezavantaje: procesul de
achiziţie este lent; strategiile de rezolvare a problemei considerate şi
cunoştinţele utilizate de experţii repondenţi pot fi în conflict; experţii care
soluţionează problema se pot stimula reciproc şi nu pot colabora. În
consecinţă, este recomandată utilizarea uneia din următoarele tehnici de
achiziţie a cunoştinţelor în colaborare.
Brainstorming-ul este o metodă de grup pentru dezvoltarea ideilor
de rezolvare a problemei considerate şi exploatarea semnificaţiei acestora.
Tehnica este proiectată să stimuleze gândirea şi să determine obţinerea
unor idei în soluţionarea problemei propuse astfel încât fiecare expert să
poată fie să găsească o modalitate de rezolvare, fie să exploreze soluţiile
determinate alţi membri ai echipei. Interacţiunea prin schimbul de idei
este încurajată pentru a îmbunătăţi şi rafina soluţia determinată de întregul
grup.
Tehnica Delphi utilizează o serie de chestionare pentru agregarea
cunoştinţelor, raţionamentelor sau opiniilor experţilor repondenţi (de
obicei anonimi). Contribuţiile individuale sunt împărţite cu întregul grup
prin utilizarea rezultatelor fiecărui chestionar în construirea chestionarului
din etapa următoare. Un avantaj evident al tehnicii Delphi este obţinerea
imediată a diferite predicţii. De asemenea, prin aplicare tehnicii Delphi
pot fi identificate scopuri şi obiective, pot fi generate alternative posibile
şi pot fi stabilite priorităţi. Un instrument hypermedia care utilizează
tehnica Delphi de achiziţie a cunoştinţelor a fost deja implementat
(Wolstenholme and Corben, 1994).
46

Universitatea SPIRU HARET


Group Support Systems (GSS) este un ansamblu de sisteme de
calculatoare şi comunicaţii care facilitează comunicarea şi coordonarea în
cadrul grupului de experţi şi asistă procesul decizional. În cadrul GSS
sunt implementate diferite tehnici de achiziţionare de cunoştinţe în
colaborare: brainstorming, NGT, Delphi, precum şi tehnica votului
(Liebowitz, 1996).
Metodologia de achiziţionare a cunoştinţelor este în continuare
descrisă sintetic, prin următorul tabel (Liebowitz, 1996).

Metodologia de achiziţie a datelor


Etape Activităţile fiecărei etape
Înţelegerea domeniului
Planificarea Identificarea experţiolor din domeniu şi a
utilizatorilor
Definirea scopului problemei
Identificarea tipului de aplicaţie
Dezvoltarea modelelor procesului
Planificarea sesiunii de achiziţionare a
cunoştinţelor (KA*)
Extragerea Explicarea abordării KA
Discutarea obiectivelor sesiunii KA
Conducerea sesiunii KA
Detalierea experţilor
Analiza Analiza rezultatelor sesiunii KA
Obţinerea reprezentării cunoştinţelor
Dezvoltarea scenariilor de test
Verificarea
Verificarea cunoştinţelor cu ajutorul
experţilor repondenţi

* KA (Knowledge Acquisition) = achiziţionarea cunoaşterii sau cunoştinţelor.


2.3. Elemente de calcul propoziţional

47

Universitatea SPIRU HARET


Se numeşte propoziţie orice afirmaţie care este fie adevărată, fie
falsă. Propoziţiile pot fi atomi sau propoziţii compuse. O propoziţie atom
este o propoziţie ce conţine o singură variabilă propoziţională sau o
singură constantă propoziţională. Propoziţiile non-atomice se numesc
compuse şi conţin cel puţin un conector logic. Conectorii logici sunt:
┐(NOT) – negarea, ∧ (AND) – conjuncţia („şi” logic), ∨ (OR) –
disjuncţia („sau” logic), ⇒ condiţională („dacă – atunci”) şi ⇔
bicondiţională sau echivalenţa ( „dacă şi numai dacă”).
Tabelul de adevăr al unei propoziţii este mulţimea valorilor de
adevăr ale propoziţiei, pentru toate valorile de adevăr posibile ale
atomilor ce o compun. Conectorii logici sunt descrişi prin intermediul
tabelei de adevăr astfel:

P Q ¬P P∧Q P∨ Q P⇒ Q P⇔ Q
T T F T T T T
T F F F T F F
F T T F T T F
F F T F F T T

2.3.1. Propoziţii compuse. Analiza propoziţiilor compuse.


Tabele de adevăr
Propoziţiile compuse sunt formate din propoziţii legate prin
intermediul conectorilor logici. Orice propoziţie poate fi exprimată
verbal, grafic sau prin intermediul unui şir de caractere. O propoziţie
exprimată prin intermediul unui şir de caractere se numeşte expresie
logică. Expresiile logice pot fi şi ele, la rândul lor, atomi sau expresii
compuse. O expresie atom conţine o singură variabilă sau constantă
propoziţională şi reprezintă o propoziţie atom. Expresiile compuse conţin
cel puţin un conector logic şi reprezintă propoziţii compuse.
O propoziţie se numeşte literal dacă este de forma Q sau ( ¬ Q),
unde Q este variabilă propoziţională. Expresiile Q şi ( ¬ Q) se numesc
literali complementari.

48

Universitatea SPIRU HARET


În multe situaţii, expresiile logice pot fi ambigue. De exemplu,
expresia P ⇒ Q ∧ R poate fi interpretată ca P ⇒ (Q ∧ R ) sau
(P ⇒ Q ) ∧ R . Pentru a evita ambiguităţile fie sunt parantezate
expresiile componente, fie sunt definite reguli de grupare a subexpresiilor
componente. În continuare vom utiliza parantezele pentru evitarea
ambiguităţilor, astfel: ¬ P este înlocuită cu ( ¬ P) şi PconectorQ este
înlocuită cu (PconectorQ), pentru conector ∈ {∧,∨, ⇒, ⇔} . Rezultatul
parantezării complete a unei expresii este notat în continuare cu fpe.
Expresiile care conţin identificatori ce reprezintă expresii se
numesc scheme. De exemplu, dacă A = (P ∧ Q ) şi B = (P ∨ Q ) , atunci
(A ⇒ B) este o schemă care reprezintă expresia ((P ∧ Q ) ⇒ (P ∨ Q )) .
Regulile de construcţie ale unei fpe sunt:
1. Orice expresie atom este fpe;
2. Dacă A este fpe, atunci (¬A ) este fpe;
3. Dacă A şi B sunt fpe, atunci următoarele scheme sunt fpe:
(A ∧ B) , (A ∨ B) , (A ⇒ B) şi (A ⇔ B) ;
4. Nici o altă expresie nu este fpe.
Dacă E este o expresie compusă, atunci scopurile conectivei
principale sunt subexpresii, numite subexpresii imediate ale lui E;
evident, subexpresiile imediate ale unei expresii sunt, la rândul lor,
expresii. O subexpresie a unei expresii E este definită astfel:
1. E este o subexpresie a lui E, numită improprie;
2. Dacă E = (¬A ) , atunci A este subexpresie a lui E;
3. A şi B sunt subexpresii ale expresiilor (A ∧ B) , (A ∨ B) ,
(A ⇒ B) şi (A ⇔ B) ;
Subexpresiile definite la 2 şi 3 se numesc subexpresii imediate.
4. Dacă A este o subexpresie a lui E şi C este o subexpresie a lui
A, atunci C este o subexpresie a lui E;
5. Nici o altă expresie nu este subexpresie a lui E.

49

Universitatea SPIRU HARET


Expresiile complet parantezate sunt metode de reprezentare
neambiguă a propoziţiilor compuse. Toate propoziţiile compuse sunt
formate din subpropoziţii de tip negare, conjuncţie, disjuncţie, condi-
ţională sau echivalenţă. Separarea afirmaţiilor (propoziţii compuse) în
părţi componente (subpropoziţii) se numeşte analiză. Rezultatul analizei
poate fi reprezentat grafic, prin intermediul unui arbore de analiză.
Arborii de analiză sunt construiţi top-down. Astfel, nodul rădăcină este
etichetat cu expresia iniţială. Fiecare nod din arbore este fie nod terminal,
dacă este etichetat cu un atom, fie nod neterminal, părinte al nodurilor
care conţin ca etichete scopurile expresiei cu care este etichetat nodul
părinte.
De exemplu, arborele de analiză al propoziţiei „Dacă A câştigă
olimpiada, toată lumea îl va admira şi va deveni bogat; în caz contrar,
toate eforturile lui au fost zadarnice” este:
„Dacă A câştigă olimpiada, toată lumea îl va admira şi va deveni bogat;
în caz contrar, toate eforturile lui au fost zadarnice”

„Dacă A câştigă olimpiada, „Dacă A nu câştigă, toate


toată lumea îl va admira şi eforturile lui au fost
va deveni bogat” zadarnice”

„A câştigă „toată lumea îl „A nu „Eforturile


olimpiada” va admira şi va câştigă lui A au fost
deveni bogat” olimpiada” zadarnice”

„Toată „A este „A câştigă


lumea îl bogat” olimpiada”
admiră”

50

Universitatea SPIRU HARET


În scopul eliminării unor paranteze din forma fpe a unei expresii
logice astfel încât expresia să rămână fără ambiguităţi, toţi conectorii
logici sunt consideraţi asociativi la stânga şi sunt introduse următoarele
precedenţe:

Precedenţă maximă ¬



Precedenţă minimă ⇔

Stabilirea valorilor de adevăr ale unei expresii logice pe baza


valorilor de adevăr ale atomilor ce o compun este realizată în două etape:
construcţia arborelui de analiză şi construcţia tabelei de adevăr pe baza
atomilor şi regulilor de formare ale subexpresiilor ce compun expresia
logică dată, conform arborelui de analiză.
De exemplu, evaluarea expresiei (P ∧ ¬Q ) ⇒ ¬R este realizată
astfel. Arborele de analiză asociat este:

P ∧ ¬Q ⇒ ¬R

P ∧ ¬Q ¬ R

¬ Q

51

Universitatea SPIRU HARET


Rezultă tabela de adevăr:
P Q R ¬Q P ∧ ¬Q ¬R (P ∧ ¬Q ) ⇒ ¬R
T T T F F F T
T T F F F T T
T F T T T F F
T F F T T T T
F T T F F F T
F T F F F T T
F F T T F F T
F F F T F T T
Argumentări logice
Începem secţiunea prin prezentarea unui exemplu de argumentare
logică corectă.
1. Dacă cererea creşte, atunci firmele se dezvoltă
2. Dacă firmele se dezvoltă, atunci angajează muncitori.
3. Dacă cererea creşte, companiile angajează muncitori.
Argumentarea conţine trei propoziţii. Propoziţiile 1 şi 2 se numesc
premisele argumentării iar propoziţia 3 se numeşte concluzie. Dacă
premisele argumentării sunt acceptate (sunt considerate corecte), atunci şi
concluzia trebuie acceptată deoarece decurge logic din premise, deci
argumentarea este corectă. Exemplul de mai sus face parte din tipul de
argumentări corecte, numite silogism ipotetic:
1. Dacă P, atunci Q
2. Dacă Q, atunci R
3. Dacă P, atunci R
Alte categorii de argumentări corecte sunt:
Silogismul disjunctiv:
1. P sau Q
2. Not Q
3. P
Modus ponens:
1. Dacă P, atunci Q
2. P
3. Q
52

Universitatea SPIRU HARET


2.3.2. Tautologii şi contradicţii. Echivalenţe logice. Algebra
propoziţională. Forme normale
Prin utilizarea tabelelor de adevăr, expresiile logice sunt clasificate
în: tautologii, contradicţii şi contingente.
O expresie logică este tautologie dacă are valoarea de adevăr T,
pentru toate asignările posibile ale atomilor care o compun. Vom nota
„Expresia A este tautologie” prin „╞A”. De exemplu, dacă
A = P ∨ ¬P , atunci ╞A. Afirmaţia rezultă pe baza tabelei de adevăr:

P ¬P A = P ∨ ¬P
T F T
F T T

Dacă A este o tautologie care conţine variabila P, poate fi construită


o nouă tautologie A’ prin înlocuirea variabilei P cu o expresie logică
arbitrară. De exemplu, deoarece A = P ∨ ¬P este tautologie, rezultă că
expresia A ' = (P ∧ Q ) ∨ ¬(P ∧ Q ) este tautologie. Afirmaţia poate fi
generalizată pentru orice variabile conţinute de o tautologie.
Există două tipuri importante de tautologii: implicaţiile logice şi
echivalenţele logice. Fie A şi B expresii logice. Dacă A ⇒ B este o
tautologie, atunci spunem că A implică logic B, A≡>B; dacă A ⇔ B
este o tautologie, atunci spunem că A şi B sunt logic echivalente, A≡B.
Rezultă:
1. dacă ╞A, atunci A≡T;
2. dacă ╞A, atunci T≡>A;
3. din A≡B rezultă că A≡>B şi B≡>A.

O expresie logică se numeşte contradicţie dacă are valoarea de


adevăr F pentru toate asignările posibile ale atomilor care o compun. O
expresie logică este contingentă dacă nu este nici tautologie şi nici
contradicţie. Dacă A este tautologie, atunci ¬A este contradicţie.

53

Universitatea SPIRU HARET


De exemplu, A = P ∧ ¬P este contradicţie, pe baza următoarei
tabele de adevăr.

P ¬P A = P ∧ ¬P
T F F
F T F

Similar tautologiilor, contradicţiile pot fi transformate în scheme.


Dacă A este o contradicţie ce conţine variabila propoziţională P, atunci A’
obţinută din A prin substituirea lui P cu o expresie arbitrară B este, de
asemenea, contradicţie. De asemenea, rezultă,
1. dacă A este o contradicţie, atunci A≡>F;
2. dacă A este o contradicţie, atunci A≡F.

Două propoziţii care au aceeaşi valoare de adevăr se numesc logic


echivalente. Propoziţiile echivalente logic pot fi substituite una celeilalte
fără ca valoarea de adevăr a expresiei în care intervin să fie alterată.
Faptul că două expresii logice sunt echivalente logic poate fi demonstrat
prin construcţia tabelelor de adevăr. De exemplu, putem demonstra că
¬Q ⇒ ¬P ≡ P ⇒ Q astfel:

P Q P⇒Q ¬Q ¬P ¬Q ⇒ ¬P
T T T F F T
T F F T F F
F T T F T T
F F T T T T

Algebra propoziţională presupune lucrul cu expresii logice, unul


din scopurile acesteia fiind simplificarea expresiilor logice. De exemplu,
pe baza echivalenţelor logice, conectorii logici ⇒ şi ⇔ pot fi eliminaţi
din cadrul unei expresii logice, astfel:

P ⇒ Q ≡ ¬P ∨ Q , respectiv
P ⇒ Q ≡ (P ⇒ Q ) ∧ (Q ⇒ P ) ≡ (¬P ∨ Q ) ∧ (¬Q ∨ P )

54

Universitatea SPIRU HARET


Legile fundamentale ale algebrei propoziţionale sunt:

Legea terţului exclus: P ∨ ¬P ≡ T


Legea contradicţiei: P ∧ ¬P ≡ F
Legile identităţii: P∨F≡P
P∧T≡P
Legile dominaţiei: P∨T≡T
P∧F≡F
Legea dublei negaţii: ¬(¬P ) ≡ P
Legile idempotenţei: P∨P≡P
P∧P≡P
Legile comutativităţii ∧,∨ P ∨ Q≡Q ∨ P
P ∧ Q≡ Q ∧ P
Legile distribuţiei ∨ (∧ ) faţă (P ∨ Q ) ∧ (P ∨ R ) ≡ P ∨ (Q ∧ R )
de ∧ (∨ ) (P ∧ Q ) ∨ (P ∧ R ) ≡ P ∧ (Q ∨ R )
Legile de Morgan: ¬(P ∧ Q ) ≡ ¬P ∨ ¬Q
¬(P ∨ Q ) ≡ ¬P ∧ ¬Q
Legile comutativităţii ∧,∨ : (P ∨ Q ) ∨ R ≡ P ∨ (Q ∨ R )
(P ∧ Q ) ∧ R ≡ P ∧ (Q ∧ R )
Pe baza acestor legi, rezultă:
Legile absorbţiei: P ∨ (P ∧ Q ) ≡ P
P ∧ (P ∨ Q ) ≡ P

Utilizând legile fundamentale ale algebrei propoziţionale, rezultă:


– regulile pentru simplificarea conjuncţiilor:
1. dacă o conjuncţie conţine literali complementari sau constanta
logică F, atunci expresia logică este o contradicţie;
2. toate instanţele constantei logice T şi toate copiile unui literal
într-o conjuncţie pot fi eliminate.

55

Universitatea SPIRU HARET


– reguli pentru simplificarea disjuncţiilor:
1. dacă o disjuncţie conţine literali complementari sau constanta
logică T, atunci expresia logică este o tautologie;
2. toate instanţele constantei logice F şi copiile tuturor literalilor
unei disjuncţii pot fi eliminate.
De exemplu:
(P ∧ Q ) ∧ (T ∧ R ) ≡ P ∧ Q ∧ R
(P ∨ Q ) ∨ P ≡ P ∨ Q
Formele normale ale expresiilor logice sunt construite astfel încât
identificarea şi compararea expresiilor logice să fie realizate într-o
manieră simplificată. Există două reprezentări standard. O expresie logică
se numeşte în formă normală disjunctivă dacă este disjuncţie în care
fiecare termen este o conjuncţie de literali. O expresie logică este în formă
normală conjunctivă dacă este o conjuncţie de termeni disjuncţii de
literali. De exemplu:
(P ∧ Q ) ∨ (P ∧ ¬Q ) este în formă normală disjunctivă;
¬(P ∧ Q ) ∨ (P ∧ ¬Q ) nu este în formă normală disjunctivă;
P ∧ (Q ∨ ¬R ) este în formă normală conjunctivă;
P ∧ ¬(Q ∨ ¬R ) nu este în formă normală conjunctivă.

Algoritmul pentru normalizarea în formă conjunctivă a unei


expresii logice, E, este descris în continuare.
Pas 1. Elimină conectorii logici ⇒ şi ⇔
Pas 2. Dacă E conţine o subexpresie non-atom de tip negaţie,
aplică legea dublei negaţii sau legile De Morgan
Pas 3. Dacă E nu conţine subexpresii non-atom de tip negaţie,
aplică una din următoarele legi:
A ∨ (B ∧ C ) ≡ (A ∨ B) ∧ (A ∨ C )
(A ∧ B) ∨ C ≡ (A ∨ C) ∧ (B ∨ C)

56

Universitatea SPIRU HARET


De exemplu, expresia E = ¬((P ∨ ¬Q ) ∧ ¬R ) este scrisă în
formă normală conjunctivă astfel:

¬((P ∨ ¬Q ) ∧ ¬R ) ≡ ¬(P ∨ ¬Q ) ∨ ¬¬R ≡ ¬(P ∨ ¬Q ) ∨ R ≡


≡ (¬P ∧ ¬¬Q ) ∨ R ≡ (¬P ∧ Q ) ∨ R ≡ (¬P ∨ R ) ∧ (Q ∨ R )

Similar, poate fi derivat un algoritm de normalizare a unei expresii


în forma disjunctivă.
Construcţia formei normale disjunctive poate fi realizată, de
asemenea, pe baza tabelei de adevăr asociate expresiei logice şi utilizând
mintermii. Se numeşte minterm al unei propoziţii o conjuncţie de literali
în care fiecare variabilă este reprezentată exact o dată.
Vom realiza construcţia formei normale disjunctive conform
următorului exemplu. Fie tabela de adevăr a funcţiei de adevăr f care
depinde de variabilele propoziţionale P, Q şi R.

P Q R f f este adevărată dacă


T T T T
T T F F 1. P, Q şi R sunt fiecare adevărată sau
T F T T 2. P, ¬Q şi R sunt fiecare adevărată sau
T F F F 3. ¬ P, ¬Q şi R sunt fiecare adevărată
F T T F
F T F F Rezultă
F F T T f ≡ (P ∧ Q ∧ R ) ∨ (P ∧ ¬Q ∧ R ) ∨ (¬P ∧ ¬Q ∧ R )
F F F F

Obţinem astfel o reprezentare în forma normală disjunctivă în care


toţi termenii sunt mintermi, numită forma normală disjunctivă completă.
Similar, poate fi construită prin complementaritate forma normală
conjunctivă, pe baza tabelelor de adevăr: este determinată formei normale
disjunctive a lui A ≡ ¬ f şi rezultă forma normală conjunctivă a lui
f, ¬A .

57

Universitatea SPIRU HARET


2.3.3. Implicaţii logice. Demonstraţii formale
Se numeşte implicaţie logică o tautologie de tipul A ⇒ B . Pe
baza echivalenţelor logice sunt obţinute implicaţii logice, conform
următorului rezultat. Dacă C şi D sunt expresii logice echivalente,
C ≡ D , atunci C ≡> D şi D ≡> C .
O argumentare logică este corectă dacă conjuncţia premiselor
implică logic concluzia. Dacă A1 , A 2 ,..., A n sunt premisele şi C este
concluzia, atunci argumentarea este corectă dacă
A1 , A 2 ,..., A n ╞ C sau
A1 ∧ A 2 ∧ ... ∧ A n ⇒ C este tautologie.

Demonstrarea corectitudinii argumentărilor logice poate fi realizată


prin intermediul tabelelor de adevăr. În continuare prezentăm ca exemplu
demonstrarea logică a silogismul ipotetic.
P ⇒ Q, Q ⇒ R ╞ P ⇒ R

P Q R P⇒Q Q⇒R Premise P⇒R Valid


T T T T T T T T
T T F T F F F T
T F T F T F T T
T F F F T F F T
F T T T T T T T
F T F T F F T T
F F T T T T T T
F F F T T T T T

În general, argumentaţiile logice sunt compuse, şi anume concluzia


unei argumentări este premisa unei alte argumentări. O demonstraţie
constă într-o secvenţă de argumentări logice de acest tip. Multe dintre
argumentările utilizate în practică nu sunt formale. Există, de asemenea,
şi argumentări logice formale numite derivări sau demonstraţii formale.
În continuare vom analiza următorul exemplu.

58

Universitatea SPIRU HARET


Fie expresia în limbaj pseudocod: (I) if X>Max then X=Max;
Afirmaţia de demonstrat este: după execuţia instrucţiunii (I) X nu
poate fi mai mare decât Max. Sunt considerate cazurile:
1. X > Max este adevărată înaintea execuţiei instrucţiunii
2. X > Max este falsă înaintea execuţiei instrucţiunii

În cazul (1), premisa X > Max este adevărată, deci este realizată
atribuirea X=Max şi, după execuţia lui (I), X nu este mai mare decât Max.
În cel de-al doilea caz, X > Max este falsă şi înainte, şi după execuţia
instrucţiunii (I). Formalizarea construcţiei mai sus menţionate este
posibilă prin definirea următoarelor variabile propoziţionale.
P: X > Max înainte de execuţia lui (I).
Q: X=Max după execuţia lui (I).
R: X>Max după execuţia lui (I).

În primul caz, P ⇒ Q este adevărată datorită modului de execuţie


a instrucţiunii (I). Expresia logică Q ⇒ ¬R este adevărată: dacă
X=Max, atunci nu este adevărat că X > Max, după execuţia lui (I). Poate
fi aplicat silogismul ipotetic (HS) pentru a deriva concluzia argumentării:
P⇒Q
Q ⇒ ¬R
P ⇒ ¬R
Deasemenea, este folosită şi legea cazurilor (CS):
A ⇒ B, ¬A ⇒ B ╞ B. Dacă vom considera A=P şi B= ¬R , obţinem
P ⇒ ¬R
¬P ⇒ ¬R
¬R

Demonstrarea formală a afirmaţiei ,,după execuţia instrucţiunii


(I) X nu poate fi mai mare decât Max” este prezentată sintetic prin
următoarea schemă.

59

Universitatea SPIRU HARET


Derivarea Regula Comentarii
formală
1. P ⇒ Q
Premisă Dacă X>Max înainte de execuţia lui (I),
atunci X=Max după execuţia lui (I)
2. Q ⇒ ¬R
Premisă Dacă X=Max după execuţia lui (I),
atunci X>Max este falsă
3. ¬P ⇒ ¬R Premisă Dacă X>Max este falsă înainte de
execuţia lui (I), atunci este falsă şi după
execuţia lui (I)
4. P ⇒ ¬R 1,2, HS Dacă X>Max înainte de execuţia lui (I),
atunci X>Max este falsă după execuţia
lui (I)
5. ¬R 3,4, CS Indiferent de valoarea de adevăr a
afirmaţiei X>Max înainte de execuţia
lui (I), X>Max este falsă după execuţia
lui (I)

Demonstrările formale sunt realizate în cadrul unor sisteme de


derivări. Orice sistem de derivare utilizat trebuie să aibă caracteristicile:
1. să existe o listă dată, L, de argumentări logice admisibile,
numite reguli de inferenţă.
2. o demonstrare formală reprezintă o listă de expresii logice,
iniţial vidă. O expresie E este adăugată în listă dacă E este o
premisă sau dacă E poate fi obţinută pe baza expresiilor deja
existente în listă prin aplicarea unei reguli de inferenţă.
Procesul de extindere a listei de expresii logice continuă până
la atingerea concluziei.

În continuare notăm A1 , A 2 ,..., A n ├ L C dacă concluzia C este


obţinută utilizând premisele A1 , A 2 ,..., A n şi reguli de inferenţă din L. În
majoritatea sistemelor de demonstrare formală, lista regulilor de inferenţă
este fixată.
Prezentăm în continuare principalele reguli de inferenţă, RI,
utilizate în demonstraţiile formale.

60

Universitatea SPIRU HARET


1. Legea combinării: A, B ╞ A ∧ B
2. Legea simplificării: A∧B╞B
3. Variantă a legii simplificării: A∧B╞A
4. Legea acumulării: A╞ A∨B
5. Variantă a legii acumulării: B╞ A ∨ B
6. Modus tollens: ¬B, A ⇒ B ╞ ¬A
7. Modus ponens: A, A ⇒ B ╞ B
8. Silogismul ipotetic: A ⇒ B, B ⇒ C ╞ A ⇒ C
9. Silogismul disjunctiv: A ∨ B, ¬A ╞ B
10. Variantă a silogismului A ∨ B, ¬B ╞ A
disjunctiv:
11. Legea cazurilor A ⇒ B, ¬A ⇒ B ╞ B
12. Eliminarea echivalenţei: A ⇔ B╞ A ⇒ B
13. Variantă a eliminării A ⇔ B╞ B ⇒ A
echivalenţei:
14. Introducerea echivalenţei: A ⇒ B, B⇒ A╞ A ⇔ B
15. Legea inconsistenţei: A , ¬A ╞ B

Legea inconsistenţei derivă din faptul că A ∧ ¬A ≡ F şi


F ⇒ B este tautologie.
Regulile de inferenţă sunt alese astfel încât rezultatele care pot fi
derivate să fie corecte. În continuare vom presupune că sunt utilizate
numai reguli de inferenţă corecte. Un sistem de demonstrare formală
trebuie să fie corect şi complet. Completitudinea revine la faptul că poate
fi derivată orice concluzie care rezultă logic pe baza setului de premise
considerat. De exemplu, sistemul de demonstrare formală prezentat mai
sus nu este complet: legea terţului exclus rezultă fără a utiliza nici o
premisă. În consecinţă, P ∨ ¬P nu poate fi derivat utilizând lista de
reguli de inferenţă mai sus menţionată. Sistemul de derivări poate fi
completat utilizând teorema deducţiei.

61

Universitatea SPIRU HARET


Teorema deducţiei. Fie A şi B expresii şi A1 , A 2 ,... premise. Dacă
B, A1 , A 2 ,... implică logic C, atunci A1 , A 2 ,... implică logic B ⇒ C .
În exemplul următor este realizată demonstrarea formală a silogismului
ipotetic prin teorema deducţiei şi Modus ponens (MP).

Derivarea Regula Comentarii


formală
1. P ⇒ Q
Premisă

2. Q ⇒ R
Premisă
3. P Presupunere Presupunem P
4. Q 1,3, MP
5. R 2,4, MP
6. P ⇒ R Elimină P P este considerat cu oricare din
valorile de adevăr T sau F şi rezultă
P⇒R

2.4. Elemente de calcul predicaţional


Calculul predicaţional este o extindere a calculului propoziţional şi
are ca principal obiectiv extinderea demonstrării corectitudinii unor
argumentaţii care, deşi sunt perfect logice, nu pot fi rezolvate prin
calculul propoziţional. În general, predicatele sunt utilizate pentru a
descrie proprietăţi sau relaţii între indivizi sau obiecte; calculul
predicaţional este orientat spre funcţii.
Calculul predicatelor de ordinul întâi este denumit şi logica
predicatelor de ordinul întâi şi are la bază funcţia propoziţională a
predicatului. Calculul predicatelor foloseşte declaraţii logice ca
modalitate de reprezentare a relaţiilor dintre obiecte. Predicatul
(proprietatea) desemnează propoziţiile simple cu un singur termen liber.
De exemplu, în propoziţia „…este economist”, subiectul lipseşte şi locul
lui se poate completa cu mai multe valori diferite, obţinându-se astfel mai
multe propoziţii adevărate sau false. În spaţiul liber se poate dispune o
variabilă ce este folosită numai pentru subiect (ordinul întâi).

62

Universitatea SPIRU HARET


În exemplul cont_de_activ(c), c este variabila ce permite
substituirea cu orice cont de activ, iar în exemplul cont_de_pasiv(p),
p este variabila ce permite substituirea cu orice cont de pasiv.
În logică, relaţiile Rel reprezintă expresii cu două sau mai multe
elemente libere, în care se folosesc conectorii logici (AND, OR, NOT,
↔,→), cuantificatorul universal (∀, „pentru orice”) şi cuantificatorul
existenţial (∃, „există cel puţin o valoare”).
Formatul predicatului este compus din nume_identificator şi listă
de argumente. Argumentele unui predicat sunt argumente de bază
(obligatorii) şi argumente opţionale. Argumentele se introduc într-o
anumită ordine. De exemplu, predicatul creditează(401, 100.000.000) are
nume_identificator creditează şi argumentele 401 şi 100.000.000.
Dacă subiectul şi predicatul sunt reprezentate prin variabile, un
exemplu de regulă cu propoziţiile P1 şi P2 adevărate este următorul:

IF Rel este simetrică AND F1 Rel F2 THEN F2 Rel F1

Se observă că folosirea calculului predicatelor conduce la


deducerea de noi fapte. De exemplu, contul 401 este cont de pasiv dacă
401 este cont şi toate conturile sunt conturi de pasiv se poate scrie astfel:

∀(p), cont(p) →cont_de_pasiv(p) AND cont(401) ⇒


cont_de_pasiv(401)

2.4.1. Componentele sintactice ale calculului predicaţional


Calculul predicaţional conţine toate componentele calculului
propoziţional, incluzând variabile şi constante propoziţionale. În plus,
sunt introduse noţiunile de termeni, predicate şi cuantificatori.
Se numeşte domeniu colecţia tuturor persoanelor, ideilor,
simbolurilor, structurilor de date ş.a.m.d., care influenţează argumentaţia
logică dată. Elementele domeniului se numesc indivizi.
Predicatele sunt definite pe baza aserţiunilor efectuate asupra
indivizilor unui domeniu. În cadrul fiecărei aserţiuni, există o listă de
indivizi, numită listă de argumente, precum şi acţiuni care descriu fie

63

Universitatea SPIRU HARET


relaţiile dintre indivizi, fie proprietăţi ale indivizilor din lista de
argumente considerată. Proprietăţile sau relaţiile astfel definite se numesc
predicate. De exemplu, afirmaţia ,,Ioana este mama Mariei” poate fi
reprezentată astfel. Este selectat un identificator, de exemplu ,,mama”,
pentru a exprima predicatul ,,este mama lui”. Afirmaţia este descrisă prin
mama(Ioana, Maria). Aşa cum rezultă şi pe baza exemplului prezentat,
ordinea argumentelor în descrierea predicatelor este importantă:
mama(Ioana, Maria) este reprezentarea unei afirmaţii A, în timp ce
mama(Maria, Ioana) este reprezentarea unei afirmaţii distincte de A.
Numărul argumentelor unui predicat, P, se numeşte aritatea lui P. Un
predicat cu aritate 1 este numit proprietate.
Formula atomică este constituită din numele unui predicat, P,
urmat de lista argumentelor lui P. Formulele atomice pot fi combinate,
similar calculului propoziţional, prin conectori logici. Dacă toate
argumentele unui predicat sunt constante, atunci formula atomică
rezultată este fie adevărată (T), fie falsă (F). Asignarea unui predicat este
o metodă de atribuire a unei valori de adevăr tuturor combinaţiilor
posibile de indivizi în cadrul predicatului considerat. De exemplu,
considerând ca argumente posibile pentru predicatul „mama” indivizii
„Ioana”, „Maria”, „Andrei” şi „Alin”, asignarea predicatului poate fi
realizată conform următorului tabel, în care, pentru fiecare indivizi x, y, în
linia x şi coloana y este marcată valoarea de adevăr a formulei atomice
mama(x,y).

Ioana Maria Andrei Alin


Ioana F T F T
Maria F F F F
Andrei F F F F
Alin F F F F

Variabilele sunt utilizate în situaţia în care argumentele unei


formule atomice nu sunt asignate unui individ particular. Se numeşte
termen o variabilă sau o constantă. Fie A o expresie, x o variabilă şi t un
termen. Vom nota prin Sxt A expresia obţinută din A prin substituirea
fiecărei apariţii a lui x cu t. Sxt A este numită instanţă a lui A iar t este
64

Universitatea SPIRU HARET


instanţă a lui x. De exemplu, dacă P şi Q sunt predicate iar x şi y sunt
variabile, atunci,
Sax (P(a ) ⇒ Q(x )) este P(a ) ⇒ Q(a ) ,
Sby (P(y ) ∨ Q(y )) este P(b ) ∨ Q(b ) .

Fie A o expresie şi x o variabilă.


Afirmaţia ,,A este adevărată pentru toate valorile posibile ale lui x”
este reprezentată prin ∀xA . În cadrul reprezentării, ∀x este
cuantificatorul universal şi A este scopul cuantificatorului. Variabile x se
numeşte legată prin cuantificator.
Afirmaţia ,,A este adevărată pentru cel puţin o valoare a lui x” este
reprezentată prin ∃xA . În cadrul reprezentării, ∃x este cuantificatorul
existenţial şi A este scopul cuantificatorului. Variabile x se numeşte legată
prin cuantificator. Expresia ∀ySxy A se numeşte variantă a lui ∀xA . În
mod similar, ∃ySxy A este o variantă a expresiei ∃xA .
Orice variabilă care nu este legată se numeşte liberă. De exemplu,
în expresia ∀z(P(z ) ∧ Q(x )) ∨ ∃yQ(y ) , x este variabilă liberă şi y şi z
sunt variabile legate.
În continuare prezentăm câteva exemple de reprezentare a unor
afirmaţii prin intermediul componentelor sintactice mai sus menţionate.

Afirmaţia Predicate utilizate Reprezentare


Există cineva K (x , y ) – x cunoaşte pe y ∃x∀yK ( x, y )
care cunoaşte
pe toată lumea
din zonă.
Toate pisicile P(x ) – x este pisică ∀x(P( x ) ⇒ C ( x ))
au coadă
C(x ) – x are coadă
Oricine are o M (x , y ) – x este mama lui y ∀y∃xM ( x, y )
mamă

65

Universitatea SPIRU HARET


2.4.2. Interpretări. Validitate
În cadrul acestei secţiuni sunt prezentate noţiunile de interpretare a
afirmaţiilor logice şi, respectiv, de consistenţă a argumentelor logice.
Interpretarea unei afirmaţii logice necesită informaţii pe baza cărora
să se poată decidă dacă afirmaţia este falsă sau adevărată. Din punct de
vedere formal, interpretarea unei expresii logice este constituită din
următoarele componente:
1. domeniul argumentelor;
2. pentru fiecare I individ din domeniul considerat, există o
constantă individuală care corespunde exclusiv lui I;
3. fiecare variabilă liberă este asignată unei constante individuale
unice;
4. pentru fiecare predicat utilizat în expresie, inclusiv pentru
predicatele de aritate 0, există o asignare, care reprezintă o
propoziţie.

În continuare prezentăm câteva exemple de interpretare a


aserţiunilor logice.
Fie P un predicat de aritate 1. Stabilirea faptului că expresia
∀xP(x ) este adevărată poate fi realizată astfel. Fie a1 , a 2 ,..., a n indivizii
domeniului argumentelor predicatului P; ∀xP(x ) este adevărată dacă
P(a1 ), P(a 2 ),..., P(a n ) sunt toate adevărate,
∀xP(x ) ≡ P(a1 ) ∧ P(a 2 ) ∧ ... ∧ P(a n )
Expresiile P(a1 ), P(a 2 ),..., P(a n ) au fiecare câte două valori de
adevăr, deci sunt propoziţii.
Interpretarea expresiei ∃xP(x ) poate fi realizată astfel. Fie
a1 , a 2 ,..., a n indivizii domeniului argumentelor predicatului P; ∃xP(x )
este adevărată dacă cel puţin una din expresiile P(a1 ), P(a 2 ),..., P(a n )
este adevărată,
∃xP(x ) ≡ P(a1 ) ∨ P(a 2 ) ∨ ... ∨ P(a n )
Asignarea predicatelor de aritate 2 poate fi realizată prin
intermediul unui tabel în care liniile reprezintă primul argument, respectiv
coloanele reprezintă cel de-al doilea argument al predicatului.
66

Universitatea SPIRU HARET


Considerăm în continuarea afirmaţia, A=,,Există cineva care iubeşte pe
toată lumea”, domeniul {Alin, Maria, Ioana} şi asignarea:

Alin Maria Ioana


Alin F T T
Maria T F F
Ioana F T T

Fie Q predicatul de aritate 2, în care, pentru fiecare x, y, Q(x , y )


reprezintă relaţia ,,x îl place pe y”. Atunci A poate fi exprimată
prin E = ∃x∀yQ(x , y ) . Rezultă:

Alin Maria Ioana ∀yQ(x, y ) E = ∃x∀yQ( x, y )


Alin F T T F F
Maria T F F F F
Ioana F T T F F

Deşi cuantificatorii nu sunt comutativi unul faţă de celălalt, au loc


relaţiile,
∀x∀yQ( x, y ) ≡ ∀y∀xQ( x, y )
∃x∃yQ( x, y ) ≡ ∃y∃xQ( x, y )

O expresie, A, este validă dacă este adevărată în orice interpretare.


În continuare, faptul că A este validă este notat ╞ A . Expresia A nu este
validă dacă există o interpretare în care A este falsă.
Fie B o expresie. Orice interpretare care conduce la valoarea de
adevăr T pentru B se spune că satisface B. Orice interpretare care
satisface B se numeşte model al lui B. Dacă B are un model, atunci B
poate fi satisfăcută; în caz contrar, B se numeşte contradictorie.
Fie A şi B expresii. A este logic echivalentă cu B dacă A ⇔ B
este validă. În acest caz, vom scrie A ≡ B . A este implică logic B dacă
A ⇒ B este validă şi notăm A ≡> B .

67

Universitatea SPIRU HARET


Un exemplu de expresii echivalente logic este prezentat în
continuare. Dacă P este propoziţie şi Q este predicat, atunci,
∀x (P ⇒ Q(x )) ≡ P ⇒ ∀xQ(x ) .

În scopul demonstrării echivalenţei de mai sus, vom aplica legea


cazurilor. Deoarece P este propoziţie, P este fie adevărat, fie fals, deci
este suficient să demonstrăm echivalenţele,
∀x (T ⇒ Q(x )) ≡ T ⇒ ∀xQ(x ) , respectiv
∀x (F ⇒ Q(x )) ≡ F ⇒ ∀xQ(x ) .
Ambele echivalenţe sunt valide.
Similar calculului propoziţional, în care tautologiile pot şi
transformate în scheme, în calculul predicaţional, expresiile valide pot fi
transformate în scheme. Transformarea unei expresie validă în schemă
este realizată ţinând cont de variabilele libere şi de variabilele legate. De
exemplu, ∀x (P ⇒ Q(x )) ≡ P ⇒ ∀xQ(x ) poate fi transformată astfel,
∀x (P ∧ Q ⇒ H (x )) ≡ (P ∧ Q ) ⇒ ∀xH (x ) ,
unde P şi Q sunt propoziţii şi H este predicat sau
∀x (S(y ) ⇒ H (x )) ≡ S(y ) ⇒ ∀xH(x ) ,
unde S şi H sunt predicate.
Remarcăm în cadrul ultimei echivalenţe faptul că expresia cu care
este înlocuită propoziţia P nu trebuie să conţină x ca variabilă liberă. În
caz contrar, este obţinută echivalenţa,
∀x (S(x ) ⇒ H(x )) ⇔ S(x ) ⇒ ∀xH(x ) ,
care nu mai este validă.
Demonstrarea faptului că o expresie A nu este validă poate fi
realizată prin determinarea unui model pentru ¬A . Dacă A este o
expresie condiţională, adică are forma B ⇒ C , ¬A este adevărată dacă
şi numai dacă B este adevărată şi C este falsă. Pentru a ilustra acest lucru,
vom demonstra că următoarea expresie, E, nu este validă,
∀x (P(x ) ∨ Q(x )) ⇒ ∀xP(x ) ∨ ∀xQ(x )
prin determinarea unui model al expresiei ¬E . Vom considera asignarea,

68

Universitatea SPIRU HARET


x P(x ) Q( x ) P( x ) ∨ Q( x )
a T F T
b F T T
În cadrul acestei asignări, expresia ∀x (P(x ) ∨ Q(x )) este
adevărată, dar ∀xP(x ) ∨ ∀xQ(x ) este falsă (propoziţia P(b ) ∨ Q(a )
este falsă).
Problema demonstrării validităţii unei expresii nu este decidabilă:
nu există nici o metodă general aplicabilă prin care, fiind dată E o
expresie oarecare, să poată fi decisă validitatea lui E.

2.4.3. Derivări logice


Sunt prezentate în continuare modalităţi de derivare în calculul
predicaţional: introducerea şi extragerea cuantificatorilor logici, proce-
deele de instanţiere şi, respectiv, de unificare.
Regula de inferenţă instanţiere universală rezultă astfel. Pe baza
relaţiei ∀xP(x ) , rezultă P(t ) , pentru orice termen t. Cu alte cuvinte,
dacă x este variabilă, t este termen şi A este expresie, atunci
∀xA ≡> Sxt A .
Regula de instanţiere universală, UI, este,
∀xA
S xt A

De exemplu, regula UI ne permite următoarea derivare logică.


Toţi oamenii sunt muritori.
Socrate este om.
Socrate este muritor.

Fie predicatele H (x ) = „x este om” şi M (x ) = ,,x este muritor”.


Trebuie să demonstrăm,
∀x (H(x ) ⇒ M (x )), H(S) ├ M (S)

69

Universitatea SPIRU HARET


Derivarea formală Regula Comentarii
1. ∀x(H ( x ) ⇒ M ( x ))
Premisă Toţi oamenii sunt muritori.

2. H (S )
Premisă Socrate este muritor.

3. H (S ) ⇒ M (S ) 1, SSx (UI) Dacă Socrate este om, atunci


este muritor.
4. M (S )
2,3, MP Socrate este muritor. (din 2 şi
3, aplicând modus ponens)

Regula de inferenţă generalizare universală (UG) este descrisă


astfel. Fie A expresie şi x variabilă care nu este liberă în nici o premisă.
Atunci,
A
∀xA .

Exemplificăm regula de inferenţă UG prin demonstrarea validităţii


interschimbării cuantificatorului universal, prezentată în §2.4.3,
∀x∀yP( x, y ) ≡ ∀y∀xP( x, y )
Derivarea formală Regula Comentarii
1. ∀x∀yP( x, y )
Premisă

2. ∀yP( x, y )
Instanţiază linia 1 prin eliminarea
1,
S xx (UI)
primului cuantificator universal.
3. P ( x, y )
Elimină cel de-al doilea cuan-
S yy
2, (UI) tificator universal. În continuare
este folosită regula UG pentru
reintroducerea cuantificatorilor în
ordine inversă.
4. ∀xP(x , y ) 3, UG Deoarece premisa nu conţine x ca
variabilă liberă, poate fi aplicată UG
5. ∀y∀xP( x, y )
4, UG Aplică UG şi obţine concluzia
dorită.

Teorema deducţiei: O concluzie C poate fi derivată astfel.


Presupune B şi, utilizând B ca premisă, demonstrează că B ⇒ C ;
elimină presupunerea B. Teorema deducţiei (DT) este exemplificată în
70

Universitatea SPIRU HARET


continuare prin rezolvarea următoarei probleme. Fie S(x ) = ,,x învaţă” şi
P(x ) = ,,x promovează”. Premisa este că toţi cei care învaţă promovează.
Demonstraţi că toţi cai care nu au promovat nu au studiat. Formal, trebuie
demonstrat că,
∀x (S(x ) ⇒ P(x )) ├ ∀x (¬P(x ) ⇒ ¬S(x )) .

Derivarea formală Regula Comentarii


1. ∀x(S ( x ) ⇒ P( x ))
Premisă Toţi cei care învaţă
promovează
2. S(x ) ⇒ P(x ) x
1, Sx (UI) Dacă x a studiat, atunci a
promovat
3. ¬P(x ) Presupunere Presupune că x nu a
promovat
4. ¬S(x ) 2,3, MT x nu a promovat: rezultă
din 2 şi 3 aplicând
modus tollens
5. ¬P(x ) ⇒ ¬S(x ) DT Aplică teorema
deducţiei. În continuare
elimină presupunerea
¬ P (x )
6. ∀x ( ¬P(x ) ⇒ ¬S(x ) ) 5, UG Oricine nu a promovat
nu a studiat.
Generalizarea este
posibilă, deoarece x nu
este variabilă liberă în
premisă.

Introducem în continuare conceptul de unificare şi modalitatea


eliminării cuantificatorului universal.
În matematică, cuantificatorii universali sunt în general omişi. De
exemplu, în aserţiunea x+y=y+x, ambele variabile utilizate sunt implicit
cuantificate universal. Toate variabilele unei expresii cu proprietatea că
nu sunt fixate se numesc variabile autentice. O variabilă poate fi universal
generalizată dacă şi numai dacă este o variabilă autentică. Cuantificatorii
universali pot fi eliminaţi prin utilizarea variabilelor autentice. În
71

Universitatea SPIRU HARET


continuare vom permite instanţierea unei variabile autentice cu orice
termen. Toate variabilele autentice sunt locale strict liniei în care apar.
Rezultă că, dacă variabila autentică x apare în două linii diferite, cele două
instanţe ale lui x sunt variabile diferite.
Două expresii unifică dacă există instanţieri care să determine
obţinerea unei aceleiaşi expresii. Instanţierea care unifică expresiile în
cauză se numeşte unificatoare. Prezentăm în continuarea un exemplu de
utilizare a procedeului de unificare.
Fie domeniul format din indivizii Alin, Ioana şi Liza. Presupunem
că Ioana este mama lui Alin şi Liza este sora Ioanei. Evident, dacă x este
mama lui y şi z este sora lui x, rezultă că z este mătuşa lui y. Vom arăta că
Liza este mătuşa lui Alin. Fie mama(x,y) predicatul care exprimă relaţia
„x este mama lui y”, sora(x,y) predicatul care exprimă relaţia „x este sora
lui y” şi mătuşa(x,y) predicatul care exprimă relaţia „x este mătuşa lui y”.
Premisele sunt:
1. mama(x,y) ∧ sora(x,y) ⇒ mătuşa(x,y)
2. mama(Ioana, Alin)
3. sora(Liza,Ioana)
Problema este de a determina o expresie care să unifice cu
antecedente ale liniei 1. Combinând liniile 2 şi 3 obţinem,
4. mama(Ioana, Alin) ∧ sora(Liza,Ioana)
Expresia de la 4 poate să unifice cu mama(x,y) ∧ sora(x,y), dacă
sunt setate x := Ioana, y := Alin şi z := Liza. Obţinem,
5. mama(Ioana, Alin) ∧ sora(Liza,Ioana) ⇒ mătuşa(Liza,Alin)

Regula de inferenţă generalizare existenţială, EG, este exprimată


astfel. Dacă există un termen t pentru care P(t ) este adevărat, atunci un
anumit x satisface P(x ) . Deci P(t ) implică logic ∃xP(x ) . În general,
∃xA poate fi derivat din S xt A , unde t este termen. Este obţinută regula
de inferenţă EG,
S xt A
∃xA

72

Universitatea SPIRU HARET


În continuare este prezentat un exemplu al utilizării regulii EG
într-o demonstraţie formală. Este demonstrat că,
∀x (A(x ) ⇒ B(x )), A(M ) ├ ∃xB(x ) .
Derivarea formală Regula
1. ∀x (A (x ) ⇒ B(x )) Premisă
2. A (M ) ⇒ B(M ) x
1, SM (UI)
3. A (M ) Premisă
4. B(M ) 2,3, MP
5. ∃xB(x ) 4, EG

Regula instanţierii existenţiale, EI, este descrisă astfel. Dacă


expresia ∃xA este adevărată, atunci există un termen t care satisface A:
există un termen t astfel încât S xt A este adevărată. Fie b variabilă.
Obţinem regula de inferenţă EI,
∃xA
Sbx A
Următoarea demonstraţie formală exemplifică aplicarea regulii EI.
Demonstraţi că ∀x¬P(x ) ├ ¬∃xP(x ) .
Derivarea formală Regula Comentarii
1. ∃xP(x ) Presupunere Presupunerea va fi ulterior
eliminată
2. P(b ) 1, EI Fie b pentru care P(x) este adevărat
3. ∀x¬P(x ) Premisă
4. ¬P(b ) 3, Sbx Rezultă că P(b ) este falsă
5. P(b ) ∧ ¬P(b ) 3,4, C Am obţinut contradicţia necesară
demonstrării faptului că presupu-
nerea iniţială este falsă
6. ¬∃xP(x ) 5, IP Deoarece 5 este contradicţie,
presupunerea este falsă şi poate fi
eliminată
73

Universitatea SPIRU HARET


2.5. Reguli de producţie
Prin reguli de producţie (în teoria limbajelor formale, denumirea
iniţială a fost de reguli de scriere) se înţelege regulile de forma IF premise
THEN concluzie, unde premisele şi concluzia reprezintă fapte. Pornind de
la calculul propoziţional, reprezentarea cunoştinţelor prin reguli de pro-
ducţie utilizează două tipuri de structuri – faptele şi regulile – ce cuprind,
uzual, numai entităţi invariabile (în caz contrar, reprezentarea cunoş-
tinţelor se efectuează cu reguli de producţie cu variabile). Dacă pre-
misele unei reguli sunt adevărate (faptele componente sunt verificate de
baza de fapte), atunci şi faptele din concluzie sunt adevărate şi pot fi
incluse în baza de fapte. Se foloseşte modus ponens din logica formală
(§ 2.3). Regulile de producţie sunt stocate în baza de reguli. Ordinea de
înregistrare a regulilor de producţie nu este importantă. Faptele care
descriu cunoştinţele comune ale domeniului de cunoaştere sunt fapte
permanente (de exemplu, în contabilitate, tipul de cont – de activ, de
pasiv sau bifuncţional). Faptele specifice problemei de rezolvat sunt fapte
temporare şi sunt şterse după obţinerea concluziei pentru problemă.
Obţinerea concluziei poate reprezenta un succes (în această situaţie se
oferă o soluţie pentru problema de rezolvat) sau poate eşua.
Prin folosirea conectorilor logici pentru legarea faptelor ce
compun regula de producţie, se obţine următorul exemplu de regulă de
producţie ce poate fi utilizată pentru dimensionarea activităţii de
producţie a unei întreprinderi (analiza diagnostic a valorii adăugate):

IF gradul de folosire a capacităţilor de producţie creşte


AND productivitatea muncii creşte
AND NOT(cheltuielile cu materialele la 1 leu producţie cresc)
THEN valoarea adăugată creşte.

Se menţionează că producţie din noţiunea de regulă de producţie


nu trebuie echivalat cu cuvântul producţie din exemplul ce conţine
activitatea de producţie a unei întreprinderi.
Regulile de producţie cu variabile se folosesc atunci când în
formularea regulilor se folosesc variabile ce generalizează anumite situaţii

74

Universitatea SPIRU HARET


concrete. De exemplu, la înregistrarea în contabilitate, pentru un cont de
pasiv C1, în raport cu contul C2, se poate folosi următoarea regulă:

IF C1 este un cont de pasiv AND C1 reflectă C2 AND C2 creşte


THEN C1 se creditează.

Când variabila ce reprezintă o premisă capătă o valoare concretă, se


spune că este instanţiată. În exemplul de mai sus, se pot instanţia C1=401
şi C2=421.

2.5.1. Reprezentarea cunoştinţelor prin reguli de producţie


În principiu, orice formalizare consistentă pentru reprezentarea
cunoştinţelor în cadrul unui domeniu dat poate fi utilizată în construcţia
unui sistem expert. Regulile de producţie IF-THEN sunt cele mai des uti-
lizate în reprezentarea cunoştinţelor; regulile de producţie sunt în general
aserţiuni condiţionale, dar pot avea diverse interpretări. De exemplu,
– IF precondiţia P THEN concluzia C;
– IF situaţia S THEN acţiunea A;
– IF condiţiile C1 şi C2 sunt îndeplinite THEN condiţia C nu este
îndeplinită.
Regulile de producţie sunt modalităţi simple dar puternice de
reprezentare a cunoştinţelor, caracterizate prin flexibilitatea combinării
într-o singură entitate a reprezentării declarative cu reprezentarea
procedurală. O regulă de producţie este definită de o mulţime de premise
şi de un set de concluzii (consecinţe). Premisele specifică o mulţime de
condiţii, iar consecinţele – un set de acţiuni. Considerăm în continuare
regulile de producţie, (Krishnamoorthy, 1996)
1. IF deschiderea grinzii este cunoscută
THEN adâncimea grinzii este (deschiderea/12)
2. IF obiectul are două fante
ŞI fanta din vârf este mai mare decât cea de la bază
ŞI este destul spaţiu disponibil în partea stângă
ŞI spaţiul disponibil pe partea dreaptă este prea mic
THEN pune ţeava în partea stângă a obiectului
ŞI introdu ţeava în obiect prin fanta din vârf a obiectului.

75

Universitatea SPIRU HARET


Prima regulă conţine o condiţie simplă, în timp ce condiţiile din cea
de-a doua regulă sunt complexe. În cadrul regulii 1, faptul reprezentat poate
fi caracterizat printr-o valoare asignată unei variabile. În cel de-al doilea
caz, obiectele fizice şi proprietăţile dintre ele, pentru a constitui fapte,
trebuie definite altfel decât prin tripletul variabilă-operator-valoare.
În cadrul exemplelor menţionate mai sus, dacă premisa este
satisfăcută de faptele stabilite ca „date de intrare”, sunt efectuate acţiunile
specificate în concluzie şi regula de producţie este declanşată.
Cunoştinţele stocate prin intermediul regulilor pot fi reprezentate
schematic prin intermediul unei reţele. În general, o bază de cunoştinţe
conţine un număr mare de reguli de producţie, care sunt grupate logic în
diferite baze de reguli. O reţea de cunoştinţe reprezentând o mulţime de
reguli din cadrul unei baze de reguli trebuie să fie completată de
conectarea corespunzătoare a nodurilor în cadrul reţelei. În acest fel,
reprezentarea grafică a reţelei de cunoştinţe permite proiectantului bazei
de cunoştinţe să elimine eventualele inconsistenţe sau redundanţe.
(Krishnamoorthy, 1996)
Regulile de producţie IF-THEN constituie forma naturală de
exprimare a cunoştinţelor şi trebuie să îndeplinească următoarele
proprietăţi (Bratko, 1990):
– modularitatea: fiecare regulă defineşte o cantitate mică de
cunoştinţe, relativ independent de restul cunoştinţelor de reprezentat;
– extinderea (incrementabilitatea): baza de cunoştinţe poate fi
extinsă prin adăugarea de noi reguli; extinderea este realizată relativ
independent de celelalte reguli deja existente în baza de cunoştinţe;
– posibilitatea modificării (ca rezultat al proprietăţii de
modularitate): regulile deja înscrise în baza de cunoştinţe, KB, pot fi
modificate relativ independent de celelalte reguli de producţie din KB;
– transparenţa sistemului suport.
Transparenţa sistemului suport este o caracteristică importantă a
sistemelor expert. Prin transparenţă se înţelege abilitatea sistemului de a
explica deciziile şi soluţiile furnizate. Regulile de producţie IF-THEN
facilitează rezolvarea următoarelor tipuri de probleme ale utilizatorilor
sistemului expert:
1. Întrebarea „Cum?”: „Cum a fost obţinută concluzia?”
2. Întrebarea „De ce?”: „De ce eşti interesat de această
informaţie?”
76

Universitatea SPIRU HARET


Regulile IF-THEN definesc de obicei relaţii logice între diverse
concepte ale domeniului problemei. Relaţiile logice pot fi caracterizate
ca aparţinând „cunoştinţelor categorice”, datorită faptului că sunt
întotdeauna adevărate.
În anumite domenii, cum ar fi cel al diagnozei medicale,
cunoştinţele probabiliste sunt dominante. Cu alte cuvinte, cunoştinţele, de
obicei empirice, sunt valide cu o anumită probabilitate (într-un anumit
grad). În acest caz, regulile IF-THEN sunt modificate prin adăugarea unei
calificări probabiliste interpretării logice. De exemplu,
IF condiţia A THEN concluzia B rezultă cu probabilitatea P.

Prezentăm în continuare câteva exemple din care rezultă varietatea


modurilor de reprezentare a cunoştinţelor prin utilizarea regulilor de
producţie. În primul exemplu este prezentată o regulă a unui sistem expert
utilizat în contabilitate, iar în cel de-al doilea exemplu este descrisă o
regulă a unui sistem expert de rezolvare automată a unui joc de şah
(Bratko, 1990).

IF
1. C este un cont de pasiv şi
2. C reflectă D şi
3. D scade
THEN
C se debitează
Exemplu de regulă IF-THEN din cadrul unui sistem expert din
contabilitate
IF
1. există o ipoteză H în care procedeul P reuşeşte şi
2. există două ipoteze:
H1: procedeul R1 respinge metoda P
H2: procedeul R2 respinge metoda P
3. H1 este falsă şi H2 este falsă constituie un fapt
THEN
1. generează ipoteza H3: procedeul combinat R1 sau R2
respinge procedeul P
2. generează faptul: H1 implică not H.
Exemplu de regulă IF-THEN de rafinare a procedeelor utilizate în
rezolvarea automată a jocurilor de şah
77

Universitatea SPIRU HARET


În general, dezvoltarea unui sistem expert complex pentru un
domeniu dat presupune consultarea experţilor în acel domeniu.
Extragerea cunoştinţelor dintr-un domeniu utilizând literatura de
specialitate şi consultând experţii din acel domeniu, precum şi selectarea
unui mecanism formal de reprezentarea cunoştinţelor presupune un efort
complex şi se numeşte ingineria cunoştinţelor.
Regulile de producţie care au ca scop gestionarea modului de
acţiune a altor reguli se numesc metareguli. Un exemplu de metaregulă
este următorul
IF
1. soldul contului C creşte şi
2. volumul achiziţiilor creşte şi
3. există setul de reguli, SR, ale căror premise specifică cifra de
afaceri
THEN
Aplică regulile SR înaintea tuturor celorlaltor reguli.
Exemplu de metaregulă aplicată în analiza financiară

Reprezentarea cunoştinţelor prin reguli de producţie este des


utilizată în sistemele expert din diverse domenii economice. De exemplu,
în cadrul sistemului AESOP (Liebowitz, 1996) este aplicată metodologia
sistemelor expert în domeniul pieţei de capital utilizat în cadrul American
Stock Exchange (AMEX). AESOP utilizează reguli pentru a reprezenta
cunoştinţele unui specialist AMEX. Inginerii care au proiectat sistemul au
considerat că abordarea naturală a reprezentării cunoştinţelor în cadrul
American Stock Exchange este cea a selectării unei serii de reguli pe baza
cărora sunt stabilite opţiunile preţurilor. De asemenea, se remarcă faptul
că euristicile utilizate de specialiştii din domeniu urmează structura IF-
THEN. De exemplu, o regulă de producţie în cadrul acestui sistem este,
IF
Deţin încă acţiuni la X

THEN
Reduce preţul cererii la acţiunile X cu un increment
Exemplu de regulă IF-THEN utilizat în sistemul AESOP
78

Universitatea SPIRU HARET


În cadrul sistemelor expert de tip Vânzător (Salesman Expert
System), regulile de producţie prin care sunt reprezentate cunoştinţele sunt
de două tipuri, după cum urmează (Liebowitz, 1996).
Regulile Client-Produs sunt construite pe principiul
constrângerilor de tipul „Ce nu se potriveşte cu ce” (what-does-not-
match-what). O astfel de regulă de producţie este de tipul
IF
Modelul unei haine este pe cale să devină comun

THEN
Haina va fi mai puţin cerută
Importanţa regulii: 1.
Exemplu de regulă IF-THEN utilizat în sistemul Consumator-Produs
Regulile de Strategie a Vânzărilor sunt reprezentate ca reguli de
ordonare a variabilelor şi reguli de ordonare a valorilor şi sunt metareguli.
De exemplu, un vânzător cu experienţă poate întreba un client
student care este nivelul preţului pe care şi-l poate permite pentru achi-
ziţionarea unui anumit produs, în timp ce pe un client de 40 de ani îl ches-
tionează în legătură cu tipul şi calitatea produsului pe care doreşte să-l
achiziţioneze; de asemenea, vânzătorul va ţine cont şi de sexul clientului.
Secvenţa întrebărilor puse de vânzător este esenţială pentru succesul
afacerii. În termenii sistemului expert, secvenţa întrebărilor determină
ordonarea variabilelor. Un exemplu de regulă de tip ordonare a
variabilelor este,
IF
Nivelul venitului clientului este ridicat
THEN
Clientul solicită un produs de firmă
Importanţa regulii: 0.5.
Exemplu de regulă de ordonare a variabilelor

Prin ordonarea valorilor se înţelege acea valoare pe care vânzătorul


o sugerează prima, în cadrul multiplelor alternative de valori ale unei
anumite variabile. De exemplu, în cazul în care clientul este om de

79

Universitatea SPIRU HARET


afaceri, culoarea costumului pe care îl va cumpăra este în mulţimea
ordonată bleumarin, gri, respectiv maro.
IF
Ocupaţia clientului este om de afaceri
THEN
Clientul solicită un costum de culoare (în ordine) bleumarin, gri,
respectiv maro.
Importanţa regulii: 0.7.
Exemplu de regulă de ordonare a valorilor
În continuare, prezentăm un exemplu de bază de cunoştinţe
formată din reguli de producţie care utilizează factori de certitudine
(reguli de producţie probabiliste). Baza de reguli este o versiune a celei
prezentate în (Ramsay, 1987), respectiv (Thoraton, 1998) şi reflectă
caracteristici ale timpului probabil în funcţie de anotimp. Regulile sunt
descrise în varianta Prolog (vezi capitolul IV) prin,
Regula([<Succesor (Concluzie)>, <Factor de certitudine>,
<Predecesori (Premise)>]).

Regula([anotimp, iarnă], 1, [luna, decembrie]]).


Regula([anotimp, iarnă], 1, [luna, ianuarie]]).
Regula([anotimp, iarnă],0.9, [luna, februarie]]).
Regula([anotimp, primăvară], 0.7, [luna, martie]]).
Regula([anotimp, primăvară], 0.9, [luna, aprilie]]).
Regula([anotimp, primăvară], 0.6, [luna, mai]]).
Regula([anotimp, vară], 0.8, [luna, iunie]]).
Regula([anotimp, vară], 1, [luna, iulie]]).
Regula([anotimp, vară], 1, [luna, august]]).
Regula([anotimp, toamnă], 0.8, [luna, septembrie]]).
Regula([anotimp, toamnă], 0.7, [luna, octombrie]]).
Regula([anotimp, toamnă], 0.6, [luna, noiembrie]]).
Regula([[presiune, mare], 0.6, [vremea_de_ieri, bună], [stabilitatea
vremii, stabilă]]).
Regula([[presiune, mare], 0.9, [nori, sus]]).
Regula([[presiune, mare], 0.9, [nori, deloc]]).

80

Universitatea SPIRU HARET


Regula([[temperatură, rece], 0.9, [anotimp, iarnă],[presiune,
mare]]).
Regula([[temperatură, rece], 0.6, [anotimp, vară],[presiune,
mică]]).
Regula([[vânt, deloc], 0.3, [presiune, mare]]).
Regula([[vânt, est], 0.3, [presiune, mare]]).
Regula([[vânt, vest], 0.6, [presiune, mică]]).
Regula([[temperatură, cald], 0.8, [vânt, sud]]).
Regula([[temperatură, rece], 0.9, [vânt, est], [nori, deloc], [anotimp,
iarnă]]).
Regula([[temperatură, cald], 0.9, [vânt, deloc], [presiune, mare],
[anotimp, vară]]).
Regula([[ploaie, da], 0.4, [în_ce_direcţie, vest]]).
Regula([[temperatură, rece], 0.4, [în_ce_direcţie, nord]]).
Regula([[ploaie, nu], 0.7, [în_ce_direcţie, est]]).
Regula([[ploaie, da], 0.3, [anotimp, primăvară], [nori, jos]]).
Regula([[ploaie, da], 0.3, [anotimp, primăvară], [nori, sus]]).
Regula([[temperatură, cald], 0.7, [anotimp, vară]]).
Regula([[ploaie, da], 0.2, [anotimp, vară], [temperatură, cald]]).
Regula([[ploaie, da], 0.6, [presiune, mică]]).
Regula([[ploaie, da], 0.6, [vânt, vest]]).
Regula([[ploaie, da], 0.8, [nori, jos]]).
Regula([[temperatură, rece], 0.8, [anotimp, toamnă], [nori, deloc]]).
Regula([[temperatură, rece], 0.7, [anotimp, iarnă]]).

2.6. Baze de date deductive


Bazele de date deductive fac parte din categoria bazelor de date
active adică acele baze ce sunt caracterizate de comportamentul lor
dinamic în raport cu schimbările ce survin în interiorul acestora sau cu
evenimentele ce se produc în afara acestora. Acest comportament
dinamic al bazelor de date active este descris de regulile eveniment –
condiţie – acţiune (ECA). Aceasta înseamnă că atunci când (when) un
eveniment se produce, se testează o condiţie şi dacă (if) aceasta este
adevărată la evaluare, atunci (then) se execută o acţiune.
Bazele de date deductive sunt denumite şi baze de date inteligente
sau baze de date bazate pe logică şi sunt caracterizate de posibilitatea
81

Universitatea SPIRU HARET


gestionării adaptive a datelor în conformitate cu cerinţele utilizatorilor în
luarea deciziilor economice. Bazele de date deductive sunt baze mari de
date ce sunt supuse analizei şi interpretării. Sistemul de gestiune aferent
acestor baze de date deductive cuprinde instrumente de realizare automată
a raţionamentelor ce sunt realizate prin programare logică. Aşa cum s-a
arătat mai sus, programarea logică reprezintă un tip de programare
bazată pe raţionamente, în care programul este compus din fapte şi reguli
şi are ca rezultat concluzii.
Fundamentarea matematică a bazelor de date deductive este bazată
pe universul Herbrand, adică setul de simboluri de tip constantă din
limbajul L, limbaj care nu conţine simboluri funcţie, dar conţine cel puţin
simboluri predicative. Baza Herbrand cuprinde ansamblul faptelor
posibile despre baza de date şi se constituie într-un sistem închis.
Bazele de date deductive utilizează, în principal, logica
propoziţiilor de ordinul întâi, adică acel limbaj formal ce conţine un
alfabet, reguli de sintaxă, axiome şi o regulă de deducţie de tipul când
(when)...dacă (if)... atunci (then) ... Este de menţionat diferenţa esenţială
dintre regulile de producţie specifice sistemelor expert (premisă sau
condiţie→concluzie) şi regulile specifice sistemelor de gestiune a bazelor
de date active (eveniment→condiţie →acţiune).
Bazele de date deductive prezintă două componente: componenta
asociată modulului relaţional (SGBDR pentru baza de fapte) şi
componenta asociată modulului programării logice (pentru realizarea
interogărilor). Cuplarea dintre SGBDR şi modulul programării logice
(sistemul de raţionamente) poate să fie cuplare slabă (realizată numai în
anumite momente de timp) sau cuplare strânsă (interacţiune continuă,
permanentă). Prin integrarea completă a instrumentelor de realizare
automată a raţionamentelor în cadrul SGBDR se obţine un sistem de
gestiune a bazelor de date deductive cu limbaj de descriere a datelor,
limbaj de manipulare a datelor şi limbaj de reguli. Pe baza limbajului
Prolog şi a unei interfeţe specializate în lucrul cu baze de date, s-a realizat
limbajul Datalog. Limbajul Datalog este un limbaj declarativ orientat pe
programarea logică acceptat la limbaj standard destinat bazelor de date
deductive. Un program realizat în limbajul Datalog este o secvenţă cu
definiţii de proprietăţi. Sintaxa limbajului nu conţine predicate speciale şi
utilizează logica propoziţiilor de ordinul întâi, fără simboluri de funcţie.

82

Universitatea SPIRU HARET


Întrebări de control
1. Ce include reprezentarea cunoaşterii?
2. Cum se clasifică metodele de reprezentare a cunoştinţelor?
3. Ce este logica?
4. Ce sunt predicatele?
5. Ce este aserţiunea?
6. Ce este propoziţia?
7. În ce constă reprezentarea cunoştinţelor prin cadre?
8. Ce este reţeaua semantică?
9. Prezentaţi interviul.
10. Ce este analiza protocolului?
11. Ce este tehnica Delphi?
12. Ce este brainstorming-ul?
13. Ce sunt propoziţiile compuse?
14. Care sunt regulile de construcţie ale unei fpe?
15. Ce sunt expresiile complet parantezate?
16. Care sunt conectorii logici?
17. Ce sunt premisele argumentării?
18. Ce este silogismul ipotetic?
19. Ce este tautologia?
20. Când două propoziţii sunt logic echivalente?
21. Care este legea terţiului exclus?
22. Care sunt legile lui de Morgan?
23. Care sunt reprezentările standard ale formelor normale ale
expresiilor logice?
24. Prezentaţi teorema deducţiei.
25. Ce este calculul predicaţional?
26. Ce este cuantificatorul existenţial?
27. Care este formatul predicatului?
28. Ce este formula atomică?
29. Care sunt componentele interpretării unei expresii logice?
30. Descrieţi regula de inferenţă generalizare universală.
31. Ce sunt regulile de producţie?
32. Care sunt proprietăţile regulilor de producţie?
33. Ce sunt bazele de date deductive?

83

Universitatea SPIRU HARET


3. SISTEME EXPERT CU REGULI DE PRODUCŢIE

3.1. Ciclul de bază al unui motor de inferenţe


Un sistem expert cu reguli de producţie este un sistem expert care
utilizează ca metodă de reprezentare a cunoştinţelor metoda regulilor de
producţie.
Un motor de inferenţe (subsistemul rezolutiv) al unui sistem expert cu
reguli de producţie îndeplineşte următoarele funcţii: declanşarea (activarea)
regulilor; interogarea utilizatorului (întrebare); adăugarea răspunsului
utilizatorului în baza de fapte; inferarea unei noi fapte dintr-o regulă (ce
aparţine bazei de reguli); adăugarea faptei obţinute în procesul de inferenţiere
în baza de fapte; compararea faptelor din baza de fapte cu componentele
corespunzătoare din reguli; atunci când se realizează potrivirea faptelor din
baza de fapte cu faptele din reguli, se produce declanşarea regulilor;
controlarea atingerii scopului (goal) prestabilit; declanşarea celui mai mic
număr de reguli ce sunt necesare pentru soluţionarea problemei de rezolvat.
Fiecare motor de inferenţe este fundamentat pe derularea unui ciclu
de bază (cu patru faze) care nu depinde de modul de raţionament: selecţia,
filtrarea, rezolvarea conflictelor şi execuţia (fig.3.1.).
Selecţia (restricţia) asigură extragerea din baza de reguli a unui
submulţimi (partiţie) de reguli şi din baza de fapte a unei submulţimi
(partiţie) de fapte, partiţii ce vor constitui elementele ce caracterizează
subdomeniul de rezolvare a problemei.
Filtrarea sau potrivirea (pattern matching) permite compararea părţii
de premisă din regulile selectate cu faptele specifice problemei de rezolvat,
cu scopul de a determina o submulţime de reguli declanşabile, denumită
submulţime de conflict. Operaţia de comparare se poate termina cu succes
(au rezultat una sau mai multe reguli declanşabile) sau cu eşec (nu a rezultat
nici o regulă declanşabilă).
84

Universitatea SPIRU HARET


Fig.3.1. Schema logică a funcţionării unui motor de inferenţe

85

Universitatea SPIRU HARET


Rezolvarea conflictelor are loc în situaţia existenţei unui rezultat al
filtrării cu mai multe reguli declanşabile şi este necesar să fie aleasă numai
o regulă declanşabilă pentru a fi executată. Se poate opta pentru unul dintre
următoarele criterii de alegere a regulii declanşabile: prima regulă din listă,
cea mai puţin complexă regulă (cu cel mai mic număr de fapte în premisă),
cea mai specifică regulă, cea mai utilizată regulă.
Execuţia asigură activarea regulii desemnate în faza precedentă ce
are ca efect adăugarea uneia sau mai multor fapte în baza de fapte. Pentru
rezolvarea problemei, motorul de inferenţe poate executa mai multe iteraţii
ale ciclului de bază prezentat, oprirea având loc în funcţie de metoda de
inferenţă (raţionament) folosită.
Dacă soluţia găsită este acceptabilă, acesta se afişează şi sunt
precizate metodele de inferenţiere (raţionament) folosite. În caz contrar
(soluţia găsită nu este acceptabilă), dacă în faza de execuţie a regulilor, s-a
schimbat „situaţia iniţială”, atunci se porneşte un ciclu rezolutiv nou
(fig.3.1). Dacă nu s-a schimbat „situaţia iniţială”, atunci problema nu are
soluţie şi se opreşte procesul rezolutiv.

3.2. Metode de inferenţă


Se reaminteşte aici că inferenţa sau raţionamentul reprezintă un
proces de generare a lanţurilor logice între premisele şi concluziile unei
probleme de rezolvat şi se realizează de către motorul de inferenţe
(subsistemul rezolutiv) din compunerea unui sistem expert. Acest proces
de inferenţiere are la bază piese ale cunoaşterii (date sub formă de
cunoştinţe) asigurate prin enunţul problemei de rezolvat (inclusiv tipul
problemei) şi piese ale cunoaşterii care se găsesc deja în baza de cunoştinţe
a sistemului expert. Lanţurile logice între premisele şi concluziile unei
probleme de rezolvat se construiesc având la bază o strategie (metodă) de
succesiune corectă a inferenţelor (raţionamentelor).
Metodele de inferenţă (raţionament) ce pot fi folosite de motorul de
inferenţă sunt metoda deductivă (strategie de control înainte), metoda
inductivă (strategie de control înapoi), metoda mixtă şi metoda de control
circumstanţial.

86

Universitatea SPIRU HARET


3.2.1. Metoda deductivă
Metoda deductivă (strategia de control înainte, forward chaining)
permite motorului de inferenţe ca, pornind de la fapte, să realizeze un
anumit scop (goal), după următoarea succesiune de operaţii: stabilirea
datelor de intrare prin extragerea din baza de cunoştinţe a acelor reguli care
prezintă în partea de premise numai fapte specifice problemei de rezolvat; o
regulă este declanşabilă dacă premisa sa este adevărată (true); după
rezolvarea conflictelor, se alege o singură regulă declanşabilă care se va
supune execuţiei. Procesul este repetat până când se obţine scopul (goal)
propus (situaţie de succes) sau nu mai există reguli declanşabile de aplicat
(situaţie de eşec).
Schema logică pentru procesul de inferenţiere specific metodei
deductive este prezentată în fig.3.2.
Pentru înţelegerea acestei metode de inferenţiere (raţionament), se
consideră un exemplu cu o bază de cunoştinţe abstractă compusă din 12
reguli care sunt prezentate în lista următoare:
R1 Dacă B atunci H
R2 Dacă B şi D atunci I
R3 Dacă E atunci B
R4 Dacă D şi F atunci J
R5 Dacă C atunci E
R6 Dacă C atunci G
R7 Dacă D atunci A
R8 Dacă F atunci K
R9 Dacă H atunci C
R10 Dacă I atunci A
R11 Dacă J atunci F
R12 Dacă A atunci F

87

Universitatea SPIRU HARET


Fig.3.2. Schema logică pentru procesul de inferenţiere specific metodei deductive

La început, baza de fapte conţine faptele B, D şi F (situaţia iniţială).


Scopul problemei este K. Mulţimea conflictuală este formată din regulile
R1, R2, R4, R7 şi R8. Pentru rezolvarea conflictelor, se foloseşte criteriul
„Se aplică prima regulă din lista selectată în ordinea numerotării”. În
fig.3.3. este reprezentat graful de inferenţiere deductivă rezultat prin
aplicarea criteriului precizat mai sus. Fapta K este deductibilă pe baza si-
tuaţiei iniţiale B,D,F în cinci paşi (inferenţe). Procesul de inferenţiere are,
deci, la bază regulile R1, R2, R4, R7 şi R8. Arcele continue sunt
corespunzătoare regulilor ce au fost selectate pentru a fi executate. În drept-
unghiuri este reprezentată baza de fapte care, în exemplul considerat este
completată cu fapte noi după fiecare pas (inferenţiere): de la baza de fapte
din situaţia iniţială – B,D,F acesta devine în final – A,B,D,F, H, I, J, K.
88

Universitatea SPIRU HARET


Fig.3.3. Graful de inferenţiere deductivă cu Regula cu numărul cel mai mic

Criteriile care se folosesc în rezolvarea conflictelor influenţează


eficacitatea funcţionării sistemului expert. Pentru a demonstra această
afirmaţie, în exemplul considerat, dacă se alege criteriul de rezolvare a
conflictelor „Regula cea mai complexă”, adică regula cu numărul cel mai
mare de premise, iar în caz de egalitate, se consideră criteriul „Regula cu
numărul cel mai mare”, procesul de inferenţiere se termină în şase paşi
(inferenţe), aşa cum se poate observa din fig.3.4.
Metoda deductivă prezintă avantajele generării tuturor soluţiilor
posibile pentru problema de rezolvat şi îmbogăţirii bazei de fapte cu fapte
noi pe durata procesului de inferenţiere. Dezavantejele metodei deductive
sunt: inspectarea tuturor regulilor posibile; necesitatea definirii detaliate a
situaţiei iniţiale; numărul mare de cicluri de bază ale motorului de inferenţe
când numărul de reguli şi de fapte este foarte mare; lipsa interactivităţii
procesului de inferenţiere.
89

Universitatea SPIRU HARET


Fig.3.4. Graful de inferenţiere deductivă cu
Regula cea mai complexă şi Regula cu numărul cel mai mare

3.2.2. Metoda inductivă


Metoda inductivă (strategia de control înapoi, backward chaining)
pleacă de la scopul problemei de rezolvat (fig.3.5) şi conţine procese
inductive de raţionament prin care se găsesc faptele care satisfac scopul
stabilit, în următoarea succesiune: se stabileşte fapta particulară ce
îndeplineşte calitatea de scop (goal); se analizează dacă regulile supuse
selecţiei prezintă în partea de concluzii scopul stabilit; premisele acestor
reguli reprezintă subscopuri care se supun demonstraţiei; procesul se repetă
până când toate subscopurile puse în evidenţă sunt demonstrate (se obţin
reguli declanşabile); în caz contrar, când nu se obţine nici o regulă
declanşabilă, se înregistrează situaţia de eşec.
90

Universitatea SPIRU HARET


Fig.3.5. Schema logică pentru procesul de inferenţiere specific metodei inductive

3.2.3. Metoda mixtă


Metoda mixtă combină cele două strategii de control de mai sus, cu
scopul de a folosi avantajele fiecăreia dintre aceste metode de inferenţă.

3.2.4. Metoda de control circumstanţial


Metoda de control circumstanţial este fundamentată pe faptul că
regulile sunt valabile în funcţie de circumstanţele aplicării acestora. Alături de
evaluarea condiţiei de adevăr ce depinde de starea curentă a problemei de
rezolvat, este necesară şi efectuarea unei analize a corelaţiilor ce rezultă din
situaţia existentă în acel moment pentru obiectivele problemei de rezolvat.
91

Universitatea SPIRU HARET


3.3. Baza de cunoştinţe
În domeniul economic, problema de rezolvat cu ajutorul sistemului
expert este adecvată dacă îndeplineşte mai multe condiţii: problema este
posibilă, potrivită şi justificabilă (profitabilă); natura problemei presupune
manipulări simbolice şi euristici; problema este complexă şi dificilă; scopul
problemei serveşte unei utilităţi imediate şi de perspectivă. Alegerea unui
instrument de dezvoltare a sistemului expert este funcţie de problemă,
resursele alocate, timpul la dispoziţie şi iscusinţa şi experienţa cogniti-
cianului. Cogniticianul are responsabilitatea fundamentală de a realiza
achiziţia şi organizarea cunoaşterii, obţinând astfel baza de cunoştinţe.
Achiziţia cunoaşterii reprezintă procesul de colectare, structurare şi
organizare a cunoaşterii, folosind una sau mai multe surse (experţi umani,
documente etc), cu scopul de a obţine stocarea acesteia în baza de
cunoştinţe a sistemului expert pentru folosirea ulterioară în rezolvarea
problemelor. Achiziţia cunoaşterii se realizează în cinci faze: identificarea
caracteristicilor problemei de rezolvat (rezultă cerinţele problemei de
rezolvat), conceptualizarea (formularea conceptelor care fac obiectul repre-
zentării cunoaşterii), formalizarea (proiectarea structurii şi organizarea
cunoaşterii), implementarea (formularea regulilor în cazul sistemelor expert
cu reguli de producţie) şi testarea (validarea şi testarea bazei de cunoştinţe).
De la o fază la alta se pot realiza, când este cazul, prin reluare, reiden-
tificarea, reconceptualizarea (reformularea), reproiectarea, rafinarea regu-
lilor şi retestarea bazei de cunoştinţe.
Colectarea cunoaşterii (elicitation of knowledge) se obţine prin meto-
de manuale (interviul, analiza de caz, brainstorming-ul, prototipizarea, co-
mentariile etc.), metode semiautomate (asistate de calculator) şi metode
automate.
Dintre metodele uzuale conduse de cognitician pentru achiziţia
cunoaşterii se menţionează analiza protocoalelor. Protocolul, în această
metodă, reprezintă o înregistrare sau o documentare executată secvenţial în
timpul rezolvării problemei, care se referă la expertul uman. Analiza proto-
coalelor conţine următoarele operaţii: evidenţierea detaliată de către exper-
tul uman a cunoaşterii implicată de fiecare acţiune; comentarea de către
expertul uman a fiecărei operaţii în scopul înregistrării audio-video; ela-
borarea frazelor şi enunţurilor de către expertul uman şi scrierea acestora în
protocol; construirea regulilor de producţie pe baza frazelor şi enunţurilor
92

Universitatea SPIRU HARET


selectate ca relevante şi rescrise de către cognitician; elaborarea de către
cognitician a modelelor bazei de cunoştinţe cu folosirea regulilor de
producţie.
Dintre metodele conduse de expertul uman (manuale şi
semiautomate) se menţionează metoda manuală autoraportul expertului ce
prezintă toate conceptele şi relaţiile de nivel înalt cu privire la problema de
rezolvat şi metodele asistate de calculator care au, mai întâi, ca rezultat, un
model iniţial al bazei de cunoştinţe. Modelul iniţial al bazei de cunoştinţe se
obţine prin intermediul unor tehnici de modelare vizuală după care, prin
rafinare, se realizează baza de cunoştinţe finală.
Cea mai mare parte a instrumentelor inteligente de achiziţie a
cunoaşterii (ETS, KRITON, AUTOINTELLIGENCE, AQUINAS etc.) au la
bază metoda RGA (Repertory Grid Analysis) fundamentată pe premisa că,
de cele mai multe ori, experienţa are la bază percepţia şi mai puţin intuiţia.
Ca urmare, cunoaşterea şi percepţiile asupra domeniului specific expertului
uman sunt clarificate şi organizate într-un model conceptual personal, în
următoarea succesiune: identificarea de către expertul uman a obiectelor
relevante din domeniul de expertiză; identificarea de către expertul uman a
atributelor importante în procesul de luare a deciziei; însoţirea fiecărui
atribut cu o schemă binară (caracteristici – opusul acestor caracteristici);
completarea (şi apoi rafinarea) unei scale de la 1 la 3 sau de la 1 la 5 cu
răspunsurile la întrebarea: „Ce caracteristici şi atribute diferenţiază două
obiecte de un al treilea?”.
Organizarea cunoaşterii se referă la metoda de reprezentare a
cunoştinţelor (reguli de producţie, de exemplu), verificarea cunoaşterii
(asigurarea corectitudinii bazei de cunoştinţe) şi validarea procesului de
inferenţiere (se execută, periodic, pe timpul testării sistemului expert).
Baza de cunoştinţe este actualizată şi întreţinută permanent, prin
adăugare de noi cunoştinţe, cu o atentă monitorizare a nivelului de
performanţă a sistemului expert.

3.4. Interfaţa cu utilizatorul


Interfaţa cu utilizatorul asigură dialogul utilizatorului cu sistemul
expert, pentru introducerea datelor de intrare şi afişarea rezultatelor pentru
problema de rezolvat. Dialogul utilizatorului cu sistemul expert reprezintă
un proces ciclic compus din următoarele elemente: acţiunile utilizatorului
93

Universitatea SPIRU HARET


pe durata unei sesiuni de lucru (alegere opţiuni de lucru, lansare comenzi,
răspunsuri la întrebările pe care i le adresează sistemul expert etc.);
documentarea şi instruirea utilizatorului cu privire la utilizarea sistemul
expert (help); elementele de prezentare a sistemului expert (meniuri,
ferestre, text, icon-uri, grafică etc.).; interacţiunea utilizatorului cu sistemul
expert; inferfaţa cu utilizatorul (componentele hard şi soft care asigură
dialogul utilizator – sistem expert).
De regulă, interfaţa cu utilizatorul este realizată cu ajutorul ecranului,
tastaturii şi mouse-ului şi este bazată pe meniu şi ferestre multiple.
Ferestrele se pot suprapune una peste alta şi includ informaţii diverse.
Controlul meniului şi ferestrelor se asigură prin combinaţii de taste sau cu
mouse-ul. Sunt realizate şi interfeţe de tipul întrebare-răspuns, orientate pe
icon-uri sau bazate pe limbaje de comandă ce folosesc tehnologii
informatice ca GUI (Graphical User Interface), multimedia, VIM (Visual
Interactive Modeling) sau hipertext.
Modelele utilizate pentru proiectarea interfeţelor cu utilizatorul sunt
modelul proiectantului, modelul sistemului şi modelul utilizatorului.
Modelul proiectantului reflectă viziunea echipei de proiectare (expert
uman, cognitician, analişti, programatori) care proiectează şi implementează
sistemul expert. Modelul sistemului reprezintă soluţia combinată a echipei de
proiectare şi a utilizatorilor sistemului expert. Modelul utilizatorului repre-
zintă punctul de vedere, prin consens, al mai multor utilizatori ai sistemului
expert.
Întrebări de control
1. Ce este un sistem expert cu reguli de producţie?
2. Care sunt funcţiile unui motor de inferenţă?
3. În ce constă ciclul de bază al unui motor de inferenţă?
4. Descrieţi pe scurt metodele de inferenţă.
5. Care este schema logică a procesului de inferenţiere specific
metodei deductive?
6. Care sunt avantajele şi dezavantajele metodei deductive?
7. În ce constă metoda inductivă?
8. Care sunt fazele procesului de achiziţie a cunoaşterii?
9. Cum se realizează colectarea cunoaşterii?
10. Ce conţine o bază de cunoştinţe?
11. În ce constă dialogul utilizatorului cu sistemul expert?
12. Care sunt modelele folosite pentru proiectarea interfeţei cu
utilizatorul?
94

Universitatea SPIRU HARET


4. LIMBAJUL DE PROGRAMARE TURBO PROLOG

Prolog (Programming in logic) este un limbaj dedicat calculului


simbolic, non-parametric. Programarea Prolog este orientată spre
rezolvarea problemelor care implică implementarea unor obiecte şi a
relaţiilor existente între ele. Limbajul Prolog este deci util în rezolvarea
problemelor de inteligenţă artificială şi sisteme expert.
Prolog este un limbaj de nivel înalt. Prin programare logică
(programare de raţionamente) se înţelege realizarea unui program care este
format din fapte şi relaţii (relaţii logice între mulţimi de date) din care se
obţin concluzii. Un program Prolog reprezintă o colecţie de fapte şi reguli.

4.1. Noţiuni introductive. Reprezentarea cunoştinţelor


în limbajul Prolog. Clauze Prolog. Variabile şi constante
În continuare vom prezenta primele noţiuni de programare în
limbajul Prolog exemplificate prin descrierea şi consultarea unui arbore
genealogic (Bratko, 1990).
Este considerat arborele genealogic, A, din fig. 4.1.
Descrierea Prolog a relaţiei Tom este părintele lui Bob este
parinte(tom,bob).
unde parinte este predicatul prin intermediul căruia este exprimată relaţia.
Afirmaţia Tom este părintele lui Bob este întotdeauna adevărată, deci
este o aserţiune; în acest caz, parinte(tom,bob) constituie un fapt Prolog.
O clauză Prolog este o entitate sintactică care exprimă o relaţie.
Clauzele Prolog sunt fapte şi reguli şi sunt încheiate prin simbolul “.”. Un
scop Prolog este constituit din numele predicatului şi argumentele sale;
construcţia sintactică nu este încheiată cu “.”. De exemplu,
parinte(tom, bob). este o clauză Prolog (fapt) şi
parinte(tom, bob) este un scop Prolog.
95

Universitatea SPIRU HARET


Fig. 4.1.

Un predicat Prolog poate fi definit printr-un set de clauze în care


predicatul este identificat prin acelaşi nume şi are acelaşi număr de
argumente. De exemplu, arborele genealogic considerat poate fi descris
prin intermediul predicatului parinte utilizând clauzele,
parinte(tom,bob).
parinte(pam,bob).
parinte(tom,liz).
parinte(pam,liz).
parinte(tom,jim).
parinte(pam,jim).
parinte(liz,fred).
parinte(jim,ann).
parinte(ann,beth).
parinte(ann,tim).
96

Universitatea SPIRU HARET


Substantivele proprii, argumente ale relaţiei parinte, au fost scrise cu
litere mici datorită faptului că, în limbajul Prolog, şirurile de caractere care
încep cu majuscule sunt considerate identificatori de variabile. Constantele
Prolog sunt
− atomi:
− şir de caractere cuprins între „”: de exemplu „Ce mai faci?”;
− cuvânt care începe cu literă mică şi este urmat de literă, cifră
sau simbolul „_”: de exemplu ana, xyz123, ciocolata_alba;
− numere întregi şi reale.

Regulile Prolog sunt clauze care permit declanşarea mecanismului


de inferenţă specific limbajului. Diferenţa între a scrie o aserţiune Prolog şi
o regulă Prolog este diferenţa între un caz particular şi cazul general. De
exemplu, utilizând informaţiile prezentate în A, pot fi definite predicatele
Prolog fata şi baiat, conform următoarei secvenţe de fapte Prolog,
fata(pam).
fata(liz).
fata(beth).
baiat(bob).
baiat(tom).
baiat(jim).
baiat(fred).
baiat(tim).

Pe baza predicatelor parinte, baiat şi fata putem defini relaţia mama:


„X este mama lui Y dacă X este părintele lui Y şi X este fată”. În cadrul
descrierii relaţiei, X şi Y reprezintă variabile, numite şi variabile logice.
Variabilele sunt utilizate pentru generalizare. Următoarea regulă Prolog, R,
este utilizată pentru definirea relaţiei mama,
mama(X,Y):-parinte(X,Y), fata(X).
În definirea lui R, simbolul „,” indică conjuncţia, iar „:-” este citit
„dacă”. Cu alte cuvinte, regula Prolog prin care este definit predicatul
mama este interpretată prin: „X este mama lui Y” este adevărată dacă
„X este părintele lui Y” şi „X este fată” sunt ambele adevărate.
O regulă Prolog conţine două părţi: capul - concluzia şi corpul –
setul premiselor. De exemplu, capul lui R este scopul mama(X,Y)şi corpul

97

Universitatea SPIRU HARET


este constituit din două subscopuri aflate în conjuncţie, parinte(X,Y),
respectiv fata(X).
În continuare poate fi definită relaţia sora astfel: „X este sora lui Y dacă
există Z cu proprietăţile Z este părintele lui X şi Z este părintele lui Y, X este
fată şi variabilele X şi Y nu pot avea aceeaşi valoare”. Regula Prolog este,
sora(X,Y):- parinte(Z,X), parinte(Z,Y),X<>Y, fata(X).
Dacă, în cadrul unei reguli, o variabilă logică, V, apare de mai multe
ori, atunci V desemnează acelaşi obiect, indiferent de valoarea concretă a
obiectului. De exemplu, variabila X utilizată în definirea relaţiei mama
desemnează aceeaşi persoană atât în scopul parinte(X,Y), cât şi în scopul
fata(X). Dacă în cadrul mai multor clauze există variabile cu acelaşi
identificator, atunci ele diferă. De exemplu, variabila logică X din definirea
relaţiei mama nu referă aceleaşi obiecte cu variabila logică X din definirea
relaţiei sora.
O variabilă particulară în Prolog este variabila „blank”, desemnată de
simbolul „_”; variabila este utilizată în situaţiile în care este necesară
existenţa unui argument, dar instanţierea (§4.2) cu o valoare particulară nu
este necesară, în sensul că eventualele valori pe care variabila le poate lua
nu au semnificaţie în descrierea predicatului respetiv. De exemplu, dacă
este considerată baza de cunoştinţe în care sunt definite predicatele parinte,
fata, baiat, predicatele fiu şi fiica pot fi definite prin,
fiu(X):-parinte(_,X), baiat(X).
fiica(X):-parinte(_,X), fata(X).
Regula prin care este definit predicatul fiu este interpretată astfel: X
este fiu dacă în baza de cunoştinţe disponibilă X este are un părinte (nu
contează cine este acela) şi X este băiat. Similar este explicată şi regula prin
care este definită relaţia fiica.
Prin exemplele prezentate mai sus au fost reprezentate cunoştinţe
prin fapte şi reguli Prolog în care este utilizată conjuncţia. În Prolog pot fi
reprezentate, însă, şi cunoştinţe care utilizează conectorul disjunctiv. De
exemplu, informaţia
„X este fericit dacă este sănătos SAU
X este fericit dacă este bogat SAU
X este fericit dacă este înţelept.”
este reprezentată prin intermediul predicatelor de aritate 1 fericit, sanatos,
bogat şi intelept,

98

Universitatea SPIRU HARET


fericit(X):-sanatos(X).
fericit(X):-bogat(X).
fericit(X):-intelept(X).
De asemenea, pot fi reprezentate şi cunoştinţe în care este folosită
negaţia. De exemplu, relaţia diferit(X,Y), unde X şi Y sunt variabile logice
cu valori posibile numere reale poate fi reprezentată Prolog prin,
diferit(X,Y):- not(X,Y).

În scopul demonstrării utilităţii sistemului Prolog în rezolvarea


problemelor de logică, autorii consideră interesant următorul exemplu.
Textul problemei este extras din romanul „Creanga de aur”, de Mihail
Sadoveanu.
„Ar fi fiind o caravană de cămile cu care fac negoţ între Teopomp şi
Prusa trei neguţători cu numele Zosima, Daniil şi Teofan. Slujitori la acea
caravană sunt trei oameni de rând care au primit prin sfântul botez acelaşi
nume ca şi neguţătorii: unul e hamal, altul călăuz, altul conducător al
cămilelor. Îi chiamă şi pe aceştia deci: Yosima, Daniil şi Teofan.
Hamalul locuieşte într-un sat, drept la jumătate de cale între
Teopomp şi Prusa.
Pe hamal şi pe neguţătorul care locuieşte la Prusa îi chiamă la fel.
La Teopomp locuieşte neguţătorul cu numele Teofan.
Cel mai apropiat neguţător de locuinţa hamalului are un câştig
tocmai de nouă ori mai mare decât bietul hamal.
Zosima neguţătorul câştigă în afacerile sale 2222 bani de aur.
Călăuzul are un ochi mai puţin decât Daniil.
Suntem întrebaţi care este numele conducătorului de cămile.”
Vom simplifica rezolvarea problemei prin următoarele observaţii:
1. Deoarece 2222 nu este divizibil cu 9, rezultă că neguţătorul
Zosima nu câştigă de nouă ori mai mult decât hamalul, deci nu el este cel
mai apropiat de locuinţa hamalului.
2. Pe baza ultimei afirmaţii din problemă, rezultă că numele
călăuzului nu este Daniil.
Menţionăm, de asemenea, că sursa este scrisă în mediul Turbo
Prolog: sursa conţine mai multe secţiuni (vezi § 4.4), în cazul de faţă fiind
utilizate două, şi anume secţiunea predicates, în care sunt descrise toate
predicatele utilizate în sursă, respectiv secţiunea clauses, în care sunt
definite predicatele.
99

Universitatea SPIRU HARET


predicates
negustor(symbol) /*descrierea negustorilor*/
nume(symbol) /*numele posibile pentru negustori si slujitori*/
nume_profesie(symbol,symbol) /*relatia nume-profesie*/
locuinta(symbol,symbol,symbol) /*relatia nume-profesie-locuinta*/
castig(symbol, symbol,symbol)

clauses
negustor(zosima).
negustor(daniil).
negustor(teofan).
nume(zosima).
nume(daniil).
nume(teofan).
castig(X,hamal,mare):-not(X=zosima).
locuinta(teofan,negustor,teopomp).
locuinta(X,hamal,mijloc):-nume_profesie(X,hamal).
locuinta(X,negustor,prusa):-not(castig(X,hamal,mare)).
nume_profesie(X,hamal):-negustor(X),
locuinta(X,negustor,prusa).
nume_profesie(X,calauz):-nume(X),
not(X=daniil),
not(nume_profesie(X,hamal)).
nume_profesie(X,conducator):-nume(X),
not(nume_profesie(X,calauz)),
not(nume_profesie(X,hamal)).

4.2. Strategia de căutare a soluţiilor în Prolog. Unificare şi potrivire.


Backtracking. Predicatele cut şi fail
Una dintre cele mai importante caracteristici ale limbajului Prolog
este strategia de căutare în spaţiul soluţiilor. În general, există mai multe
modalităţi de căutare a soluţiilor unei probleme şi este deci necesară
alegerea unor algoritmi cât mai eficienţi. Limbajul Prolog are implementat
în mod natural o singură metodă de căutare, cunoscută drept căutarea în
adâncime, DF (Depth First Search), dar, evident, permite utilizatorilor
implementarea altor metode de căutare.
100

Universitatea SPIRU HARET


Limbajul Prolog este interactiv; interacţiunea dintre sistemul Prolog
şi programator este interpretată ca o conversaţie iniţiată de utilizator.
Informal, o interogare Prolog este un scop, S, trimis sistemului, care
determină valoarea de adevăr a lui S (adevărat sau fals). În mediul Turbo
Prolog, interogarea este realizată la execuţia sursei Prolog (selectarea
opţiunii Run),
• fie prin editarea „solicitării” în Goal: (scop extern),
• fie prin rezolvarea solicitării menţionate în secţiunea internă
goal (scop intern, vezi § 4.4).
În continuare, până la prezentarea predicatului predefinit fail,
vom considera exclusiv scopuri externe.

Iniţial, pentru o mai bună înţelegere, vom explica mecanismul de


căutare a soluţiilor în Prolog prin câteva exemple. Spaţiul soluţiilor este
reprezentat în continuare prin intermediul arborilor AND/OR (Brna, 2001).

1. Fie baza de cunoştinţe Prolog,


baiat(bob).
baiat(tom).
baiat(fred).
fata(beth).
fata(liz).
şi interogarea:
Goal: fata(liz).
„Este adevărat că Liz este fată?”. În scopul rezolvării acestei
interogări, sistemul declanşează un mecanism de căutare în setul de fapte şi
reguli Prolog descrise în cadrul sursei, în acelaşi mod în care utilizatorul
citeşte sursa (de sus în jos). La consultarea primelor 4 clauze Prolog,
sistemul nu găseşte nici o potrivire, fie din cauză că predicatul nu este fata
(în cazul primelor 3 clauze), fie datorită faptului că argumentele nu „se
potrivesc”. În momentul consultării celei de-a 5-a clauze, este identificat
faptul Prolog fata(liz). şi răspunsul sistemului este yes. Spaţiul soluţiilor
este reprezentat în acest caz prin următorul arbore AND/OR (fig. 4.2).

101

Universitatea SPIRU HARET


fata(liz)

baiat(bob) baiat(tom) baiat(fred) fata(beth) fata(liz)

Fig. 4.2.

2. Fie baza de cunoştinţe Prolog,


parinte(pam,bob).
parinte(pam,jim).
parinte(ann,beth).
fata(pam).
fata(beth).
fata(ann).
mama(X,Y):-parinte(X,Y), fata(X).
şi interogarea
Goal: mama( ann, pam).

„Ann este mama lui Pam?” Sistemul Prolog caută în baza de


cunoştinţe secvenţial, până la întâlnirea clauzei mama(X,Y):-parinte(X,Y),
fata(X). În acest moment, este realizată potrivirea dintre scopul mama(ann,
pam) şi capul clauzei, mama(X,Y). Procesul de potrivire este numit
unificare şi, în acest caz, variabilele logice X şi Y sunt legate (sau
instanţiate) de (respectiv cu) atomii ann şi pam (X=ann şi Y=pam). În
continuare, sistemul trebuie să rezolve, în ordinea de apariţie, subscopurile
clauzei identificate, în condiţiile în care variabilele sunt legate,
mama(ann,pam):-parinte(ann,pam), fata(ann).
Deoarece scopul parinte(ann,pam) nu se potriveşte cu capul nici
unei clauze din baza de cunoştinţe, răspunsul sistemului este no.
Reprezentarea spaţiului soluţiilor pentru scopul mama(ann,pam) este
prezentată în fig. 4.3.

102

Universitatea SPIRU HARET


Fig. 4.3.

În următoarele exemple vom considera baza de cunoştinţe Prolog,


functionar(ion).
functionar(pop).
secretar(andrei).
manager(baciu).
manager(geo).
supervizeaza(X,Y):- manager(X), functionar(Y).
supervizeaza(X,Y):- functionar(X), secretar(Y).
supervizeaza(X,Y):- manager(X), secretar(Y).

3. Interogarea
Goal: supervizeaza(geo, andrei).
este tratată conform reprezentării din figura 4.4. Procesul rezolutiv
generează subscopurile manager(geo) şi functionar(andrei), în cadrul
primei clauze supervizeaza. Subscopul manager(geo) reuşeşte, deci este
rezolvat şi functionar(andrei). Sistemul Prolog încearcă potrivirea
functionar(andrei) cu fiecare din clauzele ale căror cap este functionar.
Deoarece scopul functionar(andrei) eşuează, prima clauză supervizeaza
eşuează şi ea. În continuare, este analizată cea de-a doua clauză super-
vizeaza care, de asemenea, eşuează, datorită faptului că functionar(geo)
(primul subscop) nu reuşeşte. Răspunsul sistemului este yes, deoarece, la
analizarea celei de-a treia reguli supervizeaza, subscopurile rezultate în
urma legării variabilelor X şi Y (X=geo şi, respectiv, Y=andrei) reuşesc.

103

Universitatea SPIRU HARET


4. Interogarea
Goal: supervizeaza(pop, Y).
sau ”Pe cine supervizează Pop?” este rezolvată astfel. Sistemul caută
în baza de cunoştinţe prima clauză care se potriveşte cu scopul; clauza
determinată iniţial este C1, supervizeaza(X,Y):- manager(X), functionar(Y).
Rezultă instanţierea X=pop şi cele două subscopuri ale lui C1 sunt
examinate de la stânga la dreapta. Deoarece în baza de cunoştinţe nu există
informaţia manager(pop), la aplicarea clauzei C1 scopul eşuează. În
continuare sistemul caută următoarea clauză care să se potrivească cu
scopul iniţial. Căutarea este cu succes, fiind determinată clauza C2,
supervizeaza(X,Y):- functionar(X), secretar(Y). Variabila logică X rămâne
instanţiată cu pop. Primul subscop al clauzei C2, functionar(pop) reuşeşte
(este identificat ca fapt în baza de cunoştinţe). Ulterior este examinat cel
de-al doilea subscop, secretar(Y) care se potriveşte cu aserţiunea Prolog
secretar(andrei) şi rezultă instanţierea Y=andrei. Rezultatul analizei C2 este
marcat de răspunsul sistemului,
yes
Y=andrei
Următoarea clauză analizată, C3, este supervizeaza(X,Y):-
manager(X), secretar(Y). Similar primei clauze, variabila logică X este
instanţiată cu pop şi subscopul manager(pop) eşuează, deci sistemul nu mai
găseşte nici o valoare posibilă pentru variabila Y.

Fig. 4.4.

104

Universitatea SPIRU HARET


5. Interogarea
Goal: supervizeaza(X, Y).
sau ”Cine pe cine supervizează?” este mai complexă. Pentru calculul
tuturor valorilor posibile ale variabilelor logice X şi Y este utilizat
mecanismul de căutare al sistemului Prolog, backtracking-ul. Paşii urmaţi
în generarea soluţiilor sunt următorii.
Pas 1. Prima clauză cu care scopul se potriveşte este C1. Este
analizat în continuare primul subscop al clauzei C1, manager (X).
Pas 2. Sistemul declanşează procedura de căutare a primei clauze cu
care se potriveşte manager (X). Aceasta este cea de-a patra aserţiune a
bazei de cunoştinţe şi determină instanţierea variabilei X cu valoarea baciu.
Subscopul manager (X) reuşeşte.
Pas 3. Cel de-al doilea subscop, functionar(Y), este în continuare
analizat de sistem, care determină ca primă potrivire functionar(ion) şi
instanţierea Y=ion. Subscopul functionar(Y) reuşeşte.
Pas 4. Sistemul returnează primul răspuns posibil,
X=baciu
Y=ion
Pas 5. În continuare, sistemul Prolog de căutare în spaţiul soluţiilor
încearcă găsirea altor variante de răspuns posibile, pe baza cunoştinţelor
disponibile. Astfel, sistemul „îşi reaminteşte” prima soluţie şi o marchează
în baza de cunoştinţe, iar variabila X rămâne instanţiată cu valoarea baciu.
Este apoi căutată o clauză, alta decât functionar(ion), cu care să se
potrivească functionar(Y). Subscopul functionar(Y) unifică în continuare cu
faptul Prolog functionar(pop). Este determinată şi cea de-a doua soluţie,
X=baciu
Y=pop.
Deoarece subscopul functionar(Y) nu mai poate unifica cu capul nici
unei clauze din baza de cunoştinţe, mecanismul de căutare revine
(se întoarce – backtracks) în încercarea de a resatisface subscopul
manager(X) prin unificarea cu capul unei clauze, alta decât
manager(baciu). Este posibilă o altă instanţiere a variabilei logice X, şi
anume X=geo (subscopul se potriveşte cu manager(geo)). În continuare
baza de cunoştinţe este parcursă începând cu prima clauză, în încercarea de
a satisface subscopul funcţionar(Y). Procesul de încercare a „repotrivirii”
unei clauze în condiţiile în care ultimul subscop din dreapta a eşuat este
numit backtracking.
105

Universitatea SPIRU HARET


În urma aplicării procesului de căutare descris mai sus, sistemul
rezolvă scopul supervizeaza(X, Y) astfel,

X baciu baciu geo geo ion pop baciu geo


Y ion pop ion pop andrei andrei andrei andrei
8 solutions

Procedeul de căutare backtracking aplicat mai sus este descris


schematic conform figurii 4.5.

Fig. 4.5.

106

Universitatea SPIRU HARET


Simbolul cut – în Prolog „!” - este un predicat predefinit, de aritate 0,
care reuşeşte întotdeauna şi a cărui semnificaţie este legată de procesul
backtracking. Rolul predicatului cut este de a restricţiona mecanismul de
căutare a soluţiilor şi poate fi descris sintetic prin expresia „sens unic”,
astfel (Burnham&Hall, 1987). Implicit, sistemul de căutare Prolog încercă
satisfacerea unui scop prin declanşarea procesului backtracking. În
momentul satisfacerii unui subscop cut, rezultatul este de inhibare a rutei
urmate de sistem în rezolvarea scopului iniţial. Deşi este posibilă „trecerea
peste” cut (predicatul cut reuşeşte întotdeauna), revenirea către subscopurile
care preced predicatul ! este imposibilă, deci, o dată satisfăcut predicatul !,
sistemul elimină backtrackingul pentru subscopurile care preced !.
O altă funcţiune a predicatului cut este descrisă în cele ce urmează.
Presupunem în continuare că relaţia P este descrisă prin intermediul mai
multor reguli, una din reguli conţine predicatului cut şi P devine scop. În
această situaţie, dacă a fost aplicată regula în care una din premise este !,
atunci nici o altă regulă care îi urmează în descrierea relaţiei P nu mai este
consultată de sistemul Prolog.
Pentru o mai bună înţelegere a modului de evaluare a predicatului !,
considerăm în continuare următoarele exemple. Fie baza de cunoştinţe
functionar(ion).
functionar(pop).
secretar(andrei).
manager(baciu).
manager(geo).
1. Dacă predicatul supervizeaza este descris prin,
supervizeaza(X,Y):- manager(X), functionar(Y),!.
supervizeaza(X,Y):- functionar(X), secretar(Y).
supervizeaza(X,Y):- manager(X), secretar(Y).
atunci, scopul supervizeaza(X,Y) are o singura soluţie,
X=baciu
Y=ion.

Explicaţia este următoarea. Datorită predicatului ! utilizat în


descrierea primei reguli supervizeaza, celelalte două reguli nu mai sunt
consultate de sistem. În plus, plasarea ! după ultima premisă a regulii nu
permite resatisfacerea nici unuia din subscopurile manager(X), respectiv
functionar(Y).
107

Universitatea SPIRU HARET


2. Dacă predicatul supervizeaza este descris prin,
supervizeaza(X,Y):- manager(X), !, functionar(Y).
supervizeaza(X,Y):- functionar(X), secretar(Y).
supervizeaza(X,Y):- manager(X), secretar(Y).
atunci, scopul supervizeaza(X,Y) are o două soluţii,
X=baciu
Y=ion
şi
X=baciu
Y=pop
Similar primei situaţii, ultimile două reguli nu mai sunt consultate de
sistem. În plus, plasarea ! după prima premisă a regulii nu permite
resatisfacerea subscopului manager(X), dar subscopul functionar(Y) este
resatisfăcut (sunt generate ambele variante posibile ale variabilei logice Y).
3. Dacă predicatul supervizeaza este descris prin
supervizeaza(X,Y):-!, manager(X), functionar(Y).
supervizeaza(X,Y):- functionar(X), secretar(Y).
supervizeaza(X,Y):- manager(X), secretar(Y).
atunci, scopul supervizeaza(X,Y) are o patru soluţii,
X baciu baciu geo geo
Y ion pop ion pop
Singurul rol al predicatului ! în această situaţie este împiedicarea
consultării ultimilor două reguli. În cadrul supervizeaza(X,Y):-!, manager(X),
functionar(Y). backtracking-ul „funcţionează” pentru ambele premise.
4. Dacă predicatul supervizeaza este descris prin,
supervizeaza(X,Y):- manager(X), functionar(Y).
supervizeaza(X,Y):- !, functionar(X), secretar(Y).
supervizeaza(X,Y):- manager(X), secretar(Y).
atunci, scopul supervizeaza(X,Y) are o şase soluţii,
X baciu baciu geo geo ion pop
Y ion pop ion pop andrei andrei
Singurul rol al predicatului ! în această situaţie este împiedicarea
consultării ultimii reguli. În cadrul primelor două reguli backtracking-ul
„funcţionează” complet.
Observaţie. În cadrul exemplelor considerate, deoarece toate
scopurile formulate au avut cel puţin o soluţie, regulile care nu includ
108

Universitatea SPIRU HARET


predicatul ! şi care urmează unei reguli ce conţine ! (este vorba despre clauze
care descriu aceeaşi relaţie, supervizeaza) sunt complet ignorate, descrierea
lor fiind inutilă.
Predicatul predefinit fail este de aritate 0 şi eşuează întotdeauna.
Scopul utilizării predicatului fail în cadrul unei clauze este de a declanşa
mecanismul de backtracking şi de a forţa căutarea unor noi soluţii.
Deoarece fail eşuează întotdeauna, nu poate fi depăşit în cadrul unei
evaluări şi este utilizat de obicei la sfârşitul clauzei, orice altă premisă care
îi urmează fiind ignorată (Zaharie ş.a., 1998). Aşa după cum rezultă din §
4.4, un scop Turbo Prolog poate fi intern sau extern. Până la acest moment,
am discutat exclusiv despre scopuri externe, în care caz sunt generate
toate soluţiile unei probleme. În situaţia în care un scop Prolog este intern
(definit în cadrul sursei în secţiunea goal), este generată o singură soluţie.
Vom exemplifica prin următorul studiu comparat (vezi secţiunile unei surse
Turbo Prolog în § 4.4).
predicates predicates
functionar(symbol) functionar(symbol)
manager(symbol) manager(symbol)
secretar(symbol) secretar(symbol)
supervizeaza(symbol,symbol) supervizeaza(symbol,symbol)
clauses clauses
functionar(ion). functionar(ion).
functionar(pop). functionar(pop).
secretar(andrei). secretar(andrei).
manager(baciu). manager(baciu).
manager(geo). manager(geo).
supervizeaza(X,Y):- supervizeaza(X,Y):-
manager(X),functionar(Y). manager(X),functionar(Y).
supervizeaza(X,Y):- supervizeaza(X,Y):-
functionar(X),secretar(Y). functionar(X),secretar(Y).
supervizeaza(X,Y):-manager(X),secretar(Y). supervizeaza(X,Y):-
goal manager(X),secretar(Y).
supervizeaza(X,Y), goal
write(X," este seful lui ",Y),nl. supervizeaza(X,Y),
write(X," este seful lui ",Y),nl,
Rezultatul afişat: fail.
baciu este seful lui ion Rezultatele afişate corespund
celor 8 soluţii ale problemei.
109

Universitatea SPIRU HARET


4.3. Mediul Turbo Prolog
Mediul Turbo Prolog asigură o interfaţă de lucru pentru realizarea
sistemelor expert cu ajutorul limbajului de programare Prolog (figura 4.6).
Turbo Prolog reprezintă un mediu de dezvoltare ce aparţine
companiei Borland. Pagina de primire conţine patru ferestre: de editare a
programelor (Edit), de dialog pentru realizarea intrărilor şi ieşirilor din
program (Dialog), de afişare a mesajelor sistemului de calcul (Message) şi
de depanare a programelor (Trace).

Fig.4.6. Mediul de lucru Turbo Prolog

110

Universitatea SPIRU HARET


Accesul la meniul principal se efectuează cu tasta F10 sau Alt şi
litera de început a unei opţiuni. Meniurile mediului Prolog sunt
următoarele:
Meniul Files are următoarea compunere: Load – încarcă un fişier
(F3); Pick – Selectează un fişier; New File – Fişier nou (fişier nou implicit
WORK.PRO); Save – salvează fişierul curent; Write to – salvează fişierul
curent, eventual cu un alt nume; Directory – afişează un director (folder);
Change dir – modifică un director; OS Shell – trecere în sistemul de
operare DOS (Alt-D); Quit – ieşirea din mediul Prolog (Alt-X).
Meniul Compile prezintă următoarele opţiuni: Memory – compilare
în memorie care nu are ca rezultat obţinerea de fişiere .OBJ; OBJ File –
compilare pe un suport magnetic care are ca rezultat obţinerea de fişiere
.OBJ; EXE file (auto link) – editarea de legături (link-editarea) cu obţinerea
formei executabile a programului; Project (all modules) – realizarea unui
proiect care are în compunere toate modulele necesare şi modului standard
de iniţializare INIT; Link only – realizează link – editarea unui .OBJ sau a
unui proiect .PRJ.
Meniul Options dispune de opţiunile: Link options – opţiuni pentru
link-editare prin specificarea unor biblioteci utilizator; Edit PRJ file –
asigură editarea unui fişier .PRJ; Compiler directives – realizează
directivele compilator din program sau din meniu, astfel:
ƒ Memory allocation – alocarea memoriei prin care se stabileşte
mărimea codului, stack-ului, trail-ului şi heap-ului;
ƒ Run-time check – precizează elementele ce trebuie verificate în
timpul execuţiei programului (break check; stack check; integer overflow
check);
ƒ Error level – nivelul de eroare, cu valoarea implicită 1;
ƒ Non-determ warning – avertizarea pentru nedeterminări (On/Off);
ƒ Variable used once warning – variabilă folosită pe timpul
avertizării (On/Off);
ƒ Printer menu in EXE-file – meniul imprimantei pentru fişierele de
tip .EXE (On/Off);
ƒ Trace – urmărire (On/Off);
ƒ Diagnostics – diagnosticări (On/Off).

111

Universitatea SPIRU HARET


Meniul Setup asigură posibilitatea reconfigurării sistemului de
calcul, astfel: Colors – culori; Window size – dimensiunea ferestrei;
Directories – directoare; Miscellaneous – setări diverse ce se referă la
specificarea driver-ului, încărcarea automată a mesajelor, rezoluţia
ecranului, redefinirea cheilor funcţionale, definirea help-ului; Load SYS file
– încărcarea fişierului SYS; Save SYS file – salvarea fişierului SYS. Cheile
funcţionale, singure sau în combinaţie (hot keys), au semnificaţia prezentată
în tabelul 4.1.

4.4. Secţiunile programelor în Turbo Prolog


Un program realizat în limbajul Prolog conţine următoarele
secţiuni de bază: domains (domenii), predicates (predicate), goal,
(scopuri), clauses (clauze), constants (constante) şi database (bază de date),
aşa cum se prezintă în figura 4.7.
Secţiunea domains (domenii) serveşte pentru definirea tipurilor de
date definite de utilizator şi specifice argumentelor. Tipurile de date
standard sunt char (caracter scris între apostroafe), integer (numere întregi),
real (numere reale), string (şir de caractere scris între apostroafe duble) şi
symbol (şir de litere, cifre şi caractere underscore, în care primul caracter
este o literă mică). Tipurile de date standard nu se declară în secţiunea
domains. Domeniile de valori pentru tipurile de date standard sunt
prezentate în tabelul 4.1. Secţiunea domains se poate declara globală
(global domanins). Un domeniu compus defineşte o structură de date,
reunind mai multe elemente sub un nume unic. Un domeniu compus are
sintaxa generală: nume_domeniu = functor (e1, e2, …, en); functor 2(e1,
e2, …, en); …, unde functor reprezintă numele atribuit structurii respective
de către utilizator. Elementele ei ale unui domeniu compus pot fi, la rândul
lor, domenii compuse.

112

Universitatea SPIRU HARET


Tabelul 4.1. Semnificaţia cheilor funcţionale

113

Universitatea SPIRU HARET


Tabelul 4.1. Semnificaţia cheilor funcţionale (continuare)

114

Universitatea SPIRU HARET


Fig. 4.7. Structura programelor în limbajul Prolog

Tabelul 4.2. Tipurile de date din limbajul Prolog


Nr.crt Tipul de date Domeniul de valori
1. char caracter
2. integer între -32768 şi +32768
3. real între 10-307 şi 10+308
4. string maximum 255 de caractere
5. symbol şir de litere, cifre şi caractere underscore

În continuare se prezintă un exemplu de secţiune domains:


domains
denumire_material, denumire_furnizor=string
cod_material=integer
cantitate, pret_unitar=real
materiale=material(cod_material, denumire_material, cantitate,
pret_unitar).
115

Universitatea SPIRU HARET


Secţiunea predicates (predicate) este destinată pentru crearea
şabloanelor predicatelor definite de către utilizator şi folosite în secţiunea
clauze. În şablon este precizat numele predicatului (şir de litere, cifre şi
underscore ce începe obligatoriu cu o literă mică şi are lungimea maximă
de 250 de caractere) şi tipul fiecăruia dintre argumente (tip standard sau tip
definit de utilizator), al căror număr şi ordine contează. Forma sintactică
generală a unui predicat este următoarea:
nume_predicat(tip_argument_1, tip_argument_2,
…,tip_argument_m).

Predicatele pot fi predefinite (instrucţiuni Prolog ca read(), write(),


assert()) sau definite de către utilizator (exemple: client, autoturism,
extrage_maxim). Predicatele predefinite nu se declară în secţiunea
predicates.
Argumentele predicatului pot fi constante, variabile sau structuri.
Un predicat poate avea aritate (numărul de argumente) multiplă.
Pot exista predicate cu acelaşi nume şi cu arităţi diferite. În acest caz, aceste
predicate se declară sub formă grupată, atât în secţiunea predicates cât şi în
secţiunea clauses.
Secţiunea predicates se poate declara globală (global predicates).
Exemplul de secţiune predicates scoate în evidenţă diverse şabloane
în care tipurile de predicate sunt definite de utilizator, iar tipurile de
argumente sunt standard (integer, real) sau definite de utilizator (lista,
nume_client, localitate etc.):
predicates
sort(lista, lista)
extrage_maxim(lista, real, lista)
autoturism(marca, tip, culoare, cap_cilindrica, viteza_max)
client(nume_client, localitate, strada, integer, cod_fiscal)
Secţiunea goal (scopuri) poate apărea în program – scopuri interne,
după secţiunea predicates (problemă şi soluţie unice) sau sub formă
interactivă de prompter (varianta interpretor) ce aşteaptă introducerea unei
clauze (grup de clauze) – scopuri externe. Secţiunea goal prezintă
scopurile interne sub forma unei succesiuni de clauze ce cuprind predicate
standard şi predicate definite de către utilizator şi se încheie cu punct:

116

Universitatea SPIRU HARET


goal
apreciere_licitatie.
Evaluarea fiecărei clauze conduce la un rezultat de tip booleean
(logic), cu confirmare (clauza este adevărată, Yes) sau negare (clauza este
falsă, No).
Secţiunea clauses (clauze) cuprinde regulile şi faptele ce formează
programul. Argumentele fiecărei clauze sunt de un anumit tip şi sunt
dispuse într-o ordine prestabilită. O clauză care este apelată în corpul
propriei sale definiţii este denumită clauză recursivă. Problematica
regulilor şi faptelor a fost prezentată în capitolul 2. Exemplul următor este
legat de cel prezentat la secţiunea predicates:
clauses
sort([],[]).
extrage_maxim(l1, 4.2, l1).
autoturism(Dacia, Logan, albastru, 1500, 240).
client(Ionescu Ion, Bucuresti, Unirii, 142, R12300211).
Secţiunea constants (constante) este folosită pentru declararea
constantelor simbolice, cu sintaxa generală:
nume_constanta=valoare. /*unde nume_constanta este unică în
program şi poate fi scris cu litere mici sau mari, iar valoare poate fi orice tip
de dată, inclusiv valoarea unei expresii*/.
În sintaxa generală de mai sus, textul cuprins între caracterele /* şi */
reprezintă un comentariu (se foloseşte oriunde în program pentru
îmbunătăţirea lizibilităţii acestuia). Dacă o constantă este declarată, ea poate
fi utilizată după aceasta în program.
În exemplele următoare, se observă varietatea tipurilor de date
(standard şi definite de utilizator) ce se pot folosi în secţiunea constants.
constants
nume_patron=”Ionescu Ion” /*sir de caractere*/
numar_salariati=150 /* numar intreg */
cost_unitar=3200/200 /*expresie reprezentand */
/*total_cheltuieli / cant_produse_obtinute */
cota_TVA=0.18 /* numar real */
culoare=galben_48 /* simbol*/
r=’y’ /* tip caracter */
117

Universitatea SPIRU HARET


Secţiunea database (bază de date) este folosită pentru declararea şi
utilizarea faptelor (sub formă de bază de date internă) ce trebuie prelucrate
(adăugate, modificate sau şterse) în timpul execuţiei unui program. Fiecare
bază de date internă utilizată se declară într-o altă secţiune database, prin
specificarea predicatelor:
database
nume_predicat_1(argument_1,argument_2,…,argument_m)
nume_predicat_2(argument_1,argument_2,…,argument_m)

nume_predicat_n (argument_1,argument_2,…,argument_m)
În afara secţiunii goal, secţiunile programului în limbajului Prolog
pot fi utilizate de mai multe ori în cadrul aceluiaşi program. Ca urmare, un
program în limbajul Prolog poate fi alcătuit din mai multe module (astfel
încât fiecare modul conţine secţiunile domains, predicates, clauses,
constants).
Comentarea programelor se face cu % Acesta este un comentariu sau
/* Şi acesta este un comentariu */.

4.5. Operaţii de intrare/ieşire standard în mediul Turbo Prolog


Operaţia de afişare a datelor este realizată în mediul Turbo Prolog
prin predicatele standard write şi writef .
Predicatul write este descris prin,
write(parametru_1,parametru_2,…,parametru_n),
reuşeşte întotdeauna şi are ca efect afişarea pe ecran a constantelor sau
variabilelor indicate prin parametri. Toate argumentele predicatului sunt
date de intrare. Dacă un parametru este şir constant, acesta este inclus între
“ ”. Din lista de parametri pot face parte şirurile “\n”, respectiv “\t”, cu rol
de linie nouă, respectiv tab.
De exemplu, execuţia sursei Prolog
goal
A=9,B=16,C=A+B,write(A,"+",B,"=",C).
are ca efect afişarea 9+16=25.
Predicatul standard writef reuşeşte întotdeauna şi este descris prin,
writef(format, parametru_1,parametru_2,…,parametru_n),

118

Universitatea SPIRU HARET


şi are ca efect afişarea cu format a constantelor sau variabilelor indicate prin
parametri. Formatul este un şir de caractere constant care include
specificatori de format. Un specificator de format este introdus de
caracterul % şi este descris conform tabelului 4.2.

Tabelul 4.2. Specificatori de format


Specificator Semnificaţie
f Număr real în format matematic
e Număr real în format ştiinţific
g Număr real în format scurt
d Numere întregi sau caractere afişate ca numere întregi, conform
codului ASCII
u Numere naturale sau caractere afişate ca numere naturale
x Numere întregi sau caractere afişate ca numere întregi în hexa
c Caractere sau numere întregi afişate prin intermediul
caracterelor, conform codului ASCII
R Număr de referinţă într-o bază de date externe
X Număr scris în hexa
s Şir de caractere

De exemplu, execuţia sursei Prolog


goal
A=9.5,B=16.765,C=A+B,writef("%3.2f+%8.5f=%5.2f",A,B,C).
are ca efect afişarea 9.50+16.76500=26.26
De asemenea, predicatul standard nl este utilizat în afişarea datelor.
Predicatul este de aritate 0, reuşeşte întotdeauna şi are ca efect trecerea la
linie nouă.
Cele mai des utilizate predicate de sistem pentru introducerea datelor
sunt:
− readln(Sir) – preia de la tastatură un şir de caractere –symbol sau
string;
− readint(I) – citeşte o dată de tip întreg;
− readreal(R) – citeşte de la tastatură o dată de tip real;
− readchar(C) – preia de la tastatură o dată de tip caracter.
Dacă în timpul introducerii datelor este tastată Esc, predicatele de mai sus
eşuează. Predicatele readint şi readreal preiau date până la tastarea ENTER.

119

Universitatea SPIRU HARET


Pentru fiecare din predicatele utilizate pentru citirea datelor de la
tastatură menţionate mai sus, argumentul este dată de ieşire.
Aplicaţie. Scrieţi un program în limbajul Prolog pentru introducerea
datelor de la tastatură referitoare la un client bancar.
/* CLIENT BANCAR */
domains
adresa,nume,firma=string
telefon=symbol
client=cl(nume,adresa,telefon,firma)
predicates
introdu_client(client)
ruleaza
clauses
introdu_client(Cl(Nume,Adresa,Telefon,Firma)):-
write("Care este numele clientului?"),readln(Nume),
write("Care este adresa clientului?"),readln(Adresa),
write("Care este telefonul clientului?"),readln(Telefon),
write("Care este firma clientului?"),readln(Firma).
ruleaza:-introdu_client(Cl(Nume,Adresa,Telefon,Firma)),nl,
write(„----------------------”),nl,write(Cl),nl,nl,nl.

4.6. Recursivitate în Prolog. Structurile de listă


şi arbore binar. Domenii compuse
Unul din cele mai puternice instrumente de programare este
recursivitatea. Recursivitatea este o tehnică de programare bazată pe
apelarea unui subprogram de către el însuşi.
De exemplu, calculul valorii N! pentru N dat poate fi efectuat pe
baza formulei N!=N(N-1)!, pentru N ≥ 1 şi 0!=1. Dacă fact(N,R) este
predicatul Prolog care calculează N! (R=N!), atunci, dacă N ≥ 1 evaluarea
lui fact(N,R) rezultă prin multiplicarea cu N a valorii R1 calculate de apelul
fact(M,R1),unde M=N-1, cu fact(0,1) fapt Prolog. Cu alte cuvinte, apelul
predicatului fact(N,R) realizează calculul „imediat” dacă N=0, altfel
presupune un nou apel al aceluiaşi predicat pentru valoarea argumentului
egală cu N-1. Cazurile în care este posibilă evaluarea „imediată” se numesc
condiţii terminale. În continuare este prezentată sursa Prolog pentru
calculul factorialului unei valori date
120

Universitatea SPIRU HARET


predicates
fact(integer,real)
clauses
fact(0,1):-!.
fact(N,R):-M=N-1,fact(M,R1),
R=R1*N.
Utilizând arborele genealogic definit în cadrul §4.1 şi relaţia parinte,
putem defini predicatul recursiv strabun(X,Y) cu semnificaţia X este
străbunul lui Y astfel.
strabun(X,Y):-parinte(X,Y).
strabun(X,Y):-parinte(X,Z), strabun(Z,Y).
Condiţia terminală este: X este străbunul lui Y dacă X este părintele
lui Y. A doua clauză prin care este definită relaţia strabun este recursivă şi
are semnificaţia: X este străbunul lui Y dacă X este părintele lui Z şi Z este
străbunul lui Y.
Alte exemple de predicate recursive sunt incluse în prezentarea
structurilor de listă şi arbore binar.
În limbajul Prolog, varianta Turbo Prolog, lista este o structură de
date utilizată pentru reprezentarea secvenţelor ordonate de termeni Prolog
de acelaşi tip. Structura este definită în secţiunea domains, astfel,
lista=tip_element *
unde tip_element este tipul elementelor listei.
O listă este definită prin intermediul parantezelor drepte. De
exemplu, următoarele construcţii reprezintă liste Prolog, cu definirile,
[luni, marti, miercuri, joi, vineri, sambata, duminica] - lista=symbol *
[] (lista vidă) – nu contează definiţia din cadrul secţiunii domains
[2,3,4,1] - lista=integer *
[[a,b,c], [x,f,e,t],[],[t,f,r]] – lista1=char*
lista=lista1 *

Orice variabilă L de tip listă Prolog poate fi referită punând în


evidenţă primul element, H, – numit capul listei, respectiv T, lista
elementelor rămase – numită coada listei, prin construcţia L=[H|T].
Evident, reprezentarea este utilizată numai în cazul listelor nevide. De
exemplu, dacă L=[luni, marti, miercuri, joi, vineri, sambata, duminica],
atunci, în reprezentarea L=[H|T], H=luni şi T este o listă de acelaşi tip cu
L, T=[marti, miercuri, joi, vineri, sambata, duminica].
121

Universitatea SPIRU HARET


4.6.1. Tipuri de prelucrare a listelor. Reconstrucţia listelor
În cadrul multor aplicaţii de inteligenţă artificială şi sisteme expert
sunt utilizate listele ca principale modalităţi de reprezentare a datelor. În
scopul facilitării lucrului cu liste, prezentăm în continuare câteva modele de
prelucrare a structurii de listă în limbajul Prolog (Brna, 2001).
Testul existenţei – pentru a determina dacă o colecţie de obiecte
conţine cel puţin un obiect cu o proprietate dată, propr, putem defini
predicatul test_existenta astfel,
test_existenta(Info,[H|T]):-
propr(Info,H).
test_existenta(Info,[H|T]):-
test_existenta(Info,T).

Expresia Info reprezintă argumentul/argumentele care includ


informaţia necesară calculului elementului listei cu proprietatea dorită. În
majoritatea situaţiilor practice, Info poate lipsi, relaţia pe baza căreia este
realizată construcţia fiind de obicei cunoscută.
De exemplu, verificarea apartenenţei unui element la o listă poate fi
descrisă prin intermediul predicatului Prolog membru,
membru (X,[X|_]).
membru (X,[_|T]):- membru (X,T).

Predicatul poate fi utilizat cu primul argument dată de intrare sau


dată de ieşire, în timp ce ultimul argument este obligatoriu dată de intrare
(cunoscută). De exemplu, dacă, la rulare, scopul este
Goal: membru(1,[3,2,1,1,4,3]).
sistemul răspunde Yes. Dacă scopul este Goal: membru(X,[3,2,1,1,4,3]),
atunci, datorită căutării backtracking, sistemul răspunde: X=3, X=2, X=1,
X=1, X=4, X=3, 6 Solutions.
Testarea unei proprietăţi relativ la o listă – schema generală prin inter-
mediul căreia poate fi testatată o proprietate, propr, relativ la toate elementele
unei liste este descrisă prin intermediul predicatului test_lista, astfel,
test_lista(Info,[]).
test_lista(Info,[H|T]):-
propr(Info,H),
test_lista(Info,T).
122

Universitatea SPIRU HARET


Expresia Info are aceeaşi semnificaţie cu cea descrisă în testul existenţei.
De exemplu, verificarea faptului că o listă de numere întregi conţine
numai cifre poate fi realizată prin următorul program Turbo Prolog.

domains
lista=integer *
predicates
membru(integer,lista)
verifica(lista)
clauses
membru(X,[X|_]).
membru(X,[_|T]):-membru(X,T).
verifica([]).
verifica([H|T]):-
membru(H,[0,1,2,3,4,5,6,7,8,9]),
verifica(T).

Calculul unui rezultat prin procesarea unui singur element


,,specificat” necesită introducerea unui argument suplimentar în care este
,,depus” rezultatul. Schema generală presupune parcurgerea listei până
când un element satisface o anumită condiţie, urmată de returnarea unui
anumit rezultat.

calcul_rezultat(Info,[H|T],R):-
prop(Info,H),
rezultat(Info,H,T,R).
calcul_rezultat(Info,[H|T],R):-
calcul_rezultat(Info,T,R).

Expresia Info are aceeaşi semnificaţie cu cea descrisă în testul


existenţei.
De exemplu, calculul tuturor părţilor unei liste cu proprietatea că
urmează unui caracter dat, a, este descris în următoarea sursă Prolog.

123

Universitatea SPIRU HARET


domains
lista=char *
predicates
liste_dupa_a(lista,lista)
clauses
liste_dupa_a(['a'|T],T).
liste_dupa_a([_|T],R):-
liste_dupa_a(T,R).

Primul argument al predicatului este dată de intrare, cel de-al doilea


este dată de ieşire. Datorită backtracking-ului, dacă, la rulare, scopul
transmis este
Goal: liste_dupa_a([‘a’,’f’,’b’,’a’,’g’,’t’],R).
atunci sistemul răspunde prin : R=[‘f’,’b’,’a’,’g’,’t’], R=[‘g’,’t’], 2
Solutions.
Calculul unui rezultat prin procesarea tuturor elementelor unei liste
este problema cea mai des întâlnită în cadrul procesării listelor şi este
enunţată astfel. Fie L o listă de elemente dată. Calculează L1, lista rezultată
din L în urma ,,transformării” fiecărui element din L. Schema generală este
descrisă în continuare, unde Info are aceeaşi semnificaţie cu cea descrisă în
testul existenţei.

prel_tot(Info,[],[]).
prel_tot(Info,[H1|T1],[H2,T2]):-
prel_unu(Info,H1,H2),
prel_tot(Info,T1,T2).

Schema prezentată mai sus este o variantă de reconstrucţie a listelor,


şi anume construicţia unei structuri în ,,capul” clauzei. Următoarele
predicate Prolog – pentru concatenarea a două liste, pentru generarea
sublistelor unei liste date, pentru calculul imaginii în oglindă a unei liste,
respectiv pentru ştergerea unui element dintr-o listă, exemplifică construcţia
listelor în varianta descrisă mai sus.
Observaţie. Pentru obţinerea imaginii în oglindă a unei liste este
descris un predicat ,,ajutător”, ultim, care separă o listă, L, în U, ultimul

124

Universitatea SPIRU HARET


element şi L1, lista obţinută prin eliminarea ultimului element,
ultim(lista,real,lista). În context, predicatul este utilizat cu date de intrare U
şi L1 şi cu dată de ieşire L.

domains
lista=real *
predicates
concate(lista,lista,lista)
sublista(lista,lista)
invers(lista,lista)
ultim(lista,real,lista)
sterge(real,lista,lista)
clauses
concate([],L,L).
concate([H|T],L,[H|L1]):-
concate(T,L,L1).
sublista(S,L):-
concate(_,L2,L),
concate(S,_,L2).
ultim([],X,[X]).
ultim([H|T],X,[H|T1]):-
ultim(T,X,T1).
invers([],[]).
invers([H|T],L):-
invers(T,T1),
ultim(T1,H,L).
sterge(X,[X|T],T).
sterge(X,[H|T],[H|L]):-sterge(X,T,L).

Construirea unei liste în ,,corpul” unei clauze este cea de-a doua
variantă de reconstrucţie a unei liste. Tehnica este referită drept construcţie
prin acumulare şi presupune introducerea unei variabile suplimentare,
numită acumulator. Schema generală este următoarea.
prel_tot(Info,[],Acumulator,Acumulator).
prel_tot(Info,[H1|T1],Acumulator,Raspuns):-
prel_unu(Info,H1,H2),
prel_tot(Info,T1,[H2|Acumulator],Raspuns).

Observaţie. În această situaţie, H2 este parametru de ieşire în


predicatul prel_unu.
125

Universitatea SPIRU HARET


Exemplificăm în continuare prin construcţia imaginii în oglindă a
unei liste fără a utiliza predicatul ultim. Inversarea este realizată prin apelul
predicatului invers(Lista_intrare, Lista_iesire) care utilizează varianta de
construcţie prin acumulare, invers_ac(Lista_ramasa, Acumulator, Rezultat).

domains
lista=real *
predicates
invers(lista,lista)
invers_ac(lista,lista,lista)
clauses
invers(L,IL):-invers_ac(L,[],IL).
invers_ac([],IL,IL).
invers_ac([H|T],L,IL):-
invers_ac(T,[H|L],IL).

În continuare prezentăm o aplicaţie a structurii de listă în rezolvarea


unei probleme de logică.
Sunt patru persoane de naţionalităţi diferite: un francez, un englez,
un german şi un italian, care locuiesc în case de culori diferite: roşu, verde,
albastru şi galben. Persoanele au profesii diferite: inginer, medic, economist
şi profesor şi fiecare preferă să-şi petreacă vacanţele în câte o staţiune:
Cannes, Chamonix, Nisa şi Biaritz.
Se cunosc următoarele. Englezul locuieşte în casa roşie, nu este nici
medic, nici inginer şi îşi petrece vacanţa la Cannes sau Chamonix.
Francezul este profesor sau medic, nu locuieşte nici în casa albastră, nici în
cea galbenă şi îşi face concediul la Nisa. Inginerul nu locuieşte în casa
galbenă. Economistul nu este german şi îşi petrece vacanţa la Biaritz.
Cel care locuieşte în casa albastră şi îşi petrece vacanţele la Chamonix.
Se cere să se determine pentru toate persoanele corespondenţa naţiona-
litate - profesie - loc de vacanţă - culoarea casei.

126

Universitatea SPIRU HARET


domains
lista=symbol*
predicates
nationalitate(symbol)
profesie(symbol)
statiune(symbol)
culoare(symbol)
asertiune(symbol,symbol,symbol,symbol)
/*nationalitate,profesie,statiune,culoare*/
diferit(symbol,symbol,symbol,symbol)
solutie(lista,lista,lista,lista)
clauses
nationalitate(englez).
nationalitate(francez).
nationalitate(german).
nationalitate(italian).
profesie(inginer).
profesie(medic).
profesie(economist).
profesie(profesor).
statiune(cannes).
statiune(chamonix).
statiune(biaritz).
statiune(nisa).
culoare(rosu).
culoare(verde).
culoare(albastru).
culoare(galben).
asertiune(englez,medic,_,_):-!,fail.
asertiune(englez,inginer,_,_):-!,fail.
asertiune(francez,_,_,albastru):-!,fail.
asertiune(francez,_,_,galben):-!,fail.
asertiune(_,inginer,_,galben):-!,fail.
asertiune(german,economist,_,_):-!,fail.
asertiune(englez,_,X,rosu):-X=cannes;X=chamonix.
asertiune(francez,X,nisa,_):-X=profesor;X=medic.
asertiune(_,economist,biaritz,_).
127

Universitatea SPIRU HARET


asertiune(_,_,chamonix,albastru).
diferit(X,Y,Z,T):-
not(X=Y),not(X=Z),not(X=T),not(Y=Z),not(Y=T),not(Z=T).
solutie([englez,Y1,Z1,T1],[francez,Y2,Z2,T2],[german,Y3,Z3,T3],[italian,Y
4,Z4,T4]):-
profesie(Y1),profesie(Y2),profesie(Y3),profesie(Y4),diferit(Y1,Y2,Y3,Y4),
statiune(Z1),statiune(Z2),statiune(Z3),statiune(Z4), diferit(Z1,Z2,Z3,Z4),
culoare(T1),culoare(T2),culoare(T3),culoare(T4), diferit(T1,T2,T3,T4),
asertiune(englez,Y1,Z1,T1),asertiune(francez,Y2,Z2,T2),
asertiune(german,Y3,Z3,T3), asertiune(italian,Y4,Z4,T4).

4.6.2. Structura de arbore binar. Domenii compuse.


Arbori de sortare
Un arbore binar este un arbore orientat (Knuth, 1981) cu
proprietatea că pentru orice vârf v, numărul descendenţilor săi, od(v), este
maxim 2. În cazul od(v)=2, cei doi descendenţi sunt desemnaţi ca
descendent stâng (fiu stânga) respectiv descendent drept (fiu dreapta).
Pentru vârfurile cu od(v)=1, unicul descendent este specificat fie ca fiu
stânga, fie ca fiu dreapta. Se numeşte nod terminal orice vârf v al arborelui
cu od(v)=0. Nodul v este neterminal dacă od(v)>0.
Definirea unui arbore binar în mediul Turbo Prolog este realizată ca
domeniu compus, pe baza functorilor. Domeniile compuse grupează mai
multe elemente diferite prin intermediul unui singur identificator. Structura
rezultată este similară unei înregistrări în limbajul Pascal şi oarecum
similară unei structuri în limbajul C. Forma generală de definire a unui
domeniu compus este,
identificator_domeniu=f1[(e_1,e_2,…,e_n)][;f2[(e_1,e_2,…,e_m)]
[…], unde
f1, respective f2 sunt numele atribuite de utilizator grupării respective.
De exemplu, data calendaristică poate fi reprezentată prin,
domains
zi,luna,an=integer
data_c=d(zi,luna,an)
Dacă presupunem că fiecare nod al arborelui este etichetat cu o
informaţie de tip întreg, rezultă că un arbore binar poate fi definit în Turbo
Prolog prin:
128

Universitatea SPIRU HARET


domains
tree=t(tree,integer,tree);null

Observaţie. Definirea null a domeniului compus tree corespunde


arborelui vid.
Un arbore de sortare este un arbore binar cu proprietăţile:
− fiecărui nod i al arborelui îi este ataşată o informaţie INF(i)
dintr-o mulţime ordonată de valori;
− pentru fiecare nod i, INF(i) este mai mare decât INF(j), pentru
toate nodurile j din subarborele stâng al arborelui cu rădăcină i;
− pentru fiecare nod i, INF(i) este mai mică decât INF(j), pentru
toate nodurile j din subarborele drept al arborelui cu rădăcină i;
− pentru orice vârfuri i,j, dacă i≠j, atunci INF(i)≠INF(j).
De exemplu, arborele binar din figura 4.8. este de sortare.

50

30 70

20 40 60 90

80

Fig.4.8. Arbore binar de sortare

Operaţiile primitive realizate asupra arborilor de sortare sunt:


iniţializarea cu arborele vid, parcurgerea, căutarea unei informaţii,
inserarea, respectiv extragerea unei informaţii
Parcurgerile în preordine(RSD), inordine(SRD) şi respectiv
postordine(SDR) sunt special considerate pentru arbori binari şi au multiple
129

Universitatea SPIRU HARET


aplicaţii. Regula de vizitare revine la parcurgerea subarborelui stâng, a
subarborelui drept corespunzători vârfului curent. La momentul iniţial
vârful curent este rădăcina arborelui. Diferenţa între cele trei tipuri de
parcurgere este dată de momentul în care este vizitat fiecare vârf al
arborelui. În parcurgerea RSD (rădăcină-subarbore stâng-subarbore drept),
fiecare vârf al arborelui este vizitat în momentul în care devine vârf curent;
în parcurgerea SRD (subarbore stâng-rădăcină-subarbore drept), vizitarea
vârfului este efectuată după ce a fost parcurs subarborele stâng; în
parcurgerea SDR (subarbore stâng-subarbore drept-rădăcină) vizitarea
fiecărui vârf este efectuată după ce au fost parcurşi subarborii aferenţi lui.
Observaţie. Parcurgerea SRD a unui arbore de sortare determină
obţinerea şirului informaţiilor asociate arborelui sortat crescător.
Operaţiile de inserare şi de extragere a unei informaţii dintr-un
arbore de sortare sunt realizate astfel încât arborele rezultat să fie tot arbore
de sortare. Algoritmii utilizaţi pot fi consultaţi în (Knuth, 1981) sau (Roşca
ş.a., 2002).
Următoarea sursă Turbo Prolog implementează operaţiile de bază
efectuate asupra arborilor de sortare, precum şi operaţia de afişare a
arborelui pe nivele.
domains
tree=t(tree,integer,tree);null
lista=integer *
predicates
add(integer,tree,tree)
del(integer,tree,tree)
delmax(tree,integer,tree)
creare(lista,tree)
form(lista,tree)
citeste(lista)
inord(tree,lista)
concate(lista,lista,lista)
afis(tree)
afis1(tree,integer)
writeind(integer)
clauses
/* ADAUGAREA IN ARBORE DE SORTARE */

130

Universitatea SPIRU HARET


add(X,null,t(null,X,null)):-!.
add(X,t(L,X,R),t(L,X,R)):-!.
add(X,t(L,H,R),t(L1,H,R)):-X<H,!,add(X,L,L1).
add(X,t(L,H,R),t(L,H,R1)):-add(X,R,R1).
/* CREARE ARBORE DE SORTARE */
citeste([H|T]):-
readreal(H),!,
citeste(T).
citeste([]).
creare(L,Tr):-citeste(L),form(L,Tr).
form([],null).
form([H|T],Tr):-form(T,Tr1),add(H,Tr1,Tr).
/* STERGERE IN ARBORE DE SORTARE*/
del(X,t(L,X,null),L):-!.
del(X,t(null,X,R),R):-!.
del(X,t(L,X,R),t(L1,Y,R)):-!,delmax(L,Y,L1).
del(X,t(L,H,R),t(L1,H,R)):-
X<H,!,del(X,L,L1).
del(X,t(L,H,R),t(L,H,R1)):-
del(X,R,R1).
delmax(t(L,H,null),H,L):-!.
delmax(t(L,H,R),Y,t(L,H,R1)):-
delmax(R,Y,R1).
/* PARCURGEREA INORDINE */
inord(null,[]).
inord(t(L,H,R),LL):-
inord(L,LL1),
inord(R,LL2),
concate(LL1,[H|LL2],LL).
concate([],L,L).
concate([H|T],L,[H|L1]):-
concate(T,L,L1).
/* AFISAREA UNUI ARBORE PE NIVELE - 1 COLOANA=1
NIVEL*/
afis(T):-afis1(T,0).
afis1(null,_).
afis1(t(L,R,D),I):-
131

Universitatea SPIRU HARET


I1=I+2,
afis1(D,I1),
writeind(I),write(R),nl,
afis1(L,I1).
writeind(N):-N<0,!,fail.
writeind(0).
writeind(1):-write(' '),!.
writeind(N):-write(' '),M=N-1,writeind(M).

4.6.3. Aplicaţie economică utilizând structura de listă


şi domeniile compuse
O variantă alternativă de construcţie a unei liste este, în limbajul
Prolog, colectarea rezultatelor evaluării unui scop prin utilizarea
predicatului predefinit findall,
findall(V,predicat(_,…,V,…,_),L)
unde,
− V este o variabilă;
− predicat este predicatul evaluat şi care conţine în lista de argu-
mente V;
− L este lista în care sunt colectate rezultatele (toate instanţele
variabilei V din predicatul predicat din poziţia corespunzătoare
indicată).

În continuare prezentăm o aplicaţie economică ce utilizează structura


de listă. Este considerată o societate comercială cotată la bursă, despre care
sunt cunoscute următoarele informaţii:
− data tranzacţionării (zi, luna);
− preţul mediu per acţiune;
− volumul tranzacţiilor.

Datele utilizate sunt reale şi au fost preluate de pe www.vanguard.ro


pentru Banca Transilvania (TLV), în perioada 10.08.2005-29.08.2005 şi
sunt prezentate în următorul tabel,

132

Universitatea SPIRU HARET


Tabelul 4.3. Situaţia volumului tranzacţiilor TLV în perioada 10/08-29/08 2005
Data tranzacţionării Preţul mediu Volumul tranzacţiilor
10.08.2005 0.888 2969507
11.08.2005 0.890 6115494
12.08.2005 0.897 1463389
15.08.2005 0.907 4753380
16.08.2005 0.907 4875074
17.08.2005 0.909 1300510
18.08.2005 0.913 2211762
19.08.2005 0.912 2653537
22.08.2005 0.906 3546637
23.08.2005 0.908 1800508
24.08.2005 0.908 1331070
26.08.2005 0.905 2365289
29.08.2005 0.889 1250244

Următorul program Prolog afişează volumul tranzacţiilor în ordine


crescătoare, precum şi data la care a avut loc fiecare tranzacţie (informaţia
este sortată după volumul tranzacţiilor, nu după dată, aşa cum sunt furnizate
datele în tabelul 4.3).
Algoritmul de sortare utilizat este sortarea rapidă (Knuth, 1981).
Cunoştinţele obţinute din tabelul 4.3. sunt reprezentate prin intermediul
predicatului tranzactie. Paşii rezolvării problemei sunt următorii.
Pas 1. Colectează în lista L1 toate volumele tranzacţiilor (coloana a
3-a din 4.3), adică cel de-al treilea argument al faptelor Prolog ce descriu
tranzactie. Acest lucru este realizat prin
findall(V,tranzactie(_,_,V),L1)
Pas 2. Colectează în lista L2 toate datele tranzacţiilor (cel de-al
doilea argument al faptelor Prolog ce descriu tranzactie),
findall(D,tranzactie(D,_,_),L2)
Pas 3. Calculează lista L3 cu elemente având două informaţii:data şi
volumul tranzacţiei (predicatul obtine)
Pas 4. Sortează L3 după volumul tranzacţiilor şi obţine L4
(predicatul qsort)
Pas 5. Afişează elementele listei L4, ţinând cont de structura lor
(predicatul scrie)

133

Universitatea SPIRU HARET


domains
lista=real *
data=d(integer,integer)
pret_mediu,volum=real
listad=data *
data_vol=dv(data,volum)
listar=data_vol *
predicates
tranzactie(data,pret_mediu,volum)
qsort(listar,listar)
sparge(real,listar,listar,listar)
concate(listar,listar,listar)
rezolva(lista,listad,listar,listar)
obtine(lista,listad,listar)
scrie(listar)
clauses
/*baza de cunostinte relative la tranzactii*/
tranzactie(d(10,8),0.888,2969507).
tranzactie(d(11,8),0.890,6115494).
tranzactie(d(12,8),0.897,1463389).
tranzactie(d(15,8),0.907,4753380).
tranzactie(d(16,8),0.907,4875074).
tranzactie(d(17,8),0.909,1300510).
tranzactie(d(18,8),0.913,2211762).
tranzactie(d(19,8),0.912,2653537).
tranzactie(d(22,8),0.906,3546637).
tranzactie(d(23,8),0.908,1800508).
tranzactie(d(24,8),0.908,1331070).
tranzactie(d(26,8),0.905,2365289).
tranzactie(d(29,8),0.889,1250244).
/*colectarea in lista cu elemente compuse din data si volumul
tranzactiilor*/
rezolva(L1,L2,L3,L4):-
findall(V,tranzactie(_,_,V),L1),
findall(D,tranzactie(D,_,_),L2),
obtine(L1,L2,L3),
qsort(L3,L4).
134

Universitatea SPIRU HARET


obtine([],[],[]).
obtine([H1|T1],[H2|T2],[dv(H2,H1)|T]):-
obtine(T1,T2,T).
/* sortarea rapida */
concate([],L,L).
concate([H|T],L,[H|L1]):-
concate(T,L,L1).
qsort([],[]).
qsort([dv(D,H)|T],L):-
sparge(H,T,Mici,Mari),
qsort(Mici,L1),
qsort(Mari,L2),
concate(L1,[dv(D,H)|L2],L).
sparge(_,[],[],[]).
sparge(X,[dv(D,H)|T],[dv(D,H)|T1],L):-
H<X,!,
sparge(X,T,T1,L).
sparge(X,[H|T],L,[H|T1]):-
sparge(X,T,L,T1).
/*afisare rezultate*/
scrie([]):-!.
scrie([dv(d(Z,L),H)|T]):-
nl,write("Data:",Z,"/",L,"/2005 ","Volum:",H),
scrie(T).
goal
rezolva(L1,L2,L3,L4),
nl,
write("Tranzactiile crescator dupa volum"), scrie(L4).

4.7. Baze de date în Turbo Prolog. Aplicaţii economice


Mediul de lucru Turbo Prolog permite lucrul cu două tipuri de baze
de date: baze de date interne şi, respectiv, baze de date externe.
În cazul bazelor de date interne, acestea sunt formate din seturi de
fapte Prolog. Ansamblul de fapte declarate în secţiunea database sunt
135

Universitatea SPIRU HARET


memorate în spaţiul de memorie internă rezervată programului. Spre
deosebire de bazele de date interne, care reprezintă baze de fapte utilizabile
nemijlocit în procesul de inferenţă logică, bazele de date externe operează
cu structuri diferite, presupune efectuarea explicită de operaţii de scriere,
citire, căutare, ştergere. Informaţiile memorate în bazele de date externe pot
fi utilizate numai după ce datele au fost aduse în spaţiul de memorie internă
alocat execuţiei programului şi, eventual, au fost modificate în forma
necesară prelucrării lor. *

4.7.1. Baze de date interne


În accepţiunea Turbo Prolog, o bază de date internă este ansamblul
faptelor Prolog (memorate în cadrul sursei Prolog curente) care pot fi
adăugate, respectiv şterse pe parcursul execuţiei sursei Prolog. O bază de
date internă este declarată în secţiunea database; definirea bazei de date
interne revine la descrierea structurii faptelor care o compun. Fiecare „tip”
de fapt este descris prin numele predicatului corespunzător, respectiv tipul
argumentelor acestuia.
De exemplu, definirea unei baze, tranz, de date interne în care sunt
memorate informaţiile referitoare la volumul tranzacţiilor TLV în perioada
10/08-29/08 2005 aşa cum sunt prezentate în §4.6.3, poate fi realizată prin,

domains
data=d(integer,integer)
pret_mediu,volum=real
database tranz
tranzactie(data,pret_mediu,volum)

În situaţia în care numele bazei de date interne nu este specificat,


acesta este asumat dbasedom.
Informaţiile conţinute de o bază de date interne pot fi memorate
într-un fişier utilizând predicatul predefinit save,
save(identificator_fisier [,identificator_baza_date]).
Accesare unui fişier via o bază de date internă este realizată prin
apelul predicatului predefinit consult,

*
Zaharie ş.a., 1998.
136

Universitatea SPIRU HARET


consult(identificator_fisier [, identificator_baza_date]).

Ambele argumente ale predicatelor save şi, respectiv, consult sunt


date de intrare.
Adăugarea de fapte în baza de date internă poate fi realizată prin:
− asserta(identificator_predicat(lista_argumente)[,identificator_b
aza_date]); adăugarea faptelor este realizată înaintea tuturor
faptelor definite de predicatul identificator_predicat;
− assertz(identificator_predicat(lista_argumente)[,identificator_b
aza_date]); adăugarea faptelor este realizată după setul faptelor
definite de predicatul identificator_predicat;
− assert(identificator_predicat(lista_argumente)[,identificator_ba
za_date]); adăugarea faptelor este realizată după setul faptelor
definite de predicatul identificator_predicat.

În cadrul celor trei predicate predefinite utilizate pentru adăugarea de


noi fapte într-o bază de date internă, toate argumentele sunt date de intrare.
Ştergerea de fapte din baza de date internă poate fi realizată prin:
− retract(identificator_predicat(lista_argumente)[,identificator_b
aza_date]); este extras primul fapt Prolog care unifică cu
identificator_predicat(lista_argumente); predicatul are ca prim
arument un parametru oarecare (de intrare sau de ieşire), în timp
ce al doilea argument este întotdeauna parametru de intrare;
− retractall(identificator_predicat(lista_argumente)[,identificator
_baza_date]); sunt extrase toate faptele Prolog care unifică cu
identificator_predicat(lista_argumente).

Prezentăm în continuare o aplicaţie economică pentru crearea unei


baze de date interne, salvată ulterior în fişierul tran.dba, care memorează
informaţii referitoare la volumul tranzacţiilor TLV în perioada
10/08-29/08 2005, aşa cum sunt prezentate în capitolul 4.6.3. La execuţie,
scopul extern introdus este creare.

137

Universitatea SPIRU HARET


domains
data=d(integer,integer)
pret_mediu,volum=real
database
tranzactie(data,pret_mediu,volum)

predicates
cit_data(data)
cit_pret(pret_mediu)
cit_vol(volum)
adauga_tranz(char)
creare
clauses
cit_data(d(Z,L)):-
nl,
write("Ziua:"),readint(Z),nl,
write("Luna:"),readint(L),nl.
cit_pret(PM):-
nl,
write("Pret mediu:"),readreal(PM).
cit_vol(V):-
nl,
write("Volumul tranzactiilor:"), readreal(V).
adauga_tranz('N'):-!,nl,write("Incheiere introducere date; fisier
salvat"),
save("tran.dba").
adauga_tranz('D'):-
cit_data(D), cit_pret(PM), cit_vol(V),
assert(tranzactie(D,PM,V)).
creare:-write("Introduceti date?(D/N):"),readchar(R),
adauga_tranz(R),R='D',creare.
creare:-!.

Următorul program Prolog utilizează fişierul creat pentru a afişa preţul


mediu al unei acţiuni la o dată citită de la tastatură. În cazul în care nu există o
astfel de informaţie în baza de date, utilizatorul este informat printr-un mesaj
de eroare. La execuţie, scopul extern introdus este consultare.
138

Universitatea SPIRU HARET


domains
data=d(integer,integer)
pret_mediu,volum=real

database
tranzactie(data,pret_mediu,volum)
predicates
cit_data(data)
consultare
clauses
cit_data(d(Z,L)):-
nl,
write("Ziua:"),readint(Z),nl,
write("Luna:"),readint(L),nl.
consultare:-
consult("tran.dba"),
cit_data(D),
tranzactie(D,PM,_),
write("Pretul mediu:"),write(PM),nl,!.
consultare:-write("Nu exista inregistrare!!"),nl.

4.7.2. Baze de date externe în mediul Turbo Prolog


Mediul Turbo Prolog oferă un set de predicate predefinite pentru
crearea şi gestionarea unei baze de date externe (informaţiile sunt
memorate în afara sursei Prolog, deci în afara memoriei interne).
Înregistrările memorate în bazele de date externe sunt definite utilizând
tipuri de date Prolog corecte (definite în secţiunea domains) şi sunt referite
de sistem prin cuvântul rezervat Term. Crearea unei baze de date este
realizată prin utilizarea predicatului de sistem db_create,
db_create(Identificator_intern, Identificator_bd, Plasament),
unde Identificator_intern este tipul predefinit “db_selector”,
Identificator_bd este numele bazei de date şi Plasament este de tipul
predefinit Place, cu variantele in_file (baza de date este memorată pe disc),

139

Universitatea SPIRU HARET


respectiv in_memory (baza de date este memorată intern). Argumentele
predicatului db_create sunt date de intrare.
Ştergerea unei baze de date este realizată prin aplelul predicatului
predefinit db_delete, cu toate argumentele parametri de intrare,
db_delete(Identificator_bd, Plasament),
unde argumentele au aceeaşi semnificaţie ca în cazul predicatului
db_create.

Deschiderea unei baze de date existente este realizată cu predicatul


de sistem db_open,
db_open(Identificator_intern, Identificator_bd, Plasament),
unde toate argumentele sunt date de intrare şi au aceeaşi semnificaţie cu
cele din predicatul db_create.

Predicatul de sistem db_close realizează închiderea unei baze de date


şi are un singur argument, dată de intrare,
db_close(Identificator_bd).

În situaţia în care au fost şterse înregistrări sau sunt utilizaţi indecşi,


spaţiul de memorie poate fi reorganizat prin eliminarea zonelor logic
neutilizate prin aplelul predicatului de sistem
db_gardbagecollect(Identificator_intern).

O bază de date poate fi copiată din memoria internă în memoria


externă şi invers prin utilizarea predicatului predefinit db_copy,
db_copy(Identificator_intern, Identificator_bd, Plasament_nou),
unde toate argumentele sunt date de intrare şi au aceeaşi semnificaţie ca în
cazul predicatului db_create.

Actualizarea unei baze de date externe este realizată în Turbo Prolog


prin utilizarea următoarelor predicate de sistem [Zaharie ş.a., 1998]:
1. Pentru adăugarea de noi înregistrări
chain_inserta(Identificator_intern, Chain_rec, Dom, Rec, No_ref),
respectiv
chain_insertz(Identificator_intern, Chain_rec, Dom, Rec, No_ref),

140

Universitatea SPIRU HARET


unde primele patru argumente sunt date de intrare şi ultimul este dată de
ieşire. Predicatul chain_inserta adaugă o înregistrare la începutul secvenţei
specificate; chain_insertz realizează adăugarea unei înregistrări la sfârşitul
secvenţei. Semnificaţia argumentelor celor două predicate este următoarea:

− Identificator_intern este identificatorul intern al bazei de date;


− Chain_rec este numele mulţimii de înregistrări în care este
adăugată noua înregistrare;
− Dom este numele structurii înregistrării de adăugat;
− Rec este înregistrarea care este adăugată în baza de date:
− No_ref este numărul de referinţă (similar numerelor relative din
fişiere Pascal, doar că numerotarea articolelor începe de la 1 şi
nu de la 0) atribuit înregistrării după adăugarea acesteia în baza
de date.
De asemenea, adăugarea unui nou articol poate fi realizată după o
înregistrare a cărei poziţie, Poz, este specificată, prin
chain_insertz(Identificator_intern, Chain_rec, Dom, Poz, Rec,
No_ref).

2. Modificarea unei înregistrări este realizată prin:


term_replace(Identificator_intern, Dom, No_ref,Rec),
unde predicatul de sistem realizează înlocuirea articolului cu numărul de
referinţă No_ref cu articolul Rec.

3. Ştergerea unui articol este efectuată prin specificarea numărului


de referinţă,
term_delete(Identificator_intern, Chian_rec, No_ref).

Un set (lanţ) de înregistrări (chain) este creat automat la primul apel


al unei operaţii de inserare şi este identificat prin numele cu care a fost
realizată operaţia respectivă. Seturile de înregistrări sunt prelucrate
utilizând următoarele predicate predefinite:
− db_chains(Identificator_intern, Chain_rec): instanţiază Chain_rec
cu numele fiecăreia dintre secvenţele pe care le conţine baza de
date cu numele intern Identificator_intern, ordonate
lexicografic.

141

Universitatea SPIRU HARET


− chain_terms(Identificator_intern, Chain_rec, Dom, Rec,
No_ref): instanţiază argumentele Rec şi No_ref cu articolul şi
numărul de referinţă al fiecărei înregistrări din setul Chain_rec
din baza de date cu numele intern Identificator_intern.

În afara predicatului predefinit chain_terms, mediul Turbo Prolog


pune la dispoziţia utilizatorilor o serie de predicate pentru parcurgerea unei
baze de date externe, după cum urmează:

− chain_first(Identificator_intern, Chain_rec, No_ref): determină


prima referinţă, No_ref, din setul de înregistrări specificat;
− chain_last(Identificator_intern, Chain_rec, No_ref): determină
ultima referinţă, No_ref, din setul de înregistrări specificat;
− chain_next(Identificator_intern, Ref_curenta, No_ref):
calculează referinţa No_ref care urmează referinţei Ref _curenta
în cadrul unui aceluiaşi set de înregistrări;
− chain_prev(Identificator_intern, Ref_curenta, No_ref):
calculează referinţa No_ref care precede referinţei Ref _curenta
în cadrul unui aceluiaşi set de înregistrări;
− ref_term(Identificator_intern, Dom, No_ref, Rec): determină
articolul Rec cu numărul de referinţă No_ref.

Exemplificăm în continuare lucrul cu baze de date externe prin


următoarele aplicaţii economice.
Programul Prolog prezentat mai jos realizează crearea unei baze de
date externe, “prod.db”, în care sunt memorate informaţii relative la
produsele comercializate de un magazin. Despre fiecare produs sunt
menţinute următoarele informaţii: codul produsului (cod_prod), denumirea
(den_prod), preţul unitar (pu_prod) şi stocul (stoc_prod). Codul produsului
identifică unic un produs şi este un şir format din 3 caractere. În continuare
baza de date este parcursă pentru afişarea informaţiilor memorate.

142

Universitatea SPIRU HARET


domains
cod_prod,den_prod=string
pu_prod,stoc_prod=real
produs=prod(cod_prod,den_prod,pu_prod,stoc_prod)
db_selector=db_sel
predicates
cit_prod(cod_prod,den_prod,pu_prod,stoc_prod)
adauga_produs(char)
adauga
creaza_fis
afisare
clauses
cit_prod(C,D,PU,S):-
nl,write("Codul:"),readln(C),
write("Denumirea:"),readln(D),
write("Pret unitar:"),readreal(PU),
write("Stoc:"),readreal(S).
adauga_produs('N'):-
nl,write("Introducerea datelor este incheiata"),nl.
adauga_produs('D'):-
cit_prod(C,D,Pu,S),
chain_insertz(db_sel,produse,produs,prod(C,D,Pu,S),_).
adauga:-
nl,write("Introduceti produs?(D/N):"),
readchar(R),adauga_produs(R),
R='D',adauga,!.
adauga.
creaza_fis:-
db_create(db_sel,"prod.db",in_file),adauga.
afisare:-
db_chains(db_sel,Chain),chain_terms(db_sel,Chain,produs,Rec,No_ref),
write("Articolul:",Rec,"\n in pozitia:",No_ref),nl,
fail.
afisare.
goal
creaza_fis,db_close(db_sel),
db_open(db_sel,"prod.db",in_file),afisare,db_close(db_sel).
143

Universitatea SPIRU HARET


Următorul program Prolog preia de la tastatură un cod şi afişează,
dacă există, produsul cu acel cod. Menţionăm că numele atribuit unui set de
înregistrări trebuie să corespundă numelui atribuit la crearea bazei de date
care este exploatată, În cazul nostru, setul de înregistrări este denumit
produse (vezi programul prin care a fost creată baza de date prod.db).
domains
cod_prod,den_prod=string
pu_prod,stoc_prod=real
produs=prod(cod_prod,den_prod,pu_prod,stoc_prod)
db_selector=db_sel
predicates
cauta_produs
cauta(cod_prod)
continua_cautarea(cod_prod,ref)
clauses
cauta_produs:-
nl,write("Cod produs:"),readln(C),
cauta(C),!,
write("Continuati?(D/N):"),readchar(R),
R='D',cauta_produs.
cauta_produs.
cauta(C):-
chain_first(db_sel,produse,Ref),
continua_cautarea(C,Ref).
cauta(_):-
nl,write("Nu exista produs cu acest cod"),nl.
continua_cautarea(C,Ref):-
ref_term(db_sel,produs,Ref,prod(C,D,P,S)),!,
nl,write("Produsul gasit este:"),nl,
write("denumire:",D," pret:",P," stoc:",S).
continua_cautarea(C,Ref):-
chain_next(db_sel,Ref,Ref_urm),
continua_cautarea(C,Ref_urm).
goal
db_open(db_sel,"prod.db",in_file),cauta_produs,db_close(db_sel).

144

Universitatea SPIRU HARET


În scopul regăsirii rapide a informaţiei într-o bază de date, limbajul
Prolog permite indexarea. În principiu, optimizarea revine la faptul că
regăsirea unei informaţii este realizată prin algoritmul de căutare binară,
prin menţinerea sortată a informaţiei după care este realizată căutarea.
Indexarea presupune crearea unei liste în care sunt menţinute perechi
(cheie_indexare, pozitia_in_db), unde cheie_indexare este câm-
pul/combinaţia de câmpuri care corespunde indexului şi pozitia_in_db este
numărul de referinţă al înregistrării corespunzătoare indexului.
În continuare ne vom referi la lucrul cu chei unice.
În mediul de lucru Turbo Prolog, indexarea şi consultarea indexului
sunt realizate prin utilizarea următoarelor predicate de sistem [Zaharie ş.a.,
1998]:
− bt_create(Identificator_intern, Identificator_index,
dentificator_intern_index, Lungime_index, Numar_chei) – pentru baza
de date cu identificatorul intern Identificator_intern crează un B+ arbore cu
numele Identificator_index, cu identificatorul intern
Identificator_intern_index (care este parametru de ieşire, fiind generat de
sistem). Lungime_index este lungimea maximă a şirului de caractere după
care se face indexarea şi Numar_chei este numărul cheilor folosite pentru
construcţia indexului;
− bt_open(Identificator_intern, Identificator_index,
Identificator_intern_index) – pentru baza de date cu identificatorul
intern Identificator_intern deschide indexul cu numele Identificator_index,
cu identificatorul intern Identificator_intern_index (stabilit de sistem).
− bt_close(Identificator_intern, Identificator_intern_index) –
realizează închiderea arborelui de indecşi;
− bt_delete(Identificator_intern, Identificator_index) – şterge
arborele de indecşi;
− db_tress(Identificator_intern, Identificator_index) – instanţiază
Identificator_index cu numele fiecăruia dintre B+ arborii pe care
îi conţine baza de date cu identificatorul intern
Identificator_intern;
− key_insert(Identificator_intern,
Identificator_intern_index, Cheie, No_ref) - adăugarea unei chei;
− key_delete(Identificator_intern, Identificator_intern_index,
Cheie, No_ref) - ştergerea unei chei;
145

Universitatea SPIRU HARET


− key_search(Identificator_intern, Identificator_intern_index,
Cheie, No_ref) – căutarea unei chei, Cheie, cu returnarea
poziţiei de apariţie, No_ref, dacă aceasta există, respectiv cu
returnarea poziţiei corespunzătoare cheii imediat următoare, în
caz contrar;
− key_first(Identificator_intern, Identificator_intern_index, No_ref) –
selectarea primei valori a cheii de căutare cu returnarea poziţiei
de apariţie, No_ref;
− key_last(Identificator_intern, Identificator_intern_index, No_ref) –
selectarea ultimei valori a cheii de căutare cu returnarea poziţiei
de apariţie, No_ref;
− key_current(Identificator_intern, Identificator_intern_index, Cheie,
No_ref) – determină cheia şi poziţia articolului corespunzător
celei curente.
Exemplificăm în continuare lucrul cu baze de date indexate
considerând pentru indexare “prod.db”. Baza de date “prod.db” este indexată
după un singur câmp, cod_produs, care este cheie unică. Lungimea cheii de
indexare este 3. La execuţia programului Prolog, scopul extern este
Goal: cr_index.
domains
cod_prod,den_prod=string
pu_prod,stoc_prod=real
produs=prod(cod_prod,den_prod,pu_prod,stoc_prod)
db_selector=db_sel
predicates
cr_index
indexeaza(bt_selector)
clauses
indexeaza(Id_ind):-
chain_terms(db_sel,produse,produs,prod(Cod,_,_,_),Poz),
key_insert(db_sel,Id_ind,Cod,Poz),fail.
indexeaza(_).
cr_index:-
db_open(db_sel,"prod.db",in_file),
bt_create(db_sel,"Index",Id_ind,3,1),
indexeaza(Id_ind),
bt_close(db_sel,Id_ind),db_close(db_sel).

146

Universitatea SPIRU HARET


În continuare prezentăm programul Prolog pentru căutarea unui cod
şi afişarea, dacă există, a produsului cu acel cod, în variantă indexată.
domains
cod_prod,den_prod=string
pu_prod,stoc_prod=real
produs=prod(cod_prod,den_prod,pu_prod,stoc_prod)
db_selector=db_sel
predicates
cauta_produs(bt_selector)
cauta(cod_prod,bt_selector)
clauses
cauta_produs(Id_ind):-
nl,write("Cod produs:"),readln(C),
cauta(C,Id_ind),!,
write("Continuati?(D/N):"),readchar(R),
R='D',cauta_produs(Id_ind).
cauta_produs(_).
cauta(C,Id_ind):-
key_search(db_sel,Id_ind,C,Poz),
ref_term(db_sel,produs,Poz,prod(C,D,P,S)),
nl,write("Produsul gasit este:"),nl,
write("denumire:",D," pret:",P," stoc:",S),nl.
cauta(_,_):-
nl,write("Nu exista produs cu acest cod"),nl.
goal
db_open(db_sel,"prod.db",in_file),bt_open(db_sel,"Index",Id_ind),
cauta_produs(Id_ind),bt_close(db_sel,Id_ind),db_close(db_sel).

Întrebări de control
1. Care sunt caracteristicile limbajului Prolog?
2. Ce este o clauză Prolog?
3. Ce este un scop Prolog?
4. Ce este un predicat Prolog?
5. Ce sunt regulile Prolog?
6. Prezentaţi variabilele în Prolog.
7. Ce este spaţiul soluţiilor în Prolog?
147

Universitatea SPIRU HARET


8. Cum se realizează baza de cunoştinţe în limbajul Prolog?
9. Cum se realizează interogarea în Prolog?
10. Prezentaţi predicatul cut.
11. Care sunt ferestrele mediului Turbo Prolog?
12. Care sunt meniurile mediului Turbo Prolog?
13. Prezentaţi secţiunile mediului Turbo Prolog.
14. Prezentaţi predicatul standard write din limbajul Prolog.
15. Ce este recursivitatea şi cum se realizează în Prolog?
16. Ce este lista?
17. Ce modele de prelucrare a structurii de listă în limbajul Prolog
cunoaşteţi?
18. Ce este un arbore binar?
19. Ce este un arbore de sortare?
20. Prezentaţi predicatul predefinit findall.
21. Ce este o bază de date internă în limbajul Prolog?
22. Cum se realizează adăugarea de fapte în baza de date internă în
limbajul Prolog?
23. Cum se pot şterge fapte din baza de date internă în limbajul
Prolog?
24. Ce sunt bazele de date externe în limbajul Prolog?
25. Cum se prelucrează seturile de înregistrări din bazele de date
externe în limbajul Prolog?
26. Cum se realizează indexarea în limbajul Prolog?

148

Universitatea SPIRU HARET


5. PROIECTAREA ŞI REALIZAREA SISTEMELOR EXPERT

5.1. Ciclul de viaţă al sistemelor expert


Ciclul de viaţă al unui sistem expert (ca al oricărui produs-program,
produs software sau aplicaţie informatică) reprezintă perioada cuprinsă
între momentul apariţiei conceptului şi momentul scoaterii sistemului din
exploatare. Ciclul de viaţă al unui sistem expert este compus din
următoarele părţi: a) dezvoltarea, b) integrarea şi utilizarea şi c) actua-
lizarea şi întreţinerea sistemului expert. Aceste părţi ale ciclului de viaţă al
unui sistem expert sunt organizate în următoarele etape*: analiza
preliminară (definirea activităţii care va face obiectul sistemului expert şi
selectarea instrumentelor informatice), modelarea conceptuală (definirea
structurii conceptuale a cunoştinţelor folosite de către expertul uman în
domeniul specific care constituie obiectul sistemului expert), colectarea
cunoştinţelor (cunoştinţele se vor utiliza pentru construirea modelelor
conceptuale şi pentru realizarea bazei de cunoştinţe), reprezentarea
cunoştinţelor (formalizarea şi reprezentarea cunoştinţelor în structura
necesară pentru stocarea în baza de cunoştinţe a sistemului expert),
validarea sistemului (verificarea şi confirmarea utilizabilităţii sistemului
expert în domeniul specific) şi introducerea în exploatare şi menţinerea în
funcţiune (realizarea etapei operaţionale).
În fig.5.1. este prezentat modelul în cascadă (waterfall model) aplicat
ciclului de viaţă al unui sistem expert. Există şi alte modele ale ciclului de
viaţă al unui sistem expert: modelul incremental, modelul în spirală,
modelul liniar etc. Modelul incremental este o versiune a modelului în

*
Dorin Zaharie, Pavel Năstase, Felicia Albescu, Irina Bojan, Florin
Mihai, Liana-Anica Popa, Sisteme expert. Teorie şi aplicaţii, Editura Dual
Tech, Bucureşti, 2002.
149

Universitatea SPIRU HARET


cascadă ce constă în dezvoltarea sistemului expert prin incrementarea
(mărirea) posibilităţilor sale funcţionale; are avantajul testării, verificării şi
validării imediate, împreună cu expertul uman, a fiecărui increment
funcţional (modul, grup de reguli, regulă). Modelul în spirală este o
variantă a modelului incremental în care fiecare spiră a spiralei reprezintă
un progres în mărirea posibilităţilor funcţionale ale sistemului expert.
Modelul liniar este compus din mai multe faze (planificarea, definirea
cunoaşterii, proiectarea cunoaşterii, codificarea şi controlul, verificarea
cunoaşterii şi evaluarea sistemului expert), cu repetarea tuturor acestor faze
până când sistemul expert este finalizat complet.

5.1.1. Analiza preliminară


Prin analiza preliminară se realizează definirea activităţii sau
problemei care va reprezenta obiectul sistemului expert (ES) şi selectarea
instrumentelor informatice. În această etapă, selectarea problemei potrivite
pentru sistemul expert este o activitate complexă care este determinată de o
multitudine de factori. Există mai multe metodologii şi liste de control
destinate execuţiei activităţilor specifice analizei preliminare.
Sistemele expert mari necesită mai multe categorii de participanţi în
procesul de dezvoltare: experţii umani, cogniticienii, proiectanţi, analişti-
programatori şi utilizatori finali.
Înaintea luării deciziei de dezvoltare a unui sistem expert, trebuie
analizate toate celelalte soluţii alternative de rezolvare a problemei. Dacă,
de exemplu, cunoaşterea este absentă, atunci este de preferat o altă soluţie
decât aceea a unui sistem expert. De asemenea, din punct de vedere al
rezultatelor aşteptate, sistemul expert trebuie să conducă la creşterea cifrei
de afaceri, reducerea costurilor, creşterea calităţii, antrenarea perfecţionării
pregătirii profesionale a personalului etc. Analiza oportunităţii dezvoltării
unui sistem expert se poate face pe baza listei lui Puppe (tabelul 5.1)** prin
care, fiecărui criteriu i se alocă o pondere, P (numere de la 0 – pentru
neaplicabilitate completă la 10 – pentru aplicare); criteriile sunt clasificate
în trei grupe: cerinţe pentru utilizator şi management, cerinţe pentru

*
Ioan Andone, Alexandru Ţugui, Sisteme inteligente în management,
contabilitate, finanţe-bănci şi marketing, Editura Economică, Bucureşti,
1999.
150

Universitatea SPIRU HARET


problemă şi cerinţe pentru experţi. Aprecierea finală se efectuează prin
însumarea tuturor ponderilor şi divizarea acestei sume a ponderilor la
numărul total de criterii folosite. Dacă rezultatul obţinut este mai mare
decât cinci, se poate lua decizia de dezvoltare a sistemului expert.

Fig.5.1. Modelul în cascadă aplicat ciclului de viaţă al unui sistem expert

Cerinţele impuse activităţii sau problemei de rezolvat prin


intermediul sistemului expert sunt, în principal următoarele: problemă
cunoscută de experţii umani disponibili, nivel mediu de complexitate,
domeniu de expertiză bine precizat, problemă structurabilă, caracterizată
de repetitivitate în timp. O problemă este structurabilă atunci când
foloseşte elemente identificabile, formalizabile şi reproductibile.
151

Universitatea SPIRU HARET


Tabelul 5.1. Lista lui Puppe***
Nr. I. CRITERII ESENŢIALE II. CRITERII DE DORIT
crt. Conţinut criteriu P Conţinut criteriu P
1. Utilizatorii ES aşteaptă 10 Managementul sprijină 8
beneficii mari din operaţiile proiectul de ES şi după
de rutină finalizarea sa
2. Utilizatorii se aşteaptă ca 10 Introducerea ES nu necesită 4
dimensiunea şi limitele ES să prea multă reorganizare
fie realiste
3. Proiectul de ES este bine 10 Utilizatorul final poate 4
susţinut de management interacţiona cu ES
4. Problema de rezolvat nu 10 Întrebările puse ES sunt 4
presupune prelucrări în limbaj necesare şi nu sunt prea multe
natural
5. Problema de rezolvat nu 10 Problema de rezolvat se 4
presupune cunoaştere cunoaşte dinainte ca o situaţie
intensivă în cantitate mare problematică
6. Problema de rezolvat este de 8 Soluţiile problemei de rezolvat 4
natură euristică sunt explicabile
7. Cazurile testate pentru toate 10 Problema de rezolvat nu 5
gradele de dificulate sunt reclamă un timp de răspuns
disponibile prea scurt
8. ES poate fi dezvoltat prin 7 Sunt identificate ES reuşite care 8
metode incrementale; se aseamănă cu proiectul de ES
problema de rezolvat este propus
divizibilă
9. Problema de rezolvat nu 8 ES poate fi folosit simultan în 5
necesită soluţii optime mai multe locuri
10. Problema de rezolvat nu 10 Problema de rezolvat este 3
necesită soluţii comune (de periculoasă sau cel puţin
bun simţ) neatractivă pentru om
11. Problema de rezolvat prezintă 10 Problema de rezolvat implică şi 4
relevanţă într-un viitor cunoaştere subiectivă
previzibil

***
F., Puppe, Sistematic Introduction to Expert Systems. Knowledge
Representation and Problem-Solving, Springer-Verlag, Berlin, 1993.
152

Universitatea SPIRU HARET


12. Finalizarea în timp scurt a ES 7 Expertul uman nu mai este 3
nu este esenţială disponibil în viitor
13. Problema de rezolvat este 8 Expertul uman este disponibil 3
uşoară, dar nu la fel de uşoară să se identifice intelectual cu
pentru ES sistemul expert
14. Experţii umani există şi sunt 10 Expertul uman nu se simte 4
disponibili ofensat sau rău tratat
15. Expertul uman disponibil este 10 Cunoaşterea utilizată de 2
unul recunoscut de expertul uman la soluţionarea
comunitatea de specialitate a problemei de rezolvat este
domeniului problemei de structurată
rezolvat
16. Expertul uman este disponibil 10
pentru o perioadă mare de
timp
17. Expertul uman disponibil este 8
cooperant
18. Expertul uman se exprimă 8
clar şi este uşor de înţeles
19. Expertul uman este o 8
persoană de încredere ce are
experienţă în proiecte de ES
20. Expertul uman foloseşte 8
raţionamentul simbolic
21. Transferul expertizei este 7
dificil dar nu imposibil
22. Expertul uman rezolvă 10
problema cu o mare
competenţă cognitivă
23. Experţii umani disponibili 10
acceptă că soluţia propusă
pentru problema de rezolvat
este bună
24. Expertul uman nu trebuie să 10
fie creativ în timpul
soluţionării problemei de
rezolvat

153

Universitatea SPIRU HARET


5.1.2. Modelarea conceptuală
Modelarea conceptuală constă în definirea structurii conceptuale a
cunoştinţelor folosite de către expertul uman în domeniul specific care
constituie obiectul sistemului expert. Prin aceasta se construieşte un model
(structural sau static, funcţional sau dinamic, cauzal sau temporal, cognitiv
sau raţional) al domeniului de expertiză din universul real. Din această
etapă trebuie să rezulte caracteristicile generale ale sistemului expert, modul
de configurare a interfeţelor cu alte sisteme, cerinţele de resurse, domeniul
riscului, costurile anticipate pe faze, structura echipei de proiectare, unele
referiri la elemente ale proiectării de detaliu.
Obiectivele modelării conceptuale se pot sintetiza astfel: identificarea
conceptelor, obiectelor şi entităţilor fundamentale ale domeniului de
expertiză; definirea atributelor ce se vor folosi pentru descrierea obiectelor,
conceptelor şi entităţilor; identificarea corelaţiilor de bază dintre obiecte,
concepte şi entităţi; analiza restricţiilor esenţiale ce afectează relaţiile dintre
obiecte; precizarea tipului de probleme de rezolvat care vor face obiectul
ES; definirea cadrului general de folosite a ES.
Modelul structural reflectă elementele (obiectele, entităţile),
atributele elementelor şi relaţiile structurale dintre elemente (relaţii de
clasificare şi relaţii de compunere/descompunere pe părţi componente).
Relaţiile dintre elemente se reprezintă sub formă de arbori (structuri de
noduri şi arce). Reţelele semantice, ca modele primare ale realităţii, sunt
slab structurate. Modelul entitate-asociere (cunoscut de la baze de date)
conţine entităţi în noduri, iar arcele conţin atribute ale entităţilor, respectiv
asocieri. Modelul cadrelor (frames), ce a fost prezentat în capitolul 2,
conţine din punct de vedere structural, nume (identificatori), antecedenţi
(ierarhii) şi rubrici (proprietăţi), şi este apreciat ca fiind cel mai complet
model. Modelul orientat pe obiecte este rezultat direct din cadre.
Modelul funcţional reflectă caracterul dinamic al domeniului de
expertiză, activitatea şi funcţiile specifice elementelor din modelul
structural. Funcţiile sunt reprezentate prin verbe de acţiune în modelul
descriptiv, prin arce în reţeaua semantică, prin cadru de tip acţiune în
modelul cu cadre, prin asocieri în modelul entitate-asociere şi prin metode
în modelul orientat pe obiecte. Cu ajutorul arborelui descompunerii
funcţionale, o funcţie poate fi descompusă în acţiuni din ce în ce mai
precise (există trei nivele: acţiune generică, acţiune specifică şi acţiune
154

Universitatea SPIRU HARET


elementară). S-a realizat o standardizare la nivelul acţiunilor elementare,
folosindu-se 11 verbe care le exprimă: a aplica, a aştepta, a comunica, a
da, a expulza, a imagina, a îngloba, a mişca, a muta, a prinde, a spune.
Modelul cauzal surprinde aspectele semnificative ale declanşării unei
acţiuni şi consecinţele acesteia (de la cauză la efect). Noţiunile specifice
modelului sunt acţiunea şi evenimentul. Acţiunea este declanşată în
condiţiile existenţei unui set de valori ale unor parametri de stare (atribute).
Evenimentul este rezultatul unei acţiuni şi, prin consumarea acestuia se
modifică setul de valori ale parametrilor de stare. În modelul cu reguli de
producţie, schema de lucru este condiţii→acţiune.
Modelul raţional constă în punerea în evidenţă a mecanismelor
inteligenţei artificiale folosite în procesul de raţionament (inferenţiere).
Raţionamentele pot fi executate asupra modelului structural (raţionamente
prin analogie), asupra modelului funcţional (raţionamente prin analogie)
sau asupra modelului cauzal (silogism). Modelele raţionale sau cognitive ce
se asociază raţionamentului asupra modelului cauzal sunt deducţia (modus
ponens), inducţia şi reducerea la absurd (modus tollens). Modelul raţional
reprezintă modelul conceptual al expertizei.
După executarea modelării conceptuale, echipa de proiectare este
informată asupra proiectului de sistem expert.

5.1.3. Colectarea cunoştinţelor


Cunoştinţele colectate se vor utiliza pentru construirea modelelor
conceptuale şi pentru realizarea bazei de cunoştinţe. Colectarea
cunoştinţelor se poate face manual, semiautomat sau automat (paragraful
3.3). Tehnicile utilizate în colectarea cunoştinţelor sunt interviul,
interacţiunea cu sistemul, prin inducţie automată (generarea automată de
reguli de producţie).

5.1.4. Reprezentarea cunoştinţelor


Reprezentarea cunoştinţelor constă formalizarea cunoştinţelor în
structura necesară pentru stocarea în baza de cunoştinţe a sistemului expert.
În capitolul 2 al lucrării, s-au prezentat principalele metode de reprezentare
a cunoştinţelor.
Modelul conceptual al prelucrării cunoştinţelor în vederea atingerii
unui anumit scop este schema de interpretare-intenţie. Pentru rezolvarea
155

Universitatea SPIRU HARET


unei probleme se folosesc diferite combinaţii ale modelelor primitive de
raţionament (modele cognitive elementare). Schema de interpretare-intenţie
este schema de înlănţuire, de succedare a primitivelor de raţionament
necesare pentru rezolvarea problemei. Formularea interpretativă explică
de ce este adevărată concluzia, adică se cunoaşte concluzia şi se
explicitează premisele în scopul verificării sau oferirii de explicaţii.
Formularea de intenţie arată ce trebuie efectuat pentru a se îndeplini
concluzia, adică se cunosc premisele şi se explicitează consecinţele
acestora. În timp ce formularea interpretativă explorează trecutul adică
faptele cunoscute, formularea de intenţie explorează viitorul, adică fapte
ipotetice.
S-au realizat generatoare de sisteme expert şi alte instrumente
informatice pentru achiziţia automată a cunoştinţelor.

5.1.5. Validarea sistemului


Validarea sistemului înseamnă verificarea şi confirmarea utiliza-
bilităţii sistemului expert în domeniul specific.
Criteriile folosite la validarea sistemului sunt precizia rezultatelor,
proporţia problemelor rezolvate corect în raport cu numărul total de
probleme supuse rezolvării, capacitatea sistemului expert de a face faţă
diferitelor formulări ale problemelor, naturaleţea în interacţiunea sistemului
expert cu omul, gradul de acoperire a cerinţelor de tipuri de probleme ce
aparţin domeniului de expertiză.
În cazul sistemelor expert bazate pe reguli de producţie, validarea
sistemului expert se realizează atunci când în aproximativ 75% din cazurile
testate, se constată mai puţin de 5% erori.

5.1.6. Introducerea în exploatare şi menţinerea în funcţiune


Introducerea în exploatare (implementarea) a sistemului expert
cuprinde ansamblul activităţilor cerute de trecerea sistemului expert la
stadiul operaţional. Menţinerea în funcţiune (postimplementarea) a
sistemului expert cuprinde toate activităţile ulterioare introducerii în
exploatare ce au ca scop completarea bazei de cunoştinţe şi adaptarea
sistemului expert la progresele tehnologiilor informaţiei şi ale
comunicaţiilor (IT&C). Un sistem expert poate să se afle, în exploatare,
într-una din următoarele situaţii:
156

Universitatea SPIRU HARET


• funcţionare independentă (sisteme expert „la cheie”);
• componentă a unui sistem informatic integrat;
• sistem de servicii pentru utilizatorii care se conectează de la distanţă;
• disponibil la cerere, programat sau continuu.
La implementare, instruirea utilizatorilor trebuie efectuată cu mare
grijă datorită problemelor ce pot apare din cauza comportamentului şi
psihologiei acestora.
Activităţile de bază ale menţinerii în funcţiune (postimplementării) a
sistemului expert sunt exploatarea, operarea, întreţinerea, actualizarea şi
extinderea sistemului, urmate, de evaluarea acestuia. Evaluarea periodică a
sistemului expert se efectuează la fiecare 6-12 luni şi are în vedere costurile
actuale ale întreţinerii în raport cu beneficiile, accesibilitatea sistemului
expert pentru toate categoriile de utilizatori, gradul de acceptabilitate din
partea utilizatorilor, acurateţea cunoaşterii oferite de sistem etc.

5.2. Metode de modelare a sistemelor expert


S-au pus la punct mai multe metode de modelare a sistemelor cu
baze de cunoştinţe din care fac parte şi sistemele expert: metoda KADS,
metoda COGNITECH, metoda KOD. Aceste metode preiau o parte din
metodologia Merise şi cea orientată pe obiecte.
Metoda KADS (Knowledge Acquisition and Design System) a
Comunităţii Europene diferenţiază descrierea domeniului de descrierea
raţionamentelor, foloseşte modele (task-uri) generice (atelierul SHELLEY)
şi conţine următoarele opt etape: studiul iniţial de definire a problemei de
rezolvat (analiza preliminară), analiza de sistem (restricţii, sarcini de
expertiză şi scenarii de folosire), modelarea (realizarea unui model
conceptual al expertizei, după care sunt descrise modelul funcţional,
modelul logic şi modelul fizic; se foloseşte un set de primitive de modelare
ce sunt structurate pe patru nivele: nivelul domeniu – descrierea obiectelor,
atributelor şi a relaţiilor dintre acestea; nivelul inferenţă – descrierea
primitivelor de inferenţă ce sunt utilizate pentru rezolvarea problemei;
nivelul activitate – descrierea scopurilor şi a structurii de inferenţă; nivelul
strategie – descrierea planului general de rezolvare a problemei şi a
cunoştinţelor necesare), implementarea (programarea), testarea (validarea),
încărcarea bazelor de cunoştinţe, interogarea bazelor de cunoştinţe şi

157

Universitatea SPIRU HARET


întreţinerea sistemului expert. Este utilizată o ierarhie de modele care se
rafinează până la obţinerea formei finale a sistemului expert.
Metoda COGNITECH asigură dezvoltarea sistemelor expert prin
intermediul prototipurilor şi conţine următoarele trei etape: construirea
unei machete iniţiale (demonstrator) cu scopul de evaluare a fezabilităţii
sistemului expert; construirea unui prototip de test; introducerea în
exploatare a prototipului testat.
Un prototip, în metodologia dezvoltării sistemelor expert, priveşte un
sistem expert de dimensiune relativ mică (dacă este sistem expert cu reguli
de producţie, are maxim 50 de reguli), ce este dezvoltat într-un timp scurt,
care să permită procese de raţionament (inferenţe) rapide, chiar dacă unele
componente ale sistemului expert nu sunt finalizate. Scopul prototipului
este configurarea optimală de către proiectanţi a structurii bazei de
cunoştinţe înainte de a consuma prea multe resurse cu dezvoltarea formei
finale a sistemului expert.
Avantajele prototipizării sunt demonstrarea caracteristicilor
sistemului expert, eliminarea neajunsurilor ce pot apare la sistemul expert
finalizat prin efectuarea corecţiilor operative necesare, încurajarea bene-
ficiarului în a investi în continuare în dezvoltarea sistemului expert, acce-
lerarea procesului de achiziţie a cunoaşterii, susţinerea interesului exper-
tului uman pentru continuarea participării la dezvoltarea sistemului expert.
Metoda KOD (Knowledge Oriented Design), metodă structurată
dezvoltată în Franţa, acoperă faza de analiză a domeniului specific
sistemului expert, faza de construire a modelului expertizei şi faza de
elaborare a specificaţiei de realizare a sistemului expert. Modelul de
specificare a metodei KOD conţine trei nivele: nivelul static (descrierea
obiectelor, percepute şi gestionate de expert), nivelul dinamic (nivelul
acţiunilor ce sunt aplicate asupra obiectelor) şi nivelul tematic (asigură prin
declaraţii succesiunea de transformări de stare asupra domeniului).
5.3. Medii şi instrumente de dezvoltare a sistemelor expert
5.3.1. Problematica generală
Mediile şi instrumentele de dezvoltare a sistemelor expert poartă
diferite denumiri comerciale: medii integrate (integrated environments),
generatoarede sisteme expert (shells) sau instrumente de dezvoltare (tools).

158

Universitatea SPIRU HARET


Clasificarea mediilor şi instrumentelor de dezvoltare a sistemelor
expert este următoarea: limbaje de programare (Prolog, LISP);
instrumente de suport în dezvoltare (AGE, TEIRESIAS, ROGET etc.);
generatoare de sisteme expert (VP-Expert, H-Expert, EXSYS Professional,
EXSYS CORVID, Level 5, CLIPS, GURU, KES, AES, SYNTEL, ESE-IBM,
Nexpert, ADS, IMPACT, TIMM etc.); medii hibride (KBMS, ART, Personal
Consultant Plus, KEE etc.); medii specifice (software package).

5.3.2. Generatorul de sisteme expert Exsys CORVID


Generatorul de sisteme expert Exsys CORVID al companiei
americane Exsys Inc.este un mediu de dezvoltare bazat pe limbajul Visual
Basic, destinat pentru Web. Exsys CORVID lucrează cu reguli de pro-
ducţie, arbori decizionali, obiecte structurate. Prin mediul grafic pe care-l
conţine, acest generator de sisteme expert asigură şi realizarea aplicaţiilor
Web cu applet-uri Java runtime.
Mediul de lucru al generatorului de sisteme expert Exsys CORVID*
conţine următoarele ferestre: 1) variabile (Variables), 2) blocuri logice
(Logic Blocks), 3) adăugare noduri (Add Nodes), 4) bloc de comenzi
(Command Block), 5) constructor de comenzi (Command Builder) şi
6) căutare înapoi (Backward Chaining).
Fereastra variabile (Variables) serveşte pentru adăugarea şi editarea
variabilelor CORVID (fig.5.2.). Cu butonul New (1) se adaugă noi
variabile. Cu butonul Copy (2) noua variabilă poate fi copiată dintr-o
variabilă existentă. În caseta de sub aceste butoane, adică caseta de listare a
variabilelor, sunt afişate variabilele care în mod curent sunt definite în
sistemul expert. La efectuarea unui click pe o variabilă, se va produce
selecţia acesteia şi se va afişa setul de opţiuni pentru variabila selectată.
Butonul Edit Name (3) este destinat pentru modificarea numelui unei
variabile în toate locurile unde acesta apare. Butonul Delete (4) asigură
ştergerea unei variabile. Este de menţionat faptul că dacă variabila este
folosită în sistem, aceasta nu poate fi ştearsă. Butonul Where (5) permite
afişarea locului unde este utilizată variabila în sistemul expert. Secţiunea
Find (6) serveşte pentru căutarea unei variabile prin una sau mai multe
dintre opţiunile Nume (Name), Prompt/Values sau prin toate câmpurile (All

*
www.exsys.com
159

Universitatea SPIRU HARET


Fields). Secţiunea Sort (7) asigură modificarea aranjamentului variabilelor
în listă prin sortare alfabetică (Alphabetically), prin generarea unei ordini
anumite (Order Created) sau prin tipul variabilei. Butonul de setări
implicite pentru interogări (Question Defaults, 8) setează aspectul
sistemului expert (“Look and Feel”) în ceea ce priveşte antetul, subsolul,
culorile fundalului, stilul textului etc. Butonul Preview All (9) asigură
previzualizarea tuturor ecranelor de interogare.
Etichetele (10) din partea dreaptă sus a ferestrei Variables servesc
pentru stabilirea diferiţilor parametri ai unei variabile. Eticheta Prompt
defineşte prompterul pentru variabilă. Eticheta To Be asigură introducerea
regulilor simple ale sistemului expert de forma IF… THEN… Aceste
reguli sunt destinate pentru setarea valorii variabilei (aceste valori pot fi, de
asemenea, introduse prin intermediul blocului logic). Eticheta Options
permite setarea opţiunilor pentru modul în care variabila este iniţializată şi
limitată. Eticheta Link defineşte legăturile HTML pentru prompterul
variabilei. Eticheta Ask With stabileşte ce tip de control va fi folosit când
utilizatorul este întrebat asupra valorii variabilei. Eticheta Also Ask listează
alte variabile care pot fi interogate pe acelaşi ecran cu variabila curentă.

Fig.5.2. Fereastra Variables a generatorului de sisteme expert Exsys CORVID


160

Universitatea SPIRU HARET


Etichetele (11) din mijloc dreapta reprezintă opţiuni pentru fiecare tip
specificat de variabilă. Există şapte tipuri de variabile:
• Lista statică (Static List) este o listă cu alegere multiplă. Valorile
posibile sunt definite pe timpul dezvoltării sistemului expert.
• Lista dinamică (Dynamic List) este, de asemenea, o listă cu alegere
multiplă, dată, în care valorile posibile ale variabilei nu sunt stabilite în timp
real (runtime) şi pot fi obţinute dintr-o bază de cunoştinţe, pagină de calcul
(spreadsheet) sau pe baza logicii sistemului expert.
• Variabilă continuă (Continuous) reprezintă variabile ce prezintă
un domeniu continuu al valorilor. Aceste variabile sunt, la rândul lor, de trei
tipuri: numerice (Numeric), şir de caractere (String) şi date calendaristice
(Date).
• Colecţia (Collection) este o variabilă a cărei valoare este o listă cu
şiruri de caractere (String). Există opţiuni pentru adăugare, ştergere, testare,
sortare şi afişare a listei. Variabilele colecţie sunt foarte puternice, în special
în ceea ce priveşte construirea rapoartelor.
• Variabila factor de certitudine (Confidence) este o variabilă a cărei
valoare este numerică şi serveşte pentru tratarea incertitudinii din procesul
de realizare a sistemului expert. Sistemul CORVID dispune de mai multe
căi de combinare a variabilelor factor de certitudine (Confidence)
individuale ce pot fi atribuite în reguli pentru a produce o variabilă factor de
certitudine totală.
Incertitudinea reprezintă absenţa informaţiei adecvate ce este
necesară pentru adoptarea unei decizii. Tratarea incertitudinii se realizează
prin teoria probabilităţii clasice (teoria lui Bayes). Deşi există mai multe
metode de reprezentare a incertitudinii (metoda numerică, metoda grafică şi
metoda simbolică), rezultatele tuturor acestor metode pot fi transformate în
valori numerice. Raţionamentele experţilor sunt fundamentate pe
certitudinea sau incertitudinea unui fapt. Sursele incertitudinii în sistemele
expert bazate pe reguli de producţie sunt regulile individuale, rezolvarea
conflictelor şi incompatibilitatea regulilor. Factorul de certitudine măsoară
gradul de încredere al cunoaşterii ce stă la baza realizării sistemului expert.
El este o valoare numerică ce este ataşată unei premise şi/sau unei concluzii
dintr-o regulă. Factorul de certitudine (Confidence) este o metodă de
combinare a măsurii certitudinii cu o măsură a incertitudinii relative asupra
unei ipoteze iniţiale (B) şi a evidenţei observabile (A) de către experţii
161

Universitatea SPIRU HARET


umani şi a fost aplicat pentru prima dată la sistemul expert MYCIN (amintit
în scurt istoric). În cazul regulii IF A THEN B, atât premiza cât şi concluzia
conţin factori de certitudine asociaţi, fc(A) şi fc(B). Astfel, factorul de
certitudine (gradul de încredere în enunţul regulii) este
fc(A,B)=fc(A)*fc(B). Factorul de certitudine este un prag la care regula se
declanşează în execuţie. Dacă factorii de certitudine nu sunt folosiţi,
implicit aceştia au valoarea 1. Factorii de certitudine sunt stabiliţi de
cognitician prin consultare cu expertul uman.
Pentru a explica modul de lucru cu Exsys CORVID pentru
construirea unui sistem expert, se consideră o problemă de rezolvat foarte
simplă: într-o bancă, un fragment (cu două reguli) din analiza bonităţii unui
client care cere un împrumut arată astfel:

R1: Dacă (IF) solvabilitate supraunitară, atunci (THEN)


banca analizează ceilalţi indicatori de performanţă
R2: Dacă (IF) solvabilitate subunitară, atunci (THEN)
client respins la creditare

Motorul de inferenţe al generatorului Exsys CORVID foloseşte


regulile pentru a determina care informaţie este necesară pentru obţinerea
unei concluzii, ce întrebări trebuie puse sistemului expert şi care sunt cele
mai bune recomandări pe care acesta le poate oferi.
În fereastra principală de editare a CORVID se iniţializează noul
sistem expert cu butonul New din meniul principal. Se afişează fereastra de
salvare a fişierului denumit bonitate.cvd. În fereastra Variables (fig.5.2.) se
introduce variabilele care vor utilizate pentru definirea logicii sistemului.
Pentru construirea regulii R1 este necesară o variabilă solvabilitate care să
descrie cele două situaţii ale solvabilităţii curente a clientului bancar:
• supraunitară;
• subunitară.
Toate variabilele în CORVID sunt indicate prin […]. Denumirea
variabilei din câmpul Name (fig.5.3) trebuie să conţină numai litere, cifre
sau simboluri ca _ (underscore), #, $ şi %. Pentru variabila solvabilitate, se
allege tipul (Type) Static List. Când se introduce o variabilă nouă, aceasta
este adăugată la lista de variabile (în Main Prompt). Prompt-ul este iniţial
162

Universitatea SPIRU HARET


setat să fie acelaşi cu denumirea variabilei solvabilitate. Pe baza acesteia, se
construiesc ipotezele solvabilitate supraunitară, respective solvabilitate
subunitară.

Fig.5.3. Fereastra de creare a unei noi variabile (New Variable)

În continuare, se adaugă valorile posibile pe care Static List le poate


avea. În caseta de editate a formei lungi (Full Text), se introduce
supraunitara, după care aceasta se copiază şi în calitate de formă scurtă
(Short Text) în caseta de deasupra.
Pentru introducerea celei de-a doua variabile, se face click pe butonul
>. Se introduce subunitara, apoi se apasă butonul Copy pentru a copia
aceeaşi formă în caseta de editare a formei scurte (Short Text). După
acţionarea etichetei de opţiuni (Options), se selectează numărul maxim de
valori care poate fi atribuit variabilei, o singură valoare (SINGLE value),
pentru a preveni selectarea valorilor multiple. Cu ajutorul celor două
variabile, se poate construi partea de IF a regulilor.
Pentru a satisface partea de THEN a regulilor, sunt necesare două
variabile de tipul factor de certitudine (Confidence). Numele acestora sunt

163

Universitatea SPIRU HARET


banca analizează ceilalţi indicatori de performanţă şi client respins la
creditare. Pentru aceste variabile, se selectează, în fereastra New Variable
(fig.5.3) Type, ◘ Confidence – Value will be a confidence factor, cu setările
standard (The default settings).
Blocurile logice (Logic Blocks) sunt modulele unde se definesc
regulile specifice sistemului expert. Prin intermediul blocurilor logice se
obţine scopul (goal) specific sistemului expert. Un bloc logic poate avea unul
sau mai mulţi arbori şi reguli individuale. În compunerea unui sistem expert
pot face parte mai multe blocuri logice (notate 1,2, … sau denumite
personalizat). Adăugarea unui bloc logic se face cu click pe Logic Blocks din
fereastra principală a generatorului Exsys CORVID. Mai întâi, se adaugă
nodurile IF. Se foloseşte reprezentarea cu ajutorul arborilor (trees) pentru a
descrie logica sistemului expert. Se execută click pe butonul IF/AND/Add şi
se afişează fereastra pentru adăugarea elementelor blocurilor logice (fig.5.4).

Fig.5.4. Fereastra pentru adăugarea elementelor blocurilor logice (Add To Block)

164

Universitatea SPIRU HARET


Se selectează variabila solvabilitate. Cu All Each Individually, se
selectează valoarea supraunitara, apoi subunitara. În acelaşi timp, la o
regulă pot fi adăugate mai multe noduri. Aspectul blocului logic este
prezentat în fig.5.5. Cele două noduri sunt conectate cu o acoladă roşie care
arată faptul că ambele noduri au fost adăugate în acelaşi timp şi sunt legate
prin aceeaşi variabilă (în cazul nostru, solvabilitate). Acoladele sunt
formale şi nu afectează logica finală a sistemului expert. În această fază,
culoarea roşie a acoladei indică faptul că nodurile IF nu au asociate încă
noduri THEN. Când se va realiza acest lucru, acoladele vor fi de culoare
verde.
Se selectează butonul THEN/Variable şi se introduc nodurile THEN
banca analizează ceilalţi indicatori de performanţă şi client respins la
creditare. Acestor noduri li se asociază valori numerice, se exemplu 5.

Fig.5.5. Blocul logic


165

Universitatea SPIRU HARET


Nodul banca analizează ceilalţi indicatori de performanţă se
reprezintă astfel în Add list (s-a executat click pe butonul Done). Culoarea
galbenă a săgeţii arată că banca analizează ceilalţi indicatori de
performanţă este o variabilă factor de certitudine (Confidence), fig.5.6.

Fig.5.6. Forma finală a blocului logic din exemplu

Vizualizarea unei reguli se face, după selecţia acesteia, în fereastra


Rule View.
Blocul de comenzi (Command Block) serveşte pentru crearea
comenzilor adică a acelei succesiunei de instrucţiuni care arată sistemului
expert ce decide, în timp ce blocurile logice arată sistemului expert cum ia
deciziile. Blocul de comenzi este obligatoriu pentru sistemul expert.
Adăugarea unui bloc de comenzi se face cu click pe opţiunea
Command Block din fereastra principală. Cele mai multe sisteme expert
necesită un singur bloc de comenzi. Adăugarea unei comenzi se efectuează
prin clock pe butonul Command/Add, după care se afişează fereastra
constructorului de comenzi (Command Builder).
După selecţia etichetei Variabile (Variables), se marchează secţiunea
◘ Derive a value from TO BE and Logic Block, apoi ◘ All Confidence
Variables, OK. Astfel, a fost construită comanda de rulare a sistemului
expert – DERIVE CONF. La fiecare comandă poate fi adăugat un
comentariu prin folosirea „//” (aşa cum se poate vedea în fig.5.7.).

166

Universitatea SPIRU HARET


Fig.5.7. Blocul de comenzi

Comanda DERIVE CONF va determina blocul logic să fie utilizat


pentru realizarea inferenţierii/derivării în cazul fiecărei variabile factor de
certitudine (Confidence).
Se adaugă o comandă RESULTS pentru a afişa rezultatele (selecţie
comandă, urmată de Command/Add Below, fig.5.7.). În fereastra Command
Builder se selectează eticheta Results, apoi ◘ Display Defaults Results
Screen. Cu aceasta, s-a încheiat construirea sistemului expert.
Rularea sistemului expert se efectuează cu click pe butonul Run de pe
bara cu instrumente din fereastra principală. Generatorul Exsys CORVID
generează automat un fişier. CVR care este utilizat pentru a rula sistemul
expert într-un applet Java. Aspectul ecranului de lucru cu afişarea
rezultatelor este prezentat în fig.5.8.
Când se formulează întrebarea Solvabilitate supraunitară?, răspunsul
sistemuşlui expert va fi Banca analizează ceilalţi indicatori de
performanţă, iar când se formulează întrebarea Solvabilitate supraunitară?,
răspunsul sistemului expert va fi Client respins la creditare.
167

Universitatea SPIRU HARET


Generatorul Exsys CORVID prezintă modalităţi de îmbunătăţire a
interfeţei utilizatorului şi a logicii sistemului expert, precum şi de lucru cu
tehnici avansate.
Fereastra pentru adăugare noduri (Add Nodes) serveşte pentru
adăugarea de noduri la un bloc logic deja realizat. Această fereastră se
foloseşte atât pentru nodurile IF, cât şi pentru nodurile THEN. Opţiunile
disponibile sunt funcţie de tipul nodului. Variabilele care pot fi folosite
pentru construirea nodurilor sunt marcate pe lista Include din partea stânga
jos a ferestrei. Aceste variabile pot fi sortate alphabetic (Alphabetically) sau
în ordinea în care variabilele au fost adăugate la sistem (Order Entered).

Fig.5.8. Rularea sistemului expert realizat cu generatorul Exsys CORVID

Când se selectează o anumită variabilă, în mod automat în partea


dreaptă a ferestrei se setează tipul de variabilă corespunzător (Static List,
Expression, Collection).
Fereastra de căutare înapoi (Backward Chaining), pentru scopuri
(goals) prestabilite, permite divizarea problemelor complexe în
componente mai mici pentru care se definesc secţiuni ce sunt folosite în
mod automat, atunci când sunt necesare, de către sistemul expert.
168

Universitatea SPIRU HARET


Întrebări de control
1. Care sunt părţile ciclului de viaţă al sistemelor expert?
2. Care sunt etapele ciclului de viaţă al sistemelor expert?
3. Daţi exemple de modele ale ciclului de viaţă al sistemelor expert.
4. Prezentaţi problematica analizei preliminare.
5. Ce este lista lui Puppe?
6. Care sunt obiectivele modelării conceptuale?
7. Prezentaţi două modele folosite în modelarea conceptuală?
8. Ce este schema de interpretare-intenţie?
9. Care sunt activităţile de bază ale menţinerii în funcţiune a
sistemului expert?
10. Descrieţi pe scurt principalele metode de modelare a sistemelor
expert.
11. Care este destinaţia ferestrelor de lucru ale generatorului de
sisteme expert Exsys CORVID?
12. Prezentaţi cele şapte tipuri de variabile folosite de generatorul
Exsys CORVID.
13. Descrieţi etapele principale de realizare a unui system expert cu
generatorul Exsys CORVID.
14. Daţi exemple de medii şi instrumente de dezvoltare a sistemelor
expert.

169

Universitatea SPIRU HARET


170

Universitatea SPIRU HARET


BIBLIOGRAFIE

Andone, I., Sisteme inteligente hibride. Teorie. Studii de caz pentru aplicaţii
economice. Ghidul dezvoltatorului, Editura Economică, 2002.
Andone, I.; Ţugui, Al., Sisteme inteligente în management, contabilitate, finanţe,
bănci şi marketing, Editura Economică, Bucureşti, 1999.
Awad, E.M. - Building Expert Systems. West Publishing Co., 1996.
Baker-Ward, L., Cognitive Science: An Introduction, Cambridge, MA: MIT Press,
1987.
Băjenescu, T., Performanţele inteligenţei artificiale, de la teorie la aplicaţii, Editura
Albastră, Cluj-Napoca, 2002.
Benchimol, G.; Levine, P., Pomerol, J.Ch., Sisteme expert în întreprindere, Editura
Tehnică, Bucureşti, 1993.
Bocu, D., Iniţiere în ingineria sistemelor soft, Editura Albastră, Cluj-Napoca, 2001.
Bodea, C. .N.; Creţu, A.A.; Scurtu, I., Sisteme cu bază de cunoştinţe pentru asistarea
deciziilor economice. Proiectare şi implementare în GoldWorks, Editura ASE,
Bucureşti, 2002.
Bodea, C., Inteligenţă artificială şi sisteme expert, Editura INFOREC, Bucureşti,
1998.
Botezatu, P., Introducere în logică, Editura Graphix, Iaşi, 1994.
Bratko, I., Prolog Programming for Artificial Intelligence, Second Edition, Addison-
Wesley, 1990.
Brna, P., Prolog Programming, A First Course, 2001.
Brule, F.B.; Blount, A., Knowledge Acquisition, McGraw Hill Book Company, New
York, 1999.
Burnham, W. D., Hall, A.R., Prolog Programming and Applications, Macmillan,
1987.
Cârstoiu, D.I., Sisteme expert, Editura All, Bucureşti, 1994.
Choffray, J.M., Sisteme inteligente de management, Diagnostic, analiză şi asistenţă a
deciziei, Editura Ştiinţă şi Tehnică, Bucureşti, 1997.
Collin, S.M.H., Dictionary of Computing, Peter Collin Publishing, London, 1998.
Cooper, A. , Proiectarea interfeţelor utilizator, Editura Tehnică, Bucureşti, 1997.
Davidescu, D.N., Utilizarea sistemelor expert în domeniul financiar-contabil, Editura
Didactică şi Pedagogică, Bucureşti, 1997.
171

Universitatea SPIRU HARET


Dumitraş, A., Proiectarea reţelelor neuronale artificiale, Casa Editorială ODEON,
Bucureşti, 1997.
Enescu, Gh., Tratat de logică, Editura Lider, Bucureşti, 1997.
Filip, Fl.Gh., Decizie asistată de calculator. Decizii, decidenţi. Metode şi instrumente
de bază, Editura Tehnică şi Editura Expert, Bucureşti, 2002.
Fusaru, Doina, Arhitectura bazelor de date. Mediul SQL, Editura Fundaţiei România
de Mâine, Bucureşti, 2003.
Georgescu, V., Proiectarea sistemelor expert în logică fuzzy şi teoria posibilităţilor,
Editura INTARF, Craiova, 1995.
Gherasim, Z., Programare şi baze de date, Editura Fundaţiei România de Mâine,
Bucureşti, 2005.
Gherasim, Z., Andronie, Maria, Popescu-Bodorin, N., Informatică managerială,
Editura Fundaţiei România de Mâine, Bucureşti, 2004.
Knuth, D., The Art of Computer Programming, Vol.1-4, Addison-Wesley, 1981.
Krishnamoorthy, C.S., Rajeev, S., Artificial Intelligence and Expert Systems for
Engineers, CRC Press, CRC Press LLC, 1996.
Laudon, K., Laudon, J., Essentials of Management Information Systems.
Organization and Technology in the Networked Enterprise, Fourth Editions,
JWS, New York, 2001.
Liebowitz, J., The Handbook of APPLIED EXPERT SYSTEMS , CRC Press, 1996.
Liou, Y. I., Collaborative knowledge acquisition, Expert Systems with Applications:
An International Journal, 5:1-13, 1992.
Liou, Y.I., Weber, E.S., Nunamaker, J.F., A methodology for knowledge acquisition
in a group decision support system environment, „Knowledge Acquisition”, (2),
129-144, 1990.
Lucas, P.; Van Der Gaag, L., Principles of Expert Systems, Addison Wesley
Publishing Company, Wokingham, England, 1991.
Marcus, S., Controverse în ştiinţă şi inginerie, Editura Tehnică, Bucureşti, 1990.
Meszaros, J., Turbo Prolog 2.0, Ghid de utilizare, Editura Albastră, Cluj-Napoca, 1996.
Metakides, G.; Nerode, A., Principii de logică şi programare logică, Editura Tehnică,
Bucureşti, 1998.
Moise, M.; Naianu, B.P., Tehnologii de realizare a sistemelor expert, Editura
AISTEDA, Bucureşti, 2002.
Morvan, P.; Detollenaere, N; Lucas, M; Meinadier, J.P., Dictionnaire de
l’informatique, Larousse, Paris, 1999.
O’Keefe, R.A., The Craft of Prolog, MIT Press, 1990.
Osyk, B. A., Vijayaraman, B. S., Integrating expert systems and neural nets:
Exploring the boundaries of AI, „Information Systems Management”, (12:2),
Spring, 47-54, 1995.
Pomerol, J.C., Les systems experts dans l’entreprise, Editions Hermes, Paris, 1990.
Pop, H.; Şerban, G., Programare în inteligenţă artificială. LISP şi PROLOG, Editura
Albastră, Cluj-Napoca, 2003.
172

Universitatea SPIRU HARET


Popovici, D.M., Popovici, I.M., Rican, J.G., Proiectare şi implementare software,
Editura Teora, Bucureşti, 1998.
Prerau, D.S., Developing and Managing Expert Systems, Addison-Wesley, Reading,
MA, 1990.
Puppe, F., Sistematic Introduction to Expert Systems. Knowledge Representation and
Problem-Solving, Springer-Verlag, Berlin, 1993.
Roşca, I.Gh., Ghilic-Micu, B., Apostol, Ctin, Roşca, V., Cocianu, Cătălina-Lucia,
Programarea calculatoarelor. Tehnica programării în limbajul Pascal,
Ed. ASE, 2002.
Rowe, N.C., Artificial Intelligence through Prolog, Prentice-Hall, 1988.
Sâmbotin, C., Sisteme expert cu Prolog, Editura Tehnică, Bucureşti, 1997.
Stefik, M., Introduction to Knowledge Systems. Morgan Kaufmann., 1995.
Tacu, P.Al.; Vancea, R.,; Holban, Şt.; Burciu, A., Inteligenţa artificială. Teorie şi
aplicaţii în economie, Editura Economică, Bucureşti, 1998.
Tătar, D., Inteligenţă artificială. Demonstrarea automată a teoremelor. Prelucrarea
limbajului natural, Editura Albastră, Cluj-Napoca, 2001.
Thoraton, C., Du Boulay, B., Artificial Intelligence. Strategies, Applications, and
Models Through Search, Second Edition, AMACOM, 1998 Intellect.
Toderean, G., Coştelu, M., Giurgiu, M., Reţele neuronale, Editura Microinformatica,
Cluj-Napoca, 1994.
Ţăndăreanu, N., Introducere în programarea logică. Limbajul Prolog, Editura
INTARF, Craiova, 1994.
Walley, P, Measures of uncertainty in expert systems. „Artificial Intelligence”, 83:
1-58, 1996.
Wolstenholme, E. F., Corben, D. A., A hypermedia-based Delphi tool for knowledge
acquisition in model building, „Journal of the Operational Research Society”,
(45:6), June, 659-672, 1994.
Zaharie, D.; Năstase, P.; Albescu, Felicia; Bojan, Irina; Mihai, F.; Anica-Popa, Liana,
Sisteme expert, Teorie şi aplicaţii, Editura DUAL TECH, Bucureşti, 2002.
Zaharie, D., Roşca, I., Proiectarea obiectuală a sistemelor informatice, Editura
DUAL TECH, Bucureşti, 2002.
Zaharie, D., Albescu, F., Bojan, I., Ivancenco, V., Vasilescu, C., Sisteme informatice
pentru asistarea deciziei, Editura DUAL TECH, Bucureşti, 2001.
Zaharia, M.; Cârstea, Claudia; Sălăgean, Liana, Inteligenţa artificială şi sistemele
expert în asistarea deciziilor economice, Editura Economică, 2003.
*** Grupul BDASEIG, Baze de date. Fundamente teoretice şi practice, Editura
InfoMega, Bucureşti, 2002.
*** Microsoft Dicţionar de calculatoare, Ediţia a-II-a, Editura Teora, Bucureşti,
2002.
*** Academia Română, Institutul de lingvistică „Iorgu Iordan”, DEX, Dicţionarul
explicativ al limbii române, Ediţia a –II-a, Univers Enciclopedic, Bucureşti, 1996.

173

Universitatea SPIRU HARET


Anexă

ABREVIERI ŞI NOŢIUNI UTILIZATE ÎN LUCRARE

abordarea cognitivă a inteligenţei artificiale, 1.1.1.


abordarea pragmatică a inteligenţei artificiale, 1.1.1.
abordarea conexionistă a inteligenţei artificiale, 1.1.1.
agenţi inteligenţi, 1.3.4.
AI, Artificial Intelligence, inteligenţă artificială, 1.1.1.
algebra propoziţională, 2.3.2.
algoritm evolutiv, 1.3.3.
analiza preliminară, 5.1.1.
analiza protocolului, 2.2.
ANN, Artificial Neural Network, reţele neuronale artificiale, 1.3.2.
arbore binar, 4.6.2.
arbore de analiză, 2.3.1.
arbori de sortare, 4.6.2.
argumentare logică, 2.3.1.
arhitectura unui sistem expert, 1.2.1.
aserţiune, 2.1.

backtracking, 4.2.
bază de date a sistemului expert, 1.2.1.
baze de date deductive, 2.6.
baze de date indexate, 4.7.2.
baze de date inteligente, 2.6.
baze de date interne, 4.7.1.
baze de date externe,4.7.2.
baza Herbrand, 2.6.

B2B, Business-to-Business, afacere către afacere, 1.3.4.


B2C, Business-to-Customer, afacere către client, 1.3.4.
baza de cunoştinţe, 1.2.1., 1.2.2., 3.4.
baza de fapte, 1.2.1., 1.2.3.
baze de date inteligente, 1.3.5.
174

Universitatea SPIRU HARET


brainstorming, 2.2.

C2C, Customer-to-Customer, client către client, 1.3.4.


cadre (frames), 2.1.
calculul predicatelor, 2.1.
calculul predicatelor de ordinul întâi, 2.4.
calculul predicaţional, 2.4.
calificatori ai setului fuzzy, 1.3.1.
CBR, Case-Based Reasoning, raţionament bazat pe cazuri, 1.3.6.
ciclu de viaţă al unui sistem expert,5.1.
cognitician, 1.2.2.
colectarea cunoaşterii (elicitation of knowledge), 3.3., 5.1.3.
concluzie, 1.1.3., 2.3.1.
conectori logici, 2.1., 2.3.
conjuncţie, 2.1.
consistenţă a argumentelor logice, 2.4.1.
consistenţa bazei de cunoştinţe, 1.2.6.
contingente, 2.3.2.
contradicţie, 2.3.2.
cuantificator existenţial, 2.4.
cuantificator universal, 2.4.
cunoaştere, 1.1.3.
cunoaştere explicită, 1.2.5.
cunoaştere implicită, 1.2.5.
cunoaştere temporară, 1.2.3.
cunoştinţe, 1.1.3., 1.2.1.

deducţia, 1.1.3.
DF, Depth First Search, metoda de căutare în adâncime, 4.2.
demonstraţii formale (derivări), 2.3.3.
disjuncţie, 2.1.
domeniul cunoaşterii, 2.1.
DSS, Decision Support Systems, sisteme informatice pentru asistarea
deciziei, 1.1.4.

e-commerce, comerţ electronic


ECA, eveniment – condiţie – acţiune
echivalenţă, 2.1.
EG, Existential Generalization, regula de inferenţă generalizare existenţială, 2.4.2.
EI, Existential Instance, regula de instanţiere existenţială, 2.4.2.
175

Universitatea SPIRU HARET


ES, Expert System, sistem expert, 1.1.2.
expert uman, 1.1.2.
expresii complet parantezate, 2.3.1.
expresie logică, 2.3.1.

factor de certitudine (Confidence), 5.3.2.


faptă, 1.3.1., 2.1.
filtare (pattern matching), 3.1.
formă normală conjunctivă, 2.3.2.
formă normală disjunctivă, 2.3.2.
forme normale ale expresiilor logice, 2.3.2.
formula atomică, 2.4.
formularea interpretativă, 5.1.4.
formularea de intenţie, 5.1.4.

GA, Genetic Alghorithm, algoritm genetic, 1.3.3.


gândire fuzzy, 1.3.1.
generaţie, 1.3.3.
generator de sisteme expert, 5.3.2.
genom, 1.3.3.
graf de inferenţiere deductivă, 3.2.1.
GSS, Group Support System, sistem de asistare a colaborării în grupurile de
lucru, 2.2.
GUI, Graphical User Interface, interfaţa grafică a utilizatorului, 3.4.

implicaţie, 2.1.
implicaţie logică, 2.3.3.
indexare, 4.7.2.
inducţia, 1.1.3.
inferenţă, 1.2.1.
informatica inteligentă, 1.1.1.
inginer de cunoştinţe, 1.2.2.
instrumentelor inteligente de achiziţie a cunoaşterii, 3.3.
interfaţă cu utilizatorul, 1.2.1., 1.2.7., 3.4.
interogare Prolog, 4.2.
interpretare a afirmaţiilor logice, 2.4.1.
interviul, 2.2.

KA, Knowledge Acquisition, achiziţionarea cunoaşterii sau cunoştinţelor, 2.2.


KB, Knowledge Base, bază de cunoştinţe, 2.5.1.
176

Universitatea SPIRU HARET


KADS, Knowledge Acquisition and Design System, sistem de proiectare şi
achiziţie a cunoaşterii, 5.2.
KBS, Knowledge-Based System, sistem bazat pe cunoştinţe, 1.1.3.
KOD, Knowledge-Oriented Design, proiectare orientată pe cunoştinţe, 5.2.

legile absorbţiei, 2.3.2.


legea acumulării, 2.3.3.
legea cazurilor, 2.3.3.
legea combinării, 2.3.3.
legile comutativităţii, 2.3.2.
legea contradicţiei, 2.3.2.
legile de Morgan, 2.3.2.
legile distribuţiei ∨ (∧ ) faţă de ∧ ( ∨ ), 2.3.2.
legile dominaţiei, 2.3.2.
legea dublei negaţii, 2.3.2.
legile idempotenţei, 2.3.2.
legea inconsistenţei, 2.3.3.
legea terţului exclus, 2.3.2.
legile identităţii, 2.3.2.
legea simplificării, 2.3.3.
limbajul Datalog, 2.6.
limbaj de reprezentare a cunoaşterii, 2.1.
listă, 4.6.
literali complementari, 2.3.1.
logica fuzzy, 1.3.1.
logica predicatelor, 2.1.
logica predicatelor de ordinul întâi, 2.4.
logica, 2.1

mecanisme (strategii) de inferenţiere (raţionament), 2.1.


metareguli, 2.5.1.
metode declarative, 2.1.
metoda de control circumstanţial, 3.2.4.
metoda deductivă (strategia de control înainte, forward chaining), 3.2.1.
metoda inductivă (strategia de control înapoi, backward chaining), 3.2.2.
metoda COGNITECH, 5.2.
metode de reprezentare a cunoştinţelor, 2.1.
metode procedurale, 2.1.
model, 1.3.7.
modelare conceptuală, 5.1.2.
177

Universitatea SPIRU HARET


modelare neuronală, 1.3.2.
model cauzal, 5.1.2.
model entitate-asociere, 5.1.2.
model funcţional, 5.1.2.
model incremental, 5.1.
model în cascadă (waterfall model), 5.1.
model în spirală, 5.1.
model liniar, 5.1.
model structural, 5.1.2.
model raţional, 5.1.2.
modul de achiziţie a cunoştinţelor, 1.2.1., 1.2.5.
modul explicativ, 1.2.1., 1.2.6.
modus ponens, 2.3.1., 2.3.3.
modus tollens, 2.3.3.
motor de inferenţe, 1.2.1., 1.2.4.

negaţie, 2.1.
neuron artificial, 1.3.2.
nivel conceptual al bazei de cunoştinţe, 1.2.2.
nivel faptual specific bazei de fapte, 1.2.3.

obiecte, 2.1.
observarea, 2.2.

perceptron, 1.3.2.
piese ale cunoaşterii, 1.2.3.
predicat, 2.1.
predicate de sistem, 4.7.2.
premisă, 1.1.3.
premisele argumentării, 2.3.1.
programare logică, 4.1.
propoziţie, 2.1., 2.3.
propoziţie atom, 2.3.
propoziţie compusă, 2.1., 2.3.1.
prototip, 5.2.

raţionament, 1.1.3.
raţionamentul artificial, 1.1.1.
raţionament bazat pe modele, 1.3.7.
raţionament fuzzy, 1.3.1.
178

Universitatea SPIRU HARET


regula fuzzy, 1.3.1.
regulă, 1.2.4., 2.1.
regulă declanşabilă, 3.2.1.
reguli de inferenţă, 2.3.3.
reguli de producţie, 2.1., 2.5.
reprezentarea cunoştinţelor, 1.2.5., 5.1.4.
reprezentarea cunoaşterii (knowledge reprezentation), 2.1.
reprezentarea cunoştinţelor prin cadre (frames), 2.1.
reprezentarea cunoştinţelor prin reţele semantice, 2.1.
reţele neuronale multistrat, 1.3.2.
reţele semantice, 2.1.
reţele succesorale (cu moştenire), 2.1.
rezolvarea conflictelor, 3.1.
RGA, Repertory Grid Analysis, analiza grilei catalog
RSD, rădăcină – subarbore stâng – subarbore drept, 4.6.2.

scheme, 2.3.1.
schema de interpretare-intenţie, 5.1.4.
SDR, subarbore stâng – subarbore drept – rădăcină, 4.6.2.
selecţie (restricţie), 3.1.
set fuzzy, 1.3.1.
SGBDR, sistem de gestiune a bazelor de date relaţionale
SIAD, sistem informatic pentru asistarea deciziei, 1.1.4.
silogism disjunctiv, 2.3.1., 2.3.3.
silogism ipotetic, 2.3.1., 2.3.3.
simbol, 1.1.3.
sistem automat inteligent autoinstruibil (machine learning), 1.3.2.
sistem conexionist, 1.3.2.
sistem cu calcul evolutiv, 1.3.3.
sisteme de derivări, 2.3.3.
sistem expert neural,1.3.2.
sistem expert neuro-fuzzy, 1.3.2.
sistem holonic, 1.1.4.
sistem expert asistat de un sistem multimedia, 1.3.5.
sistem expert cu reguli de producţie, 3.1.
sisteme expert de control şi monitorizare, 1.1.4.
sisteme expert de diagnosticare, 1.1.4.
sisteme expert destinate previziunii şi planificării, 1.1.4.
sistem fuzzy, 1.3.
sistem hipermedia, 1.3.5.
179

Universitatea SPIRU HARET


sistem inteligent hibrid, 1.3.
sistem intelimedia, 1.3.5.
sistem multiagent, 1.3.4.
sistem multimedia, 1.3.5.
sistem multimedia asistat de un sistem expert, 1.3.5.
sistem realizat prin integrarea complementară a sistemului expert cu
sistemul multimedia, 1.3.5.
SRD, subarbore stâng – rădăcină – subarbore drept, 4.6.2.
strategie de control înainte, 3.2.
strategie de control înapoi, 3.2.
strategiile (mecanismele) de inferenţiere (raţionament), 2.1.
structuri de cunoştinţe, 2.1.
subsistem cognitiv, 1.2.1., 1.2.4.
subsistem rezolutiv, 1.2.1., 1.2.4.

tabel de adevăr, 2.3.


tautologie, 2.3.2.
transpoziţia, 1.1.3.
tehnica Delphi, 2.2.
tehnici de achiziţie a cunoştinţelor în colaborare, 2.2.
teorema deducţiei, 2.3.3., 2.4.2.

UG, Universal Generalization, regula de inferenţă generalizare universală, 2.4.2.


UI, Universal Instance, regula de inferenţă instanţiere universală, 2.4.2.
universul Herbrand, 2.6.
unificare, 2.4.2.
universul discursului pentru o variabilă lingvistică, 1.3.1.

validarea sistemului, 5.1.5.


variabile autentice, 2.4.2.
VIM, Visual Interactive Modeling, modelare interactivă vizuală, 3.4.

XML, Extensible Markup Language, limbaj de marcare extensibil, 1.3.4.

180

Universitatea SPIRU HARET

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