# 13 inteligenta artificiala sisteme expert

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

Upload: cosmin-burcea-blendea

Post on 03-Jan-2016

93 views

Category:

## Documents

5 download

Tags:

• #### 3 scurt istoric

Embed Size (px)

DESCRIPTION

.

TRANSCRIPT

Mircea NEAGOE

INTELIGENŢĂ ARTIFICIALĂ

ŞI SISTEME EXPERT

2008

REPROGRAFIA UNIVERSITĂŢII “TRANSILVANIA” DIN BRAŞOV

user
Rectangle
user
Rectangle

i

Inteligenţa Artificială Cuprins

CUPRINS

1. Inteligenţa artificială ................................ ................................ ................................ ................. 1

1.1 Introducere ................................ ................................ ................................ .................... 1

1.2 Definiţii ale inteligenţei artificiale (IA) ................................ ................................ .........3

1.3 Scurt istoric al IA ................................ ................................ ................................ ........... 3

Rezumat ................................ ................................ ................................ ............................... 4

2. Limbajul LPA–Prolog ................................ ................................ ................................ ............... 5

2.1. Alfabetul şi elemente de sintaxa limbajului Prolog ................................ ...................... 5

2.2. Vocabularul şi termenii limbajului Prolog ................................ ................................ ...6

2.3. Structura unui program PROLOG ................................ ................................ .............. 10

2.4. Aspectul declarativ şi procedural al programelor Prolog ................................ ........... 11

2.5. Liste. Prelucrarea listelor ................................ ................................ ............................ 14

2.6. Operatori ................................ ................................ ................................ ..................... 15

2.7. Controlul backtraking-ului în limbajul Prolog ................................ ........................... 16

Rezumat ................................ ................................ ................................ ............................. 18

Probleme propuse ................................ ................................ ................................ ............. 18

Test de autoevaluare ................................ ................................ ................................ .......... 21

3. Limbaje de ordinul I................................ ................................ ................................ ................ 23

3.1. Limbajul de calcul propoziţional ................................ ................................ ................ 23

3.1. Sintaxa şi semantica calculului propoziţional................................ ................. 23

3.1.2. Principiul deducţiei ................................ ................................ ...................... 25

3.1.3. Echivalenţă logică ................................ ................................ ........................ 25

3.2. Metode de demonstrare a teoremelor în limbajul de calcul

propoziţional ................................ ................................ ................................ .......... 26

3.2.1. Metode semantice ................................ ................................ ........................ 26

3.2.2. Metode sintactice ................................ ................................ ......................... 27

3.2.3. Demonstrarea teoremelor utilizând metoda deducţiei

formale ................................ ................................ ................................ .......28

3.2.4. Principiul rezoluţiei ................................ ................................ ..................... 29

Rezumat ................................ ................................ ................................ ............................. 32

Exerciţii şi probleme propuse ................................ ................................ ........................... 32

Test de autoevaluare ................................ ................................ ................................ .......... 34

4. Structuri şi strategii de căutare în spaţiul de stări ................................ ............................... 35

4.1. Inteligenţa artificială ca reprezentare şi căutare ................................ ......................... 35

4.1.1. Reprezentarea cunoştinţelor................................ ................................ .........35

4.1.2 Căutarea ................................ ................................ ................................ ........35

4.2. Strategii de căutare ................................ ................................ ................................ .....38

4.2.1. Algoritmi de căutare exhaustivă ................................ ................................ ..38

4.2.2. Algoritmi de căutare euristică ................................ ................................ ......41

Rezumat ................................ ................................ ................................ ............................. 45

Probleme propuse ................................ ................................ ................................ ............. 45

Test de autoevaluare ................................ ................................ ................................ .......... 46

ii

5. Sisteme de Producţie................................ ................................ ................................ ................ 47

5.1. Definiţia sistemelor de producţii ................................ ................................ ................ 47

5.2. Controlul căutării în sistemele de producţie ................................ ............................... 51

5.2.1. Selecţia modului de căutare: data-driven sau goal-driven ........................... 51

5.2.2.Controlul căutării prin intermediul strategiei de rezolvare a

conflictului ................................ ................................ ................................ .53

Rezumat ................................ ................................ ................................ ............................. 54

Probleme propuse ................................ ................................ ................................ .............. 54

Test de autoevaluare ................................ ................................ ................................ .......... 55

6. Planning ................................ ................................ ................................ ................................ ....57

6.1. Prima metodă de planning (John McCarthy) ................................ .............................. 58

6.2. Metoda STRIPS (STanford Research Institute Planning System) ............................... 61

Rezumat ................................ ................................ ................................ ............................. 64

Probleme propuse ................................ ................................ ................................ .............. 64

Test de autoevaluare ................................ ................................ ................................ ..........65

7. Sisteme Expert ................................ ................................ ................................ ......................... 67

7.1. Inteligenţa artificială şi sistemele expert ................................ ................................ ....67

7.1.1. Sisteme Expert. Definiţii ................................ ................................ ............. 67

7.1.2. Originea Sistemelor Expert. Experimentări şi realizări ............................... 69

7.2. Structura generală a unui sistem expert ................................ ................................ ......72

7.2.1 Componentele sistemelor expert................................ ................................ ...72

7.2.2. Categorii de aplicaţii ................................ ................................ .................... 76

7.2.3. Alternative în construcţia unui sistem expert ................................ .............. 78

7.2.4. Etape ale realizării unui sistem expert ................................ ......................... 79

7.3. De la sistemele de producţii la sistemele expert. Un mic exemplu ............................ 81

Rezumat ................................ ................................ ................................ ............................. 84

Test de autoevaluare ................................ ................................ ................................ .......... 85

Inteligenţă Artificială Cap.1. Introducere

1

Inteligenţa artificială

Obiectivele disciplinei

Însuşirea noţiunilor de bază şi crearea abilităţilor practice necesare în rezolvarea

problemelor complexe din inginerie şi economie prin metode specifice Inteligenţei Artificiale:

calcul propoziţional, algoritmi de căutare, sisteme de producţii, planning, sisteme expert, logică

fuzzy, reţele neuronale.

1.1. Introducere

Termenul de inteligenţă artificială a fost folosit pentru prima dată în 1956 de omul de

ştiinţă american John McCarthy. Până atunci, inteligenţa artificială îşi făcuse simţită prezenţa în

unele domenii de investigaţie, cum ar fi:

1. Raţionamentul automat: poate un calculator demonstra o teoremă dintr-un anumit

domeniu, cum ar fi Geometria?

2. Procesarea limbajelor naturale: poate un calculator să comunice cu utilizatorul

într-un limbaj de toate zilele, de exemplu, limba Engleză?

3. Sistemele expert: poate un calculator să întreprindă o expertiză într-un anumit

domeniu, să zicem, medicina? Dacă calculatorului i se dau simptomele pacientului,

poate acesta să stabilească diagnosticul şi să prescrie tratamentul medicamentos

adecvat?

4. Jocuri: un calculator poate juca competitiv un joc, cum ar fi şah-ul?

5. Vederea artificială: poate un calculator "privind" imaginea unei scene, de exemplu,

o bucătărie cu un robinet deschis, să interpreteze scena respectivă? Dacă da, un

robot dirijat de un astfel de controller este capabil să localizeze robinetul şi să

închidă apa?

6. Învăţare: Poate un calculator, care operează într-un domeniu de tipul celor de mai

sus, să-şi îmbunătăţească performanţele în timp? Învăţând din experienţă, poate

deveni, de exemplu, un mai bun jucător de şah?

Se ştie că un calculator face numai ceea ce un program îi spune să facă. Deci, studiul

inteligenţei artificiale presupune studierea unor tehnici specifice de programare a calculatoarelor,

astfel încât acestea să devină capabile să îndeplinească, într-un anumit domeniu, sarcini considerate

ca ţinând de domeniul inteligenţei.

Nu există o definiţie riguroasă a inteligenţei artificiale. Definiţiile existente în diverse

lucrări poartă amprenta domeniului particular în care aceasta este aplicată. O încercare de definiţie

ar putea fi următoarea:

Inteligenţa artificială (IA) poate fi definită ca acea ramură a "computer science" care se

ocupă cu automatizarea comportamentului inteligent.

Obiectivul major al IA este de a construi maşini inteligente (în IA termenii de maşină şi

Cap.1

Inteligenţă Artificială Cap.1. Introducere

2

calculator sunt sinonimi). Inteligenţa artificială trebuie privită ca o completare sau prelungire a

inteligenţei umane şi nu ca o înlocuire a acesteia, aşa cum invenţia automobilului nu a desfiinţat

mersul pe jos. Automobilul a fost conceput în ideea de a sluji omul. La fel şi IA.

Deoarece obiectivul inteligenţei artificiale este de a construi maşini care afişează inteligenţă,

ne punem întrebarea dacă putem defini precis această inteligenţă. Inteligenţa are multe aspecte:

abilitatea de a raţiona, de a învăţa din experienţă, de a se adapta la situaţii noi etc. Încercarea de a

da o definiţie riguroasă inteligenţei ne-ar introduce într-un domeniu de speculaţii psihologice şi

filozofice.

Unul dintre scopurile fundamentale ale cercetărilor în domeniul IA este reproducerea, de

către calculator, a raţionamentelor umane.

Pentru a stabili dacă o maşină dată este inteligentă, matematicianul britanic Alan Turing

(1912-1954) a propus un test, cunoscut azi sub numele de testul Turing. În esenţă testul Turing

poate fi descris astfel:

O persoană, denumită interogator, conversează prin intermediul unui terminal cu doi

interlocutori, invizibili din punctul lui de vedere. Unul dintre aceştia este o maşină, iar

celălalt este un interlocutor uman. Maşina încearcă să răspundă la întrebările

interogatorului ca şi cum ar fi un interlocutor uman. Persoana, desigur, răspunde normal ca

un interlocutor uman. Dacă, după conversaţia pentru o perioadă de timp cu cei doi

interlocutori, interogatorul nu este capabil să-i distingă pe cei doi interlocutori, atunci se

poate spune că maşina este inteligentă.

Testul Turing a fost deseori criticat în literatură, reproşându-i-se că decizia depinde de

modul în mare măsură de interogatorul respectiv. Acest reproş poate fi contracarat prin desfăşurarea

testului cu mai mulţi interogatori, fiecare dintre ei lucrând independent de ceilalţi. Rezultatul

testului va fi în acest caz decizia celor mai mulţi dintre interogatori.

Inteligenţa Artificială este o ramură a ştiinţei promovată recent în universităţi şi laboratoare

de cercetare. Astfel de tehnici au început să fie promovate cu succes şi în industrie. Se apreciază ca

în viitor tratarea problemelor inginereşti cu metode specifice inteligenţei artificiale va creşte

considerabil. În plus, tehnicile dezvoltate pe baza programării clasice dau rezultate corespunzătoare

când se utilizează în descrierea elementelor finite, la simularea circuitelor, prelucrarea problemelor

algoritmice, nefiind adecvate la o serie de probleme inginereşti. Metodele inginereşti pot fi

caracterizate prin utilizarea algoritmilor euristici în scopul determinării celei mai bune soluţii într-o

situaţie concret dată.

Inteligenţa artificială (IA) este arta de a programa calculatoarele, pentru a le determina să

realizeze "lucruri" care sunt considerate inteligente, atunci când sunt făcute de oameni. IA implică,

deci, capacitatea de abstracţie şi de raţiune, iar auxiliarul său indispensabil este memoria.

Inteligenţa artificială urmăreşte simularea pe calculator a mecanismelor intelectului uman.

În sens larg, IA include anumite aspecte de senzaţie şi percepţie artificială (vederea artificială,

înţelegerea limbajului vorbit etc.) şi presupune capacităţi de învăţare şi adaptare. În sens restrâns,

IA înseamnă arta de a crea medii artificiale care să simuleze procesele cognitive, adică

conceptualizarea şi raţionarea asupra conceptelor.

Antecedentele IA trebuiesc căutate la vechii greci (Gorder 1986), dar ideea formării unei

discipline de cercetare a inteligenţei umane şi a raţionării formale a condus diverse grupuri din

S.U.A. şi Europa după cel de-al doilea război mondial.

Inteligenţă Artificială Cap.1. Introducere

3

Evoluţia ştiinţei calculatoarelor şi comportarea umană au stimulat interesele raţionării pe

maşină.. Aceasta a determinat o nouă disciplină, cea a inteligenţei artificiale.

Prin cercetarea începută în 1956 şi cu evenimentul consolidării prin Summer Research

Project realizat la Darthmounth College, John McCarty a stabilit termenul de IA. Primele succese

sunt datorate programelor capabile să demonstreze teoreme ale logicii matematice (1963) ce au

determinat noua deschidere către programe ce folosesc tehnici de IA şi o revigorare a domeniului

IA, devenind astfel o disciplină, mai mult decât o căutare matematică pentru maşinile inteligente. În

timp, a apărut ideea benefică a înglobării filozofilor, lingviştilor şi neurologilor în aceste domenii.

Se dau mai jos câteva exemple de zone ştiinţifice asupra cărora se extinde IA:

vederea artificială – ce presupune recunoaşterea formelor, identic cu vederea umană;

robotica – focalizează producerea dispozitivelor mecanice capabile să reproducă mişcarea;

prelucrarea vocii – ce priveşte constituirea şi sinteza vocii umane;

prelucrarea în limbaj natural – înţelegerea şi vorbirea în limbaj natural;

demonstrarea (producerea) teoremelor – în matematică şi logică;

"General Problem Solving" – rezolvarea unei clase generale de probleme exprimate în

limbaje formale;

recunoaşterea formelor – recunoaşterea şi clasificarea diferitelor forme;

teoria jocurilor;

învăţarea automată – maşini ce acumulează cunoştinţe prin observarea exemplelor.

Analizând literatura de specialitate, se pot distinge două direcţii fundamentale în care se

desfăşoară cercetările în acest domeniu:

1. Reţele neuronale - maşina este modelată ca reţea neuronală, imitând modelul anatomic al

creierului uman;

2. Calculul simbolic - Newell şi Simon a demonstrat că activitatea inteligentă se desfăşoară

prin operaţii logico-matematice asupra unor simboluri (model fiziologic al creierului

uman).

1.2. Definiţii ale inteligenţei artificiale (IA)

IA este ştiinţa care permite realizarea de maşini care au competenţa de a fi inteligente (M. Minsky,

1975);

IA este disciplina care are ca obiect înţelegerea naturii şi construirea de programe pe calculator

imitând inteligenţa umană (A. Bonnet, 1984);

IA este studiul facultăţilor mentale în vederea utilizării lor ca modele pentru calculator, ca

depozite de inteligenţă pentru maşinile construite de om.

IA este încercarea de conversie a datelor analogice furnizate de simţurile umane în date logice

utile maşinilor construite de om.

1.3. Scurt istoric al IA

Preocupările privind inteligenţa artificială îşi au începutul în anii 50, odată cu apariţia unui

articol al lui Turin care afirma că maşinile pot deveni inteligente (Les machines savent-elles

penser?). Turin demonstrează că un automat poate face ceea ce face omul, cu condiţia de a avea un

program adecvat de comandă.

O altă serie de cercetători îşi puneau aceeaşi întrebare: se pot concepe programe de calculator

inteligente?

Inteligenţă Artificială Cap.1. Introducere

4

În 1956, disciplina numită Tratarea informaţiei complexe sau Programare euristică devine

Inteligenţă artificială. În conferinţa de la Darmouth College, un grup de cercetători de renume

(John Mc Carthy, Marvin Minsky, Herbert Simon, Allan Newell, Claude Shennon) au adoptat

termenul de IA. Anii care au urmat lui 1956 au făcut să apară primele programe de demonstrare a

teoremelor bazate pe logica propoziţiilor (General Problem Solver, autori Newell, Shaw şi Simon).

În istoria IA au existat două categorii de maşini: maşinile de calcul şi automatele.

Maşini de calcul

De la abac la calculator, s-au parcurs mai multe etape:

Pascal – 1641 (la 18 ani) inventează o maşină pentru calcule aritmetice;

Babbage – 1832 prezintă maşina diferenţială, numită de curioşi maşina de gândit;

În 1842 – apare maşina analitică;

Hollerich – 1890 construieşte o maşină clasificatoare;

Burroughs – 1892 construieşte o maşină cu adiţie;

Turing – 1936 construieşte o maşină universală;

Von Neumann – 1945 construieşte o maşină de calcul cu o structură apropiată de cea a

calculatoarelor actuale.

Automate şi roboţi

Automatele sunt maşini care imită mişcarea, funcţiile sau acţiunile efectuate de un corp în

mişcare;

Pe baza conceptelor dezvoltate de neurologul Gray Walter, în 1950 se construieşte o

broască mecanică, capabilă să se cupleze la priză atunci când bateriile de alimentare se

descărcau sub o anumită limită;

În anul 1953, inginerul francez Dicqricq a construit o serie de animale cibernetice,

capabile să înveţe;

În 1967, o echipă de la Stanford Research Institute au construit o serie de automate

cibernetice, cărora le-au dat numele de roboţi. Noţiunea de robot fusese introdusă în 1920

de Karel Capek;

Roboţii din a treia generaţie, consideraţi inteligenţi, incorporează tehnicile IA.

REZUMAT

1. Inteligenţa Artificială urmăreşte crearea instrumentelor logice capabile să genereze

artificial procese specifice inteligenţei naturale. Cu alte cuvinte, scopul este de a realiza o

imagine, evident prin aproximare, a inteligenţei umane (a proceselor specifice).

2. În prezent, inteligenţa artificială este în simbioză deplină cu informatica. De aceea,

specialiştii în domeniu reconsideră denumirea de „inteligenţă artificială” în raport cu o

nouă denumire, cea de „inteligenţă computaţională”.

3. Diferenţa majoră dintre un program de inteligenţă artificială şi unul clasic constă în

concepţia rezolvării problemei: clasic, rezolvarea este implementată în program explicit,

printr-o structură algoritmică; în inteligenţă artificială, rezolvarea se reduce la căutarea

soluţiei în spaţiul de stări asociat problemei, accentul fiind pus pe descrierea problemei şi

mai puţin pe rezolvarea ei.

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

5

Limbajul LPA–Prolog

Obiective 1. Însuşirea principiilor de bază privind structura, sintaxa şi mecanismele de inferenţă specifice

unui limbaj de Inteligenţă Artificială, în general, şi limbajului LPA Prolog, în special.

2. Însuşirea corectă a utilizării predicatelor (predefinite şi utilizator) în rezolvarea problemelor

de IA.

3. Dezvoltarea abilităţilor practice de programare a problemelor de IA în limbajul Prolog.

Durata: 3 ore

Istoria programării logice cuprinde câteva etape reprezentative:

1970 – Robert Kowalsky, Edinburgh University şi Alain Colmerauer, Université d’Aix

Marseille au pus bazele unei colaborări cu un obiectiv comun: utilizarea formalismului logicii

matematice la definirea unui limbaj de programare. Cercetările lui R. Kowalsky au constituit

cadrul teoretic necesar, iar A. Colmerauer şi P. Roussel au scris primul interpretor şi au definit

limbajul Prolog (PROgrammation LOGique). Primul compilator Prolog (Kowalsky) a fost

realizat la Warren Edinburgh University, Department of AI.

1980 – Borland a elaborat versiunea Turbo Prolog, implementabilă pe IBM PC, ceea ce a dus la

răspândirea şi cunoaşterea limbajului.

William Clocksin şi Christopher Mellish publică în 1981 cartea „Programming in Prolog”,

care defineşte standardul Edinburgh al limbajului Prolog. Standardul Borland este mai restrictiv

referitor la posibilităţile de calcul simbolic.

LPA (London Prolog Associates) elaborează LPA Prolog, care are la bază standardul

Edinburgh, dar aduce şi o serie de dezvoltări proprii (metapredicate).

Cele prezentate în cele ce urmează se referă la versiunea LPA Prolog, ce constituie totodată

şi suportul aplicaţiilor prezentate. Implementarea LPA derivă din mai bine cunoscuta versiune

Edinburgh Prolog, căreia firma londoneză producătoare (London Prolog Associates) i-a adus

îmbunătăţiri şi dezvoltări suplimentare (metapredicate, facilităţi grafice etc.). Versiunea de referinţă

Edinburgh Prolog a fost definită de W.F.Clocksin şi C.S.Mellish în cartea “Programming in

Prolog”, lucrare considerată la ora actuală un standard neoficial al limbajului Prolog.

Prolog este un limbaj declarativ, spre deosebire de alte limbaje (C, Pascal, Basic etc.) care

sunt procedurale (descriu modul de rezolvare a problemelor) .

2.1. Alfabetul şi elemente de sintaxa limbajului Prolog

Alfabetul limbajului. La scrierea programelor Prolog se poate utiliza întreaga tabelă de

caractere ASCII, atât caracterele uzuale cuprinse în prima jumătate a tabelei (având codurile ASCII

cuprinse între 0 şi 127, fapt pentru care sunt denumite impropriu caractere pe 7 biţi), precum şi

caracterele din cea de a doua jumătate a tabelei ASCII (având codurile între 128 şi 256). Setul de

caractere din partea superioară a tabelei ASCII depinde de pagina de cod sau fontul cu care se

lucrează. Acesta include de obicei literele greceşti, precum şi diverse caractere semigrafice.

Separatori şi terminatori. Principalul separator al termenilor limbajului este virgula (“,”).

Virgula poate să apară de asemenea ca separator între elementele unei liste (de fapt o listă este un

Cap.2

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

6

caz particular de termen compus). Spaţiul este utilizat ca separator între termeni şi operatori, de

fiecare dată când natura acestora impune introducerea unui spaţiu pentru delimitare (spaţiul nu este

necesar atunci când termenii şi operatorii sunt de natură diferită, adică unul este alfanumeric, iar

celălalt simbolic). De exemplu, dacă plus este un operator binar, iar ++ şi ** sunt doi termeni,

sintaxa termenului compus: ++plus** este corectă. Terminarea unui enunţ Prolog se realizează prin

caracterul punct (“.”) urmat în mod obligatoriu de spaţiu sau terminatorul de sfârşit de linie

(caracterele CR ,LF). Punctul poate să apară însă şi în componenţa unui termen simbolic cum ar fi

**.**, context în care acesta nu are rol de terminator.

Comentariile. Pentru documentare, într-un program Prolog se pot introduce oricând

comentarii. În funcţie de întinderea (amploarea) acestora, există două modalităţi de introducere a

comentariilor. Caracterul % defineşte drept comentariu conţinutul liniei, începând cu caracterul

însuşi şi până la sfârşitul acesteia. Inserarea unui comentariu pe mai multe rânduri se face încadrând

textul respectiv între delimitatorii /* şi */.

2.2. Vocabularul şi termenii limbajului Prolog

Termenii limbajului. În Prolog, termenii constituie tipurile fundamentale de date ale

limbajului şi pot fi utilizaţi atât pentru reprezentarea unor date elementare (scalare), cât şi pentru

reprezentarea unor structuri foarte complexe (de exemplu o bază de date relaţională). Termenii sunt

de fapt cărămizile din care se compun clauzele limbajului (clauza este cel mai mic element sintactic

având semnificaţie de sine stătătoare în Prolog sau, mai exact, este cel mai mic enunţ compilabil).

Termenii pot fi simpli sau compuşi.

Termenii simpli constituie practic vocabularul limbajului de programare, aceştia fiind cele

mai mici unităţi lexicale având o anumită semnificaţie în cadrul limbajului. Termenii simpli sau

atomici ai limbajului Prolog sunt numerele întregi sau reale, variabilele, atomii şi şirurile de

caractere. Un termen compus se formează prin combinarea unor termeni simpli şi/sau compuşi. Din

categoria termenilor compuşi fac parte listele şi listele de octeţi, termeni cu o aplicabilitate aparte în

cadrul limbajului. În tabelul 1 este prezentată o clasificare a termenilor limbajului Prolog şi sunt

descrise predicatele predefinite prin care programatorul poate testa dacă un termen aparţine unuia

din tipurile specificate mai sus. Totodată, predicatul type/2 permite determinarea tipului unui

anumit termen dat.

Termeni simpli

Variabilele. O variabilă este denumită în Prolog printr-un identificator care trebuie să

înceapă în mod obligatoriu cu o majusculă (o literă de la A la Z) sau cu caracterul “_”

(“underscore”). Secvenţa de caractere din denumirea variabilei poate să includă, de asemenea,

caracterul “_”, acesta fiind de fapt considerat literă. De exemplu, următorii identificatori sunt

denumiri corecte de variabile:

Anonim _variabila X Y Cristy

Numere întregi. Ca în oricare limbaj de programare, un număr întreg se reprezintă printr-o

succesiune de cifre, eventual precedată de semnul plus sau minus. Convenţia de reprezentare este

algebrică pe 4 octeţi, domeniul numerelor întregi reprezentabile fiind cuprins între -2147483648 şi

2147483647.

Numerele reale. Un număr real poate fi precedat de semn şi este format dintr-o secvenţă de

una sau mai multe cifre, punctul zecimal şi o secvenţă de una sau mai multe zecimale. Opţional

numărul poate fi urmat (fără a se lăsa spaţiu) de litera e (sau E) şi o secvenţă de cifre eventual

precedată de semn (în format exponenţial). După cum se poate constat, numerele reale au sintaxa

similară cu cea din Pascal (punctul zecimal trebuie cadrat în mod obligatoriu de cifre). Fiecare din

termenii de mai jos sunt corecţi şi reprezintă numere reale:

1.0 258.0752 -12.59432 2.0E7 +1.85e10 ,

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

7

în timp ce nici una din următoarele succesiuni de caractere

1. 12E3 12.3 E4

nu sunt corecte sintactic.

Numere întregi într-o bază oarecare. Un număr întreg într-o bază oarecare b se poate

reprezenta în Prolog scriind baza b urmată de un apostrof şi cifrele numărului în baza respectivă. De

exemplu, succesiunea de caractere

2’1100100

este corectă şi reprezintă reprezentarea în baza 2 a numărului 100. Acelaşi număr se poate

reprezenta în format hexazecimal (în baza 16) scriind 16’64. Pentru o mai bună edificare, la

prompterul ?- al fereastra de dialog se pot introduce pe rând comenzile:

X is 16’64. <Enter> respectiv X is 2’01100100. <Enter>

şi în ambele situaţii interpretorul Prolog va răspunde prin X=100.

Trebuie evidenţiat aici un caz similar şi anume atunci când în faţa apostrofului apare cifra 0

(care evident nu poate fi baza unui sistem de numeraţie), iar în locul cifrelor un caracter. În această

situaţie secvenţă 0’<caracter> desemnează codul ASCII al caracterului citat după apostrof. De

exemplu termenul 0’d desemnează numărul întreg 100, care este codul ASCII al caracterului “d”.

Atomii. Atomii sunt denumiri alfanumerice sau simbolice prin care programatorul poate

desemna obiecte, proprietăţi ale acestora, precum şi diverse relaţii stabilite între acestea. Lungimea

maximă a unui atom este de 255 de caractere. Există patru tipuri de atomi: alfanumerici, simbolici,

de tip şir de caractere şi atomi rezervaţi.

Atomi alfanumerici. Un atom alfanumeric este format dintr-o literă mică (a-z) urmată de o

secvenţă formată din zero sau mai multe litere (a-z, A-Z) sau cifre (0-9). Caracterele din jumătatea

superioară a tabelei ASCII sunt considerate litere mici. Utilizarea acestor caractere nu este însă

recomandă din motivele deja menţionate la descrierea alfabetului. Următorii termeni sunt corecţi şi

reprezintă atomi alfanumerici:

mar cristy michael bmw a123

Atomi simbolici. Un atom simbolic este format dintr-o secvenţă formată din unul sau mai

multe din caracterele speciale enumerate mai jos:

# \$ & = - ^ ~ \ @

‘ ; - / + * ? < >

sau din caractere din partea superioară a tabelei ASCII. Următorii termeni

& && + ++ << >> -> <- */* <\$>

constituie exemple corecte de atomi simbolici.

Atomi de tip şir. Un atom de tip şir sau “quoted” atom este o succesiune de caractere

cuprinsă între apostrofuri. Dacă se doreşte inserarea unui apostrof în cadrul şirului de caractere,

atunci apostroful se dublează.

Caracterul ~ (tilda) poate fi utilizat pentru definirea unor caractere speciale sau de control.

De exemplu termenul

‘~<Literă>’

semnifică caracterul <Ctrl> <Literă>, în timp ce termenul

‘~<Număr>’

reprezintă caracterul al cărui cod ASCII este <Număr>, Număr{0,1,…,255}.

Atomi rezervaţi. Atomii simbolici enumeraţi mai jos

! ; [] {} = :-

au o semnificaţie prestabilită în cadrul limbajului şi nu pot fi utilizaţi pentru denumirea unor entităţi

utilizator.

Şirurile de caractere. Un şir de caractere este o succesiune de caractere cuprinsă între

apostrofuri invers înclinate (caracterul `). Deşi şirurile de caractere sunt considerate termeni simpli,

deci de tip “atomic” (vezi tabelul 1), acestea nu sunt considerate atomi şi nu trebuie confundate cu

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

8

atomii “quoted”. Pentru a nu crea confuzii de acest tip, în cele ce urmează, pentru a desemna

termenii de acest tip se va utiliza termenul strig. Deosebirea dintre un termen de tip “string” şi un

“quoted” atom constă în primul rând în modul intern de reprezentare al acestora. În plus, termenii de

tip string pot fi supuşi unor operaţii proprii şirurilor de caractere. Există totuşi posibilitatea

(predicatul atom_string/2) de a se realiza conversia de la atom la tipul string şi reciproc.

Termenii compuşi.

Un termen compus are următoarea sintaxă:

functor(t1,t2,…, tn) ,

unde functor este un atom (de oricare din cele trei tipuri descrise mai sus), iar argumentele

t1,t2,,…,tn sunt termeni, care pot fi simpli sau structuraţi la rândul lor. Functorul defineşte practic

modul de structurare al termenului respectiv. Având în vedere faptul că numărul de argumente al

functorului este variabil, iar gradul de imbricare este teoretic nelimitat, un termen compus poate

reprezenta practic orice structură relaţională de date, indiferent de gradul de complexitate al

acesteia. În sintaxa imbricată a unui termen compus, functorul cel mai exterior este denumit functor

principal.

Un termen compus are următoarea sintaxă:

Următoarele construcţii sintactice reprezintă exemple corecte de termeni compuşi:

a(b,c(d,e(f,g))) alfa(X,Y) color(blue,yellow) +++(<<,>>,ok).

Functorul cel mai exterior se numeşte functor principal.

Fiecărui termen îi este asociată o aritate (numărul de argumente). Termenii simpli au

aritatea = 0, iar cei compuşi au aritatea 1.

Este a+b un termen Prolog? Da, +(a,b) este un termen Prolog de tip infix şi aritate 2.

Structura descrisă de un termen compus poate fi ilustrată grafic prin reprezentarea acesteia

sub forma unui arbore. Astfel, functorul principal va reprezenta şi eticheta rădăcina arborelui, care

va avea un număr de descendenţi egal cu aritatea (numărul de argumente) functorului respectiv,

fiecare dintre aceştia corespunzând unuia din argumentele sale. Dacă argumentul este un termen

simplu, nodul corespunzător va constitui o frunză a arborelui, iar în caz contrar functorul respectiv

va eticheta rădăcina unui subarbore construit în maniera recursivă astfel definită. De exemplu,

primul dintre termenii citaţi mai sus se poate reprezenta printr-un arbore a cărui mulţime de noduri

este {a,b,c,d,e,f,g} şi a cărui mulţime de muchii este {[a,b],[a,c],[c,d],[c,e],[e,f],[e,g]}, nodul a fiind

rădăcina, iar b,d,f şi g nodurile terminale sau frunzele arborelui respectiv.

Observaţie. Un arbore este de fapt un graf neorientat, deci oricare dintre noduri poate fi considerat

rădăcina arborelui. Totuşi, având în vedere situaţia de faţă nodul corespunzător functorului principal

va fi considerat rădăcina arborelui.

Liste. O listă este o secvenţă formată dintr-un număr oarecare de elemente. O listă se poate

reprezenta în Prolog enumerând, între paranteze pătrate, elementele sale componente separate prin

virgulă. De exemplu, următorii termeni sunt corecţi şi reprezintă liste:

[a,b,c,d] [jerry] [1,2,3,4,5] [a,2,[1,2,3],a(b,c),d] []

Ultima dintre acestea constituie un caz particular şi reprezintă lista vidă (lista fără nici un element).

Orice listă este compusă din cap şi coadă. Capul este primul element al listei, iar coada este lista

formată din restul elementelor. De exemplu, prima din listele citate mai sus are capul a şi coada

functor termen ( )

,

termen compus

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

9

[b,c,d], iar cea de a doua are capul jerry şi coada []. Lista vidă nu se poate descompune în cap şi

coadă.

Listele sunt de fapt cazuri particulare de termeni compuşi şi au o aplicabilitate deosebită în

limbajele de programare orientate spre calculul simbolic. Functorul care desemnează o structură de

tip listă este punctul, iar aritatea acestuia este 2. Primul argument este capul, iar cel de al doilea este

coada listei. De exemplu, lista [a,b,c,d] se poate reprezenta, în sintaxa standard Edinburgh Prolog,

prin termenul compus .(a,.(b,.(c,.(d,[])))). Atenţie, nu se va lăsa spaţiu între punct şi paranteza

deschisă. De fapt acest mod de scriere corespunde modului intern de reprezentare al listei, aceasta

fiind de fapt un arbore binar. Dată fiind însă lizibilitatea destul de redusă a acestei construcţii

sintactice, limbajul Prolog acceptă reprezentarea sub formă de enumerare a listelor, dar aceasta

reprezintă doar un mod de reprezentare externă a acestora. Tot pentru a veni în ajutorul

programatorului o listă se poate exprima şi sub forma:

[cap | coadă]

deci despărţind printr-o bară verticală capul listei de coada acesteia. Totodată o listă se poate descrie

şi sub forma:

[element1,element2,…elementn | coadă],

dar având grijă că după simbolul | trebuie scrisă o listă şi nu un element. De exemplu, fiecare din

termeni de mai jos este corect şi reprezintă aceeaşi listă [a,b,c,d]:

[a|[a,b,c,d]] [a,b|[c,d]] [a,b,c|[d]] [a,b,c,d|[]]

[a|[b|[c|[d]]]] [a,b|[c|[d]]] [a,b,c|[d|[]]]

Observaţie. Modalităţile diverse de reprezentare a listelor permit, graţie mecanismului de unificare,

extragerea şi/sau identificarea elementelor componente ale unei liste.

Liste de octeţi. O listă de octeţi este o succesiune de caractere de orice tip cuprinsă între

ghilimele. Structura de date astfel definită constă în lista codurilor ASCII ale caracterelor care

compun şirul. Pentru a insera caracterul “ în cadrul unei liste acesta se dublează. De exemplu

termenul:

“Aceasta este o lista”

este corect şi reprezintă lista

[65,99,101,97,115,116,97,32,101,115,116,101,32,111,32,108,105,115,116,97].

Ca şi în cazul atomilor de tip “quoted”, caracterul ~(tilda) poate fi utilizat pentru definirea unor

caractere speciale, de exemplu termenul “~G” reprezintă lista [7].

Observaţie. Listele de octeţi nu trebuie confundate cu şirurile de caractere sau cu atomii de tip

“quote”, dat fiind faptul că acestea diferă sintactic doar prin tipul de apostrofuri utilizate (“ `

respectiv ‘) pentru încadrarea succesiunii de caractere care le compun. Deşi modul de reprezentare,

structurile de date aferente şi modul de operare cu aceste structuri sunt diferite, limbajul LPA Prolog

dispune însă de predicate specifice care permit conversia între oricare din cele trei tipuri (“quoted”

atomi, şiruri de caractere, liste de octeţi).

Tabelul 1. Termenii limbajului Prolog

Tipul termenului predicat /aritate

variabilă var /1, nonvar /1

atomi alfanumerici atom /1

atomi simbolici atom /1

“quoted” atomi atom /1

Întregi integer /1

atomic

atomic/1

numere

number/1 reale float /1

termeni

simpli

simple/1

şiruri de caractere string /1

termeni

compuşi

termen compus functor(t1,t2,…, tn)

(în particular liste, liste de octeţi)

compound /1

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

10

2.3. Structura unui program PROLOG

Enunţurile care intră în componenţa unui program LPA Prolog pot fi de unul din următoarele

tipuri:

clauze;

reguli de rescriere;

comenzi;

dintre care numai primele sunt obligatorii, ultimele două tipuri de enunţuri fiind opţionale.

Regulile de rescriere permit programatorului definirea unui limbaj propriu prin definirea

regulilor de rescriere prin care pot fi generate frazele limbajului respectiv. Cu alte cuvinte, aceste

reguli nu sunt altceva decât producţiile unei gramatici independente de context (concept definit de

N. Chomsky), utilizată pentru generarea limbajului ce se doreşte a fi definit. Odată ce un astfel de

limbaj (gramatică) a fost definit (definită), programatorul poate testa dacă un anumit enunţ aparţine

sau nu limbajului respectiv. Aceste aspecte vor fi reluate şi dezvoltate într-unul din capitolele

următoare.

O comandă este aproape identică cu o formulă de interogare, singura deosebire constând în

faptul că aceasta are ca prefix simbolul :- (două puncte liniuţă). Prin urmare, formatul unei comenzi

este:

:- predicat1, predicat2, …,predicatn . (k1)

Denumirea de comandă provine de la faptul că termenii executabili din componenţa acesteia sunt

executaţi în mod automat la fiecare (re)încărcare a programului sursă care incorporează respectiva

comandă De exemplu, dacă într-un program se inserează comanda:

:- write(‘Hello !’), nl.

acesta ne va adresa un salut la fiecare încărcare a sa.

Clauzele limbajului.

Clauzele sunt enunţurile sau “cărămizile” din care se compun programele Prolog. Altfel

spus, clauza este cel mai mic enunţ compilabil. Clauzele sunt de două tipuri: fapte şi reguli.

Un fapt este de forma:

antet.

unde, din punct de vedere sintactic, antet este un atom sau un termen compus, al cărui functor

trebuie să fie diferit simbolul „:-” sau „=”. Sintactic, un fapt se termină prin punct, ce trebuie urmat

obligatoriu de spaţiu sau de terminatorul de sfârşit de linie.

Un fapt are sintaxa unui termen şi reprezintă un predicat, care poate fi de aritate 0 sau orice aritate

1.

Într-un limbaj Prolog, orice functor principal reprezintă un predicat. Argumentele oricărui

predicat, dacă există, sunt termeni şi nu pot fi alte predicate; de aceea, limbajul se numeşte de

ordinul I.

O regulă este de forma:

predicat/0

,

fapt

predicat/1 termen ( )

,

.

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

11

antet :- t1, t2,…,tk. (1)

unde antet constituie capul sau concluzia regulii şi apare în partea stângă a simbolului :-, iar t1,

t2,…,tk, k1 constituie premisele regulii. Fiecare tk este un predicat sau un termen executabil

denumit în limba engleză “call term” sau “goal”. Regula este terminată printr-un punct urmat de

spaţiu sau terminatorul de sfârşit de linie. Intuitiv, un termen este denumit executabil dacă

consistenţa sau valoarea de adevăr a acestuia poate fi dedusă din contextul clauzelor programului

Prolog. Din punct de vedere al logicii matematice, regula (1) este echivalentă cu implicaţia (virgula

are semnificaţia de conjuncţie logică, iar simbolul :- de implicaţie inversă):

antet t1 t2 … tk , (2)

deci inferarea concluziei antet se poate face dacă, pentru un anumit mod de “instanţiere” a

variabilelor din componenţa acestora, premisele t1, t2,…,tk. pot

simultan satisfăcute.

Pentru a înţelege noţiunea de termen executabil sau goal trebuie plecat de la premisa că într-

un program Prolog orice functor principal este un simbol predicativ (predicat) şi are în consecinţă o

valoare de adevăr.

Dacă în logica matematică scriem abc, adică ab, scriem ac, în Prolog se obţine: a :- b; c.

Mulţimea acestor clauze poartă denumirea de Program.

Definirea unui fapt de forma:

fapt(a1,…,ak).

presupune specificarea (asertarea) faptului că predicatul fapt(a1,…,ak) este adevărat. Astfel faptele

permit declararea unor piese de cunoaştere presupuse adevărate (date, ipoteze), iar regulile

specificarea unor reguli de inferenţă (axiome, teoreme) prin care pot fi deduse noi fapte sau piese de

cunoaştere.

2.4. Aspectul declarativ şi procedural al programelor Prolog

Caracteristica principală a limbajului Prolog constă în faptul că este un limbaj declarativ,

spre deosebire de cele procedurale (limbaje specializate în descrierea procedurală a rezolvării unei

probleme).

2.4.1. Aspectul declarativ

Operaţia principală care se poate executa asupra termenilor limbajului Prolog este

UNIFICAREA. Doi termeni S şi T ai limbajului sunt unifiabili dacă:

cei doi termeni sunt identici, ST;

substituţia astfel încât ST.

Exemplu: T = data(ziua, aprilie, A); S = data(Z, Luna, 2001);

= {ziua = 1, Z=1, Luna=aprilie, A=2001}.

ST = data(1, aprilie, 2001).

cmgu({S, T}) = {ziua=Z, Luna=aprilie, A=2001}.

predicat regulă

,

. :- predicat

antet

corpul regulii

Conjuncţie

Disjuncţie ;

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

12

Regulile conform cărora doi termeni doi termeni sunt unifiabili

1) dacă S şi T reprezintă două constante, atunci acestea sunt unifiabile numai dacă sunt

identice;

2) dacă unul din termeni este o variabilă liberă, atunci aceasta poate fi unificată cu orice

termen (simplu sau compus);

3) dacă ambii termeni sunt variabile libere, unificarea se realizează prin legarea celor două

variabile. Deşi cele două variabile nu sunt instanţiate (iniţializate), ele se comportă ca şi

cum ar reprezenta o variabilă unică; ca urmare, orice instanţiere a uneia dintre variabile

atrage după sine şi instanţierea celeilalte cu aceeaşi valoare.

4) doi termeni compuşi sunt unifiabili dacă sunt îndeplinite următoarele condiţii:

au acelaşi functor şi aceeaşi aritate;

argumentele de pe poziţiile corespunzătoare sunt unifiabile între ele.

Un program Prolog este o secvenţă de clauze:

P :- Q, R.

P – consecinţa logică a lui Q şi R;

Pentru a demonstra P se demonstrează mai întâi Q, iar apoi se demonstrează R. Programul

Prolog poate fi interogat prin precizarea unei clauze obiectiv (goal):

(G): G1, G2 ... Gn – pentru ce valori ale variabilelor, predicatele G1, G2 ... Gn sunt adevărate

(simultan)? Sau, În ce condiţii G este o consecinţă logică a formulelor din program? Pentru ce

valori ale variabilelor G este adevărată (satisfiabilă)?

Definiţia 1. Fie P = {C1, C2, …, Cn} un program Prolog şi Q o formă predicativă. Q este o

consecinţă logică a lui P sau Q este adevărată dacă sunt îndeplinite următoarele condiţii:

1) o instanţă I a unei clauze din P al cărei antet este unifiabil cu Q: CP şi substituţia

astfel încât Q = antet(C);

2) Toate predicatele din corpul regulii C (dacă există) sunt adevărate (satisfiabile).

OBS. Un fapt poate fi privit ca o regulă avânt drept antet predicatul respectiv şi al cărei corp

este clauza vidă.

Dacă formula Q conţine variabile Q=Q(x1, x2, ..., xn), valorile variabilelor pentru care

formula Q este adevărată sunt (x1), (x2), ...,(xn).

2.4.2. Aspectul procedural

Fie P = {C1, C2, …, Cn} un program Prolog şi Q o formă predicativă. Q este o consecinţă

logică a lui P sau este satisfiabilă din P dacă:

astfel încât P ╞ Q.

Formula Q se numeşte obiectiv (goal).

Interpretorul limbajului Prolog are următorul mod de lucru:

Indicatorul yes înseamnă că există o substituţie astfel încât din P este deductibil Q (P ╞

Q), adică o instanţă a lui Q este deductibilă din P, deci Q este o consecinţă logică a mulţimii P.

Program

PROLOG P

Goal

Interpretor

PROLOG

Inference engine

Indicator = yes + substituţia Q

astfel încât P ╞ Q (dacă Q

conţine variabile)

Indicator = no (Q nu este o consecinţă

logică sau nu este deductibilă din P)

P ╞/ Q .

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

13

Indicatorul no înseamnă că din P nu este deductibil Q (P ╞/ Q), adică Q nu este o

consecinţă logică a mulţimii P.

În cazul răspunsului yes¸ mecanismul inferenţial returnează substituţia .

Variabilele instanţiate (iniţializate) pot fi privite ca parametrii de intrare ai procedurii libere,

iar variabilele libere ca parametri de ieşire ai procedurii, parametri ce vor fi instanţiaţi cu valorile

corespunzătoare de interpretorul Prolog .

Mulţimea clauzelor unui program care corespund unui aceluiaşi predicat poartă numele de

procedură. Aceste proceduri sunt mult mai flexibile decât cele din limbajele de programare. O

procedură Prolog poate fi aplicată în mai multe moduri (flow pattern), programatorul putând inversa

parametrii de intrare cu cei de ieşire.

Exemplu: Predicatul p/2 {(i,i), (i,o), (o,i), (o,o)} – i– input; o– output.

prieten(marius, ion).

:?– prieten(Cine, Cui). % (o,o)

:?– prieten (Cine, ion). % (o,i) Cine=maria

:?– prieten (maria, Cui). % (i,o) Cui=ion

:?– prieten (maria, ion). % (i,i) yes

Fiecare predicat executabil poate fi considerat ca o procedură, în sensul cunoscut din

programarea clasică. O procedură mai returnează şi acel indicator de răspuns ( yes sau no).

După ce un program Prolog a fost editat şi compilat, utilizatorul poate introduce în fereastra

de dialog diverse formule de interogare a sistemului. O formulă de interogare, denumită goal în

terminologia engleză, este de forma:

p1,p2, … , pn. (n1)

unde p1,p2,…,pn sunt termeni executabili, iar virgula are semnificaţia de conjuncţie logică. O

formulă de interogare poate fi de două feluri:

determinită: nu conţine variabile libere, răspunsul sistemului la o astfel de formulă fiind yes sau

no, după cum formula respectivă este sau nu o consecinţă logică a clauzelor din

program;

nedeterministă: conţine una sau mai multe variabile libere, sistemul determinând prin backtracking

toate instanţierile posibile ale variabilelor pentru care respectiva formulă este o

consecinţă logică a clauzelor din program.

Exemplu: place (ion, X) :- are_zestre(X), frumoasă (X).

are_zestre(X) :- bogată(Y), fata (X, Y).

:?– place (ion, Fata). %(i, o)

Remarca 1: De fiecare dată când are de satisfăcut un goal introdus în fereastra de interogare

sau din corpul unei reguli, interpretorul Prolog începe scanarea tuturor clauzelor din program

începând cu prima dintre acestea, în vederea găsirii unei clauze al cărei antet este unifiabil cu goal-

ul curent.

{place(ion, X), place(ion, Fata)} cmgu {Fata=X}.

Remarca 2: Dacă un goal a fost unificat cu antetul unei reguli, se trece la demonstrarea

predicatelor (subgoal-urilor) din corpul regulii respective. Încercarea de a satisface aceste fapte se

face în ordinea în care acestea apar în corpul regulii. Astfel, se trece la a demonstra bogata (Y) –

devine goal curent.

Remarca 3: Dacă un predicat din corpul unei reguli a fost demonstrat, se trece la

demonstrarea predicatului următor; în caz contrar, se revine la ultimul punct de breakpoint aflat în

program. Goal-ul curent devine fata(X, veta).

Când mai multe clauze din program sunt unifiabile cu goal-ul curent, interpretorul plasează

un punct de breakpoint pe următoarea clauză unifiabilă din program.

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

14

fata(X, veta)

fata(geta, veta), C = {X=geta}

= ◦C = {Fata=X=geta, Y=veta}

frumoasa(geta).

Remarca 4: Când un goal este dovedit inconsistent, se revine prin backtracking la ultimul

punct de breakpoint plasat în program. O dată cu revenirea la ultimul punct de breakpoint, se

eliberează toate variabilele instanţiate după plasarea în program a respectivului punct de

breakpoint. Variabila X este eliberată (dezlegată de valoarea geta).

Revenindu-se la punctul de breakpoint, variabila X este instanţiată din nou cu valoarea

maria. În acest caz, goal-ul frumoasa (maria) poate fi demonstrat şi Prolog, ţinând cont de

substituţia curentă, răspunde Fata=maria.

Următoarele 2 caracteristici exprimă o particularitate relevată a limbajului P rolog:

Singura modalitate de instanţiere a unei variabile este procedura de unificare

(programatorul nu poate atribui o valoare unei anumite variabile).

Variabilele pot fi eliberate numai prin mecanismul de backtracking al interpretorului

Prolog.

În Prolog, simbolul „=” este un operator infix care face apel la procedura de unificare; în

urma unificării variabilelor din cei doi termeni, instanţierea se realizează dacă X este liberă.

X=1+2 are drept efect instanţierea lui X cu expresia 1+2 dacă X este liberă: ={X=1+2}.

X=1 are ca efect instanţierea variabilei X = 1, dacă X este liberă. ={X=1}.

X=1, X=X+1: ={X=1} 1=1+1 – inconsistent => fail, (1+1).

Exemple BAF şi CAF:

prezent(alina). prezent(georgiana). prezent(elena). prezent(mircea). pr ezent(dan).

lista:-

prezent(X), write(X), nl, fail.

lista. % BAF(Backtracking After Fail)

lista:-

prezent(X), write(X), nl, X=dan, !. % CAF(Backtracking After Fail)

Precizare: O formulă de interogare Q trebuie privită ca un apel la mecanismul inferenţial al

interpretorului (demonstratorul) Prolog, care generează soluţiile lui Q.

2.5. Liste. Prelucrarea listelor

2.5.1. Listele Prolog

O listă este o colecţie de zero sau mai multe obiecte. Lista fără nici un obiect se numeşte

vidă şi se reprezintă prin []. Celelalte liste sunt formate din:

cap, primul element;

coada, lista celorlalte elemente, în particular lista vidă.

OBS: Lista vidă [] nu se poate descompune în cap şi coadă.

În Prolog o listă se reprezintă printr-un termen compus. Orice termen poate fi reprezentat printr-un

arbore. Fie termenul compus:

functor(termen 1, termen 2, ..., termen n).

– rădăcina arborelui este etichetată cu functorul principal al termenului ( functor).

– fiecărui nod etichetat cu un termen compus (rădăcină) îi corespunde un număr de

descendenţi egal cu aritatea termenului respectiv. Aceşti descendenţi vor fi etichetaţi cu

argumentele termenului respectiv.

– nodurile care corespund unor termeni simpli (atomici) sunt noduri finale.

Listele fac excepţie de la această regulă, fiind reprezentate prin functorul „.” de aritate 2 (cap şi

coadă).

Exemplu: [1, 2, a, b, evrika, 29]

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

15

. (1, . (2, . (a, . (b, . (evrika, . (29))))))

Să se descrie arborele asociat listei de mai sus!

Exemplu de listă: [1, 2, a, b | [evrika | [29]]]. Termenul amplasat după simbolul | trebuie să

fie o listă.

2.6. Operatori

Dat fiind faptul că limbajul Prolog este orientat mai degrabă în vederea efectuării calculelor

simbolice decât numerice, operatorii trebuie priviţi ca un mod aparte de reprezentare a termenilor

compuşi de aritate unu sau doi. Deci un operator nu semnifică de regulă efectuarea unei operaţii, ci

indică mai degrabă modul de agregare a operanzilor în cadrul structurii desemnată de acel operator.

Există totuşi şi o serie de operatori prin care programatorul poate forţa la nevoie evaluarea unei

expresii. Spre deosebire de sintaxa standard a unui termen compus, situaţie în care functorul precede

paranteza ce conţine lista argumentelor sale, operatorii permit scrierea termenilor de aritate 1 sau 2

într-o nouă sintaxă, care într-un anumit context poate fi mult mai agreabilă.

Operaţii cu termeni. Orice operator care constituie functorul principal al unui termen

compus are o semnificaţie predicativă şi are în consecinţă o valoare de adevăr. În funcţie de rolul şi

semnificaţia acestora, operatorii utilizabili la formarea “expresiilor” Prolog se pot împărţi în

următoarele patru categorii precizate mai jos.

Operatorul de unificare. Cea mai importantă operaţie pe mulţimea termenilor este

unificarea (de fapt aceasta este operaţia de bază a limbajului Prolog). Se ştie că doi termeni t1 şi t2 se

numesc unifiabili dacă există o substituţie astfel încât termenii (t1) şi (t2)să devină identici.

Operaţia de unificare este desemnată prin operatorul infix =. Termenul executabil t1=t2 este de fapt

un apel la rutina de unificare a interpretorului Prolog. Dacă cei doi termeni sunt unifiabili, atunci

predicatul t1=t2 este satisfăcut şi variabilele libere din cei doi termeni sunt substituite prin valorile

lor corespunzătoare din cmgu(t1,t2). În caz contrar, termenul t1=t2 este inconsistent, iar variabilele

din componenţa acestora rămân nemodificate.

Se poate testa dacă doi termeni t1=t2 sunt unifiabili şi fără a produce instanţieri ale

variabilelor prin apelarea predicatului predefinit unifiable(t1,t2).

Operatorul \= este complementul operatorului =. Astfel t1\=t2 este adevărat dacă t1 şi t2 sunt

neunifiabili şi este fals când t1 şi t2 sunt unifiabili.

Operatori de comparaţie lexicografică. Operatorul == (două semne de egalitate) permite

compararea lexicografică a doi termeni. Termenul (predicatul) t1==t2 este valid dacă cei doi

termeni t1 şi t2 sunt lexicografic identici. De exemplu, termenul a+b==b+a este inconsistent,

deoarece termenii a+b şi b+a nu sunt identici, în schimb predicatul a+b==a+b este valid.

Operatorul \== (back slash şi două semne de egalitate) este negaţia operatorului precedent. Astfel,

predicatul a+b\==b+a este adevărat, în timp ce predicatul a+b\==a+b este fals. Operatorii din

această categorie nu produc instanţieri ale variabilelor.

Operatorul de evaluare. După cum s-a precizat mai sus, limbajul Prolog este orientat pentru

efectuarea calculului simbolic, operatorii fiind utilizaţi mai degrabă pentru reprezentarea unor

structuri. Evident, sfera de utilizare a limbajului ar fi puternic diminuată, dacă acesta nu ar permitea

efectuarea unor calcule matematice. Dar, aceste calcule se fac numai la cererea expresă a

programatorului. De exemplu, dacă X este o variabilă liberă, termenul executabil X = 1+2 are ca

efect instanţierea variabilei X cu valoarea (termenul) 1+2 (ceea ce era de aşteptat întrucât 1+2 este

substituţia de unificare a celor doi termeni ai operatorului =). Operatorul prin care programatorul

poate cere în mod expres evaluarea unei expresii este desemnat prin atomul rezervat is. În partea

stângă a operatorului is trebuie să apară în mod obligatoriu o variabilă (liberă sau nu), iar în partea

dreapta o expresie algebrică, ale cărei variabile (dacă există) să fie iniţializate cu valori numerice.

Astfel, dacă X este o variabilă liberă, apelul termenului X=1+2 va avea ca efect instanţierea

variabilei X cu valoarea 3. Trebuie menţionat faptul că un termen executabil de forma:

X is <Expresie> ,

nu trebuie confundată cu o instrucţiune de atribuire. De fapt, deşi pare oarecum şocant, limbajul

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

16

Prolog nu are instrucţiune de atribuire ! . Mai mult, un predicat de forma:

X is X+1 ,

este inconsistent, deoarece variabila X din membrul drept trebuie să fie instanţiată şi, indiferent de

valoarea acesteia, aceasta nu poate fi nici cum egală cu X+1.

După cum s-a menţionat anterior, în Prolog unificarea este singurul mod de instanţiere a

unei variabile, după cum mecanismul de backtracking este singurul mod posibil de eliberare al

acesteia.

Operatori relaţionali. Limbajul Prolog conţine următorii operatorii relaţionali, ce pot fi

utilizaţi pentru comparaţia numerică a două expresii. Toate variabilele cuprinse în cele două

expresii trebuie să fie instanţiate în momentul apelului termenului respectiv.

E1=:=E2 egalitate

E1=\=E2 neegalitate

E1<E2 mai mic

E1=<E2 mai mic sau egal

E1>E2 mai mare

E1>=E2 mai mare sau egal

Fiecare din termenii de mai sus produce evaluarea numerică a expresiilor algebrice E1 şi E2,

valoarea de adevăr a termenilor de mai sus fiind calculată ca în orice alt limbaj de programare.

Operatorii relaţionali nu produc instanţieri ale variabilelor din cele două expresii.

Observaţie. Operatorii mai mic sau egal şi mai mare sau egal trebuie scrişi în maniera ilustrată mai

sus, scrierile <= respectiv => nefiind acceptate de compilatorul Prolog.

2.7. Controlul backtraking-ului în limbajul Prolog

Există două procedee prin care programatorul poate interveni în funcţionarea procedurii de

backtraking:

C(X)

apel predicat

C(X)

!

corpul ciclului

q1(X), q2(X), …, qn(X)

p(a1) p(a2) … p(an)

apel predicat nedeterminist

p(X)

Mai breakpoints

sau variante

neîncercate ale lui

p(X)

Da

Nu

fail

fail

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

17

– predicatul fail (predicat inconsistent), are drept efect forţarea mecanismului de breaktraking

pentru revenirea în ultimul breakpoint plasat în program;

– predicatul cut (predicatul !) este consistent (valid) şi are drept efect suprimarea punctelor de

breakpoint plasate de predicatele precedente acestuia din corpul regulii în care acesta se

găseşte sau a breakpoints corespunzătoare unor clauze ale predicatului ce constituie antetul

regulii.

Exemple: 1) % max/3 2) a:-b,c,!,d,e.

a) max(A,B,A):- A>=B. a:-f,g.

max(A,B,B):- B>A. h:-k,l,a,m.

b) max(A,B,A):- A>=B, !.

max(A,B,B):- B>A.

c) max(A,B,A):- A>=B, !.

max(A,B,B).

Prelucrarea listelor

3) Membru al unei liste

member(X,L), X – element, L – listă.

{(i,i), (o,i)}: determinist (i,i) sau nedeterminist (o,i).

Implementarea se face ţinând cont că un element aparţine unei liste dacă:

o este un element al capului listei;

o face parte din coada listei respective.

member(X, [X|_]).

member(X, [_|T]):- member(X, T).

:?– member(b, [a, b,c]). %(i, i) yes

:?– member(X, [a, b,c]). %(o, i) X=a; X=b ; X=c.

4) Adăugarea unui element la listă dată

5) Concatenarea a două liste

concat([], L, L).

concat([H|T], L2, [H|T2]):- concat(T, L2, T2).

6) Ştergerea uni element al unei liste

del(X, L, L1).

Prin ştergerea unui element X din lista L se obţine lista L 1.

del(X, [X|T], T).

del(X, [H|T], [H|T1]):- del(X, T, T1).

:?– del(b, [a,b,c,b,d],L).

L=[a,c,b,d]

L=[a,b,c,d]

7) Inserarea unui element într-o listă

L E

L E

add(E, L, [E|L])

L1 L2

L

concat(L1, L2, L)

L1 L2

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

18

insert(X, L, L1):- del(X, L1, L).

8) Permutarea elementelor unei liste perm (L, L1)

perm([], []).

perm([H|T], L):- perm(T, T1), insert(H, T1, L).

9) Numărarea elementelor unei liste count(L, N)

count([], 0).

count([H|T], N):- count(T,M), N is M+1.

sau

count([], N, N).

count([_|T], Numar, N):-

NouNumar is Numar+1, count(T,NouNUmar, N).

Numar se va initializa cu zero.

:?– count([1,2,3,4,5], 0, Cate).

Cate=5

count(L, N):-count(L,0,N).

:?– count([1,2,3,4,5], Cate). Cate=5.

REZUMAT

Limbajul LPA Prolog reprezintă un instrument simplu şi eficient de abordare a problemelor

specifice de Inteligenţă artificială. Aceste caracteristici sunt conferite de următoarele aspecte

principale ale limbajul Prolog:

1) Sintaxă simplă. 2) Un program Prolog reprezintă, în general, o colecţie de clauze (fapte şi reguli) care descriu

problema (prin reprezentarea cunoştinţelor), fără a fi necesară descrierea algoritmului de

rezolvare! 3) Orice clauză are o valoare de adevăr (fals sau adevărat), purtând şi denumirea de predicat. 4) Nu există instrucţiunea de atribuire! O variabilă primeşte valori numai prin instanţiere,

generată de mecanismul de UNIFICARE. 5) Variabilele pot fi eliberate de valori numai prin mecanismul de BACKTRACKING al

interpretorului Prolog. Prin backtracking se revine la punctele de întrerupere din program şi

astfel noi substituţii sunt automat testate.

PROBLEME PROPUSE

Problema 1: Descrierea relaţiilor din filmul Santa Barbara

Pornind de la intriga şi personajele din binecunoscutul film Santa Barbara, să se scrie un

program Prolog care să corespundă etapelor precizate mai jos.

1. Să se descrie următoarele fapte prin clauze Prolog

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

19

predicat: femeie(persoană) predicat: barbat(persoană)

Pamela este femeie.

Sophia este femeie.

Minx este femeie.

Augusta este femeie.

Julia este femeie.

Santana este femeie.

Kelly este femeie.

Eden este femeie.

Laken este femeie.

Rosa este femeie.

CC este barbat.

Mason este barbat.

Lionel este barbat.

Cruz este barbat.

Ted este barbat.

Brick este barbat.

Brandon este barbat.

Warren este barbat.

predicat: mama(mama, fiica/fiu) predicat: tata(tata, fiica/fiu)

Sophia este mama lui Eden.

Sophia este mama lui Ted.

Sophia este mama lui Brick.

Sophia este mama lui Kelly.

Augusta este mama lui Warren.

Augusta este mama lui Laken.

Minx este mama lui Lionel.

Rosa este mama lui Santana.

Santana este mama lui Brandon.

CC este tatăl lui Mason.

CC este tatăl lui Eden.

CC este tatăl lui Ted.

Lionel este tatăl lui Brick.

Lionel este tatăl lui Laken.

Lionel este tatăl lui Warren.

2. Descrieţi următoarele reguli prin clauze Prolog

Predicat Antet Descrierea (corpul) regulii

parinte(parinte, copil) parinte(X, Y) if X este mama lui Y sau

if X este tatăl lui Y.

tata(tata) tata(X) if X este tatăl cuiva („ _”).

mama(mama) mama(X) if X este mama cuiva.

parinte(parinte) parinte(X) if X este parintele cuiva.

bunica(bunica, nepot) bunica(X, Y) if X mam lui Z şi Z este părintele lui Y.

bunic(bunic, nepot) bunic(X, Y) if X este tatăl lui Z şi Z este părintele lui

Y.

sora(persoană,

persoană) sister(X, Y)

if X este femeie, M este mama lui X şi M

este mama lui Y, X<>Y, T este tatăl lui X

şi T este tatăl lui Y.

frate(persoană,

persoană) frate(X, Y)

if X este bărbat, M este mama lui X şi M

este mama lui Y, X<>Y, T este tatăl lui X

şi T este tatăl lui Y.

3. Lansaţi programul în execuţie (Comanda Run Compile) şi chestionaţi rezolver-ul Prolog:

Natural language question Prolog goal

Este Kelly femeie? ?:- femeie(kelly).

Este Eden barbat?

Cine este femeie?

Cine este mama lui Eden?

Cine este tatăl lui Kelly?

Este CC tatăl lui Mason?

Al cui tată este CC?

A cui mama este Sophia?

Al cui frate este Mason?

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

20

Cine este bunica lui Brandon?

Este Brandon tatăl lui Kelly?

Cine este bunic?

Este CC tatăl lui Brandon?

Problema 2: Podurile din Königsberg

Grafurile constituie un instrument practic şi eficient de reprezentare a obiectelor şi a

relaţiilor dintre acestea. Teoria grafurilor a fost introdusă la începutul secolului al XVIII-lea de

matematicianul austriac Leonhard Euler în vederea soluţionării celebrei probleme cunoscută sub

numele de “podurile din Königsberg”. Königsberg este un orăşel austriac aşezat pe ambele maluri

ale râului Pregel, râu care formează două insule. Malurile şi cele două insule sunt conectate prin

sistemul de poduri ilustrat în figura 1a. Problema, care a frământat multe persoane până la Euler,

este următoarea: poate un călător să parcurgă întregul orăşel, trecând pe fiecare pod, fără să

parcurgă un pod de două ori ?

Mulţi au încercat să găsească o soluţie, însă fără succes. Euler este acela care a demonstrat

matematic că problema nu are soluţie!, imaginând grafurile pentru reprezentarea problemei

(fig. 1b). Problema de mai sus, cunoscută sub numele de “lanţ eulerian” într-un graf, nu mai pune

azi nici un fel de probleme, cunoscându-se faptul că un astfel de drum există dacă numărul

nodurilor de conectivitate impară este 0 sau 2. Problema este cunoscută şi sub denumirea de “lanţ

(drum) hamiltonian”, Hamilton aducându-şi contribuţia la stabilirea unor algoritmi pentru generarea

acestor drumuri. Mai mult, se ştie că într-un graf există un circuit eulerian dacă şi numai dacă graful

este conex şi pseudosimetric. Un graf este pseudosimetric dacă din fiecare vârf pleacă atâtea arce

câte intră în vârful respectiv.

Revenind la problema podurilor din Königsberg, baza de cunoştinţe se poate reprezenta

utilizând un predicat denumit “leaga” şi utilizând două astfel de predicate pentru fiecare pod:

leaga(i1,i2,p1). leaga(i2,i1,p1).

leaga(m1,i1,p2). leaga(i1,m1,p2). leaga(m1,i1,p3). leaga(i1,m1,p3).

leaga(m1,i2,p4). leaga(i2,m1,p4). leaga(m2,i1,p5). leaga(i1,m2,p5).

leaga(m2,i1,p6). leaga(i1,m2,p6). leaga(m2,i2,p7). leaga(i2,m2,p7).

unde, s-a notat prin: i1, i2 - cele două insule; m1, m2 - cele două maluri ale râului; p1,p2,p3,p4,p5,p6,p7 -

cele şapte poduri.

Considerând dif(p,q) predicatul care exprimă faptul p şi q reprezintă două poduri diferite, în

limbajul de calcul al predicatelor, existenţa unui drum eulerian s-ar putea reprezenta prin expresia

următoare:

X1( X2( X3( X4( X5( X6( X7(

leaga(X1,X2,P1)leaga(X2,X3,P2)leaga(X3,X4,P3)leaga(X4,X5,P4)

leaga(X5,X6,P5)leaga(X6,X7,P6)leaga(X7,X8,P7)dif(P1,P2)dif(P1,P3)dif(P1,P4)

dif(P1,P5)dif(P1,P6)dif(P1,P7)dif(P2,P3)dif(P2,P4)dif(P2,P5)

dif(P2,P6)dif(P2,P7)dif(P3,P4)dif(P3,P5)dif(P3,P6)dif(P3,P7)

dif(P4,P5)dif(P4,P6)dif(P4,P7) dif(P5,P6)dif(P5,P7)dif(P6,P7)

) ) ) ) ) ) ) exista_lant_eulerian.

`

m1

m2

Pregel

p2 p3 p4

p7 p6 p5

p1 i1 .

i2 i1 i2

m2

m1

p1

p2

p3

p4

p7

p6

p5

a) Oraşul Königsberg. b) graful asociat

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

21

Domeniul variabilelor: X1..X7 {i1, i2, m1, m2}.

Fără a avea pretenţia că este cea mai simplă forma de soluţionare a problemei, dacă un astfel

de drum există, predicatul: exista_lant_eulerian va avea valoarea true.

TEST DE AUTOEVALUARE

1. Care este principalul separator al

termenilor limbajului:

a. «!» (semnul exclamării).

b. «,» (virgula) .

c. «;» (punct si virgula).

2. Terminarea unui enunţ Prolog se

realizează prin caracterul:

a. Punct («.») .

b. Spaţiu.

c. Punct şi virgula.

3. Inserarea unui comentariu pe mai

multe rânduri se face încadrând

textul respectiv între:

a. Paranteze ().

b. Delimitatori /* si */ .

c. Ghilimele ( .

4. O variabilă începe obligatoriu cu o

majuscula sau cu caracterul:

a. «».

b. «*/*».

c. «_» .

5. Un „quated” atom se defineşte ca

fiind:

a. succesiune de caractere

cuprinsa intre apostrofuri.

b. succesiune de cifre cuprinse

între paranteze.

c. succesiune de termeni

separaţi prin virgula unul de

celălalt.

6. Care din următoarele forme

defineşte sintaxa unui termen

compus:

a. xy = yx.

b. functor(t1, t2, …, tn) .

c. functor(!).

7. Clauza de tip fapt este de forma:

a. fapt(V1, V2, …, Vn).

b. antet.

c. antett1t2.

8. Clauza de tip regula are forma:

a. antet:-t1,t2, …, tk .

b. functor(t1,t2, …, tk).

c. /* regula */.

9. Predicatul = se numeşte:

a. instanţiere.

b. unificare.

c. backtracking.

10. Functorul unei liste este caracterul:

a. Virgulă.

b. Dolar.

c. Punct.

11. Predicatul ‚fail’ este un predicat:

a. Consistent.

b. Inconsistent.

c. Valid.

12. Predicatul ‚cut’ are ca efect

suprimarea punctelor de:

a. Breaktracking.

b. Breakpoint.

c. Breaktrace.

13. Caracterul % are rolul de:

a. Comentariu până la sfârşit

de linie.

b. Calcul în procente.

c. Salt la sfârşitul clauzei.

14. Construcţia [a,b,c,d] reprezintă:

a. Un set de date.

b. O listă.

c. O mulţime.

15. Predicatul condiţional IF este

descris sintactic prin secvenţa:

a. «-:-».

b. «:-:».

c. «:-».

Răspuns

1. b 6. b 11. b

2. a 7. b 12. b

3. b 8. a 13. a

4. c 9. b 14. b

5. a 10. c 15. c

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

22

Inteligenţă Artificială Cap.3. Limbaje de ordinul I

23

Limbaje de ordinul I

Obiective 1. Însuşirea noţiunilor de bază privind limbajul de calcul propoziţional.

2. Reprezentarea cunoaşterii în limbaj de calcul propoziţional.

3. Metode de demonstrare a teoremelor în limbajul de calcul propozi ţional

4. Dezvoltarea abilităţilor practice de operare cu elemente de calcul propoziţional.

Durata: 2 ore

3.1. Limbajul de calcul propoziţional

3.1.1. Sintaxa şi semantica calculului propoziţional

Calculul propoziţional a fost definit de Whitehead şi Rusell (1910) în celebra carte “Principia

Mathematica”. Importanţa matematică a calculului propoziţional este deosebită, acesta stând la baza

definirii oricărui sistem logic formal. Calculul propoziţional modern se bazează pe dezvoltările şi

modernizările aduse ulterior de Hilbert şi Ackermann.

3.1.1.1. Vocabularul limbajului de calcul propoziţional

Vocabularul limbajului este format din următoarele categorii de simboluri:

- Variabilele propoziţionale notate prin simbolurile a, b, c,…,a1, b1, c1, …. Mulţimea variabilelor

propoziţionale (propoziţiilor) se notează în cele ce urmează cu V;

- Conectivele logice (conjuncţie), (disjuncţie) şi (negaţie);

- Parantezele rotunde “(” şi “)”;

3.1.1.2. Sintaxa calculului propoziţional

Definiţia 1.

Mulţimea formulelor (enunţurilor sintactic corecte) ale calculului propoziţional, mulţime notată

cu P, se defineşte recursiv prin următoarele reguli:

1) simbolurile propoziţionale aparţin lui P:

xVx

2) dacă a, bP atunci ab, ab, a, (a)P;

3) o combinaţie de simboluri din V aparţine lui P dacă şi numai dacă ea se obţine prin aplicarea

de un număr finit de ori a regulilor 1) şi 2).

Se consideră algebra (B2,,,’) unde B2={0,1} şi, pentru orice x, yB2, operaţiile , şi ‘ sunt

definite de relaţiile:

xy=min{x, y}=xy; (1)

xy=max{x, y}=x+y-xy;

x’=1–x.

Propoziţia 1. Algebra (B2,,,’) este o algebră booleană.

3.1.1.3. Semantica limbajului de calcul propoziţional

Cap. 3

Inteligenţă Artificială Cap.3. Limbaje de ordinul I

24

Definirea semanticii calculului propoziţional presupune definirea unei funcţii I:PB2, care să

atribuie fiecărei formule o valoare de adevăr. Dat fiind faptul că funcţia I dă o semnificaţie formulelor

limbajului P, permiţând interpretarea acestora, aceasta este denumită interpretare.

Definiţia 2. Se numeşte interpretare orice morfism al algebrelor (P,,, ) şi (B2,,,’).

Din definiţia 2 rezultă că orice interpretare I, I:PB2, satisface următoarele proprietăţi oricare ar

fi formulele a, bP:

I(ab)=I(a)I(b)=max{I(a),I(b)}; (2)

I(ab)=I(a) I(b)=min{I(a),I(b)};

I( a)=1-I(a).

Remarca 1. Având în vedere că în calculul propoziţional orice interpretare satisface prin

definiţie proprietăţile (2), rezultă că valoarea de adevăr a oricărei formule FP este bine determinată de

valorile de adevăr atribuite de interpretarea I variabilelor propoziţionale. Dacă în formula F apar n

variabile propoziţionale atunci există 2n interpretări posibile ale formulei F (funcţii I).

O interpretare asociază fiecărei formule FP o valoare de adevăr notată I(F)B2, convenind că

valoarea de fals=0, iar valoarea de adevărat=1.

Notând cu x1, x2,…,xn variabilele care apar în F, atunci pentru orice interpretare I, valoarea de

adevăr a formulei F este dată de o relaţie de forma:

I(F)=I(F(x1, x2,…,xn))=f(I(x1), I(x2),…,I(xn)) (3)

În această viziune, fiecare formulă F poate fi echivalată cu o funcţie logică f.

Pe mulţimea P se introduc două conective (operaţii) noi, şi , numite implicaţie logică,

respectiv echivalenţă logică, a căror semantică este definită după cum urmează:

;1

;0)(1)(0)(

bIaIbaI (4)

.0

;1)()(1)(

abIbaIbaI (5)

Oricare ar fi formulele a, bP, se obţine următoarea semnificaţie a conectivelor şi :

I(a) I(b) I(ab) I(ba) I(ab)

0 0 1 1 1

0 1 1 0 0

1 0 0 1 0

1 1 1 1 1

Definiţia 3. Se spune că formula FP este consistentă dacă există o interpretare I pentru care I(F)=1

(pentru care formula este adevărate). O formulă care nu este consistentă se numeşte inconsistentă. O

mulţime de formule {F1,F2,…,Fn} este consistentă dacă există o interpretare I pentru care I(F1)=

I(F2)=… =I(Fn)=1 (pentru care toate formulele sunt adevărate).

Remarca 2. Mulţimea {F1,F2,…,Fn} este consistentă dacă şi numai dacă formula F1F2 …Fn

este consistentă.

Definiţia 4. O formulă FP se numeşte validă sau irefutabilă dacă este adevărată în orice

interpretare, adică I, I(F)=1. O formulă validă se mai numeşte şi tautologie. O formulă care nu este

validă este denumită invalidă.

Ex.: a a.

Remarca 3. O formulă invalidă poate fi adevărată într-o interpretare particulară, în timp ce o

formulă inconsistentă este întotdeauna falsă.

Inteligenţă Artificială Cap.3. Limbaje de ordinul I

25

Relaţiile dintre conceptele de validitate, consistenţă, invaliditate, inconsistenţă şi valorile de

adevăr luate de expresii pentru combinaţiile de valori de adevăr ale formulelor atomice componente sunt

ilustrate în tabelul de mai jos.

Validă Invalidă

Întotdeauna

adevărată

Nu întotdeauna adevărată

şi nu întotdeauna falsă

Întotdeauna falsă

Consistentă Inconsistentă

Contingentă

Se observă existenţa unei categorii de expresii, care nu sunt nici întotdeauna valide, nici

întotdeauna inconsistente. Astfel de expresii, care pentru unele combinaţii ale valorilor de adevăr ale

formulelor atomice componente iau valoarea "adevărat", iar pentru alte combinaţii ale valorilor de adevăr

ale formulelor atomice componente iau valoarea "fals", sunt denumite expresii contingente.

Definiţia 5. Fie S={F1,F2,…,Fn}P o mulţime de formule şi CP o formulă. Se spune că C este

deductibilă semantic din S sau C este o consecinţă logică a lui S, dacă pentru orice interpretare I pentru

care I(F1)=I(F2)=…=I(Fn)=1 avem I(C)=1. Se notează acest fapt prin

{F1,F2,…,Fn}╞ C (6)

Remarca 4. Se spune că expresia {F1,F2,…,Fn}╞ C este o teoremă, {F1,F2,…,Fn} constituind

ipoteza, iar C concluzia teoremei respective. Semnul “╞ “ este denumit simbol de asertare a validităţii.

Remarca 5. Dacă mulţimea premizelor este vidă, teorema se rescrie sub forma ╞ C, ceea ce

semnifică faptul că C este o tautologie (adevărată în orice ipoteză). Având în vedere acest aspect, orice

tautologie a calculului propoziţional poate fi considerată o teoremă. De asemenea, a demonstra teorema

{F1,F2,…,Fn}╞ C revine în a demonstra că formula F1F2 …Fn C este o tautologie, adică ╞ F1F2

…Fn C.

Există anumite tautologii ale calculului propoziţional denumite axiome, prin asertarea cărora se

pot deduce toate celelalte tautologii ale limbajului. Sistemul axiomatic al calculului propoziţional, definit

de Hilbert şi Ackermann are la bază următoarele axiome:

i) ╞ AAA principiul tautologiei;

ii) ╞ AAB principiul adiţiunii;

iii) ╞ ABBA principiul comutativităţii;

iv) ╞ (AB)((CA)(CB)) principiul însumării.

3.1.2. Principiul deducţiei

Propoziţia 2. (Principiul deducţiei)

Se spune că {F1,F2,…,Fn}╞C dacă şi numai dacă {F1,F2,…,Fn, C} este inconsistentă.

3.1.3. Echivalenţă logică

Definiţia 6. Două formule F1, F2P se numesc echivalente dacă, pentru orice interpretare I,

există egalitatea I(F1)=I(F2): F1 ≈ F2 I, I(F1)=I(F2).

Ex.:

a(ab) ≈ a

aa ≈ a

Propoziţia 3. Relaţia de echivalenţă logică are următoarele proprietăţi:

i) FG ≈ GF; FG ≈ GF (comutativitate)

ii) F(GH) ≈ (FG)H; F(GH) ≈ (FG)H (asociativitate)

iii) F(GH) ≈ (FG) (FH); F (GH)≈ (FG) (FH)

Inteligenţă Artificială Cap.3. Limbaje de ordinul I

26

iv) FF ≈ F, FF ≈ F (idempotenţă)

v) F(FG) ≈ F, F (FG) ≈ F (absorbţie)

vi) FF ≈ t; FF≈ f

vii) (F) ≈ F (principiul dublei negaţii)

viii) (FG) ≈FG

(FG) ≈FG (De Morgan)

oricare ar fi formulele F, G, H P, t=true, f=false.

3.2. Metode de demonstrare a teoremelor în limbajul de calcul

propoziţional

Există mai multe metode prin care se poate verifica dacă o anumită formulă este sau nu o

teoremă (o tautologie) a calculului propoziţional. Cele mai cunoscute dintre acestea sunt

prezentate în continuare.

3.2.1. Metode semantice

Se consideră o formulă F=F(x1,x2,…,xn)P şi se doreşte demonstrarea (sau infirmarea)

faptului că F este o tautologie. Metodele semantice au la bază definiţia 4 şi constau în verificarea

faptului că în orice interpretare formula F este adevărată. Pentru aceasta se construieşte tabelul

valorilor de adevăr asociat formulei F. Tabelul va conţine câte o coloană pentru fiecare din

simbolurile propoziţionale x1, x2,…,xn şi o coloană pentru formula F, eventual câteva coloane

auxiliare care să faciliteze evaluarea lui I(F). Numărul de linii al tabelului este 2n, fiecare din

acestea corespunzând unei interpretări a formulei F.

Considerând teoremele de forma:

F1, F2, …, Fn ╞ C, (7)

unde F1, F2 ,…,Fn (virgula în membrul stâng are rol de conjuncţie) reprezintă ipoteza teoremei

(7), iar C concluzia acesteia, se pot utiliza două metode semantice pentru demonstrarea teoremei.

Metoda directă. Se verifică că pentru toate interpretările pentru care premizele sunt

simultan adevărată, concluzia este adevărată, adică I, pentru care I(F1)= I(F2)=… =I(Fn)=1,

avem I(C)=1. Procedeul utilizat este următorul. Se marchează în tabelul de adevăr liniile în care

premizele sunt simultan îndeplinite şi se verifică pentru aceste linii dacă în coloana

corespunzătoare concluziei toate valorile de adevăr sunt egale cu 1.

Metoda inversă. Se verifică că pentru orice interpretare I, pentru care I(C)=0, cel puţin

una din premize este nesatisfăcută, adică există o formulă Fi pentru care avem I(Fi)=0. Se

construieşte tabelul de adevăr şi se marchează liniile în care concluzia este falsă. Pentru aceste

linii se verifică că cel puţin una dintre premize nu este satisfăcută.

Remarca 6. Dezavantajul metodelor semantice constă in faptul că numărul liniilor din

tabelul de adevăr creşte exponenţial în raport cu numărul variabilelor propoziţionale. Acest

inconvenient a fost eliminat în cazul metodele sintactice.

Exemplu: Să se demonstreze, prin metoda directă şi –inversă, teorema

a, ab ╞ b (modus ponens).

Inteligenţă Artificială Cap.3. Limbaje de ordinul I

27

a b ab b MD MI

0 0 1 0 *

0 1 1 1

1 0 0 0 *

1 1 1 1 *

Concluzie: Teorema este demonstrată!

Să se demonstreze: ACD, A, BC, B ╞ D.

3.2.2. Metode sintactice

Spre deosebire de metodele prezentate în § 3.2.1, metodele sintactice operează cu

simbolurile propoziţionale fără a ţine cont de semnificaţia semantică a formulelor în care acestea

apar. Una dintre cele mai cunoscute metode sintactice este algoritmul lui WANG, care este

aplicabil teoremelor de forma:

F1F2…Fn ╞ C1C2…Cm. (8)

Presupunând că în membrul stâng al simbolului de asertare a validităţii conectiva implicită este

, iar în membrul drept , teorema se poate rescrie sub forma:

F1, F2, …, Fn ╞ C1, C2…,Cm (9)

Algoritmul presupune ca formulele să fie în prealabil aduse la o formă echivalentă care să nu

conţină decât conectivele , şi . Eliminarea conectivelor şi se realizează ţinând cont de

următoarele echivalenţe logice:

FG FG, respectiv FG (FG) ( FG) (FG)(FG) (10)

Exemplu: Să se aducă la forma echivalentă formulele din următoarea teoremă:

ACD, A, BC, B ╞ D.

Soluţie: ACD ≈ (AC)D ≈ ACD; BC ≈ BC.

În final, teorema se poate scrie în forma echivalentă:

ACD, A, BC, B ╞ D.

Algoritmul lui WANG

1) Se aduce teorema la forma (9).

2) Se execută procedeul iterativ constând prin aplicarea repetată a uneia din operaţiile

descrise la punctele (2.1)-(2.3) până la îndeplinirea condiţiilor de oprire specificate la pasul 3.

2.1. Eliminarea negaţiilor:

Dacă într-unul din cei doi membri ai teoremei apare o formulă de formaF, atunci formula

respectivă se trece în membrul opus suprimându-se operatorul de negaţie.

F ╞ F.

2.2. Eliminarea conectivelor implicite:

a) Dacă în membrul stâng apare o formulă de forma F=F1F2, atunci operatorul este

suprimat şi se pune virgulă în locul acestuia.

F1F2 ╞ F1, F2.

b) Dacă în membrul drept apare o formulă de forma F=F1F2, atunci operatorul este

suprimat şi se pune virgulă în locul acestuia.

F1F2 ╞ F1, F2.

Inteligenţă Artificială Cap.3. Limbaje de ordinul I

28

2.3 Descompunerea teoremei:

a) Dacă în membrul stâng apare o formulă de forma F=F1F2, atunci teorema respectivă

se descompune în două subteoreme, fiecare dintre acestea conţinând în locul

termenului F=F1F2 câte unul din termenii disjuncţiei respective. A demonstra

teorema iniţială revine în a demonstra cele două subteoreme astfel generate.

b) Dacă în membrul stâng apare o formulă de forma F=F1F2, atunci teorema respectivă

se descompune în două subteoreme, fiecare dintre acestea conţinând în locul

termenului F=F1F2 câte unul din termenii conjuncţiei respective. A demonstra

teorema iniţială revine în a demonstra cele două subteoreme astfel generate.

3) Condiţii de oprire:

3.1) Dacă într-o teoremă (subteoremă) apare aceeaşi formulă F în ambii membri ai

simbolului ╞, atunci teorema este demonstrată.

3.2) Dacă nici una din transformările (2.1)-(2.3) nu mai este aplicabilă şi condiţia (3.1) ne

este satisfăcută, atunci “teorema” este infirmată (nu este de fapt o teoremă).

Exemplu:

Fie teorema (T): ACD, A, BC, B ╞ D.

Se descompune T în următoarele subteoreme:

(T1): A, A, BC, B ╞ D 1.2

A, BC, B ╞ D, A. (3.1)

(T2): C, A, BC, B ╞ D *

(T3): D, A, BC, B ╞ D . (3.1)

*

C, A, B, B ╞ D 1.2

C, A, B ╞ D, B. (3.1)

C, A, C, B ╞ D 1.2

A, B ╞ D, C. (3.1)

3.2.3. Demonstrarea teoremelor utilizând metoda deducţiei formale

Definiţia 8. Se numeşte regulă de inferenţă un procedeu prin care, pe baza asertării unor

formule F1, F2,…, Fn, se poate deduce (infera) o nouă formulă adevărată C. Se notează acest fapt

prin

F1, F2,…, Fn ├ C.

Regula este numită consistentă dacă generează doar acele formule care sunt o consecinţă

logică a formulelor {F1, F2,…, Fn}.

Precizări:

Pentru a emite judecăţi şi aprecieri asupra formulelor scrise în limbajul calculului propoziţional,

s-au folosit semnele metalingvistice "╞ " şi "├ ", a căror semnificaţie este explicată mai jos.

― Expresia "╞ A" semnifică faptul că formula A este validă, deci în tabela de adevăr se află numai

valoarea 1, indiferent de valorile de adevăr ale propoziţiilor atomice componente.

― Expresia "A╞ B" semnifică faptul că formula B este o consecinţă validă a formulei A, deci B va

avea valoarea 1 peste tot unde A are valoarea 1.

― Expresia "├ A" semnifică faptul că formula A este deductibilă, adică există o secvenţă finită de

formule astfel încât fiecare formulă este fie o axiomă, fie se deduce din două formule

precedente prin aplicarea regulei de inferenţă modus ponens (regulă asupra căreia vom reveni

ulterior), iar ultima formulă a secvenţei este A.

― Expresia "A├ B" semnifică faptul că formula B este deductibilă din formula A; deci, există o

Inteligenţă Artificială Cap.3. Limbaje de ordinul I

29

secvenţă finită de formule încheiată cu formula B. Fiecare formulă componentă (printre care se

găseşte şi A) poate fi o axiomă sau poate fi dedusă din două reguli precedente prin aplicarea

regulei modus ponens,

Cea mai cunoscută regulă de inferenţă este regula

A, A→B├ B,

cunoscută sub numele de modus ponens.

Similar, regula modus tolens afirmă că

A→B,B ├ A.

Există reguli de introducere sau eliminare a conectivelor logice. Astfel regula

A, B ├ AB

este cunoscută sub numele de -introducere, în timp ce regula:

AB ├ A şi AB ├ B

este denumită -eliminare.

Similar, regula:

AB ├ BA

este denumită “” eliminare.

Definiţia 9. Fie S={F1,F2,…, Fn} şi C o formulă. Se spune că C este deductibilă din S

dacă există un şir de formule C1, C2,…, Cm=C, a cărei ultimă formulă este C, iar celelalte

formule sunt axiome, formule din S sau sunt deduse din două formule anterioare utilizând regula

de inferenţă modus ponens.

Exemplul 1. Să se demonstreze teorema:

{ACB, BD, A, C} ├ D.

Demonstraţie.

A,C ├ AC. (-introducere)

AC, ACB├ B (modus ponens)

B, BD├ D. (modus ponens)

3.2.4. Principiul rezoluţiei

Definirea metodei de demonstrare utilizând principiul rezoluţiei necesită definire în prealabi l a unor

noţiuni suplimentare.

Def 1: Se numeşte literal un simbol propoziţional (literal pozitiv) sau negaţia acestuia (literal

negativ).

Def 2: Prin atom se înţelege o variabilă propoziţională.

Def 3: Se numeşte clauză este o disjuncţie de literali:

C=L1L2…Ln, Li C,

unde Li este un literal pozitiv sau un literal negativ.

Def 4: Se spune că o formulă F este scrisă în formă normală conjunctivă (FNC) sau în formă

clauzală, dacă aceasta este o conjuncţie de clauze:

F=C1C2…Cm, unde Ci , i=1,..,m, este o clauză.

Mulţimea clauzelor (formelor clauzale) ale calculului propoziţional se va nota cu C.

Def 5: Clauza fără nici un literal este denumită clauza vidă şi se notează cu “” sau “nil”. Prin

definiţie I()=0.

Def 6: Se numeşte formă normală disjunctivă (FND) o disjuncţie de formule de forma:

Inteligenţă Artificială Cap.3. Limbaje de ordinul I

30

L1L2…Ln.

Aplicând principiul rezoluţiei, teorema {F1, F2, …, Fn}╞ C, echivalentă cu F1F2…Fn ╞ C,

este demonstrată dacă mulţimea {F1, F2, …, Fn, C} este inconsistentă (principiul

deducţiei). Pentru ca metoda de derivare prin rezoluţie să poată fi aplicată, trebuie ca

formulele din mulţimea de mai sus (sau formula F1F2 …FnC) să fie adusă la forma

normal conjunctivă (FNC).

Propoziţia 9. Orice formulă FP poate fi rescrisă sub o formă clauzală echivalentă.

Demonstraţie. Aplicând următorul procedeu, orice formulă FP este scrisă sub forma

FCC şi în orice interpretare I(F)=I(FC), adică (FFC).

1) Se elimină conectiva , utilizând echivalenţa logică (10):

AB (AB)(AB).

2) Se elimină conectiva , utilizând echivalenţa logică (10):

AB AB.

3) Se aplică relaţiile lui De Morgen astfel încât fiecare operator de negaţie să fie aplicat

unui singur simbol propoziţional:

(AB) A B

(AB) B B

A A, () A, B P.

4) Se utilizează proprietăţile de distributivitate ale operatorilor şi pentru aducerea

formulei la formă clauzală:

A (BC) (AB)(AC) (FNC)

A (BC) (AB) (AC).

5) Se utilizează proprietăţile de idempotenţă, absorbţie etc. pentru simplificarea FNC

obţinute.

Procedeul de demonstrare a teoremelor utilizând metoda deducţiei este destul de simplu din

punct de vedere teoretic, dar este foarte dificil de implementat pe calculator. Dificultatea constă în

alegerea regulii de inferenţă aplicabilă la un anumit moment, astfel încât în final să se ajungă la

obţinerea scopului dorit. Având în vedere acest inconvenient, rezolvatoarele automate au la bază o

metodă de demonstrare a teoremelor bazată pe principiul rezoluţiei datorat lui J. A. Robinson.

Avantajul metodei rezoluţiei, în raport cu metodele de deducţie, constă în faptul că la demonstrarea

teoremelor se utilizează o singură regulă de inferenţă şi anume regula rezoluţiei definită prin:

aF, aG ├ FG , (11)

unde a este o variabilă propoziţională, iar F, G sunt clauze ale limbajului P. Formula FG poartă

denumirea de rezolvanta clauzelor aF şi aG. Două clauze de tipul celor din membrul stâng al

relaţiei de asertare a deductibilităţii (11) se numesc rezolubile.

Regula rezoluţiei poate fi demonstrată imediat: se constata cu uşurinţă că pentru orice interpretare I

pentru care I(aF)= I(aG)=1 avem fie I(F)=1 fie I(G)=1, deci I(FG)=1.

Propoziţia 10. Fie S o mulţime de clauze S = {F1, F2, …, Fn} şi R = rez(Fi, Fj) rezolvanta a două

clauze din mulţimea S. Forma normală conjunctivă S(F1F2 …Fn) este echivalentă cu

FCN desemnată prin S R(F1F2 …FnR).

Exemplu: Să se demonstreze regula modus ponens (caz particular al principiului rezoluţiei):

a, a b ├ b.

Inteligenţă Artificială Cap.3. Limbaje de ordinul I

31

a

a b

───────────

b

Def 7: Fie S = {F1, F2, …, Fn} o mulţime de clauze şi R o clauză. Se numeşte deducţie prin

rezoluţie sau derivare rezolutivă o secvenţă de clauze R1, R2, …, Rn=R cu proprietatea că

pentru orice i = 1..n, Ri este rezolvanta a două clauze, Ri = rez(Fi1, Fi2), unde FikS sau Fik=

Ri, j<i.

Propoziţia 11. O mulţime de cauze S = {F1, F2, …, Fn} este inconsistentă dacă şi numai dacă

clauza vidă poate fi obţinută prin rezoluţie liniară din mulţimea S.

Pentru demonstrarea teoremelor utilizând metoda rezoluţiei se porneşte de la rezultatul prezentat în

propoziţia 2 (principiul deducţiei) şi de la rezultatul exprimat prin următoarea propoziţie.

Teorema 1. (Teorema de consistenţă şi completitudine) O mulţime de clauze este

inconsistentă dacă si numai dacă din mulţimea respectivă se poate deriva prin rezoluţie clauza

vidă.

{F1,F2,…,Fn,C}rezolutie

nil.

Recapitulând, pentru a demonstra teorema exprimată prin rel. 6, {F1, F2, …, Fn}╞ C,

revine, conform principiului deducţiei, la a demonstra că mulţimea de clauze S, obţinută prin

scrierea sub formă clauzală a mulţimii de formule {F1,F2,…,Fn,C} este inconsistentă. În baza

teoremei 1, totul se reduce la derivarea clauzei vide din mulţimea S.

Se spune că o clauză este factorizată, dacă un acelaşi literal nu apare de două ori în contextul

clauzei respective. În baza proprietăţii de idempotenţă a operaţiei de disjuncţie, orice clauză se poate

simplifica prin scrierea o singură dată a tuturor literalilor care apar de mai multe ori în cadrul acesteia

(operaţie denumită factorizare). În caz contrar, algoritmul poate să cicleze în anumite cazuri

particulare.

Algoritmul de demonstrare utilizând regula rezoluţiei este prezentat în pseudocod mai

jos:

for all F in S do F:=factor(F); while ( în S două clauze rezolubile F1 şi F2) and (S) do

begin R:= rez(F1,F2); C:= factor(R); S:=S{C} end;

unde prin rez(F1,F2) s-a notat rezolvanta clauzelor F1 şi F2, iar factor(R) este clauza obţinută prin factorizarea clauzei R. Conform celor expuse mai sus, teorema este demonstrată dacă după, terminarea procesului iterativ ilustrat în algoritmul precedent, clauza vidă S. Exemplul 2: Să se demonstreze, utilizând metoda rezoluţiei, teorema ACD, A, BC, B ╞ D..

Rescriind formulele din mulţimea {ACB, BD, A, C, D} sub formă clauzală se obţine următoarea mulţime de clauze:

(C1) ACB

(C2) BD

(C3) A

(C4) C

(C5) D de unde procesul rezolutiv se poate desfăşura în felul următor:

Inteligenţă Artificială Cap.3. Limbaje de ordinul I

32

(C6) rez(C1,C3)= CB.

(C7) rez(C6,C2)= CD.

(C8) rez(C7,C4)= D.

(C9) rez(C8,C5)= . şi astfel teorema este demonstrată. În Prolog, demonstraţia poate fi efectuată astfel:

a. c. ?-d. b :- a, c. d :- b. yes

REZUMAT

Limbajul de calcul propoziţional are următoarele caracteristici principale:

1. Are rolul de a stabili validitatea (adevărat sau fals) unor afirmaţii într-un context dat.

2. Formulările în limbaj natural devin, în limbajul de calcul propoziţional, expresii simbolice în

care intervin simboluri (propoziţii elementare) şi conective logice: şi (), sau (), not (),

implicaţie (), echivalenţă ().

3. Există 3 categorii de metode pentru demonstrarea unei teoreme: a) metode semantice (directă

şi inversă), b) metode sintactice (algoritmul lui WANG), c) metoda deducţiei formale

(regulile de inferenţă, principiul rezoluţiei).

4. Principiul rezoluţiei utilizează o singură regulă de inferenţă şi anume regula rezoluţiei,

ceea ce permite implementarea ei în rezolvatoarele automate.

EXERCIŢII ŞI PROBLEME PROPUSE Exerciţiul 1. Să se arate că:

1. ab ≈ ab

2. (ab) ≈ ab

3. (ab) ≈ a b

4. ab ≈ (ab) (ba) ≈ (b a) ( a b)

Aplicaţie: a – dacă e soare; b – e frumos.

Exerciţiul 2. Să se demonstreze utilizând pe rând metodele 3.2.1, 3.2.2 şi 3.2.4 următoarele teoreme de bază ale calculului propoziţional:

i) ╞ A(BA)

ii) ╞ (AB) ((A(BC)) (AC))

iii) ╞ (A(AB))B

iv) ╞ A(BAB)

v) ╞ (AB)A

vi) ╞ (AB)B

vii) ╞ AAB

viii) ╞ BAB

ix) ╞ (AC)((BC)(ABC))

x) ╞ (AB)((AB)A)

Inteligenţă Artificială Cap.3. Limbaje de ordinul I

33

xi) ╞ AA

xii) ╞ (AB)((BA)(AB))

xiii) ╞ (AB)(AB)

xiv) ╞ (AB)(BA)

xv) ╞ (AB)(AB)

xvi) ╞ (AB)(AB)

Exerciţiul 3. Convertiţi următoarele formule în formă clauzală:

(a (bc)) d Răspuns: ad, b cd.

(a b) (c d) Răspuns: abc, abd, c da, c db.

( a b) (c d) Răspuns: ac, ad, bc, b d.

Exerciţiul 4. Să se demonstreze, aplicând principiul rezoluţiei, următoarele teoreme:

a, c, abc ╞ ab

a, ac, abc ╞ abc

b, ec, ed, ad, ab ╞ c

Problema 1:

Tom nu merge la biserică şi Hary nu merge la biserică este falsă. Dacă Alice nu merge la

biserică, atunci Hary nu merge la biserică. Dacă Tom merge la biserică, atunci Hary merge la

biserică.

Demonstraţi că Alice merge la biserică.

a – Alice merge la biserică; b – Tom merge la biserică; c – Hary merge la biserică.

( b c), a c, bc ╞ a.

Problema 2:

Celebrul explorator, antropolog, etnograf, muzicolog, botanist, optician şi inventator Max

de Wax a studiat un timp obiceiurile bărbaţilor de pe o mică şi uitată insulă din oceanul Pacific.

Iată sinteza însemnărilor sale:

1. Toţi ce care cunosc vechea limbă a acestei populaţii poartă ochelari.

2. Nici un filatelist nu are nepoţi.

3. Toţi cei ce frecventează unicul club de pe insulă sunt stângaci.

4. Nici unul dintre insularii care nu ştie să înoate nu cultivă trandafiri.

5. Toţi cei ce nu au nepoţi cântă la cimpoi.

6. Toţi cei ce poartă haine cadrilate frecventează clubul.

7. Numai filateliştii nu vorbesc vechea limbă a acestei populaţii.

8. Nici un stângaci nu cântă la cimpoi.

9. Toţi cei care ştiu să înoate poartă haine cadrilate.

Întorcându-se acasă, Max şi-a amintit că a omis un lucru foarte important: nu a stabilit ce

legătură există între purtatul ochelarilor şi cultivarea trandafirilor. A vrut să se întoarcă pe insulă,

dar, cercetându-şi cu atenţie notiţele, şi-a dat seama că cei care cultivă trandafiri poartă

ochelari.

Demonstraţi concluzia lui Max de Wax, utilizând principiul rezoluţiei.

Inteligenţă Artificială Cap.3. Limbaje de ordinul I

34

P1– cunosc vechea limbă P6– este stângaci

P2– poară ochelari P7– ştie să înoate

P3– este filatelist P8– cultivă trandafiri

P4– are nepoţi P9– cântă la cimpoi

P5– frecventează clubul P10– poartă haine cadrilate

1. P1 P2 6. P10 P5

1. P3 P4 7. P1 P3

2. P5 P6 8. P6 P9

3. P7 P8 9. P7 P10

4. P4 P9 Concluzie: P8 P2

TEST DE AUTOEVALUARE

1. Regula de inferenţă, denumită

modus ponens, se exprimă prin:

a. AB├ AB

b. A, AB├ B

c. AB, B├ A

2. Se numeşte clauză:

a. O regulă de inferenţă.

b. O disjuncţie de literari.

c. Un atom.

3. Regula rezoluţiei este definită prin:

a. AC, AB ├ CB

b. AC, AB ├ CB

c. AB, AC ├ BC

4. O mulţime de clauze S={F1, F2,…,

Fn} este inconsistenta dacă:

a. S nu este rezolutiva.

b. Dacă şi numai dacă clauza

vida poate fi obţinută din

mulţimea S.

c. Dacă S se poate factoriza.

5. Regula modus tolens afirma ca:

a. A, A |- .

b. = (.

c. , |- .

6. Să se precizeze care dintre

următoarele echivalenţe logice este

adevărată:

a. ab ≈ ab.

b. ab ≈ a b.

c. ab ≈ a b.

7. O formulă F este scrisă în forma

normala conjuctivă dacă aceasta

este:

a. Clauza vida.

b. Conjucţie de clauze.

c. Regula modus tolens.

8. Proprietatea de distributivitate a

operatorului este:

a. C = C.

b. C = C.

c. C = C.

9. Pentru demonstrarea teoremelor in

limbaj de calcul propoziţional se

poate utiliza o singură regulă de

inferenţă şi anume:

a. Regula silogismului.

b. Regula rezoluţiei .

c. Regula modus ponens.

10. Dacă un acelaşi literal nu apare de

două ori în contextul clauzei

respective se spune că aceasta este:

a. Rezolutibilă.

b. O instanţă.

c. Factorizată.

Răspuns

1. b 6. a

2. b 7. b

3. c 8. a

4. b 9. b

5. c 10.c

Inteligenţa Artificială Cap. 4. Structuri şi strategii de căutare

35

Structuri şi strategii de căutare în spaţiul de stări

Obiective 1. Însuşirea noţiunilor de bază privind reprezentarea problemelor de inteligenţă artificială ca

structuri de stări şi rezolvarea acestora cu ajutorul metodelor de că utare.

2. Formarea deprinderilor de reprezentare corectă şi eficientă a problemelor de inteligenţă

artificială în spaţiul de stări.

3. Dezvoltarea abilităţilor practice de operare cu strategiile inteligente de rezolvare prin

metode de căutare în structuri arborescente (grafuri, în general).

Durata: 2 ore

4.1. Inteligenţa artificială ca reprezentare şi căutare

În lucrarea “ACM Turing Award Lecture”, Newell şi Simon (1976) demonstrează că activitatea

inteligentă, umană sau artificială, se realizată prin intermediul:

1. Simbolurilor pentru reprezentarea aspectelor semnificative din domeniul problemei;

2. Operaţii pe aceste simboluri pentru generarea unor potenţiale soluţii ale problemei;

3. Căutarea în vederea selectării unei soluţii dintre aceste posibilităţi.

Cu alte cuvinte, trebuie definită o reprezentare simbolică a obiectelor din domeniul

aplicaţiei şi trebuie definiţi nişte operatori prin care se poate modifica această reprezentare.

Rezolvarea unei probleme de către o “maşină gânditoare” presupune reprezentarea

cunoştinţelor şi căutarea soluţiei, cele două principii fiind într-o interdependenţă reciprocă.

4.1.1. Reprezentarea cunoştinţelor

Înainte ca un calculator să poată începe soluţionarea unei probleme, trebuie ca detaliile

problemei respective să fie reprezentate şi codificate într-un limbaj înţeles de calculator.

Programatorul de inteligenţă artificială trebuie să abstractizeze aceste detalii şi să introducă în

calculator numai acele date indispensabile rezolvării problemei.

4.1.2 Căutarea

Un al doilea aspect subliniat de Newell şi Simon este acela că o problemă este soluţionată

prin căutarea soluţiei printre nişte alternative posibile. Acest aspect este susţinut de analogia cu

gândirea umană. Omul utilizează de asemenea un număr de strategii în modul lui de a rezolva o

problemă. De exemplu, un jucător de şah analizează un anumit număr de mişcări viitoare,

alegând mişcarea în funcţie de un criteriu de eficienţă, astfel ales încât să-i asigure un avantaj

maxim. Un matematician alege dintre diferite strategii, nu mai puţin complexe, pe acelea care-i

permit demonstrarea unei teoreme complexe; un fizician poate investiga un anumit număr de

Cap. 4.

Inteligenţa Artificială Cap. 4. Structuri şi strategii de căutare

36

cauze posibile ale unui anumit fenomen ş.a.m.d. Acest aspect al inteligenţei conturează aşa

numita tehnica de rezolvare prin căutare în spaţiul de stări.

Prin stare se înţelege o anumită configuraţie a problemei investigate. De exemplu, în jocul

de şah o stare este o anumită poziţie de pe tabla de şah. În calculator, o poziţie este reprezentată

printr-o aşa numită bază de date, bază a cărei complexitate depinde de natura problemei

abordate, mergând de la câteva numere până la o bază de date relaţională. În procesul de

rezolvare a unei probleme, omul sau maşina poate utiliza anumite reguli, poate aplica anumite

procedee sau artificii sau, în cazul jocurilor, poate efectua anumite mutări. De exemplu, în jocul

de şah poate efectua oricare din mutările posibile. Aceste reguli, procedee sau mutări vor

produce modificări asupra bazei de date, aceasta reflectând starea curentă a problemei.

Totalitatea acestor stări vor constitui un spaţiu pe care-l vom denumi spaţiul de stări. Dintre

acestea, vom deosebi o stare denumită stare iniţială reflectând datele iniţiale ale problemei. De

asemenea, stările ce constituie soluţii posibile ale problemei vor fi denumite stări finale.

Grafurile constituie un instrument practic şi eficient de reprezentare a obiectelor şi a

relaţiilor dintre acestea. Teoria grafurilor a fost introdusă la începutul secolului al XVIII-lea de

matematicianul austriac Leonhard Euler în vederea soluţionării celebrei probleme cunoscută sub

numele de “podurile din Königsberg”.

Grafurile oferă un instrument ideal de reprezentare al spaţiului de stări al unei probleme.

Astfel, nodurile vor reprezenta stările distincte ale problemei, iar arcele regulile, operaţiile sau

mutările efectuate în procesul de rezolvare al problemei. La un astfel de graf deosebim un nod

corespunzător stării iniţiale, nod ce va constitui rădăcina grafului. De asemenea, graful va

conţine cel puţin un nod care va constitui starea finală sau soluţia problemei (evident, în ipoteza

că problema are soluţie). Acest astfel de nod este denumit nod final sau goal.

Utilizând grafurile pentru reprezentarea spaţiului de stări, rezolvarea problemei se reduce la

căutarea în graful asociat a unui drum de la nodul iniţial la unul din nodurile finale.

O implementare eficientă a unui algoritm de căutare cere programatorului să analizeze şi să

prevadă comportarea algoritmului, acesta fiind confruntat cu următoarele probleme:

conduce algoritmul respectiv la o soluţie?

algoritmul conduce la o soluţie într-un număr finit (rezonabil) de paşi sau poate intra

într-un ciclu infinit?

dacă o soluţie este găsită este aceasta optimă?

cât de amplu este procesul de căutare în termenii timpului de calcul consumat şi al

memoriei afectate?

Exemplul 1. Este foarte cunoscut aşa numitul joc 15-Puzzle constituit din 15 jetoane pătrate

numerotate de la 1 la 15 dispuse într-un chenar, jucat de majoritatea copiilor. Fie, pentru

simplitatea reprezentării, un joc 8-puzzle:

1 2 3

8 4

7 6 5

Inteligenţa Artificială Cap. 4. Structuri şi strategii de căutare

37

Câteva aspecte interesante privitoare la procesul de rezolvare a problemelor pot fi

evidenţiate pe acest joc.

Deşi mişcările fizice sunt efectuate prin mutarea micilor jetoane numerotate de la 1 la 8, este

mult mai simplu să ne imaginăm că mutăm spaţiul liber reprezentat prin pătrăţelul negru. Astfel,

următoarele mutări sunt permise:

mutarea pătrăţelului negru în sus

mutarea pătrăţelului negru la dreapta

mutarea pătrăţelului negru în jos

mutarea pătrăţelului negru la stânga

Pentru a aplica aceste mutări, trebuie avut grijă ca pătrăţelul negru să nu părăsească tabla de

joc. Prin urmare, nu toate dintre cele patru mutări sunt aplicabile la un moment dat. De exemplu,

când pătrăţelul negru este într-unul din colţuri numai două din mişcări sunt posibile.

Dacă se specifică o stare iniţială şi una finală, se poate reprezenta graful de căutare propriu

problemei propuse. Stările se pot reprezenta ca tablouri 33. Utilizând calculul predicatelor, o

stare, sau baza de date curentă se poate reprezenta printr-un predicat “stare” conţinând 9

argumente. De exemplu, starea iniţială poate fi reprezentată utilizând predicatul:

stare(1,4,3,7,0,6,5,8,2) unde s-a notat cu 0 pătrăţelul negru.

Patru proceduri, definind cele patru mişcări posibile vor defini arcele grafului de

reprezentare a spaţiului de stări. Ca şi în cazul precedent, multe stări pot avea diferiţi

descendenţi, prin urmare digraful asociat nu este o arborescenţă. Un drum de la starea iniţială la

starea finală în digraful astfel generat nu reprezintă altceva decât strategia sau secvenţa de

mişcări care conduce la rezolvarea problemei.

1 3

7 4 6

5 8 2

4 3

1 7 6

5 8 2

1 4 3

5 7 6

8 2

1 4 3

7 8 6

5 2

1 4 3

7 8 6

5 2

1 4

7 6 3

5 8 2

1 4 3

7 6 2

5 8

1 3

7 4 6

5 8 2

1 3

7 4 6

5 8 2

1 4 3

7 6

5 8 2

1 4 3

7 8 6

5 2

1 4 3

7 6

5 8 2

1 4 3

7 6

5 8 2

up left down right

left right up down left right up down

Fig. 1. Spaţiul de stări în cazul unui 8-puzzle

Inteligenţa Artificială Cap. 4. Structuri şi strategii de căutare

38

Trebuie de remarcat că în acest caz digraful generat nu mai este aciclic, o anumită

configuraţie a dispunerii celor 8 numere putându-se repeta în cadrul jocului. Dar, dacă în graful

generat există un drum de la starea iniţială la cea de goal atunci există sigur şi un drum elementar

între cele două stări. Explorând numai drumurile elementare riscul ca algoritmul de căutare să

“pice” într-un ciclu infinit este exclus.

4.2. Strategii de căutare

Clasificarea algoritmilor de căutare

1. Direcţia de căutare

– căutare directă („forward chaining”, „data driven”): se porneşte de la starea iniţială

şi se identifică drumul către starea finală.

– căutare inversă („forward chaining”): se porneşte de la goal şi ajunge în starea

iniţială.

– căutare mixtă: căutare în ambele direcţii.

2. Spaţiul de căutare

– căutare completă (exhaustivă), pe întreaga mulţime S.

– căutare incompletă, pe o mulţime S ’ S. Este cercetat numai un subspaţiu al

mulţimii S („hill climbing”, „beam search”).

3. Strategia de căutare

– irevocabilă (fără revenire, metode de gradient).

– cu revenire sau backtracking.

4. Exploatarea informaţiei stocate în starea curentă (informativitate)

– căutare oarbă sau neordonată „blind search”).

– căutare euristică (informată), estimează distanţa de la starea curentă la soluţie în

vederea selectării celui mai promiţător descendent.

4.2.1. Algoritmi de căutare exhaustivă

Căutarea pe întreg spaţiul de stări poate fi implementată cu ajutorul a doi algoritmi

reprezentativi:

1. Depth First (căutare în adâncime);

2. Breadth First (căutare pe nivel).

În implementarea celor două metode de căutare se utilizează două liste:

– Lista Open conţine stările care urmează a fi expandate (explodate, cercetate);

– Lista Close conţine stările care au fost deja cercetate.

Elementele acestor liste sunt de forma (s, p): s – stare curentă, p –starea părinte.

Inteligenţa Artificială Cap. 4. Structuri şi strategii de căutare

39

4.2.1.1. Algoritmul Depth-First (căutare în adâncime)

procedure DepthFirst

begin

Open [(s0¸ nil)];

Close [ ];

while Open [ ] do

begin

extract ((s, p), Open) {Extrage primul element al listei Open}

insert ((s, p), Close) {inserează primul element în lista Close}

if goal (s) then begin

compune_solutia; exit/continue;

end;

D {d S | dst

, t T}

for d in D do

if ((d, _) Open) ((d, _) Close) then insert ((d,s), Open);

{Se inserează (d,s) la începutul listei Open);

end;

writeln(‘Problema nu are soluţie’)

end;

Dezavantajele căutării de tip Depth First:

nu găseşte în general soluţia optimă;

algoritmul se poate pierde în explorarea unor ramuri foarte lungi, programul putând fi

întrerupt datorită depăşirii resurselor de memorie.

s0

s1 s2 s3

s4 s5 s6

s7 s8 s9

Breadth First

s0

s1 s8 s9

s2 s6 s7

s3 s4 s5

Depth First

Lista Close

Lista Open

Algoritmul Depth First Algoritmul Breadth First

Lista Close

Lista Open

Inteligenţa Artificială Cap. 4. Structuri şi strategii de căutare

40

Exemplu: Să se descrie evoluţia listelor Open şi Close în problema de căutare reprezentată mai

jos prin algoritmul Depth First.

1

2 5 9

3 4 6 10 11

7 8

a

b

c d

e

f

g h

i

j k

goal

Rezolvare

Open =[ a], Close =[ ]

1. Open =[ ], x = a

D(x) =b, e, i;

Close =[ a], Open =[ b, e, i],

2. x = b, Open =[ e, i],

Dx=c, d;

Close =[ a, b], Open =[ c, d, e, i],

3. x = c, Open =[ d, e, i], Close =[ a, b, c],

4. x = d, Open =[ e, i], Close =[ a, b, c, d],

5. x = e, Open =[ i], Close =[ a, b, c, d, e],

D(x)= d, f; % d nu se mai examinează

Open =[ f, i],

6. x = f, Open =[i], Close =[a, b, c, d, e, f],

D(x) = g, h; Open =[ g, h, i],

7. x = g, Open =[h, i], Close =[ a, b, c,

d, e, f, g].

În lista Close se regăsesc perechile (S,

P) – (Stare, Părinte)

(b, a), (c, b), (d, b), (e, a), (i, a), (f, e),

(g, f).

Soluţia problemei: aefg.

D(x) – mulţimea descendenţilor stării x

4.2.1.2. Algoritmul Breadth-First (căutare pe nivel)

Dacă algoritmul Depth First implementează o strategie de tip stivă (LIFO), algoritmul

Breadth First are la bază o strategie de tip coadă (FIFO).

Algoritmul Breadth-First este simular cu cel prezentat la metoda Depth First, cu diferenţa că

starea (d,s) se inserează la sfârşitul listei Open şi nu la începutul acesteia (v. fig. de mai jos).

Avantaj: găseşte soluţia de lungime minimă.

0

1 2 3

4 5 6 7 8 9 10 11 12

13 14

s

s

d1 d2 d3

Close

Open

Inteligenţa Artificială Cap. 4. Structuri şi strategii de căutare

41

Dezavantaj: resursele de memorie necesare sunt foarte mari, acestea crescând exponenţial

cu nivelul de adâncime explorat.

4.2.2. Algoritmi de căutare euristică

George Polya asocia termenul „euristic” semnificaţia de studiu al metodelor şi regulilor

descoperirii şi inventicii. În dicţionarul limbii române contemporane euristic = adjectiv al

procedeelor metodologice cu semnificaţia care serveşte la descoperirea unor soluţii noi .

Lenat (1982): prin euristică se defineşte acel tip de cunoaştere având caracterul de

raţionament bazat pe experienţă, specializare, generalizare şi analogie cu ajutorul căruia se

efectuează o interpretare, se ia o decizie sau se acţionează în vederea atingerii unui obiectiv.

Euristic = euristico = a descoperi <<EUREKA>>

În IA, căutarea euristică se utilizează în 2 sisteme de bază:

1. Problema nu are soluţie exactă datorită inerentelor ambiguităţi din datele problemei. Un

diagnostic medical poate fi un exemplu în acest sens: aceleaşi simptome pot avea la bază mai

multe cauze. Un medic utilizează o euristică pentru stabilirea celui mai probabil diagnostic.

2. Problema are o soluţie exactă, dar resursele necesare determinării acesteia pot fi inaccesibile

sau insurmontabile. Ex: jocul de şah are 10120

stări.

Fie S – spaţiul stărilor şi f : S + (N ) denumită euristică care face o evaluare a stărilor

având sS, f(s) desemnând şansa sau probabilitatea ca s să se găsească pe drumul cel mai scurt

spre soluţia problemei.

Funcţia f se mai numeşte şi funcţie cost sau lungime. O stare este cu atât mai bună cu cât f

este mai mic. Se calculează min f(di) pentru 1 i k, adică se alege descendentul de la care

costul determinării soluţiei este cel mai mic. Se spune că descendentul dmin are şanse mai mari

sau se găseşte cu o probabilitate mai mare pe drumul optim de la starea s la soluţia problemei.

Atunci când spaţiul stărilor este foarte mare, acesta nu poate fi memorat sau parcurs într-un

timp rezonabil.

Căutarea euristică este incompletă, dar informaţională. Având în vedere caracterul incomplet

al căutării, un algoritm de căutare euristică poate conduce la o soluţie suboptimală sau poate

chiar eşua, în sensul că nu poate determina o soluţie. Cu toate acestea, în multe situaţii căutarea

euristică constituie singurul mod de rezolvare a unei mod a unei probleme.

Căutarea euristică poate fi:

completă sau incompletă. Cele incomplete pot fi cu 1 descendent (Hill Climbing) sau

cu câţiva (cei mai buni – Beam search);

cu revenire sau fără revenire (Hill Climbing).

d1

s

d2 dk d1

s

d2 dk dj

f(dj)=min f(d)

Algoritmul Hill Climbing Algoritmul Beam search

decendenţii cu valorile f minimale

Exemplul 1: TIC–TAC–TOE

Se consideră că maşina (calculatorul) joacă prima (cu simbolul ×), iar jucătorul cu caracterul

o. Euristica se defineşte astfel: unei stări oarecare i se atribuie ca valoare euristică numărul

Inteligenţa Artificială Cap. 4. Structuri şi strategii de căutare

42

posibilelor combinaţii (linii+coloane+diagonale) câştigătoare ale calculatorului, deci numărul

liniilor/coloanelor/diagonalelor care conţin × şi nu conţin simbolul o.

o

×

×

o

×

×

o

×

×

o

×

×

o

× ×

o

×

×

× o

×

o

× ×

o

×

o

×

×

Maşina

Jucatorul A

3 4 4 5 5 4 4 4

Exemplul 2: 8 puzzle

h1(s) – numărul jetoanelor care nu se găsesc pe poziţia corectă.

h2(s) – suma deplasărilor

jetoanelor spre poziţia corectă.

h1(s) = 8.

h2(s) = 1+1+3+3+1+1+3+3= 16.

4.2.2.1. Algoritmul „Hill climbing”

A fost propus şi aplicat de Pearl în 1984. Este un algoritm fără revenire şi cu o strategie

incompletă. Este aplicabil în probleme de optimizare utilizând metoda gradientului.

Se urmăreşte optimizarea funcţiei f(x1, x2,..., xn), în sensul determinării max f, şi fie vectorul

soluţie Xk la pasul k ,

112

1121 ,,,,,, k

nkkk

nkk xxxxxx 1kk

XX .

Soluţia la pasul k+1 se stabileşte astfel:

kn

kk

i

xxxx

f,,, 21

k1k

XX .

În acest mod, mergând pe gradient, se asigură traseul către valoarea de max (local sau

global) a funcţiei f.

Căutare oarbă: căţărătorul este nerăbdător şi orb. Se alege panta cea mai abruptă până când

se ajunge la un punct de la care nu se mai poate continua: s-a atins soluţia sau s-a ajuns la un

maxim local. Căutarea poate să eşueze. Samuel Pearl a utilizat cu succes acest algoritm în

implementarea jocului de dame.

4.2.2.2. Algoritmul „Beam search”

Este un algoritm cu revenire (backtracking), cu căutare incompletă. Din mulţimea

succesorilor se reţin numai aceia cu şanse maxime (şi relativ apropiate) de a figura pe drumul

optim.

1 2 3

4 5 6

7 8

Starea s 8 1 6

3 2 7

5 4

Inteligenţa Artificială Cap. 4. Structuri şi strategii de căutare

43

4.2.2.3. Algoritmul BEST FIRST (cu revenire)

Acest algoritm se obţine din algoritmul Depth First cu

amendamentul că descendenţii stării curente sunt ordonaţi

crescător, prin funcţia de evaluare, înainte ca aceştia să fie

depuşi la începutul listei Open.

Euristica f este concepută în modul următor:

f(s) = g(s) + h(s),

g(s) – adâncimea stării s;

h(s) – estimare euristică a lungimii (costului) soluţiei

pornind de la starea s.

procedure BestFirstSearch

begin

Open := [(s¸ nil, 0, h(s)]; Close := [ ];

while Open [ ] do

begin

extract ((s, p, g, h), Open)

insert ((s, p, g, h), Close)

if goal (s) then begin

compune_solutia (Close); exit;

end;

D:={d S | dst

, t T}

for d in D do

begin

gc := g + Cost(t); fc := gc + h(d);

end;

case d of

(d, _, _, _)Open Close: insert ((d, s, gc, fc), Open);

(d, pe, ge, fe)Open:

if fc<fe then

begin

remove ((d, pe, ge, fe), Open);

insert ((d, pc, gc, fc), Open);

end;

(d, pe, ge, fe)Close:

if fc<fe then

begin

remove ((d, pe, ge, fe), Close);

insert ((d, pc, gc, fc), Open);

end;

end; {case}

Ordonează(Open); { f minimal pe prima poziţie}

end; {while}

writeln(‘Problema nu are soluţie’)

end;

s

s

d1 d2 d3

Close

Ordonare

Inteligenţa Artificială Cap. 4. Structuri şi strategii de căutare

44

Exemplul 1: Căutare într-un spaţiu cu obstacole

Euristica: f(s) = f(x, y) = |xg–x| + |yg–y|. f(s) = 5

Exemplul 2: 8 puzzle

h(s) – numărul pieselor care nu se găsesc în poziţia corectă (fără a include spaţiul liber);

Funcţia de evaluare va fi de forma f(s) = g(s) + h(s):

g(s) – adâncimea sau costul cu care a fost generată starea s;

h(s) – estimare euristică a costului soluţiei pornind din starea s.

2 8 3

1 6 4

7 5

Starea curentă

1 2 3

8 4

7 6 5

Starea finală (goal)

2 8 3

1 6 4

7 5

2 8 3

1 4

7 6 5

2 8 3

1 6 4

7 5

g = 1

h = 3

f = 4 h = 5

f = 6

h = 5

f = 6

2 8 3

1 4

7 6 5

2 3

1 8 4

7 6 5

2 8 3

1 4

7 6 5

g = 2

h = 3

f = 5 h = 4

f = 6

h = 3

f = 5

2 3

1 8 4

7 6 5

2 3

1 8 4

7 6 5

g = 3

h = 2

f = 5

h = 4

f = 7

Operatori

s

g

a

b

c

d

e f i

j

k

l h

m p r

i 3 6 9

j 3 4 7

k 3 6 9

l 3 4 7

m 4 3 7

n 5 4 9

p 5 2 7

r 6 1 7

q 6 2 8

g 7 0 7

g h f

s 0 5 5

a 1 4 5

b 1 4 5

c 1 6 7

d 1 6 7

e 2 3 5

f 2 5 7

h 2 5 7

n

q

Inteligenţa Artificială Cap. 4. Structuri şi strategii de căutare

45

1

2 5 9

3 4 6 10 11

7 8

a

b

c d

e

f

g h

i

j k

goal

REZUMAT

1. Rezolvarea unei probleme de către o “maşină gânditoare” presupune reprezentarea

cunoştinţelor şi căutarea soluţiei.

2. Tehnica de rezolvare prin căutare în spaţiul de stări presupune reprezentarea simbolică a

obiectelor din domeniul aplicaţiei (definirea parametrilor de stare) şi definirea unor

operatori prin care se poate modifica această reprezentare (funcţii generatoare de stări).

3. Spaţiul de stări asociat unei probleme este frecvent reprezentat sub formă arborescentă.

4. Căutarea soluţiei se poate realiza prin mai multe tehnici (algoritmi): exhaustivă (în

adâncime, pe nivel), cu evaluare euristică (de ex., Best First), cu sau fără revenire.

PROBLEME PROPUSE

Problema 1: Utilizând metodele a) Depth First; b) algoritmul Breadth First şi c) Best First, să se

găsească drumul de la Start la Goal în labirintul din figura de mai jos.

12

10 11 1

9 2 3 4

8 7 6 5

Ordinea operatorilor:

Problema 2:

Să se descrie evoluţia listelor

Open şi Close în problema de căutare reprezentată

mai jos, prin algoritmul Breadth First.

Start Goal

Inteligenţa Artificială Cap. 4. Structuri şi strategii de căutare

46

TEST DE AUTOEVALUARE

1. Prin stare înţelegem:

a. Un instrument practic şi eficient

de reprezentare a obiectelor.

b. O anumită configuraţie a

problemei investigate.

c. Reprezentarea cunoştinţelor şi

căutarea soluţiei.

2. Spaţiul de stări reprezintă:

a. Totalitatea regulilor, procedeelor

sau mutărilor care produc

modificări asupra bazei de date.

b. Totalitatea grafurilor.

c. Totalitatea stărilor din domeniul

problemei.

3. Estimarea distanţei de la starea curentă

la soluţie, în vederea selectării celui

mai promiţător descendent, se

realizează prin:

a. Căutare completă.

b. Căutare euristică.

c. Căutare neordonată.

4. Depth First reprezintă un algoritm de:

a. Căutare pe nivel.

b. Căutare fără revenire.

c. Căutare în adâncime.

5. La implementarea algoritmilor Depth

First şi Breadth First, lista Close

conţine:

a. Stările care au fost cercetate.

b. Stările iniţiale şi finale.

c. Totalitatea stărilor posibile.

6. Algoritmul Beam Search prezintă:

a. Căutări euristice incomplete cu un

descendent.

b. Căutări euristice incomplete cu

câţiva descendenţi.

c. Căutări euristice complete.

7. Lista Open conţine:

a. Stările care au fost cercetate.

b. Stările ce urmează a fi cercetate.

c. Stările ce nu vor fi cercetate.

8. Best First reprezintă un algoritm cu

evaluare euristică a descendenţilor de

tip:

a. Căutare in adâncime.

b. Căutare pe nivel.

c. Căutare fără revenire.

9. Breadth First reprezintă un algoritm

de:

a. Căutare in adâncime.

b. Căutare pe nivel.

c. Căutare cu revenire sau

backtracking.

10. Algoritmul Hill Climbing realizează:

a. Căutări euristice incomplete cu un

descendent .

b. Căutări euristice complete.

c. Căutări euristice incomplete cu

câţiva descendenţi.

Răspuns

1. b 3. b 5. a 7. b 9. b

2. c 4. c 6. b 8. a 10. a.

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

47

Sisteme de Producţie

Obiective

1. Însuşirea noţiunilor de bază privind reprezentarea problemelor de inteligenţă artificială ca

sisteme de producţii şi rezolvarea acestora.

2. Formarea deprinderilor de reprezentare corectă şi eficientă a problemelor de inteligenţă

artificială prin stări şi producţii.

3. Dezvoltarea abilităţilor practice de operare cu raţionamentele specifice sistemelor de

producţii.

Durata: 2 ore

5.1. Definiţia sistemelor de producţii

În 1972, Newell şi Simon prezintă un model al raţionamentului uman, fiind precursorii

uneia dintre paradigmele de bază ale inteligenţei artificiale, şi anume sistemele de producţie.

Un sistem de producţii este un model matematic având o importanţă particulară în

inteligenţa artificială, atât pentru implementarea algoritmilor de căutare cât şi pentru modelarea

rezolvării umane a problemelor.

După definiţia dată de Brownston (1985), un sistem de producţii constă din:

1. O mulţime finită de reguli de producţie, denumită baza de reguli. Aceste reguli sunt

numite simplu producţii. O producţie este o pereche ordonată (condiţie, acţiune), adeseori notată

condiţie -> acţiune,

a cărei interpretare este următoarea:

Dacă condiţie este îndeplinită ATUNCI se poate executa acţiune.

Partea din regulă, care conţine condiţia, specifică acele criterii care trebuie să fie îndeplinite

pentru ca regula să fie aplicată, deci ca acţiunea pe care aceasta o menţionează să aibă loc.

2. Memoria de lucru (working memory) conţinând piese de cunoaştere (declarativă sau

factuală), memorate nerestrictiv într-o colecţie denumită context. Contextul reprezintă starea

curentă a procesului de rezolvare a unei probleme. La debutul acestui proces, contextul este

iniţializat cu datele iniţiale ale problemei. Dacă condiţia unei reguli este satisfăcută de piesele de

cunoaştere din context, se spune că regula respectivă este aplicabilă. Mulţimea regulilor aplicabile

poartă denumirea de mulţime conflictuală.

3. Strategia de control sau ciclul de corespondenţa (sau recunoaştere, selecţie) şi acţiune,

înţelegând prin acesta algoritmul care face posibilă funcţionarea sistemului de producţii, algoritm

care constă, de obicei, din următorii paşi :

Corespondenţa (selecţia). Sunt selecţionate toate regulile din baza de producţii pentru care

s-au găsit piese de cunoaştere în contextul actual al problemei care satisfac partea de condiţie

(condiţia poate fi unificată cu o clauză din contextul problemei). Mulţimea acestor reguli astfel

selectate se numeşte mulţime conflictuală deoarece regulile acestei mulţimi intră într-o competiţie

din care una singură va fi declanşată.

Cap. 5.

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

48

Rezolvarea conflictului. Dacă prin procesul de corespondenţă se obţin mai multe reguli

aplicabile, atunci se elimină mai întâi acele reguli care produc replici ale unor simboluri (elemente)

deja existente în context (astfel se evită ciclurile), iar apoi regulile rămase se ordonează potrivit

unor strategii de rezolvare a conflictelor de prioritate şi, astfel, se selectează regula care va fi

declanşată. Rezolvarea conflictului se poate face simplu prin selectarea primei reguli aplicabile

care nu produce un ciclu sau prin utilizarea unei funcţii euristice.

Acţiunea. Se execută partea de acţiune a regulii declanşate. Dacă nu există producţii

(reguli) aplicabile (mulţimea conflictuală e vidă), sistemul de producţie se opreşte. Evident,

execuţia unei astfel de reguli va modifica corespunzător contextul problemei.

Reluarea ciclului. Se resetează toate producţiile selectate (mulţimea conflictuală) şi se reia

ciclul de la faza de corespondenţă folosindu-se contextul modificat în ciclul anterior. Dacă un ciclu

nu produce acţiuni, sistemul se opreşte. Oprirea mecanismului interpretativ poate avea loc şi ca

urmare a executării unei producţii la care partea de acţiune specifică oprirea.

Un sistem de producţie, simplist implementat, nu este prevăzut cu o strategie de revenire

(backtracking) din aşa numitele situaţii "dead-end". De aceea, utilizarea sistemelor de producţii la

implementarea unor algoritmi de rezolvare a problemelor trebuie făcută în conexiune cu utilizarea

unor algoritmi de căutare "depth-first", "breadth-first" sau, mult mai elegant, "best-first", strategia

de rezolvare a conflictului fiind "euristica" pentru implementarea acestuia din urmă.

Exemplu. Funcţionarea unui sistem de producţii poate fi uşor ilustrată făcând apel la un

exemplu simplu şi anume rearanjarea în ordine alfabetică a simbolurilor unui şir de caractere .

Producţii:

1. ba -> ab

2. ca -> ac

3. cb -> bc

Şirul (contextul) iniţial: cbaca

Iteraţia Context Mulţimea

conflictuală

Regula

declanşată

0 cbaca 1,2,3 1

1 cabca 2 2

2 acbca 2,3 2

3 acbac 1,3 1

4 acabc 2 2

5 aacbc 3 3

6 aabcc Φ Halt

Trasarea algoritmului de rearanjarea a caracterelor şirului iniţial este ilustrată în tabelul de

mai sus.

Ideea utilizării producţiilor aparţine aparţine lui Post (1943), care a propus un model bazat

pe reguli de producţie ca o teorie formală a calculului. Ideea are la bază formalismul gramaticilor

generative introduse de N. Chomsky, în special gramaticile contextuale. Aplicaţii interesante ale

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

49

sistemelor de producţie apar în lucrările lui Newell şi Simon de la Carnegie Institute of

Technology. De asemenea, ideea sistemelor de producţii stă la baza algoritmilor Markov şi a

maşinilor Turing.

Pentru familiarizarea cu acest concept, de o importanţă majoră în inteligenţa artificială, sunt

prezentate în continuare două exemple.

Exemplul 5-1. Spaţiul de stări generat de un 8-puzzle este destul de complex pentru a

prezenta interes, astfel încât acesta este un exemplu frecvent utilizat în inteligenţa artificială. În

cele ce urmează este prezentată soluţia acestei probleme utilizând un sistem de producţii.

Pentru simplitatea soluţiei, se va presupune din nou că pătrăţelul liber (negru) este mutat şi

nu piesele.

Starea iniţială Goal

2 8 3 1 2 3

1 6 4 8 4

7 5 7 6 5

Producţii:

Contextul conţine starea goal -> Halt

Patrăţelul negru nu este sus -> mută pătrăţelul negru în sus

Patrăţelul negru nu este în stânga -> mută pătrăţelul negru la stânga

Patrăţelul negru nu este în dreapta -> mută pătrăţelul negru la dreapta

Patrăţelul negru nu este jos -> mută pătrăţelul negru în jos

Contextul (Memoria de lucru) conţine configuraţia curentă

Strategia de control:

1. Încearcă fiecare producţie în ordine;

2. Evită ciclurile;

3. Opreşte-te dacă ai ajuns la Goal.

După cum se poate constata din analiza punctelor 1 şi 2 ale strategiei de control a căutării,

rezolvarea conflictului se realizează prin alegerea primei reguli (producţii) care nu produce un

ciclu. Aceasta este una dintre cele mai simple strategii de rezolvare a conflictului. Implementarea

unui astfel de algoritm trebuie să se facă impunând o condiţie de limitare a adâncimii, altminteri

algoritmul se va "pierde" în investigarea unor drumuri foarte lungi sau va descoperi o soluţie deloc

optimală (problema la descrierea algoritmului "depth-first"). Evident, o implementare simplistă,

fără un procedeu de revenire (backtracking), poate uşor devia de la soluţia problemei.

Exemplul 5-2. Problema traseului calului de şah este de asemenea un exemplu des utilizat

în inteligenţa artificială pentru sublinierea unor aspecte importante privind implementarea

sistemelor de producţie.

Pentru început, se consideră o tablă formată din 3×3 pătrăţele. Tot pentru s implitate cele 9

pătrăţele se vor numerota cu cifrele arabe de la 1 la 9, şi nu cu o pereche de tip (C,L) notaţie

utilizată uzual în jocul de şah.

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

50

1 2 3

4 5 6

7 8 9

Regulile de producţie vor reprezenta în acest caz mutările egale ale calului de şah şi anume:

1 Calul este în părăţelul 1 -> Mută calul în pătrăţelul 8

2 Calul este în părăţelul 1 -> Mută calul în pătrăţelul 6

3 Calul este în părăţelul 2 -> Mută calul în pătrăţelul 9

4 Calul este în părăţelul 2 -> Mută calul în pătrăţelul 7

5 Calul este în părăţelul 3 -> Mută calul în pătrăţelul 4

6 Calul este în părăţelul 3 -> Mută calul în pătrăţelul 8

7 Calul este în părăţelul 4 -> Mută calul în pătrăţelul 9

8 Calul este în părăţelul 4 -> Mută calul în pătrăţelul 3

9 Calul este în părăţelul 6 -> Mută calul în pătrăţelul 1

10 Calul este în părăţelul 6 -> Mută calul în pătrăţelul 7

11 Calul este în părăţelul 7 -> Mută calul în pătrăţelul 2

12 Calul este în părăţelul 7 -> Mută calul în pătrăţelul 6

13 Calul este în părăţelul 8 -> Mută calul în pătrăţelul 3

14 Calul este în părăţelul 8 -> Mută calul în pătrăţelul 1

15 Calul este în părăţelul 9 -> Mută calul în pătrăţelul 2

16 Calul este în părăţelul 9 -> Mută calul în pătrăţelul 4

Memoria de lucru va conţine starea curentă existentă pe tabla şi starea de goal. Rezolvarea

conflictului presupune şi în acest caz alegerea primei producţii care nu produce o buclă. Strategia

de control este simplă constând în aplicarea regulilor până la atingerea poziţiei de goal, caz în care

algoritmul ia sfârşit. De asemenea, strategia de control ar trebui să implementeze mecanismul de

backtracking. În aceste condiţii, modul în care sistemul de producţii determină soluţia problemei

este ilustrat în tabelul următor.

Iteraţia Poziţia calului Mulţimea

conflictuală

Regula

declanşată

Curentă Goal

0 1 2 1,2 1

1 8 2 13,14 13

2 3 2 5,6 5

3 4 2 7,8 7

4 9 2 15,16 15

5 2 2 - Halt

Strategia de control sau ciclul de recunoaştere şi acţiune se poate implementa utilizând o

procedură recursivă Path(X,Y), unde X reprezintă poziţia iniţială a calului de şah, iar Y poziţia în

care acesta trebuie mutat.

procedure Path(X,Y) begin

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

51

if X=Y then halt else begin Corespondenţa: alege dintre producţii pe cele a căror parte de condiţie poate fi unificată cu regula move(X,Y) Rezolvarea conflictului: alege din mulţimea conflictuală prima producţie a cărei aplicare nu produce mutarea calului într-un pătrăţel anterior vizitat (excluderea ciclurilor) fie move(X,Z) producţia selectată Acţiunea: % declanşarea producţiei move(X,Z) mută calul în pătrăţelul Z X := Z stochează în memoria de lucru informaţia că pătrăţelul Z a fost vizitat % path(Z,Y) afişează(Z) end end; Implementarea procedurii precedente într-un limbaj de calcul al predicatelor (respectiv

Prolog) este foarte simplă, aceasta constând în scrierea a două clauze, un fapt şi o regulă:

X path(X,X). X, Y path(X,Y) Z move(X,Z) (been(Z)) assert(been(Z)) path(Z,Y). După cum se poate constata regula path este recursivă. Pentru prevenirea ciclurilor în baza

de date se adaugă, utilizând în acest scop predicatul assert câte un fapt been(Z) de fiecare dată ce

un nod Z este întâlnit în procesul de căutare.

Cum iniţial X=1 şi Y=2, subgoal-ul move(X,Z) este unificat cu prima regulă din baza de

reguli şi anume producţia move(1,8), variabila Z fiind instanţiată cu 8. Cum calul nu a fost încă

plasat în pătrăţelul 8, regula respectivă este selectată şi declanşată. Acţiunea regulii constă în

actualizarea stării curente X:=Z=8 şi stocarea în memoria de lucru a informaţiei că pătrăţelul 8 a

fost vizitat. Procedura apelându-se recursiv, acest procedeu se reia până la atingerea stării Y=2.

Trebuie remarcat faptul că este esenţial ca subgoal-urile regulii path să fie executate în ordinea în

care acestea apar în corpul regulii.

5.2. Controlul căutării în sistemele de producţie

Modelul sistemelor de producţie oferă câteva mecanisme prin care proiectantul unui astfel

de sistem poate interveni dirijând procesul de căutare: selecţia modului de căutare data-driven sau

goal-driven, structura regulilor de producţie şi strategia de rezolvare a conflictului.

5.2.1. Selecţia modului de căutare: data-driven sau goal-driven

În căutarea Data-driven (directă) se începe de la descrierea iniţială a problemei (o secvenţă

de axiome, simptomele unei boli, o colecţie de date ce trebuie interpretate etc.) şi se deduc noi

cunoştinţe din aceste date. Deducerea noilor cunoştinţe este consecinţa aplicării unor reguli de

inferenţă logică, efectuarea unor mutări în cazul jocurilor sau, în general, aplicarea unor operatori

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

52

de tranziţie stării curente a problemei. Noua stare, rezultată în urma aplicării operatorului de

tranziţie, va fi adăugată bazei de cunoştinţe a problemei în cauză.

Descrierea precedentă accentuează oportunitatea utilizării sistemelor de producţie pentru

implementarea proceselor de căutare. Contextul (sau memoria de lucru) va fi construit din datele

presupuse a fi adevărate (ipoteze) şi cele deduse ca fiind adevărate prin utilizarea unor producţii în

ciclurile precedente.

O producţie este selectată dacă condiţia acesteia

este unificată cu un fapt din contextul problemei.

Aplicarea (declanşarea) unei reguli are ca efect execuţia

acţiunii asociate, acţiune care va avea drept efect

modificarea contextului (memoriei de lucru), prin

modificarea unor informaţii sau adăugarea unor

informaţii noi.

În tabelul de mai jos este ilustrat modul de

căutare al grafului AND/OR ilustrat în figura 5.1 şi

descris prin producţiile următoare:

1. pq goal

2. rs p

3. wr q

4. tu q

5. v s

6. start vrq

Iteraţia Contextul

(memoria de lucru)

Mulţimea

conflictuală

Regula

aplicată

0 start 6 6

1 start,v,r,q 6,5 5

2 start,v,r,q,s 6,5,2 2

3 start,v,r,q,s,p 6,5,2,1 1

4 start,v,r,q,s,p,goal 6,5,2,1 Halt

Observaţie. Graful de mai sus nu este cunoscut a priori, ci este generat în procesul de

căutare.

După cum se poate constata din analiza datelor din tabelul de mai sus, s-a utilizat o

strategie simplă de rezolvare a conflictului şi anume alegerea/selectarea acelei reguli aplicabile

care a fost cel mai puţin recent utilizată sau nu a fost utilizată deloc.

În varianta data-driven producţiile sunt de forma CONDIŢIE ACŢIUNE şi anume dacă

condiţia este satisfăcută de elementele din memoria de lucru se poate efectua acţiunea respectivă.

În această situaţie, când producţiile sunt implicaţii logice şi acţiunea adaugă noi informaţii în

memoria de lucru, actul de aplicare a unei reguli este, de fapt, modus-ponens. Aplicarea unei astfel

de reguli generează un nou nod al grafului AND/OR cercetat.

v

r

q

s

p

goal

start

Fig. 5.1

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

53

Un sistem de producţie poate fi implementat şi prin utilizarea unei metode goal-driven de

căutare. Pentru exemplificare, să considerăm secvenţă de reguli de producţie de mai jos, reguli care

generează graful AND/OR alăturat.

1. pq goal

2. rs p

3. wr p

4. tu q

5. v s

6. start vrq

În această situaţie o producţie CONDIŢIE

ACŢIUNE este aplicabilă dacă acţiunea acesteia

poate fi unificată cu un element din memoria de

lucru. Aplicarea unei reguli implică adăugarea

condiţiei regulii respective informaţiilor din

memoria de lucru. Procesul de căutare se opreşte

când în baza de date se găseşte un fapt echivalent cu

datele iniţiale ale problemei. Trasarea acestui

algoritm, pe cazul exemplului propus, este ilustrată în tabelul următor.

Iteraţia Contextul

(memoria de lucru)

Mulţimea

conflictuală

Regula

aplicată

0 goal 1 1

1 goal,p,q 1,2,3,4 2

2 goal,p,q,r,s 1,2,3,4,5 3

3 goal,p,q,r,s,w 1,2,3,4,5 4

4 goal,p,q,r,s,w,t,u 1,2,3,4,5 5

5 goal,p,q,r,s,w,t,u,v 1,2,3,4,5,6 6

6 goal,p,q,r,s,w,t,u,v,start 1,2,3,4,5,6 halt

Analizând tabelul de mai sus se constată că strategia de rezolvare a conflictului este aceeaşi

cu cea utilizată în căutarea data-driven.

5.2.2.Controlul căutării prin intermediul strategiei de rezolvare a conflictului

După cum s-a specificat mai sus, sistemele de producţii permit implementarea unor funcţii

euristice pentru rezolvarea conflictului. În cele ce urmează sunt prezentate principiile utilizate

pentru implementarea strategiilor generale de rezolvare a conflictului. Evident, eficienţa procesului

de căutare nu este aceeaşi dacă se implementează o strategie eficientă de rezolvare a conflictului

sau se alege cea mai simplă dintre ele: selectarea primei reguli care nu conduce la un ciclu.

Cele mai reprezentative aspecte care trebuie avute în vedere la implementarea unei strategii

generale de rezolvare a conflictului sunt următoarele:

v

r

q

s

p

goal

start

Fig. 5.2

w t u

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

54

Refracţia. Dacă o regulă a fost aplicată, aceasta nu mai poate fi aplicată până ce

contextul în care această regulă a fost aplicată nu s-a modificat (rolul

refracţiei este de a evita ciclurile).

Recentitatea. Sunt preferabile acele reguli ale căror condiţii sunt unificate cu cele mai

recente fapte adăugate în memoria de lucru (se influenţează continuarea unei

anumite linii de raţionament).

Specificitatea. O regulă mai specifică este preferabilă în raport cu una generală. O regulă

este mai specifică decât altă regulă dacă partea de condiţie a regulii

respective este mai restrictivă decât a celeilalte.

REZUMAT

1. Un sistem de producţii constă dintr-o mulţime finită producţii, reguli de forma condiţie ->

acţiune, şi o bază de date (memoria de lucru) care conţine starea curentă a problemei

(contextul).

2. Sistemele de producţii au următoarea strategie de control, aplicabilă în fiecare ciclu de

execuţie: a) se testează condiţiile producţiilor din baza de cunoştinţe şi se formează

mulţimea conflictuală (a regulilor aplicabile, ale căror condiţii sunt îndeplinite de datele din

context); b) se selectează regula care va fi declanşată (la un ciclu se execută o singură

regulă, selectată din mulţimea conflictuală după o strategie anterior stabilită); c) se execută

partea de acţiune a regulii declanşate, ceea ce conduce la modificarea contextului

problemei.

3. Se resetează toate producţiile selectate (mulţimea conflictuală) şi se reia ciclul de la faza

de corespondenţă folosindu-se contextul modificat în ciclul anterior. Dacă un ciclu nu

produce acţiuni, sistemul se opreşte. Oprirea mecanismului interpretativ poate avea loc şi

ca urmare a executării unei producţii la care partea de acţiune specifică oprirea (în general,

la găsirea soluţiei).

PROBLEME PROPUSE

Problema 1. Să se obţină prin metoda sistemelor de producţii ordonarea alfabetică a şirului de

caractere: cabbcba.

Producţii:

1. ba -> ab

2. ca -> ac

3. cb -> bc

Şirul (contextul) iniţial: cabbcba.

Problema 2. Să se rezolve problema 8-puzzle din figura de mai jos utilizând un sistem de

producţii.

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

55

Starea iniţială Goal

8 3 2 1 2 3

6 4 1 8 4

5 7 7 6 5

Producţii:

Contextul conţine starea goal -> Halt

Patrăţelul negru nu este sus -> mută pătrăţelul negru în sus

Patrăţelul negru nu este în stânga -> mută pătrăţelul negru la stânga

Patrăţelul negru nu este în dreapta -> mută pătrăţelul negru la dreapta

Patrăţelul negru nu este jos -> mută pătrăţelul negru în jos

Contextul (Memoria de lucru) conţine configuraţia curentă

Strategia de control:

1. Încearcă fiecare producţie în ordine;

2. Evită ciclurile;

3. Opreşte-te dacă ai ajuns la Goal.

TEST DE AUTOEVALUARE

1. Ce este o producţie:

a. Pereche ordonata (condiţie, acţiune) .

b. Pereche ordonata (acţiune, condiţie).

c. Pereche neordonată.

2. În cazul unei mulţimi conflictuale:

a. Regulile acestei mulţimi intra într-o competiţie din care toate vor fi declanşate.

b. Regulile acestei mulţimi intra într-o competiţie din care una va fi declanşată .

c. Regulile componente se vor declanşa fără competiţie.

3. În cazul metodei goal-driven, o producţie e aplicabilă dacă:

a. Condiţia acesteia nu poate fi unificată cu un element din context.

b. Acţiunea acesteia poate fi unificată cu un element din memoria de lucru.

c. Condiţia acesteia poate fi unificată cu un element din memoria de lucru.

4. Ce reprezintă contextul?

a. Starea curenta a procesului de rezolvare a unei probleme.

b. Starea anterioara a procesului de rezolvare a unei probleme.

c. Starea viitoare a procesului de rezolvare a unei probleme.

5. Prin declanşarea unei reguli are loc:

a. Se opreşte necondiţionat programul.

b. Se reia ciclul fără modificarea contextului.

c. Executarea părţii de acţiune din corpul regulii.

6. Strategia de căutare pornind de la descrierea iniţială a problemei poartă denumirea de:

a. Data-driven.

b. Goal-driven.

c. Open-driven.

Răspuns

1. a 3. b 5. c

2. b 4. a 6. a

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

56

Inteligenţa Artificială Cap. 6. Planning

57

Planning

Obiective

1. Însuşirea noţiunilor de bază privind reprezentarea şi rezolvarea problemelor de

inteligenţă artificială prin metoda de planning.

2. Formarea deprinderilor de reprezentare corectă şi eficientă a problemelor de inteligenţă

artificială prin predicate pentru descrierea starilor problemei şi a operatorilor de tranziţie.

3. Dezvoltarea abilităţilor practice de operare cu raţionamentele specifice metodei planning.

Durata: 2 ore Prin planning se înţelege generarea secvenţei de operaţii care trebuie executate, adeseori de

către un robot, în vederea realizării unui anumit task. Pe lângă aplicaţiile evidente în robotică,

planning-ul este utilizat în sistemele expert, pentru controlul automat al proceselor de fabricaţie,

înţelegerea limbajelor naturale etc.

Exemplele care se vor prezenta în continuare sunt alese din domeniul roboticii.

Componentele sau paşii care compun un plan de operaţii, pe care un robot va trebui să le execute

în vederea îndeplinirii unui anumit task, se vor numi operaţii elementare sau atomi. Un astfel de

plan de operaţii, prin care un robot ar executa o comandă de genul "adu (te rog) obiectul A din

camera B", ar putea fi următorul:

1. Lasă jos ce ai în prehensor;

2. Du-te în camera B;

3. Identifică obiectul A;

4. Prehensează obiectul B;

5. Părăseşte camera B;

6. Revino la poziţia iniţială.

Planurile sunt elaborate prin căutare, în spaţiul generat de operaţiile elementare, a secvenţei

de atomi necesare realizării task-ului propus. Stările acestui spaţiu sunt configuraţiile posibile ale

mediului, mediu care se modifică prin intermediul operaţiilor pe care robotul le execută.

Elaborarea planului de operaţii se poate realiza off-line, acesta nefiind condiţionată de

prezenţa fizică a robotului pentru care planul respectiv este generat. În majoritatea variantelor de

planning, debutate începând cu anul 1960, întregul plan de operaţii era generat înainte ca un robot

să execute prima operaţie a acestui plan. Planurile erau generate în absenţa robotului, partea de

inteligenţă artificială (planning-ul) fiind separată de cea de execuţie (postprocesarea operaţiilor

componente pentru robotul gazdă).

Mai recent, odată cu implementarea unor senzori sofisticaţi şi creşterea considerabilă a

performanţelor microprocesoarelor, cercetările s-au orientat în direcţia integrării dintre generarea şi

execuţia operaţiilor unui task (on line). Evident, acest nivel superior de planning dă o mai mare

autonomie robotului, un astfel de plan ne mai fiind static, ci generat dinamic, permiţând

conceperea unor roboţi autonomi de explorare, roboţi capabili să rezolve situaţii pentru care nu au

fost programaţi în mod explicit (ex. Lunahod).

Cap. 6.

Inteligenţa Artificială Cap. 6. Planning

58

Deşi planning-ul este o problemă de căutare în spaţiul de stări, aceasta ridică câteva

probleme particulare, probleme ce vor fi punctate în continuare.

Prima dintre problemele ridicate de planning decurge din complexitatea stărilor. În

exemplul considerat, o stare constă în descrierea configuraţiei curente a mediului, fiind de o

complexitate mult mai mare decât cea a stărilor utilizate până acum în problemele de căutare. O

astfel de stare este modelată de obicei printr-o colecţie de aserţiuni în limbajul de calcul al

predicatelor.

Complexitatea stărilor atrage după sine dificultăţi în ceea ce priveşte modelarea

operatorilor de tranziţie şi a impactului pe care aceşti operatori îl au asupra mediului. Astfel, o

particularitate care apare în cazul planning-ului este necesitatea caracterizării situaţiilor care rămân

neschimbate în urma execuţiei unei anumite operaţii elementare. De exemplu, ridicarea unui obiect

schimbă poziţia obiectului şi faptul că prehensorul nu mai este liber, ci conţine obiectul respectiv;

în schimb, acea operaţie nu schimbă poziţia altor obiecte din mediul robotului.

6.1. Prima metodă de planning (John McCarthy)

Problema specificării a ceea ce se modifică şi ce rămâne invariant în descrierea unei stări

prin aplicarea unui operator de tranziţie este cunoscută sub numele de "problemă de elaborare a

planului" ("frame problem", McCarthy & Hayes 1969, McCarthy 1980). Cu cât descrierea unei

stări este mai complexă, cu atât această problemă este mai dificilă. Pentru exemplificarea acestei

metode se consideră situaţia prezentată în fig. 6.1. Se presupune că toate obiectele notate a, b, c şi d

sunt de formă cubică, identice ca mărime şi că prehensorul robotului poate să prehenseze oricare

din aceste cuburi cu condiţia ca obiectul respectiv să nu aibă un alt cub situat deasupra sa (spunem

că obiectul respectiv este liber).

Fig. 6.1. Dispunerea obiectelor în mediul robotului

Se presupune că braţul articulat al robotului poate executa următoarele operaţii elementare

(primitive):

pickup(W) Ridică cubul W de pe masă. Se presupune că cubul W este liber şi

prehensorul era liber în momentul lansării comenzii.

pudown (W) Pune cubul W pe masă. Cubul W trebuie să fie prehensat în momentul

activării comenzii.

takeoff (U, V) Ridică cubul U de deasupra cubului V. U trebuie să fie situat deasupra lui V,

V să nu aibă un alt cub deasupra sa şi prehensorul să fie liber.

puton (U, V) Pune cubul U deasupra cubului V. Cubul U trebuie să fie prehensat, iar

cubul V să fie liber în momentul lansării comenzii.

Starea curentă din mediul robotului poate fi descrisă prin utilizarea următoarele predicate:

on (U, V) - cubul U este situat deasupra cubului V.

Inteligenţa Artificială Cap. 6. Planning

59

clear (X) - cubul X este liber (poate fi prehensat).

hold (W) - prehensorul conţine obiectul W.

empty - prehensorul est liber.

ontable (Y) - obiectul Y este situat pe masă.

Regulile de mai jos descriu anumite proprietăţi cunoscute în domeniul aplicaţiei

considerate:

1. ( X clear(X) ( Y on(Y, X)))

2. ( Y X on(Y, X) ontable(Y))

3. ( Y hold(Y) empty)

şi anume cele trei proprietăţi afirmă că:

1. Un obiect oarecare X este liber dacă nu există nici un bloc Y situat deasupra sa.

2. Dacă un bloc este pe masă el, nu se găseşte deasupra altui bloc.

3. Prehensorul este liber dacă şi numai dacă acesta nu conţine un obiect.

Expresiile de mai sus au, înainte de toate, un aspect declarativ, descriind anumite relaţii şi

proprietăţi. Totodată, aceste expresii au şi un aspect semantic (sau procedural), sugerând procedeul

prin care aceste proprietăţi pot fi îndeplinite. Astfel, interpretată semantic, prima regulă spune că

un obiect X poate fi eliberat prin înlăturarea eventualelor obiecte Y situate deasupra sa.

Descrierea situaţiei iniţiale din mediul robotului (v. fig.6.1), se realizează prin următoarele

aserţiuni:

Stare 1:

empty clear (a). clear (b). on (a, c). on (b, d). ontable (c). ontable (d). Pornind de la această stare, spaţiul de stări este generat prin aplicarea operatorilor de

tranziţie corespunzători operaţiilor elementare ale robotului. Specificul acestei metode constă în

faptul că operatorii de tranziţie sunt de forma:

(A(BC)),

în care formulele A, B şi C au următoarele semnificaţii:

A – operatorul de tranziţie;

C – condiţie pe care starea curentă trebuie să o îndeplinească ca operatorul să fie aplicabil;

B – colecţie de predicate care arată proprietăţile noi ale stării generate prin aplicarea

operatorului de tranziţie respectiv.

Cele patru operaţii elementare pot fi descrise prin următoarele reguli:

(R1) X (pickup(X)

(hold(X) (empty ontable(X) clear(X))))

(R2) X (putdown(X)

((ontable(X) clear(X) empty) (hold(X)))))

(R3) X Y (puton(X, Y)

((on(X, Y) clear(X) empty) (hold(X) clear(Y))))

(R4) X Y (takeoff(X, Y)

((clear(Y) hold(X) (on(X, Y) clear(X) empty)))

Inteligenţa Artificială Cap. 6. Planning

60

Observaţie: Cele patru reguli de mai sus sunt de forma A (B C); operatorul A se

poate utiliza pentru producerea noilor predicate B când condiţiile C sunt îndeplinite. Dar, pentru

aplicarea operatorilor de tranziţie trebuie rezolvată, în prealabil, problema de elaborare a planului,

definind aşa numitele axiome de elaborare a planului ("frame relations"). Axiomele de elaborare

a planului sunt reguli care descriu care din predicatele din descrierea stării curente rămân

invariante la aplicarea unui operator de tranziţie, acestea fiind copiate ca atare în descrierea stării

generate prin aplicarea operatorului respectiv.

În cazul exemplului considerat, se pot scrie mai multe astfel de axiome. De exemplu,

următoarele două axiome exprimă faptul că un cub situat pe masă nu este afectat de operatorii

puton şi takeoff:

X Y Z (puton(Y, Z) (ontable(X) ontable(X))),

X Y Z (takeoff(Y, Z) (ontable(X) ontable(X))),

regulile având aceeaşi semnificaţie. Astfel, dacă predicatul ontable (X) există în descrierea stării

curente, acesta va fi copiat şi în noua stare generată (pentru toate instanţierile posibile ale variabilei

X), dacă unul din cei doi operatori este aplicat.

Alte axiome de elaborare a planului ar putea preciza că on şi clear sunt afectate de

operatorii puton şi takeoff doar în cazuri particulare. De exemplu, on (b, a) nu este afectat de takeoff(c, d). Nu mai insistăm asupra celorlalte axiome de elaborare a planului care se pot defini pentru

cazul considerat, dar să subliniem faptul că trebuie definite aceste axiome pentru toate situaţiile

care pot surveni în contextul considerat; acesta este un aspect care evidenţiază încă o dată

complexitatea elaborării planului de operaţii.

Împreună, operatorii de tranziţie şi axiomele de elaborare a planului definesc un spaţiu.

Pentru ca un operator să poată fi aplicat trebuie să fie îndeplinite condiţiile C din definiţia acestuia.

Astfel, pentru ca operatorul takeoff să poată fi aplicat trebuie ca toate cele trei condiţii:

on(X, Y), clear(X) şi empty să fie îndeplinite. Aceste condiţii sunt satisfăcute pentru două substituţii posibile ale variabilelor X

şi Y. Aplicat prin unificarea {b/X, d/Y} operatorul takeoff va produce următoarele două predicate

clear(d) şi hold(b). Noua stare generată, Stare 2, va fi descrisă din acele predicate din descrierea stării curente,

probate ca invariante prin aplicarea axiomelor de elaborare a planului, la care se adaugă noile

predicate generate de operatorul de tranziţie (lista A).

Stare 2

ontable(c) ontable(d) clear(a)

on(a, c) hold(b) clear(d)

Deşi teoretic problema pare simplă, rezolvarea practică este foarte dificilă, numărul

axiomelor de generare a planului crescând exponenţial, în funcţie de numărul predicatelor utilizate în

descrierea stării. Complexitatea unui astfel de proces de căutare impune necesitatea descompunerii

unui goal în două sau mai multe subgoal-uri independente sau liniare (care se pot executa

secvenţial). Aici apare o nouă problemă. O greşită interpretare a independenţei acestor subgoal-uri

poate face ca realizarea unui subgoal să facă imposibilă realizarea unui alt subgoal.

Inteligenţa Artificială Cap. 6. Planning

61

6.2. Metoda STRIPS (STanford Research Institute Planning System)

Standford Reasearch Institute (SRI), nume de care se leagă multe din realizările valoroase

în domeniul inteligenţei artificiale, este creatoarea a ceea ce se numeşte STRIPS (Stanford

Research Institute Planning System) implementat la începutul anilor '70 pentru controlul robotului

SHAKEY, prin utilizarea unei metode eficiente de planning. Sistemul este prevăzut cu o metodă de

învăţare, planurile rezolvate cu succes sunt stocate într-o bază de cunoştinţe sub formă de macro-

operatori, care pot fi reutilizaţi în situaţii similare ivite în viitor.

Caracteristic sistemului de producţie conceput de cercetătorii de la Standford Reasearch

Institute este modul de reprezentare al operatorilor de tranziţie . Concret, un operator de tranziţie

este un triplet ordonat (P, A, D). Primul element al tripletului reprezintă precondiţiile care trebuie

îndeplinite de starea curentă pentru ca operatorul respectiv să poată fi aplicat. Cel de al doilea

element defineşte lista de predicate pe care operatorul le va adăuga (A–add) în descrierea noii stări

generale (proprietăţi noi ale stării generale). Ultimul element al tripletului defineşte secvenţa de

predicate din descrierea stării curente care vor fi eliminate (D–delete) în descrierea noii stări,

acestea ne mai fiind consistente în contextul stării generate de operator.

Această reprezentare este mult mai naturală şi are avantajul de a ne scuti de povara

formulării axiomelor de elaborare a planului.

Revenind la exemplul anterior, cei patru operatori corespunzători operaţiilor elementare ale

robotului sunt reprezentaţi în felul următor:

pickup(X) P: ontable(X), clear(X), empty

A: hold(X)

D: ontable(X), clear(X), empty

putdown(X) P: hold(X)

A: ontable(X), clear(X), empty

D: hold(X)

takeoff(X) P: on (X, Y), clear(X), empty

A: clear(Y), hold(X)

D: on(X,Y), clear(X), empty

puton(X, Y) P: hold(X), clear(Y)

A: on(X, Y), clear(X), empty

D: hold(X), clear(Y)

Observaţie: În contextul listelor P, A, D de mai sus, virgula are semnificaţia de conjuncţie logică.

Un dezavantaj minor al modelării operatorilor de tranziţie, prin utilizarea celor trei liste,

constă în păstrarea unor informaţii redundante în listele respective. De exemplu, în cazul

operatorului takeoff inserarea predicatului hold(X) implică ştergerea de la sine a predicatului

empty. Acest dezavantaj este însă minor în raport cu facilităţile oferite de această modelare a

operatorilor de tranziţie şi anume toţi descriptorii unei stări care nu sunt citaţi în listele A(add) sau

D(delete) rămân nemodificaţi în descrierea noii stări.

Spaţiul stărilor, generat cu oricare din cele două metode prezentate mai sus, este ilustrat în

figura 6.2.

Inteligenţa Artificială Cap. 6. Planning

62

Fig. 6.2. Spaţiul generat prin aplicarea operatorilor takeoff, puton, putdown şi pickup

Problemele rezolvate, a căror soluţie este memorată, pot fi utilizate pentru rezolvarea altor

probleme similare. De aceea, se impune stocarea unor soluţii într-o formă fixă. Forma fixă propusă

de cercetătorii de la SRI poartă numele de tabela triunghiulară şi este prezentată mai jos.

0

empty clear(a) on(a,c) ontable(c) clear(b) on(b,d) ontable(d)

takeoff(b,d)

1 clear(a) on(a,c) ontable(c) ontable(d)

hold(b) clear(d)

putdown(b)

2 clear(a) on(a,c) ontable(c) ontable(d)

clear(d) clear(b) ontable(b) empty

takeoff(a,c)

3 ontable(c) ontable(d)

clear(d) clear(b) ontable(b)

hold(a) clear(c)

0 1 2 3

Starea iniţială este înscrisă în linia 0, coloana 0. Lista add corespunzătoare operatorului O1

(primul aplicat) în linia 1 coloana 1. În linia 1 coloana 0 se înscrie rezultatul obţinut prin ştergerea

din starea iniţială a predicatelor din lista delete a operatorului O1. Cu alte cuvinte, starea după

aplicarea operatorului O1 este înscrisă în coloanele din linia 1. Rezultatul aplicării operatorului O2

Inteligenţa Artificială Cap. 6. Planning

63

la această stare va fi memorat în linia 3 ş.a.m.d. Starea înscrisă în ultimul rând al tabelului

triunghiular satisface starea obiectiv.

Tabelele triunghiulare pot fi generalizate prin introducerea variabilelor, definind aşa

numiţii macrooperatori. Prin stocarea în baza de cunoştinţe a macrooperatorilor, sistemul STRIPS

şi-a sporit mult eficienţa de elaborare a planurilor, prin reutilizarea macrooperatorilor o dată

"învăţaţi" în situaţii similare.

În diagrama de mai jos este prezentată o tabelă triunghiulară generalizată. Operaţiile

elementare ale planului sunt înscrise de-a lungul diagonalei. Acestea sunt cele patru operaţii

cunoscute: pickup, putdown, takeoff şi puton.

În coloana 1 este precizată starea iniţială, iar în linia 7 –starea finală.

Precondiţiile fiecărei operaţii sunt înregistrate în linia care precede numele operaţiei.

Postcondiţiile (conţinute în listele add şi delete) sunt înscrise în coloana situată sub numele

comenzii. Predicatele respective sunt înscrise în liniile corespunzătoare operaţiilor care le

utilizează drept precondiţii, organizând astfel tabela într-o manieră relevantă pentru succesiunea

operaţiilor.

Tabela triunghiulară generalizată

1

clear(Y) on(Y,V) empty

takeoff(Y,V)

2 hold(Y) putdown(Y)

3 clear(X) on(X,U)

empty takeoff(X,U)

4 hold(X) putdown(X)

5 ontable(U) clear(U) empty pickup(U)

6 clear(V) hold(U) puton(U,V)

7 ontable(V) ontable(Y)

clear(Y) ontable(X)

clear(X) on(U,V) clear(U)

1 2 3 4 5 6 7

Se numeşte nucleu de ordin n intersecţia dintre liniile având numărul cel puţin egal cu n (r

n) şi coloanele având numărul cel mult egal cu n (c n). În figură este reprezentată îngroşat

nucleul de ordin 2. În executarea unui plan reprezentat printr-o tabelă triunghiulară, operaţia i poate

fi efectuată numai dacă toate predicatele conţinute în nucleul i sunt adevărate.

Tabela triunghiulară permite reluarea şi refacerea planului ca urmare a apariţiei unor

evenimente neaşteptate. De exemplu, când robotul execută primul operator puton(c,d), el scapă

goalul c. Presupunând că robotul poate localiza cubul c prin intermediul unei camere video, starea

curentă satisface clauzele cuprinse în nucleul 4, ceea ce face ca robotul să reia planul cu operaţia pickup(c). Fiind dată o tabelă triunghiulară, orice stare ce satisface toate clauzele înscrise într-un

nucleu al tabelei triunghiulare poate fi convertită în starea obiectiv.

Inteligenţa Artificială Cap. 6. Planning

64

REZUMAT

1. Planning-ul poate fi privit ca o problemă de căutare în spaţiul de stări;

2. Stările sunt generate prin aplicarea operatorilor de tranziţie şi a axiomelor de elaborare a

planului;

3. Problema constă în găsirea, în graful ce modelează spaţiul de stări, a unui drum de la starea

iniţială la cea finală, denumită obiectiv. Operaţiile corespunzătoare arcelor ce compun

acest drum constituie planul de operaţii pentru realizarea obiectivului propus.

4. Două metode reprezentative s-au impus în rezolvarea problemelor de planning: a) metoda

John McCarthy şi b) metoda STRIPS.

PROBLEME PROPUSE

Problema 1. Descrieţi stările iniţială şi finală ale problemei de planning de mai jos şi generaţi o

soluţie a acesteia prin cele două metode expuse anterior.

a. b.

Fig. 1

Problema 2. Să se rezolve problema turnurilor din Hanoi tratată ca problemă de planning.

Fig. 2. Turnurile din Hanoi

Pentru descrierea situaţiei curente se vor utiliza predicatele din tabelul de mai jos.

Inteligenţa Artificială Cap. 6. Planning

65

Predicat Semnificaţie

handempty Prehensorul este liber

hold(D) Discul D este prehensat

turnempty(T) Turnul T nu conţine nici un disk

ontable(D,T) Discul D se află la baza turnului T

clear(D) Discul D este liber (poate fi prehensat)

on(X,Y) Discul X este situat deasupra discului Y

Concepeţi şi completaţi listele P, A şi D corespunzătoare operaţiilor primitive indicate în

tabelul de mai jos.

Operaţia Conţinutul listelor P, A, D

pickup(X) P

A

D

putdown(D,T) P

A

D

takeoff(X,Y) P

A

D

puton(X,Y) P

A

D

Condiţia de a nu plasa un disc de diametru mai mare peste unul de diametru mai mic este

deja implementată în contextul operaţiei puton, a cărui operator de tranziţie este reprodus mai

jos:

move(puton(X,Y),Stare,Delete,Add) :- % Pune discul X disc(X), disc(Y), % peste un disc Y diam(X,D1), diam(Y,D2), D1<D2, Preconditii=[ * * * ], subset(Preconditii,Stare),

Delete=[ * * * ], Add=[ * * * ].

TEST DE AUTOEVALUARE

1. În exemplu (pickup (x)(hold (x)(empty ontable (x) clear (x)))) formula hold (x) are

următoarea semnificaţie:

a. Produce noi predicate.

b. Este o condiţie pe care starea curentă trebuie să o îndeplinească ca operatorul să fie aplicabil.

c. Colecţie de predicate care arata proprietăţile noi a le stării prin aplicarea operatorului de

tranziţie respectiv.

Inteligenţa Artificială Cap. 6. Planning

66

2. Axiomele de elaborare a planului sunt:

a. Reguli care descriu care dintre predicate rămân invariante la aplicarea unui operator de

tranziţie.

b. Reguli care descriu care dintre predicate se schimbă la aplicarea unui operator de tranziţie.

c. Reguli care generează noi operatori de tranziţie.

3. Macrooperatorii se folosesc, în probleme de planning, pentru:

a. Mărirea operatorilor de tranziţie.

b. Generalizarea tabelei triunghiulare prin introducerea variabilelor.

c. Micşorarea operatorilor de tranziţie la aplicarea unui operator de tranziţie.

4. Tabela triunghiulară reprezintă:

a. Reprezentarea tuturor soluţiilor sub forma triunghiulară.

b. Introducerea simbolurilor triunghiulare în rezolvarea problemei.

c. O modalitate de stocare a unei soluţii într-o formă fixă triunghiulară.

5. În forma operatorului de tranziţie (A(BC)), formula C are următoarea semnificaţie:

a. Operator de tranziţie.

b. Condiţie pe care starea curentă trebuie să o îndeplinească ca operatorul să fie aplicabil .

c. Colecţia predicatelor noi generate prin aplicarea operatorului de tranziţie.

6. În exemplul următor: P: on (x,y), clear (x), empty; A: clear (y), hold (x); D: on (x,y), clear (x),

empty; tripletul ordonat (P, A, D) are următoarea semnificaţie:

a. Lista predicatelor adăugate, a precondiţiile şi a predicatelor eliminate.

b. Lista precondiţiilor, a predicatelor adăugate şi a celor eliminate .

c. Lista predicatelor eliminate, a celor adăugate şi a precondiţiilor.

Răspuns

1. c 3. b 5. b

2. a 4. c 6. b

Inteligenţa Artificială Cap.7. Sisteme Expert

67

Sisteme Expert

Obiective

1. Însuşirea noţiunilor de bază privind structura şi rolul sistemelor expert.

2. Însuşirea noţiunilor privind reprezentarea cunoştinţelor şi implementarea acestora în

sisteme bazate pe cunoştinţe.

3. Dezvoltarea abilităţilor practice de operare cu raţionamentele specifice sistemelor expert.

Durata: 3 ore

7.1. Inteligenţa artificială şi sistemele expert

Utilizarea în ultimii ani a sistemelor expert a fost asociată cu cercetările de inteligenţă

artificială deoarece structura şi proprietăţile sunt apropiate de produsele IA. Sistemele expert

(SE) beneficiază de cercetările ce au fost realizate în diferite zone ale IA. În fig. 7.1. se evidenţiază

relaţiile între sistemele expert şi celelalte domenii ale IA.

Ştiinţa calculatoarelor

Fig. 7.1. Domenii ale inteligenţei artificiale

În prezent, sistemele expert sunt tot mai mult asociate direct cu modurile de raţionare şi

cunoştinţele reprezentate. SE sunt de fapt dezvoltări în noile câmpuri ale achiziţiei de cunoştinţe

ca forme specializate de învăţare, în care cunoştinţele sunt achiziţionate direct de la expert. Alte

SE ca tehnici de IA include explicaţii, învăţare inteligentă, planificare, rezolvarea problemelor

distribuite, cercetări ce sunt adresate direct IA.

7.1.1. Sisteme Expert. Definiţii

O ramură a Inteligenţei Artificiale (IA) este reprezentată şi de către sistemele expert. Un

sistem expert este un program care urmăreşte cunoştinţele, raţionează pentru obţinerea

rezultatelor într-o activitate dificilă întreprinsă uzual doar de experţii umani. Dacă un

expert uman are cunoştinţe într-un domeniu specific, un sistem expert utilizează cunoştinţele ce

Cap. 7.

Inteligenţa

Artificială

Lingvistică

Filozofie

Prelucrare în

limbaj natural

Planificare Vedere artificială

Logică

matematică

Sisteme

expert

Psihologie

Robotică

Inteligenţa Artificială Cap.7. Sisteme Expert

68

sunt stocate într-o bază de cunoştinţe, bază formată din cunoştinţele asociate domeniului

respectiv. Experţii umani raţionează şi ajung la concluzii pe baza cunoştinţelor ce le posedă,

sistemele expert raţionează utilizând cunoştinţele stocate în baza de cunoştinţe.

Din punct de vedere funcţional, un sistem expert poate fi definit astfel:

Un sistem expert (SE) este un program care urmăreşte un grup de cunoştinţe pentru

obţinerea în acelaşi mod ca şi experţii umani a rezultatelor despre activităţi dificil de

examinat. Principala caracteristică a sistemelor expert este derivată din baza de cunoştinţe

împreună cu un algoritm de căutare specific metodei de raţionare. Un sistem expert

tratează cu succes probleme pentru care nu există o soluţie algoritmică clară.

Sistemele expert sunt programe aplicative de inteligenţă artificială bazate pe cunoaştere

specializată de nivel înalt, nivel atins în societate de cei mai competenţi experţi umani ai

domeniilor aplicative ce se implementează în aceste sisteme. Denumirea de "sisteme expert" derivă

din capacitatea acestor programe de a egala unele din performanţele de gândire şi de intuiţie pe

care experţii umani le obţin atunci când aplică o astfel de cunoaştere pentru rezolvarea unor

probleme complexe din domeniul de expertiză.

Din punct de vedere funcţional un sistem expert este definit ca un program ce oferă

cunoştinţe pentru obţinerea rezultatelor taskurilor dificile rezolvate uzual de experţii umani.

Din punct de vedere structural şi arhitectural SE au următoarele caracteristici:

sunt construite în general pentru focalizarea taskurilor cu gamă limitată de

aplicabilitate;

există o separare explicită între cunoştinţe şi metodele de raţionare utilizate în

vederea obţineri unor concluzii pe baza cunoştinţelor;

sunt capabile să explice propriile acţiunii şi linii de judecată.

Avantajele sistemelor expert faţă de aplicaţiile având complexitate comparabilă, dar

rezolvate cu ajutorul metodelor convenţionale de programare a calculatoarelor, constau în

puterea lor de a soluţiona problemele în baza cunoaşterii asupra întregului domeniu specific, în

capacitatea lor de a reprezenta şi de a învăţa, în uşurinţa cu care folosesc şi combină diferite

strategii de rezolvare. O caracteristică principală a sistemelor expert, care derivă din conceptele

aplicate la elaborarea acestora, este flexibilitatea. Când unele proceduri existente sunt

actualizate, sau sunt adăugate noi proceduri, nu este necesară rescrierea sau actualizarea

celorlalte programe care alcătuiesc sistemul.

Sistemele expert au fost acceptate cu entuziasm într-o mulţime de domenii: afaceri, industrie

şi alte sfere profesionale, ca o cale de fructificare a experienţei, disponibilă oricând este necesară. SE

sunt binevenite în domenii particulare în care experţii umani existenţi au suficientă experienţă pe care

o pot furniza.

Tehnologiile de programare utilizate în dezvoltarea sistemelor expert pot fi privite ca o

evoluţie timpurie a limbajelor calculatoarelor în noul nivel al exprimării, ce permite utilizarea

reprezentării a foarte multor cunoştinţe. Limbajele timpurii sunt dificil de utilizat, exceptând

specialiştii în calculatoare. Recentele limbaje de programare sunt binevenite pentru utilizarea şi

includerea diverselor forme de expresie umană.

Tehnologiile de programare specifice SE marchează alţi paşi în această direcţie. Pentru a

fi utilizată efectiv, fiecare tehnologie nouă este însoţită de un set de ghiduri şi metodologii pentru

utilizare. Aceasta ajută noii utilizatori la creşterea eficienţei utilizării şi a maximizării

Inteligenţa Artificială Cap.7. Sisteme Expert

69

productivităţii. Din acest motiv utilizarea tehnicilor specifice în SE cu foarte multe cunoştinţe va

necesita un nou set de metodologii, bazate pe experienţa crescută, în dezvoltarea aplicaţiilor.

Expertul care înţelege necesitatea utilizării unui SE în domeniul său de cunoaştere poate

de asemenea obţine un ajutor de la inginerul de cunoştinţe (adică, a specialistului în calculatoare

priceput în SE) deoarece, în urma discuţiilor cu acesta, anumite cunoştinţe vor fi reformulate. În

concluzie, prin interacţiunea între expertul uman şi inginerul de cunoştinţe poate fi făcut un

schimb între domeniile de experienţă ale fiecăruia. Deci, inginerul de cunoştinţe, în general un

ignorant al domeniului cunoaşterii specifice expertului, iar expertul cu foarte puţine cunoştinţe

despre sisteme expert au puncte de vedere ce vor fi puse de acord în urma acestei colaborări.

Prin urmare, nu este uşor pentru un expert să găsească un inginer de cunoştinţe în vederea

colaborării deoarece cunoştinţele sunt expansive şi greu de formulat într-o manieră concisă.

Aceasta motivează necesitatea ca experţii umani să aibă mai multe cunoştinţe despre sistemele

expert. Sunt necesare cât mai multe utilitare specifice dezvoltării sistemelor expert, trebuie să fie

posibil ca eventual mai mulţi experţi să fie adepţii utilizării SE fără a fi utilizate cunoştinţele lor

în acelaşi timp de către inginerii de cunoştinţe. În orice eventualitate, punctele de vedere ale

inginerului de cunoştinţe sunt utilizate în proiectare şi este limpede că procesul construirii

sistemelor expert este mai eficient dacă expertul este cunoscător asupra tehnologiilor şi

metodologiilor sistemelor expert.

7.1.2. Originea Sistemelor Expert. Experimentări şi realizări

După ce s-a trecut de limitările de spaţiu şi timp, apreciate la câteva ordine de mărime, au

fost marcate succese în comercializarea mai multor programe ce furnizează taskuri specifice cu

cele ale experţilor umani, numite şi sisteme expert. În 1960 NASA a hotărât trimiterea unui

vehicul pe Marte, unul dintre scopuri fiind cercetarea structurii chimice a solului acestei planete.

Pentru aceasta cercetătorii de la Stanford au construit un program ce a trebuit să înglobeze

experienţa chimiştilor în identificarea structurii chimice a unor substanţe pornind de la

spectrograma de masă. În dezvoltarea programului numit DENDRAL sunt investigate

cunoştinţele experţilor umani în domeniul spectrografiei de masă, analizei structurilor chimice,

descoperindu-se cu acest prilej şi o serie de erori în literatură. Datorită înglobării experienţei

chimiştilor, utilizând atât deducţiile empirice cât şi raţionamente ştiinţifice, DENDRAL a fost

considerat primul sistem expert. El a fost scris în FORTRAN şi cunoştinţele proprii ale

domeniului erau integrate cu mecanismul de inferenţă, motiv pentru care ameliorarea sa este

greu fezabilă. DENDRAL a fost urmat de un mare număr de alte SE utilizate în rezolvarea de

probleme similare cu cele realizate de experţii umani.

Se consideră că istoria sistemelor expert a început în anul 1964 cu elaborarea programului

DENDRAL-64, conceput în vederea construirii, enumerării şi notării moleculelor organice, ca

structuri arborescente şi grafuri ciclice. Acest sistem generează reprezentări structurale plauzibile

pentru moleculele organice, pornind de la spectogramele de masă ale substanţelor analizate.

Dezvoltat şi perfecţionat în decursul mai multor ani de către autorii săi, în cadrul

laboratoarelor de inteligenţă artificială de la Universitatea Standford, sistemul DENDRAL a

servit ca exemplu de pionierat pentru a arăta puterea pe care metodele inteligenţei artificiale o

pot dovedi în aplicaţii deosebit de sofisticate. În domeniul chimiei se mai pot aminti alte realizări

semnificative, sistemul CRYSALIS, realizat de Engelmore şi Terry, care interpretează

Inteligenţa Artificială Cap.7. Sisteme Expert

70

diagramele de densitate ale electronilor pentru proteine, sau sistemul SECS (Wipke, 1974) care

acordă utilizatorilor asistenţă la conceperea schemelor pentru sinteza chimică organică.

În domeniul geneticii moleculare, sistemul MOLGEN asistă pe cercetători la elaborarea

planurilor pentru experimentele cu ADN. Acest sistem a introdus în inteligenţa artificială unele

dezvoltări privind planificarea în sistemele expert.

Domeniul medicinii este reprezentat în numeroase şi variate sisteme expert, dintre care

cel mai reprezentativ fiind sistemul expert MYCIN, bazat pe reprezentarea relaţiilor cauzale cu

ajutorul regulilor de producţie. Sistemul funcţionează interactiv pentru elaborarea diagnosticului

în cazul infecţiilor bacteriene ale sângelui, folosind cunoaşterea despre simptome şi datele

rezultate din analiza sângelui, producând în acelaşi timp şi recomandări privind tratamentul

medicamentos adecvat. Pornind de la experienţa acumulată la elaborarea sistemului MYCIN, s-a

dezvoltat un alt sistem EMYCIN. Acesta din urmă este un sistem expert instrumental, capabil de

a fi încărcat cu cunoaştere specifică diferitelor domenii ale practicii clinice, generând astfel

sisteme expert specializate. În acest fel a fost obţinut sistemul expert PUFF pentru diagnosticarea

bolilor pulmonare sau sistemul HEADMED pentru diagnosticarea şi medicaţia unor afecţiuni

neuro-psihiatrice. Un alt sistem bine cunoscut în practica medicală, sistemul INTERNIST, este

bazat pe cunoaşterea privind diagnosticul în medicina internă şi supravegherea clinică a

pacienţilor (Pople, Myers,Miller 1977).

Sistemul CASNET (Weiss,1978), destinat diagnosticării bolilor de ochi, organizează

cunoaşterea despre boli pe următoarele trei niveluri:

simptome şi teste de laborator care alcătuiesc probe directe ale existenţei bolii;

stări fiziopatologige ale pacientului, presupuse a putea fi prezente fără a fi considerate mutual

exclusive;

categoriile de boli, descrise pe baza de pattern-uri de stări.

Prin organizarea bazei de cunoştinţe şi prin prevederea mai multor strategii de control, sistemul

expert CASNET se detaşează ca un sistem mai elaborat, în ceea ce priveşte tratarea conceptelor

fundamentale, de adâncime şi de complexitate, ale cunoaşterii despre domeniul de expertiză.

Un ultim exemplu din domeniul medicinii, sistemul expert MDX, are o structură mai

complexă, alcătuită dintr-o colecţie de mici subsisteme expert, care comunică între ele prin

intermediul unei zone de comunicaţii cu ajutorul unei tehnici speciale (de broacasting).

În domeniul explorărilor geologice pentru descoperirea zăcămintelor de minerale,

sistemul expert PROSPECTOR acordă asistenţă geologilor la evaluarea interesului pe care o

anumită zonă dedicată prospecţiunilor şi forajelor geologice, o prezintă în privinţa existenţei

depozitelor minerale de un anumit tip căutat.

Un sistem expert cu performanţe deosebite în ceea ce priveşte nivelul şi calitatea

rezultatelor obţinute este sistemul AM destinat descoperirii conceptelor în matematici. Prin

combinarea şi adaptarea diferitelor metode ale inteligenţei artificiale, folosirea cunoaşterii

declarative, normative şi euristice, sistemul conduce la producerea unor raţionamente rafinate

comparabile cu cele obţinute de experţii de mare clasă.

Sistemul expert HEARSAY-II, destinat înţelegerii vorbiri, se caracterizează prin

utilizarea unor tehnici deosebite de organizare a cunoaşterii, de control şi de comunicaţie între

componente. Cunoaşterea este organizată în unităţi procedurale denumite surse de cunoaştere,

care sunt alcătuite dintr-o componentă care evaluează aplicabilitatea sursei de cunoaştere

(componenta condiţională) şi o componentă care reprezintă însuşi programul de acţiune pe care

Inteligenţa Artificială Cap.7. Sisteme Expert

71

trebuie să îl îndeplinească o sursă de cunoaştere aplicabilă, sau invocată spre aplicare. Aceste

concepte au fost dezvoltate ulterior în sistemul HEARSAY-III, care este un sistem cadru

independent de domeniu, destinat implementării, pe bază exclusivă de cunoaştere expertă, a unor

tipuri diverse de sisteme expert dedicate.

Cu toate că elaborarea sistemelor expert independente de domeniu este încă la primele

încercări şi realizări, se poate afirma că viitorul îi aparţine. Aceasta se datorează necesităţii de

asigurare a unor componente cognitive şi rezolutive performante pentru orice fel de domeniu

aplicativ. Un astfel de sistem expert independent de domeniu este sistemul INTEXP.

În informatică, sunt cunoscute sisteme expert pentru asistarea elaborării de programe, ca

de exemplu sistemul PECOS care generează programe în limbajul LISP pornind de la descrierea

algoritmilor. Sistemul expert APE generează programe în limbajul INTERLISP, pornind de la

specificaţiile unor algoritmi abstracţi şi tipuri abstracte de date prelucrate.

În domeniul ingineriei cunoaşterii şi inteligenţei artificiale, instrumentele elaborate

reprezintă doar unele căutări şi experimentări. De exemplu, sistemul TEIRESIAS oferă

utilizatorilor de sisteme de tip MYCIN posibilităţi de achiziţie a cunoaşterii experte. Un

instrument mai general de implementare a unor noi sisteme expert, a fost dezvoltat la

Universitatea Standford, sub denumirea de AGE. Acest sistem este rodul experienţei colectivului

de inteligenţă artificială a acestei universităţi, experienţă ilustrată de numeroase sisteme expert

de mare succes, dintre care să menţionăm numai sistemele DENDRAL, META-DENDRAL,

MYCIN, AM, MOLGEN, CRYSALIS, SACON.

Dezvoltarea SE cere noi specialişti pentru captarea cunoştinţelor şi exprimarea acestora

sub formă de reguli. Devine necesară o nouă specializare numită "inginer de cunoştinţe", un

intermediar între specialistul în calculatoare şi expertul uman.

Metodologia de captare a cunoştinţelor este cunoscută sub numele de ingineria

cunoaşterii. Ca urmare se poate concluziona:

un SE poate fi expert într-o singură chestiune. Dacă se construieşte un SE ce rezolvă două

probleme sunt posibile critici pentru fiecare dintre acestea;

un SE poate să rezolve numai acele probleme pe care expertul uman le-a transmis. Dacă se

construieşte un SE fără a fi consultat expertul uman acesta are cunoştinţe limitate şi deci este

mai slab decât expertul uman;

un SE nu va putea niciodată să înlocuiască omul.

O caracteristică specifică SE este marcată de faptul că acestea pot fi adaptive,

caracteristică marcată prin faptul că schimbările efectuate la diferite intervale de timp nu

determină modificări ale programelor. Pentru aceasta cunoştinţele sunt ţinute sub formă de reguli

care pot fi uşor citite şi modificate de utilizator cu mici intervenţii din partea acestuia. În multe

SE uzuale există o distincţie netă între cunoştinţe şi mecanismele ce manipulează aceste

cunoştinţe. Prin modificarea naturii cunoştinţelor utilizate, un SE devine capabil a fi utilizat în

alte zone ale aceluiaşi domeniu. De exemplu, un SE destinat diagnosticului medical, prin

schimbarea cunoştinţelor medicale şi substituirea acestora de cunoştinţe inginereşti poate deveni

expert în domeniul autodiagnozei.

O caracteristică specifică a sistemelor expert este organizarea pe reguli în loc de

instrucţiuni. Pe când calculatoarele convenţionale folosesc programe ce intră linie cu linie în

execuţie, SE constau dintr-o colecţie de reguli ce nu sunt executate secvenţial decât atunci când

condiţia de aplicabilitate este îndeplinită. Conceptual, punctul de vedere este rezonabil pentru că

Inteligenţa Artificială Cap.7. Sisteme Expert

72

în SE fiecare linie începe prin cuvântul IF, care în accepţiunea clasică înseamnă că grupul de

instrucţiuni din corpul său sunt executate numai dacă valoarea condiţiei este adevărată.

7.2. Structura generală a unui sistem expert

Aşa cum s-a arătat şi în capitolul anterior, sistemele expert acoperă o clasă foarte mare de

programe ce au o serie de caracteristici comune, dar diferă în multe privinţe faţă de programele

clasice. În cazul SE, baza de cunoştinţe are o serie de caracteristici care oferă o independenţă a

cunoştinţelor, cum sunt:

- granularitatea cunoştinţelor (independenţa acestora);

- ordinea în care sunt stocate cunoştinţele în baza de cunoştinţe nu influenţează rezultatele;

- modificarea elementelor bazei de cunoştinţe nu are implicaţii deosebite asupra

programului;

- sistemul expert poate fi caracterizat ca o nouă modalitate de programare declarativă.

Pentru a se putea înţelege mai bine modul în care funcţionează un sistem expert, se va

prezenta în figura 7.2 conceptul de bază al funcţionării unui SE. Utilizatorul furnizează

sistemului expert fapte sau alte informaţii şi primeşte, ca răspuns, "sfaturi" sau "e xpertize".

Fig. 7.2. Conceptul de bază al funcţionării unui SE

O caracteristică a sistemelor expert este cea privind competenţa acestora de a furniza

explicaţii asupra raţionamentelor întreprinse pentru ajungerea la rezultat, explicaţii care trebuie

să fie exprimate într-un limbaj cât mai apropiat de limbajul natural.

7.2.1 Componentele sistemelor expert

Toate aceste caracteristici determină o structură specifică pentru sistemele expert,

structură ce poate fi grupată în jurul a trei module principale, module ce determină şi ceea ce se

numeşte sistem esenţial:

Baza de cunoştinţe este reprezentată ca o structură de date ce conţine ansamblul

cunoştinţelor specializate introduse de către expertul uman. Cunoştinţele stocate în baza de

cunoştinţe sunt în principal descripţii de obiecte în conjuncţie cu relaţiile dintre acestea. Baza

de cunoştinţe face parte din sistemul cognitiv, cunoaşterea fiind memorată într-un spaţiu

special organizat. Forma de stocare a informaţiei experte trebuie să asigure căutarea pieselor

Utilizator

Baza de cunoştinţe

Motor de inferenţă

Fapte

Expertize

Sistem Expert

Inteligenţa Artificială Cap.7. Sisteme Expert

73

de cunoaştere specificate direct prin simboluri identificatoare, căutarea pieselor de cunoaştere

referite indirect prin proprietăţi asociate sau valori atribuite acestora, căutarea pieselor de

cunoaştere prin inferenţe sau lanţuri inferenţiale ce pornesc de la alte piese de cunoaştere sau

de la proprietăţi asociate acestora, menţinerea bazei de cunoştinţe în concordanţă cu evoluţia

domeniului de expertiză.

Mecanismul de inferenţă reprezintă noutatea sistemelor expert. El preia cunoştinţele din

baza de cunoştinţe ce sunt utilizate pentru construirea raţionamentului. Mecanismul de

inferenţă urmăreşte o serie de obiective majore cum sunt: alege strategia de control funcţie de

problema curentă ce o are de rezolvat, elaborează planul de rezolvare a problemei după

necesitate, execută comutarea de la o strategie de control la alta, execută acţiunile prevăzute

în planul de rezolvare, constituie informaţiile de control pentru mecanismele fundamentale

ale mecanismului de inferenţă. Cu toate că în esenţă mecanismul de inferenţă este constituit

dintr-un ansamblu de proceduri în sensul obişnuit al termenului, modul în care utilizează

cunoştinţele nu este prevăzut prin nici un program, acesta fiind condiţionat de datele şi

cunoştinţele pe care le posedă.

Baza de fapte este reprezentată de o memorie auxiliară ce conţine toate datele utilizatorului

(faptele iniţiale ce descriu enunţul problemei de rezolvat), şi rezultatele intermediare produse

în cursul procedurii de deducţie. Conţinutul bazei este păstrat într-o memorie RAM şi poate

fi conservată doar la cererea utilizatorului.

Pe lângă aceste module un sistem expert mai conţine o serie de module ce asigură

comunicarea cu operatorul şi expertul uman.

Modulul de comunicaţie este destinat furnizării interfeţelor specifice pentru utilizatorii

sistemului expert cât şi pentru achiziţia de cunoştinţe. În compunerea acestui modul intră

procesoare specifice pentru limbajele de comunicare înglobând limbaje de comunicare cu

utilizatorul, limbaje pentru achiziţia cunoştinţelor, procesoare pentru comunicarea internă între

sistemul expert şi echipamente auxiliare pentru stocarea cunoaşterii, procesoare speciale pentru

intrări/ieşiri grafice, achiziţia senzorială şi instrumentală a cunoaşterii, comanda elementelor de

execuţie.

Interfaţa utilizator este cea care asigură dialogul între utilizator şi sistem în limbaj

cvasinatural prin translatarea limbajului intern. Tot ea este cea care comunică mecanismului de

inferenţă cererile utilizatorului, rezultatul acestora fiind furnizat utilizatorului. În egală măsură

facilitează achiziţia enunţului problemei iniţiale şi comunicarea rezultatului. Sunt situaţii în care

interfaţa utilizator este mai sofisticată, integrând dicţionare, fiind capabilă de analize

lexico-sintactice, verificări semantice, corecţii ortografice, gestiunea prescurtărilor etc.

Modulul de achiziţie a cunoştinţelor preia cunoştinţele specializate furnizate de

expertul uman sau inginerul de cunoştinţe într-o formă ce nu este specifică reprezentării interne.

O serie de cunoştinţe pot fi furnizate prin fişiere specifice bazelor de date sau alte programe

externe. El recepţionează cunoştinţele, verifică validitatea acestora şi în final generează o bază de

cunoştinţe coerentă.

Modulul de explicaţii permite trasarea drumului urmat în raţionare de către sistemul

rezolutiv şi emiterea justificărilor pentru soluţiile obţinute, evidenţiindu-se în acest mod cauza

greşelilor sau motivul eşecului. El ajută expertul să verifice consistenţa bazei de cunoştinţe.

Inteligenţa Artificială Cap.7. Sisteme Expert

74

În fig. 7.4,a se prezintă o structură generală a unui sistem expert ce înglobează toate

modulele descrise mai sus. Aşa cum se observă, în figură se disting mai multe activităţi începând

cu achiziţia cunoştinţelor, reprezentarea acestora, tratarea cunoştinţelor şi utilizarea lor.

Înglobarea modului de achiziţie a cunoştinţelor face oricând posibile modificări ale bazei de

cunoştinţe odată cu rafinarea acestora.

Puterea rezolutivă a sistemelor expert se bazează pe abilitatea acestora de a memora, a

întreţine şi a manevra cantităţi mari de piese de cunoaştere specifice domeniului de expertiză, de

a oferi o înaltă flexibilitate de reprezentare a cunoaşterii, indiferent de complexitatea acesteia,

de a elabora strategii şi planuri de rezolvare rafinate, şi de a-şi îmbunătăţi aceste performanţe

prin învăţare şi experienţă.

Deoarece sistemele expert sunt de fapt sisteme inteligente bazate pe cunoaştere (KBS-

Knowledge Based expert System) pentru rezolvarea problemelor, structura acestora este

presupusă a satisface cerinţele care definesc orice sistem formal. De aceea, sistemele expert sunt

dotate cu mecanisme fundamentale, axiomatice, care se aplică pe un suport alcătuit din piese de

cunoaştere despre obiecte, acţiuni şi relaţii, cu ajutorul cărora sunt generate noi entităţi bine

formate de tip obiectual, procesual sau relaţional.

Indiferent de cerinţele particulare ale domeniului de expertiză dat, orice sistem expert poate fi

conceput în concordanţă cu următoarea schemă generală de structură (fig. 7.4,b):

Fig. 7.4,a Structura generală a unui sistem expert

Expert uman

Inginer de

cunoştinţe

Utilizator

Mo

du

l d

e ac

hiz

iţie

a c

un

oşt

inţe

lor

Inte

rfaţ

a u

tili

zato

r

Baza

de

cunoştinţe

Mecanism

de

inferenţă

Modul

de

explicare

Baza

de

fapte

Achiziţia de

cunoştinţe

Reprezentare

cunoştinţelor

Tratarea

cunoştinţelor

Utilizarea

cunoştinţelor

Inteligenţa Artificială Cap.7. Sisteme Expert

75

Sistemul cognitiv, care este dedicat realizării următoarelor funcţii şi obiective

legate de cunoaştere:

- memorarea cunoaşterii experte într-un spaţiu de memorare special organizat în acest

sens, denumit bază de cunoştinţe;

- căutarea pieselor de cunoaştere specificate direct, prin simboluri identificatoare;

- căutarea pieselor de cunoaştere referite indirect, prin proprietăţi asociate şi/sau valori

atribuite acestora;

- căutarea pieselor de cunoaştere prin inferenţe sau lanţuri inferenţiale care pornesc din

alte piese de cunoaştere;

- menţinerea bazei de cunoştinţe în actualitate cu evoluţia domeniului de expertiză;

Sistemul rezolutiv, care este dedicat următoarelor funcţiuni şi obiective legate de

rezolvarea problemelor:

- alegerea strategiei de control adecvate pentru tipul problemei curente;

Prelucrarea

cunoaşterii

despre domeniu

Prelucrarea cunoaşterii

despre sistem

Fig. 7.4,b. Structura generală a unui sistem expert

Index:

pbd - problemă bine definită

cpc - cerere piesă de cunoaştere

ipc - introducere piesă de cunoaştere

pc - piesă de cunoaştere

dr - drumuri de raţionament

j - justificări

amf - adecvare mecanisme fundamentale

pmc - piesă de metacunoaştere

Sistem

metarezolutiv

Sistem

rezolutiv

Sistem

cognitiv

Sistem

explicativ

Sistem

de comunicare

Baza de cunoştinţe

Nivelul metacunoaşterii

Nivelul cunoaşterii conceptuale

Nivelul cunoaşterii factuale

Solicitare

Răspuns

amf

pbd

dr

j

ipc

cpc

pc

cpc

cpc

pc ipc

pc

amf

amf

pmc

Inteligenţa Artificială Cap.7. Sisteme Expert

76

- comutarea controlată de la o strategie la alta;

- elaborarea planului de rezolvare a problemei curente;

- desfăşurarea acţiunilor prevăzute în planul de rezolvare;

- verificarea consistenţei paşilor de rezolvat;

- trasarea drumurilor de raţionament prin arbori deductivi.

Sistemul explicativ, care este dedicat următoarelor funcţiuni şi obiective legate de

justificarea soluţiilor obţinute de sistemul expert la problemele utilizatorilor:

- interpretarea drumurilor de raţionament trasate de către sistemul rezolutiv şi emiterea

justificărilor pentru soluţiile obţinute;

- evidenţierea cauzelor greşelilor sau eşecului;

- evidenţierea pieselor de cunoaştere care lipsesc în lanţul de inferenţe, sau a celor care

sunt suspecte de a furniza cunoaştere eronată.

Sistemul de comunicare, care este dedicat comunicării dintre sistemul expert şi

utilizatorul acestuia. Acest dialog se poate realiza pe mai multe căi:

- în mod interactiv, întrebare-răspuns;

- sistem de meniuri;

- limbaj natural;

- interfaţă grafică;

În funcţie de complexitate sistemului expert şi de modul de realizare a acestui dialog, sistemul de

comunicare poate incorpora:

- procesoare pentru limbajele de comunicare cu utilizatorul;

- procesoare pentru limbajele de reprezentare a cunoaşterii;

- procesoare pentru comunicarea internă între sistemul expert şi echipamentele auxiliare

de stocare a cunoaşterii;

- procesoare speciale: intrare/ieşire grafică, achiziţia senzorială şi instrumentală a

cunoaşterii, comanda dispozitivelor cu caracter efectorial.

Sistemul meta-rezolutiv este dedicat unor funcţiuni şi obiective legate de adecvarea

mecanismelor fundamentale ale sistemului expert la caracteristicile domeniului de expertiză:

- adecvarea mecanismelor fundamentale ale sistemului cognitiv: metoda de reprezentare

a cunoaşterii, mecanismele inferenţiale aplicate peste baza de cunoştinţe, metode da căutare şi

revenire prin grafuri şi arbori, criteriile de clasificare şi organizare a bazelor de cunoştinţe.

- adecvarea mecanismelor fundamentale ale sistemului rezolutiv: structura informaţiei de

control, metodele de rezolvare, strategiile de control, mecanismele de comutaţie pentru strategii,

planuri şi metode, mecanisme de trasare şi revenire;

- adecvarea mecanismelor fundamentale ale sistemului explicativ: tipuri de întrebări,

adânvimea justificărilor;

- adecvarea mecanismelor fundamentale ale sistemului de comunicare: gramatica

limbajului de comunicare, lexicul, sistemul de priorităţi şi restricţii legate de numărul posturilor de

lucru cu sistemul şi de clasificarea utilizatorilor.

7.2.2. Categorii de aplicaţii

Ne propunem să analizăm care sunt diferenţele dintre sisteme expert realizate pentru

diferite aplicaţii, dacă acestea se pot grupa în clase, modul în care are loc transferul

cunoştinţelor. La multe din aceste întrebări nu se poate da un răspuns net şi precis, însă pot

Inteligenţa Artificială Cap.7. Sisteme Expert

77

apărea elemente ce fac obiectul cercetărilor viitoare. În acest context este necesară o analiză

asupra limitărilor sistemelor expert, cât şi a posibilităţilor viitoare de evoluţie. Odată stabilite

aceste chestiuni se va încerca să se definească principiile de bază ale metodologiei de construcţie

a unui sistem expert.

Fără a propune o grupare a sistemelor expert foarte diferite în clase, putem face o

diferenţiere, în funcţie de natura scopului urmărit, deci de utilizare. Astfel, aceste sisteme se pot

împărţi în trei mari categorii:

1) SE de clasificare - interpretare, pot realiza spre exemplu clasificarea cauzelor

posibile ale unei disfuncţionări (cantitative, calitative, vizuale) în scopul de a determina

semnificaţiile acestor tipuri de date. Acest tip de SE este cel mai vechi (diagnostic, prospecţii) şi

cel mai des utilizat. Dezvoltate cu precădere pentru aplicaţiile în medicină, cercetările au

influenţat aplicaţiile ulterioare rezultând ceea ce numim diagnostic tehnic. Dintre sistemele

utilizate în domeniul medical, MYCIN este un exemplu perfect. Sistemul utilizat pentru

diagnosticarea infecţiilor bacteriene utilizează o reprezentare a cunoştinţelor sub formă de reguli,

descriind legăturile între simptome şi bolile posibile. Cunoştinţele folosite aici sunt cu precădere

empirice şi de aceea mai sunt numite şi "cunoştinţe de suprafaţă". Este util să remarcăm faptul că

sistemele ce utilizează cunoştinţe de suprafaţă nu pot să justifice raţionamentul ce explică

deducţiile realizate. La nivelul raţionamentelor utilizate în MYCIN se disting două caracteristici

principale:

- raţionare înainte (singurul mod);

- cercetare exhaustivă – se referă la aplicarea tuturor regulilor posibile pentru a creşte

sau a diminua factorul de certitudine al concluziei.

2) Sisteme expert de control (monitorizare) - sunt caracterizate prin introducerea

noţiunii "timp", care este primordială, şi au sarcina de a supraveghea buna evoluţie a unui proces.

Aceste sisteme supraveghează evoluţia datelor sau semnalelor provenind de la procesul

controlat. Ele tratează, deci date continue într-o logică nemonotonă ca în exemplul:

(dacă A este adevărat la un moment T,

atunci A este lansat în execuţie la momentul T+Q).

Pentru aceste sisteme măsura intervalelor regulate de timp trebuie să fie interpretată,

generând declanşarea unei acţiuni imediate, atâta timp cât anumite condiţii sunt îndeplinite. Este

necesară deci o structură de control ce permite evoluţia datelor altfel decât în cazul clasic al

diagnosticării.

Cunoştinţele pot fi reprezentate sub formă de tabele cu date care, în funcţie de valoarea

mărimii controlate selectează strategiile ce vor fi aplicate la momentele următoare.

3) SE de anticipare - acestea sunt caracterizate printr-o alocare a resurselor ţinând cont

de restricţii. Ex. CAO (anticiparea unui rezultat) pentru meteorologie, pentru anticiparea

evoluţiei în viitor pe baza datelor prezente şi a evoluţiilor trecute, pentru ordonarea şi

planificarea producţiei. Această compartimentare a fost făcută pentru a permite studiul şi

căutarea după caz a sistemului cadru pentru dezvoltarea unei aplicaţii. Spre exemplu, sistemele

expert utilizate în diagnoză nu pot fi utilizate la dezvoltarea aplicaţiilor de conducere a

proceselor.

În concluzie, este deci indispensabilă determinarea clasei aplicaţiei şi căutarea sistemului

de dezvoltare adecvat.

Inteligenţa Artificială Cap.7. Sisteme Expert

78

7.2.3. Alternative în construcţia unui sistem expert

Pentru construirea unui sistem expert sunt posibile două alternative:

existenţa unei aplicaţii care în urma analizei justifică abordarea cu un sistem expert în

detrimentul programării clasice;

existenţa unui sistem expert cadru pentru o anumită categorie de aplicaţii la care se ataşează

o bază de cunoştinţe specializată în problema ce se cere rezolvată.

Hotărârea de a utiliza un sistem expert pentru rezolvarea problemei este luată după

examinarea următoarelor situaţii:

dacă o problemă este bine rezolvată prin modele numerice clasice (programarea liniară sau

altele) este inutilă dezvoltarea unui sistem expert. Din contră, dacă problema nu este bine

rezolvată în maniera clasică decât în condiţii ideale rar atinse, sau numărul parametrilor de

natură simbolică puşi în joc este dificil de luat în consideraţie într-un model numeric, atunci

se poate apela la o rezolvarea utilizând sisteme expert.

existenţa expertului uman, recunoscut ca fiind persoana ce cunoaşte bine lucrul studiat.

Aceasta explică de ce construcţia unui sistem expert depinde de un expert uman pentru baza

sa de cunoştinţe şi de ce dacă problema nu este rezolvată de persoane nu poate fi rezolvată

nici de un sistem expert;

dacă evoluţia cunoştinţelor în domeniu este caracterizată de o dinamică rapidă, necesită

frecvente schimbări, atunci un sistem expert se poate aplica. În această situaţie se poate folosi

şi un program clasic, însă amendamentele aparent minore, aduse la acest program îi pot

modifica profund comportamentul.

Realizarea programelor clasice este un proces rigid, greu, ce creează dificultăţi în

elaborarea specificaţiilor, proces ce conduce la programe lipsite de supleţe şi fără posibilităţi de

îmbunătăţire. Din contră, sistemele expert prin însăşi construcţia lor se pretează la modificări

locale numeroase, în condiţiile în care modificările nu afectează coerenţa bazei de cunoştinţe:

principalele calităţi ale expertului uman sunt exprimate în cunoştinţele transferate sistemului,

cunoştinţe ce sunt în general de bun simţ şi nu formalizate. Nu trebuie înţeles însă, că

sistemul expert nu poate raţiona utilizând cunoştinţe puternic formalizate, însă marele câştig

se regăseşte în utilizarea cunoştinţelor slab formalizate;

problemele pentru a căror rezolvarea sunt necesare câteva ore de muncă umană şi nu sunt

repetitive, nu se pretează la rezolvarea cu sisteme expert pentru a căror rezolvare activitatea

este mult mai complexă. Dacă, de exemplu, stabilirea unei configuraţii pentru un sistem de

calcul necesită o zi de muncă umană, ţinând cont de faptul că o problemă similară este

rezolvată practic în fiecare zi, un sistem expert este adecvat;

o cotă a rotaţiei de personal ridicată (cerută des în tehnică) este în aceeaşi măsură un semn că

utilizarea sistemelor expert permite memorarea experienţei acumulate de persoanele ce

lucrează în domeniu (perenitatea informării);

când într-o clasă bine definită de probleme, nu se ştie care va fi rezolvarea precisă,

variabilele de intrare, numărul de terminale, tipul lor, tipuri de comunicaţie numeroase nu

permit scrierea programelor pentru toate variantele în forma clasică.

Tabelul 7.1 sumarizează posibilele utilizări ale sistemului expert.

Inteligenţa Artificială Cap.7. Sisteme Expert

79

Tabelul 7.1

Problema

Soluţia

Precisă şi stabilă

Precisă, dar evoluează

frecvent

Fluctuantă într-un

domeniu bine

stabilit

Cunoscută

Programare clasică

SE uşor de actualizat

ca urmare a evoluţiei

SE pentru că se poate

adapta la fiecare

problemă

Necunoscută

SE pentru găsirea

soluţiei, apoi abandonat

în favoarea programării

clasice

SE pentru căutarea

soluţiei, apoi adaptat

pentru exploatare

SE pentru căutarea

soluţiei, uşor de

exploatat pentru că se

adaptează la problema

precisă

7.2.4. Etape ale realizării unui sistem expert

Paralel cu derularea procesului de transfer al experienţei, procesul de realizare a unui

sistem expert poate fi descompus în trei perioade:

A. Un studiu de fezabilitate realizat mai întâi cu ajutorul unei machete de sistem expert;

B. Realizarea prototipului - vizează construirea unui prototip pe care se experimentează

diferitele moduri de reprezentare a cunoştinţelor, mecanismele de inferenţă realizate;

C. În final, sistemul expert este realizat pornind de la prototip. Dacă rezultatele sunt

satisfăcătoare şi structura sistemului realizat ca prototip, permite obţinerea eficacităţii maxime,

urmează etapa de industrializare.

Fig. 7.5. Etapele dezvoltării sistemului expert

În fig. 7.5 se reprezintă cele cinci faze aferente transferului de cunoştinţe în conjuncţie cu

cele trei etape de dezvoltare. Aceasta arată că studiul de fezabilitate este foarte restrâns, însă

dezvoltarea prototipului şi experimentarea reprezintă părţi importante ale procesului de

construcţie. Diferenţa între machetă şi prototip nu poate fi foarte clară, însă, precis prin prototip

se înţeleg subansambluri ale sistemului expert final pe când macheta este total independentă.

Identificare

Conceptualizare

e

Formalizare

Implementare

Validare Industrializare

Prototip

Studiu

de

fezabilitate

Inteligenţa Artificială Cap.7. Sisteme Expert

80

Etapa de prototip permite verificarea rapidă (două sau patru luni) dacă pentru problema

dată se justifică utilizarea sistemului expert. Ea presupune realizarea unei machete care nu

rezolvă decât câteva cazuri tipice. Macheta este realizată fără a urmări aspecte legate de

optimizarea timpului de răspuns şi a memoriei ocupate, sau de validarea formalismului utilizat.

Inginerul de cunoştinţe utilizează pentru aceste reprezentări simple şi flexibile, nuclee existente

fără să urmărească validarea formalismului utilizat.

La finalul acestui studiu, problema trebuie să fie clar definită, permiţând să se ia o decizie

asupra desfăşurării ulterioare a lucrării. Soluţii distincte ale problemei trebuiesc testate şi

comparate pe parcursul dezvoltării prototipului (care poate fi o extensie a machetei). Pentru

aceasta, cel mai comod de utilizat sunt sistemele expert cadru. Acest prototip trebuie, în

majoritatea cazurilor să rămână modest în principiu, el va fi abandonat atunci când inginerul de

cunoştinţe are o idee precisă asupra dezvoltărilor viitoare ale sistemului expert pe baza

experienţelor realizate. În final, este preferabilă abandonarea prototipului, modificările nu pot

garanta eficacitatea sistemului, chiar dacă prototipul este la un moment dat mult mai bine

cunoscut.

Pentru ilustrare să considerăm o comparaţie imaginară: extensia unui prototip (sau a unei

machete) este similară cu aceea de a mări un cart pentru a obţine o maşină de formula I. Aceasta

nu va atinge niciodată performanţele unei maşini construite în acest scop, deficienţele provenind

din însăşi arhitectura cartului. Diferenţa esenţială între această etapă şi etapele precedente rezidă

în faptul că la acest nivel se ştie foarte exact ce facem şi cum facem. Se procedează acum la o

rescriere a prototipului testat în etapa anterioară urmărind satisfacerea condiţiilor de eficacitate.

Baza de cunoştinţe continuă să evolueze pe parcursul acestei faze încorporând cazuri reale şi din

ce în ce mai complexe. Sistemul expert începe să devină utilizabil înainte ca baza de cunoştinţe

şi obiectivul fixat iniţial să fie realizat complet.

Dezvoltarea în varianta clasică descompune problema în subprobleme realizate

independent unele de altele. Din contră, abordarea de viitor este abordarea experimentală şi

incrementală a machetei, prototipului sau a tuturor elementelor. Se observă în varianta clasică

descompunerea în subprobleme cu rezolvarea acestora în paralel. Astfel rezolvarea este limitată,

subproblemele fiind parcurse independent. Construcţia printr-un proces experimental şi

incremental este bazată pe luarea în consideraţie la anumite etape a tuturor subproblemelor într-o

manieră detaliată.

Multe companii se găsesc astăzi la sfârşitul etapei A, o machetă a fost realizată, însă

problemele nu au fost clar delimitate. Dacă decizia de trecere la etapa B era luată (şi multe sunt

deja luate) partea cea mai importantă începe aici. Ca efect, un studiu asupra domeniului va fi

necesar şi indispensabil. El permite determinarea cunoştinţelor utilizate de expertul uman şi

maniera de a le reprezenta, sprijinindu-se pe experienţa deja acumulată în acest domeniu (faza de

conceptualizare, formalizare). Această etapă este importantă căci ea condiţionează urmarea

studiului. Lucrurile care sunt efectuate (reprezentarea cunoştinţelor, utilitare, mecanism de

inferenţă) determină caracteristicile sistemelor expert viitoare şi performanţele lor. Primele

rezultate ale studiului pe teren, permit enunţarea criteriilor de căutare a utilitarelor utilizate în

dezvoltarea sistemului expert.

Prototipul obţinut, deci baza de cunoştinţe nu trebuie să fie voluminoasă, ea serveşte doar

ca suport de decizie pentru autorizarea trecerii la faza următoare. Etapa C începe prin

determinarea utilitarelor corespunzătoare realizării finale (ce pot fi aceleaşi cu cele ale fazei B).

Inteligenţa Artificială Cap.7. Sisteme Expert

81

Realizarea acestei etape se sprijină pe prototipul construit în etapa precedentă insistând pe

eficacitatea performanţelor. Baza de cunoştinţe a SE final se măreşte lent pe măsura avansării

proiectului, prin noi cunoştinţe şi prin rezultatele testelor ce demonstrează validitatea coerenţei

cunoştinţelor. Trebuie amintit că faza de extracţie a cunoştinţelor este lungă şi delicată, ea

consumă o mare parte din timpul total de realizare a sistemului expert.

7.3. De la sistemele de producţii la sistemele expert.

Un mic exemplu

Există o asemănare între structura sistemelor expert şi cea a sistemelor de producţii

prezentate în capitolul precedent. Această asemănare nu este o simplă întâmplare, sistemul de

producţii fiind precursorul sistemului expert. De fapt, Newell şi Simon au elaborat modelul

sistemului de producţii în ideea modelării raţionamentului uman.

Dacă privim structura sistemelor expert prin prisma sistemelor de producţii, baza de

cunoştinţe este o mulţime de reguli. În sistemul expert, producţiile (condiţie, acţiune) sunt

organizate ca reguli, de forma

Regula x: if precondiţii

then concluzie,

condiţia regulii de producţie constând în precondiţiile regulii (partea if), iar acţiunea în concluzia

regulii (partea then). Sistemul rezolutiv al sistemelor expert, acel "inference engine", este

corespondentul ciclului de corespondenţă şi control al sistemelor de producţii.

Ca şi în cazul sistemelor de producţii se pot implementa algoritmi de căutare înainte sau

înapoi. Multe probleme par a fi mai natural implementate utilizând o strategie de căutare înainte. În

situaţii când datele iniţiale ale problemei sunt date şi este dificil de a formula un ipotetic goal,

datele iniţiale sunt plasate în memoria de lucru şi sistemul va utiliza o strategie de căutare înainte.

Sistemele expert utilizează de regulă strategia de căutare inversă (goal-driven expert

system). Iniţial, obiectivul (starea goal) este plasat în memoria de lucru. Sistemul unifică această

stare cu concluziile regulilor din baza de cunoştinţe, selectând o regulă şi plasând premizele

acesteia în baza de cunoştinţe. Acest pas are drept efect descompunerea problemei în subgoal-uri

mai simple. Procesul continuă, premizele adăugate în baza de date devenind noi subgoal-uri ce vor

fi unificate cu concluziile regulilor sistemului. Astfel, pornind de la starea goal şi încercând apoi

verificarea premizelor, sistemul are o comportare asemănătoare cu raţionamentul uman

(verificarea anumitor ipoteze în vederea tragerii unei anumite concluzii).

În sistemele expert, unele subgoal-uri sunt deseori rezolvate prin chestionarea utilizatorului

asupra faptului respectiv. Cazurile în care sistemul solicită "ajutorul" utilizatorului depind de la o

implementare la alta. Astfel, la generarea sistemului expert se pot preciza acele întrebări la care

sistemul va cere răspunsul utilizatorului. Alte sisteme expert cer ajutorul utilizatorului în cazul în

care un subgoal nu poate fi unificat cu nici una din concluziile regulilor din baza sa de cunoştinţe.

Pentru claritatea celor discutate, în continuare să ne imaginăm un mic sistem expert pentru

diagnosticul unei pene de automobil:

Regula 1: if

motorul se alimentează and

demarorul învârteşte arborele cotit,

Inteligenţa Artificială Cap.7. Sisteme Expert

82

then problema este bujiile.

Regula 2: if

demarorul nu învârteşte arborele cotit and

luminile nu se aprind

then problema este bateria sau cablurile.

Regula 3: if

demarorul nu învârteşte arborele cotit and

luminile se aprind

then problema este demarorul.

Regula 4: if

este carburant în rezervor and

este carburant în carburator

then motorul se alimentează.

Să presupunem că sistemul expert este solicitat pentru diagnosticarea unei pene de

automobil, utilizatorul plasând în baza de cunoştinţe întrebarea:

"problema este X" problem(X).

Trei din regulile sistemului expert sunt aplicabile: regula 1, regula 2 şi regula 3. Dacă

rezolvarea conflictului se face în favoarea regulii cu numărul cel mai mic (prima regulă aplicabilă),

atunci regula 1 va fi declanşată. Aplicarea acestei reguli va avea drept consecinţă instanţierea

variabilei X cu valoarea "bujiile" şi premizele regulii 1 vor fi copiate în memoria de lucru (fig.

7.6). Sistemul va încerca deci să analizeze ipotetica cauză că bujiile ar fi defecte .

De remarcat, că regula 1 are două premize şi amândouă dintre acestea trebuie să fie

îndeplinite pentru a se trage concluzia respectivă. Premizele sunt ramurile unui nod AND al

arborelui de deducţie, reprezentând descompunerea problemei (stabilirea faptului că bujiile sunt

defecte) în subprobleme (stabilirea faptelor că "motorul se alimentează" şi "demarorul învârteşte

arborele cotit"). Se poate aplica apoi regula 4, a cărei concluzie este echivalentă cu faptul că

motorul se alimentează cu combustibil. Aplicarea acestei reguli va avea drept efect adăugarea

premizelor corespunzătoare în memoria de lucru (fig. 7.7). În acest moment în memoria de lucru

sunt trei piese de cunoaştere (carburant în rezervor, carburant în carburator, demarorul învârteşte

arborele cotit) care nu pot fi unificate cu concluzia nici uneia din regulile sistemului (fig. 7.8).

Memoria de lucru

problema este X

Reguli:

regula 1

regula 2

regula 3

regula 4

Fig. 7.6. Starea iniţială a sistemului expert

Inteligenţa Artificială Cap.7. Sisteme Expert

83

Astfel, sistemul expert va întreba utilizatorul despre veridicitatea acestora. Dacă utilizatorul

confirmă că toate cele trei premize sunt adevărate, sistemul expert va stabili faptul că bujiile sunt

defecte ("problema este bujiile"), diagnosticând cu succes pana de automobil şi indicând eventual

modul de soluţionare.

Acesta este desigur un exemplu foarte simplu. Nu numai că baza de cunoştinţe este foarte

redusă, dar sunt ignorate o serie de aspecte privind implementarea reală a unui astfel de sistem.

1) Regulile sunt formulate în limbaj natural ci nu într-un limbaj formal de reprezentare.

2) De asemenea, implementarea reală trebuie să incorporeze un mecanism de backtracking. În

exemplul considerat, dacă prin alegerea regulii 1 nu se poate dovedi că bujiile sunt defecte,

mecanismul de backtracking va determina revenirea în punctul în care ultima regulă a fost

selecţionată în vederea alegerii alteia dintre regulile aplicabile (ex. regula 2).

În urma procesului de căutare este generat graful AND/OR ilustrat în fig. 7.12. Sistemul

explicativ are la bază tocmai acest graf. Memorând evoluţia sistemului expert, sistemul explicativ

utilizează un algoritm de trasare pentru a răspunde la întrebări .

În general, unui sistem expert i se pun două tipuri de întrebări: De ce? şi De unde? (sau

Cum?). Utilizatorul pune întrebarea "de ce?" sistemului expert atunci când acesta din urmă cere

anumite informaţii utilizatorului. Întrebarea "de ce?" având semnificaţia "de ce întrebi acest fapt ?",

sau "de ce trebuie să cunoşti acest lucru ?". Răspunsul la întrebarea "de ce?" este de fapt regula

curentă ce a fost declanşată. Prin întrebarea "Cum ?", utilizatorul poate cere sistemului expert să

justifice cum a dedus anumite informaţii "De unde ai această informaţie ?", sau "Cum ai ajuns la

Memoria de lucru

-motorul se alimentează

-demarorul învârteşte

arborele cotit

-problema este bujiile

Reguli:

regula 1 *

regula 2

regula 3

regula 4

Fig. 7.7 Starea sistemului expert după aplicarea regulii 1

Fig. 7.8. Starea sistemului expert după aplicarea regulii 4

Memoria de lucru

-combustibil în rezervor*

-combustibil în carburator*

-motorul se alimentează

-demarorul învârteşte arborele cotit*

-problema este bujiile*

Reguli:

regula 1

regula 2

regula 3

regula 4*

Inteligenţa Artificială Cap.7. Sisteme Expert

84

această concluzie ?". Răspunsul constă, de această dată, în secvenţa de reguli care au generat

subgoal-ul respectiv.

Pentru exemplificare, să considerăm că sistemul expert pentru diagnosticul penelor de

automobil este prevăzut cu un subsistem explicativ şi, să presupunem, că în urma investigaţiilor

preliminare s-a ajuns în situaţia ilustrată în fig. 7.8. Sistemul expert începe dialogul cu utilizatorul

întrebându-l asupra noilor subgoal-uri apărute în memoria sa de lucru:

Este carburant în rezervor ?

Da

Este carburant în carburator ?

Da

Demarorul învârte arborele cotit ?

De ce

Aici, răspunsul "De ce?" al utilizatorului înseamnă "de ce vrei să ştii acest lucru ?". Sistemul expert

va răspunde:

S-a stabilit că:

1. Motorul se alimentează,

deci, dacă

2. demarorul învârteşte arborele cotit,

atunci problema este bujiile.

Deoarece utilizatorul a răspuns afirmativ la primele două întrebări, regula 4 a fost aplicată,

îndeplinindu-se astfel prima premiză a regulii 1. Când utilizatorul a pus întrebarea "De ce?",

sistemul încerca să stabilească cea de a doua premiză a regulii 1. Deşi, explicaţia sistemului este,

după cum se poate constata, doar o exprimare mai naturală a regulii curente, aceasta dă totuşi

o explicaţie foarte clară asupra scopului urmărit prin chestionarea utilizatorului. Să presupunem că

dialogul continuă în modul următor:

De ce se alimentează ?

De data aceasta utilizatorul a întrebat sistemul de unde ştie că motorul se alimentează cu

combustibil. Răspunsul constă în trasarea raţionamentului care a condus la această concluzie.

Trasarea se face începând cu subgoal-ul curent şi mergând în ordine inversă spre ipoteze.

Răspunsul sistemului este de felul următor:

Aceasta este o consecinţă a regulii 4:

if carburant în rezervor, and

carburant în carburator

then motorul se alimentează

carburant în rezervor: confirmată de utilizator,

carburant în carburator: confirmată de utilizator.

REZUMAT

1. Sistemele expert sunt programe aplicative de inteligenţă artificială bazate pe cunoaştere

specializată de nivel înalt, nivel atins în societate de cei mai competenţi experţi umani ai

domeniilor aplicative ce se implementează în aceste sisteme.

Inteligenţa Artificială Cap.7. Sisteme Expert

85

2. Denumirea de "sisteme expert" derivă din capacitatea acestor programe de a egala unele

din performanţele de gândire şi de intuiţie pe care experţii umani le obţin atunci când

aplică o astfel de cunoaştere pentru rezolvarea unor probleme complexe din domeniul de

expertiză.

3. Din punct de vedere funcţional un sistem expert este definit ca un program ce oferă

cunoştinţe pentru obţinerea rezultatelor taskurilor dificile rezolvate uzual de experţii umani.

Din punct de vedere structural şi arhitectural SE au următoarele caracteristici: a) sunt

construite în general pentru focalizarea taskurilor cu gamă limitată de aplicabilitate; b)

există o separare explicită între cunoştinţe şi metodele de raţionare utilizate în vederea

obţineri unor concluzii pe baza cunoştinţelor; c) sunt capabile să explice propriile acţiunii şi

linii de judecată.

4. Subsistemele definitorii ale unui Sistem Expert sunt: a) Baza de cunoştinţe; b) Baza de

fapte; c) Mecanismul de inferenţă; d) Modulul de explicaţii; e) Modulul de comunicaţie; f)

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

5. Sistemele expert se pot împărţi în trei mari categorii: a) sisteme expert de clasificare –

interpretare; b) Sisteme expert de control (monitorizare); c) sisteme expert de anticipare.

TEST DE AUTOEVALUARE

1. Un sistem expert reprezintă:

a. Un program algoritmic elaborat de colectiv de experţi umani.

b. Un program care asistă expertul uman în rezolvarea problemelor de înaltă dificultate.

c. Un program care este capabil să raţioneze similar unui expert uman.

2. Baza de cunoştinţe a unui sistem expert reprezintă o structură de date care conţine:

a. Ansamblul datelor specializate furnizate de către expertul uman.

b. Ansamblul datelor obţinute la un moment dat prin rularea programului.

c. Ansamblul general al datelor şi cunoştinţelor.

3. Rolul principal al mecanismului de inferenţă într -un sistem expert este:

a. Supraveghează rezolvarea problemei şi intervine în caz de blocare.

b. Alege strategia de control şi elaborează planul de rezolvare a problemei.

c. Achiziţionează date de la utilizator şi de la expertul uman.

4. Prin metacunoaştere se înţelege:

a. Cunoaşterea în domeniul de specialitate al sistemului expert.

b. Un ansamblu de metode de memorare a datelor furnizate de expertul uman.

c. Cunoaşterea despre cunoaşterea însăşi.

5. Ingineria cunoaşterii are ca obiectiv principal:

a. Programarea cunoaşterii.

b. Captarea şi reprezentarea cunoaşterii.

c. Testarea sistemelor expert.

6. Reprezentarea prin condiţii de tipul (dacă A este adevărat la un moment T, atunci A este lansat în

execuţie la momentul T+Q) se utilizează în sisteme expert:

a. de clasificare-interpretare.

b. de control (monitorizare).

c. de anticipare.

Inteligenţa Artificială Cap.7. Sisteme Expert

86

7. Rolul principal al prototipului unui sistem expert constă în:

a. Testarea diverselor moduri de reprezentare a cunoştinţelor şi mecanisme de inferenţă.

b. Identificarea calităţilor sistemului expert după implementarea industrială a acestuia.

c. Identificarea fezabilităţii proiectului de sistemului expert.

8. Justificarea soluţiilor obţinute de sistemul expert la problemele utilizatorilor se obţine prin:

a. Sistemul explicativ.

b. Sistemul de comunicare.

c. Sistemul rezolutiv.

9. Datele utilizatorului şi rezultatele intermediare produse în cursul procedurii de deducţi e sunt

înregistrate în:

a. Baza de date.

b. Baza de cunoştinţe.

c. Baza de fapte.

10. Un sistem expert este recomandat a fi creat şi utilizat în cazul în care:

a. Problema este cunoscută, iar soluţia este cunoscută.

b. Problema prezintă incertitudini şi nu există experţi în domeniu.

c. Domeniul problemei evoluează frecvent, iar soluţia este necunoscută.

Răspuns

1. c 3. b 5. b 7. a 9. a

2. a 4. c 6. b 8. a 10. c