Sunteți pe pagina 1din 26

1.

Sisteme de producie i Sisteme expert


1.1. Generaliti
Un sistem de producii este un sistem care, dispunnd aprioric de anumite elemente, este capabil ca, pe baza lor s genereze altele noi. Un sistem de producii este format din: o baz de fapte o baz de reguli un interpretor de reguli (maina de inferen). Baza de fapte i baza de reguli formeaz mpreun baza de cunotine. Baza de fapte este folosit la stocarea datelor despre problema n cauz. e e!emplu, poate conine date despre un pacient a crui boal trebuie s fie diagnosticat. Baza de reguli conine reguli, care sunt numite uneori "reguli de producie#. $egulile unui sistem de producii pot implica fie doar aciuni, fie anumite informaii i apoi aciuni. %iecare regul const din: o parte de condiie & (antecedent) i o parte de aciune ' (consecin), i are forma: if & t(en ' if )antecedent* t(en )consecin* &a i un e!emplu, considerm urmtoarele reguli medicale simple: +!emple de reguli: $egula ,: '&- pacientul are pete roii ./ febr ./ este colar '0U1&/ pacientul are variol. $egula 2: '&- producia este mic ./ '&- 3nzrile merg prost '0U1&/ ec(ipa managerial a ntreprinderii este slab. /nterpretorul de reguli (structura de control) selecteaz i aplic reguli care pot aduce sc(imbri i4sau adugri la baza de date. 5n sistemele de producie clasice, interpretorul de reguli folosete o accesare bazat pe date, parcurnd regulile ciclic, cutnd una a crei parte de condiie s fie satisfcut, din baza de date. &nd se gsete o astfel de regul, se in3oc partea de aciune a ei. 5n multe cazuri, aciunea rezult prin sc(imbarea bazei de date, ce acti3eaz alte reguli. /nterpretorul de reguli continu parcurgerea ciclic a regulilor pn cnd problema este rezol3at (scopul este ndeplinit) sau se a6unge la o stare unde cele mai multe reguli nu mai sunt aplicabile. /nterpretorul de reguli este partea sistemului de producie care implementeaz strategia de control.

7c(ema de funcionare a unui sistem de producii.

Mulimea regulilor de producie

Alegerea unei reguli aplicabile

Interpretorul de reguli

Baza de fapte Modificarea bazei de fapte

NU

Condiia de oprire este satisfcut DA S !"

Fig. 1.1-1 Schema de funcionare a unui sistem de producii.

8utem s definim un sistem e!pert astfel: Un sistem expert este un sistem de producie capabil s reproduc raionamentele unui e!pert ntr9un domeniu precizat. eci, tot ce s9a afirmat la sistemele de producii este ade3rat i pentru sistemele e!pert. 8e tot parcursul acestei lucrrii 3om face referiri numai la sistemele e!pert. 5n literatura de specialitate sistemele e!pert se mai numesc i sisteme bazate pe cunotine, deoarece informaia pe care o dein i o manipuleaz este luat de la un e!pert uman. &lasificarea sistemelor e!pert se face n funcie de modul de reprezentare a cunotinelor. 5n prezent a3em sisteme e!pert n care cunotinele sunt reprezentate prin: reguli, reele semantice, grafuri conceptuale, cadre, scripturi, obiecte. &ea mai des ntlnit metod este metoda de reprezentare a cunotinelor prin reguli.

1.2. Reprezentarea cunotinelor prin logic


:imba6ele i logica mpreun e!prim aproape toate problemele de reprezentare a cunotinelor. :imba6ele naturale constituie baza de cunotine care 3a fi e!primat iar logica arat cum anume s fie e!primate ntr9un precis mod. &u

sinta!a sa definit formal, logica simbolic este mult mai simpl i mai potri3it procesri pe calculator dect limba6ul natural. 5n ciuda simpliti sale logica este destul de e!presi3 pentru a specifica orice care poate fi programat pe calculator. &el mai simplu limba6 de reprezentare a cunotinelor este logica propoziional sau algebra boolean, care a fost dez3oltat de ;eorge Boole n mi6locul secolului ,<. 5n logica propoziional propoziia poate fi reprezentat printr9o singur liter p. 'ceasta este cea mai simpl cale posibil de reprezentare a propoziiei dar nu poate reprezenta toate detaliile. 'ceast pierdere de detalii poate fi un a3anta6 n unele aplicaii unde principala preocupare nu este structura intern din propoziii ci modelul (forma) de implicare dintre ele. e e!emplu principala preocupare a sistemelor de mentenan a ade3rului este cum anume 3a afecta ade3rul sau falsul fiecrei propoziii dintr9o familie 3aloarea celorlalte. 8entru astfel de sisteme absena detaliilor suplimentare face ca logica propoziional s fie o alegere atracti3 de reprezentare. ac structura intern a propoziiei este important, propoziia poate fi mprit n pri mai mici care pot fi reprezentate separat. 'ristotel propune o mprire a propoziiei n dou pri: subiect i predicat. Urmtorul este silogismul pentru raionamentul despre "main#: if orice main are = roi and acia este o main then acia are = roi. 8remisa ma6or "orice main# este subiectul i "are = roi# este predicatul. &onectarea dintre cele dou premise este stabilit prin termenul "main# care este numit "termen de mi6loc#, el apare ca subiect n prima premis i predicat n cea de9a doua. 5mprirea propoziiei n subiect i predicat este un pas important. :a sfritul secolului ,< filozofii ;ottlob %rege i &(arles 7anders 8ierce dez3olt predicate logice sau "predicate calculus# ca i sistem logic ce poate e!prima o cantitate arbitrar de detalii. 'legerea predicatelor determin ce este reprezentati3. &onsiderm urmtoarele dou predicate i nelesul lor n englez: main (!) ! este o main number>f?(eels(!, n) 1umrul de roi al lui ! este n &u aceast alegere a predicatelor, propoziia "main# 3a putea fi reprezentat prin urmtoarea formul: ( x $(ma sin a ( x$ numberOfwheels ( x'&$% 7imbolul reprezint un cuantificator uni3ersal, iar implic (if9t(en). %ormula poate fi citit astfel: >ricare ar !, dac ! este main, atunci ! are = roi. 'li operatori utilizai n practic sunt: cuantificatorul e!istenial@ operatorul de con6uncie ('1 ) operatorul de dis6uncie (>$) A operatorul de negaie (1>0) +!emplu de mai sus sugereaz urmtoarele obser3aii: > propoziie e!primat n logica predicatelor este dificil de citit. ificultatea este cauzat n parte de cantitatea mare de detalii. :ogica singur este un limba6 e!trem de simplu, cu numai 6umtate din simbolurile de baz. &antitatea de detalii depinde de alegerea predicatelor.

este

operatorul de

8redicatele pot fi mprite n dou clase: predicate care depind de domeniu care sunt specifice unei aplicaii particulare, cum ar fi trucB(!), i predicate generale care sunt independente cum ar fi count(x, n), member(x, s), .a. %ormulele logice sunt statice, declaraii nesc(imbtoare, iar logica include reguli de inferen care pot genera formule noi din formule 3ec(i. &ele mai cunoscute reguli de inferen sunt numite: modus ponens modus tollens ei fiecare regul de inferen este simpl puterea lor 3ine din combinarea regulilor i e!ecuia lor repetat. +!ecuia repetat a lui modus ponens este denumit "for?ard c(aining# iar repetarea lui modus tollens este denumit "bacB?ard c(aining#. &onsiderm urmtorul lan de implicaii: p *' * r' r s% 5n procedeele "for?ard c(aining# direciile de implicare a3nd o afirmaie p, prima regul determin o nou afirmaie q, atunci q mpreun cu a doua regul produce r, n final r mpreun cu a treia regul produce s. $egulile n sisteme for?ard c(aining au de regul dou pri: un tipar care este testat cu ce3a din memoria de lucru i o aciune care este e!ecutat dac testarea tiparului reuete. 'cest tip de regul este numit regul de producie. &nd este e!ecutat regula tiparul din stnga este comparat cu anumite combinaii de elemente din memoria de lucru. ac combinaia reuete aciunea din dreapta este e!ecutat pentru a crea, terge sau e!ecuta elemente din memoria de lucru sau pentru a apela programe care s efectueze anumite calcule. "BacB?ard c(aining# merge n direcia opus: '3nd ~s, ultima regul produce ~r, atunci mpreun cu regula din mi6loc produce ~q i ~q mpreun cu prima regul produce ~p. 'ceste te(nici au fost implementate n limba6ul de interogare al bazei de date 7C:, n limba6ul bazat pe logic 8$>:>; i ntr9o 3arietate de programe de inteligen artificial numite sisteme e!pert. 5ncepnd din ,<DE uni3ersitile au folosit ca e!emplu n proiectare sisteme bazate pe reguli i sisteme bazate pe logic. 0ed 7(ortliffe (,<DF) implementeaz bacB?ard c(aining n sistemul GH&/1 pentru diagnosticul infeciilor bacteriene. $. Io?alsBi, G. +mden i '. &olmerauer au colaborat la dez3oltarea logic ntr9un limba6 a procedeului "bacB?ard c(aining# numit 8$>:>;. /deile din toate aceste abordri au influenat programatori de inteligen artificial, care le9au combinat cu cadrele, cu reelele semantice i cu sistemele orientate pe obiecte.

1.3. Reprezentarea cunotinelor prin reguli


$eprezentarea cunotinelor prin reguli, este cel mai rspndit model de reprezentare. %orma general a unei reguli este: Dac )premise* Atunci )concluzie* unde att premisele ct i concluzia sunt fapte. > regul se poate interpreta n felul urmtor: dac premisele sale sunt ade3rate adic dac faptele care o compun sunt confirmate sau 3erificate de baza de fapte, atunci i faptul sau faptele cuprinse n concluzie sunt ade3rate i pot fi adugate la baza de fapte. 7 considerm pentru e!emplificare, regula:

&

$,:

Dac rata inflaiei este ridicat Atunci preul produselor crete.

unde "rata inflaiei este ridicat# constituie premisa, iar "preul produselor crete# concluzia. 8resupunnd c baza de fapte conine premisa regulii atunci este dedus concluzia ce reprezint cel de9al doilea fapt. 8remisele unei reguli pot fi formate din mai multe fapte, legate prin conectorii logici i, sau, nu. 7 lum spre e!emplificare dou reguli destinate s e3alueze riscul unui proiect de in3estiii: $2: Dac climatul social este bun i cadrul 6uridic este stabil Atunci cadrul general este acceptabil. $J: Dac riscul de fezabilitate este important i cadrul general este acceptabil Atunci riscul global al proiectului este ridicat.

5n conte!tul reprezentat n figura ,.J9,, pe baza acestor reguli sistemul 3a formula concluzia Kriscul global al proiectului este ridicat.# $egulile sunt nregistrate n baza de reguli. >rdinea n care acestea sunt introduse i stocate n sistem este nesemnificati3. Un sistem e!pert este folosit ns pentru a sugera soluii la probleme concrete, particulare. $olul de a descrie problema de rezol3at re3ine faptelor. &um regulile sunt acti3e pe baza faptelor cunoscute, calitatea procesului de raionament este nemi6locit influenat de msura n care sunt disponibile toate faptele rele3ante. 5n funcie de domeniul concret n care se utilizeaz i de condiiile de e!ploatare, faptele pot fi introduse ntr9un 7+ prin una din urmtoarele ci: 8rin tastare la terminal, naintea declanrii procesului deducti3@ 5n cursul procesului deducti3, prin c(estionarea utilizatorului@ 8rin consultarea unei baze de date proprii sau aparinnd altor aplicaii informatice@ 8rin preluare direct de la di3eri senzori@

Fapte cunoscute Dac climatul social este bun i cadrul ,uridic este stabil atunci cadrul general este acceptabil Climatul social bun Concurena este puternic -iscul de fezabilitate este important Cadrul ,uridic este stabil Dac riscul de fezabilitate este important i cadrul general este acceptabil atunci riscul global al proiectului este ridicat Fapt nou (dedus) Cadrul general este acceptabil

Fapt nou (dedus) -iscul global al proiectului este ridicat

Fig. 1. -! "articiparea faptelor nou deduse la continuarea procesului deducti#

1.4. Elemente de logica predicatelor


:ogica predicatelor aprofundeaz studiul propoziiilor, prin descompunerea propoziiilor elementare n prile lor constituti3e. e e!emplu, dac n propoziia: #/onescu este student# se elimin subiectul, se a6unge la o formulare de forma:#...este student#. +!presiile de acest tip, cu un singur element liber, sunt denumite predicate de ordinul nti. eci putem scrie predicatul cu singur argument: esteLstudent (ionescu). ac n poziia termenului liber se introduce o 3ariabil, atunci n funcie de 3alorile care i se atribuie acesteia, se pot obine propoziii care s fie ade3rate sau false. esteLstudent(M). +!presiile cu dou sau mai multe elemente libere sunt denumite predicate de ordinul doi. 7 luam spre e!emplificare urmtoarele e!presii: /on 3orbete cu ;eorge. 8aul este cstorit cu Garia. 8redicatele corespunztoare e!presiilor sunt: 3orbete(/on, ;eorge). cstorit(8aul, Garia). 5n acest conte!t , reprezentarea cunotinelor se poate face n dou moduri:

pe ba a logicii predicatelor de ordinul nti, n care utilizarea 3ariabilelor n formularea faptelor i a regulilor este autorizat numai pentru subiecte. pe ba a logicii predicatelor de ordinul doi , n care utilizarea 3ariabilelor este permis att pentru subiecte ct i pentru predicate.

&u ct regulile au o form mai general de e!primat, cu att ele pot acoperi un ansamblu mai mare de situaii concrete. &reterea gradului de generalitate se obine prin utilizarea de 3ariabile n formularea regulilor. 7 considerm urmtoarele reguli: $,: Dac /onescu lucreaz la biroul financiar i 8opescu conduce biroul financiar atunci 8opescu este eful lui /onescu. $2: Dac 8aul lucreaz la biroul financiar i 8opescu conduce biroul financiar atunci 8opescu este eful lui 8aul.

$eformulnd aceste reguli astfel nct n locul persoanelor i al locurilor de munc s apar 3ariabile, se obine o regul general a crei aplicabilitate se e!tinde la toate persoanele, indiferent de compartimentul n care lucreaz. $J: Dac !ersoana"# lucreaz la $oc"munc i !ersoana"% conduce $oc"munc atunci !ersoana"% este eful lui !ersoana"#. 7tructura abstract a unei reguli este: Dac faptul"# (este ade3rat) i faptul"% (este ade3rat) ..... i faptul"m (este ade3rat) atunci faptul"n (este ade3rat). i se poate interpreta astfel: faptele #,%,&...m adevrate implic i faptul n adevrat. /mplicaia logic, ce n acest caz este de forma : dac ! atunci ' (8N*C) poate fi e!primat i ntr9o alt modalitate, ec(i3alent: ' dac !. 8rin aplicarea ei, se obin reguli a cror structur este: faptul"n (este ade3rat) Dac faptul"# (este ade3rat) i faptul"% (este ade3rat) ..... i faptul"m (este ade3rat). ac din punct de 3edere logic aceste dou formulri sunt ec(i3alente, ele sugereaz moduri diferite de utilizare ntr9un 7+. 'stfel, n primul caz, din faptele ,,2,J...m ade3rate, sistemul poate deduce c i faptul n este ade3rat. :und n considerare acest nou fapt, procesul poate fi reluat, pn la atingerea unei stri finale n care nici o nou deducie nu mai este posibil. 5n consecin, regulile de forma: Dac premise atunci conclu ie constituie reguli deductive. 5n cel de9al doilea caz, procesul are ca punct de pornire concluzia: pentru a stabili faptul"n, care de3ine scopul procesului, trebuie stabilite faptele ,,2,...m.

%iecare dintre acestea de3ine un nou scop pentru a crui stabilire se 3or declana noi procese similare, pn la confirmarea sau infirmarea lor i deci, i a scopului iniial. $egulile de forma: conclu ie dac premise constituie reguli inductive. 7pre e!emplu: Dac !ersoana"# lucreaz la $oc"munc i !ersoana"% conduce $oc"munc atunci !ersoana"% este eful lui !ersoana"#. constituie o regul deducti3. %orma ei inducti3 este: !ersoana"% este eful lui !ersoana"#. Dac !ersoana"# lucreaz la $oc"munc i !ersoana"% conduce $oc"munc

!. Funcionarea sistemelor expert bazate pe reguli 2.1. Etapele unui ciclu de baz al motorului de inferene
Gotorul de inferene numit i interpretorul de reguli este inima sistemului e!pert, deoarece utiliznd baza de cunotine, construiete dinamic raionamente alegnd regulile ce urmeaz s fie declanate i stabilind ordinea de nlnuire a acestora. /ndiferent de modul de raionament utilizat ciclul de baz al unui motor de inferene const n patru etape: selecia, filtra6ul, rezol3area conflictelor i e!ecuia propriu9zis (declanarea regulilor alese).

BA1A D2 -23U4I

BA1A D2 5A" 2

S242C6IA

-eguli posibile

5apte selecionate

5I4 -A-2 282CU6IA -23U4I4!-eguli aplicabile -21!47A-2 C!N54IC 2 -eguli reinute


Fig. !.1- $iclul de baz al unui motor de inferene

(elecia e!trage din baza de reguli i din baza de fapte elementele care caracterizeaz subdomeniul de rezol3are a problemei. 'ceast faz este necesar atunci cnd baza de cunotine este destul de mare, ncercnd s acopere mai multe domenii ale cunoaterii. )iltrarea (pattern matc(ing) const n compararea premiselor regulilor selecionate anterior cu faptele ce caracterizeaz problema de rezol3at, pentru a determina submulimea regulilor aplicabile (declanabile). 5n urma acestei etape pot rezulta una, mai multe, sau nici o regul aplicabil. ac nu se obine nici o regul

aplicabil, rezult c suntem ntr9o situaie de eec, pe care 7+ trebuie s o e!plice sau n care, utilizatorul trebuie s rspund la o serie de ntrebri pe care i le pune 7+ n scopul completrii formulrii problemei. *e olvarea conflictelor este necesar atunci cnd din etapa de filtrare au rezultat mai multe reguli aplicabile i trebuie aleas una pentru a fi e!ecutat. 8rintre principalele criterii de alegere care pot fi utilizate n aceast etap amintim: prima regul din list, cea mai comple! regul (cel mai mare numr de fapte n premis) sau cea mai des utilizat. e aceast alegere depinde performana motorului de inferene, care 3a gsi mai rapid sau mai lent soluia problemei. +ste dificil de indicat unul sau altul dintre criterii deoarece aceast alegere depinde de conte!tul n care se gsete baza de cunotine n momentul respecti3. +xecuia regulii alese const n adugarea unuia sau mai multor fapte n baza de fapte. +ste posibil, de asemenea, ca n aceast etap s se fac apel la proceduri e!terne sau la ntrebri puse utilizatorului. 8entru rezol3area unei probleme, motorul de inferene e!ecut mai multe cicluri de baz i se oprete n funcie de modul de raionament utilizat.

2.2. Moduri de raionament


Gotorul de inferene poate folosi dou moduri de raionament: educti3 (nainte), sau diri6at de fapte (#for?ard9c(aining#) /nducti3 (napoi), sau diri6at de scop (#bacB?ard9c(aining#)

!.!.1. %aionament deducti# &diri'at de fapte(


5n acest mod de raionament, motorul de inferen pleac de la fapte i caut un anumit scop. +tapa de filtrare const n e!tragerea din baza de cunotine a regulilor care au n partea de premise numai fapte aflate n formularea problemei (datele de intrare). 5n urma etapei de rezol3are a conflictelor, se alege o singur regul care 3a fi e!ecutat. 8rocesul se reia pn se atinge scopul propus sau nu mai e!ist nici o regul aplicabil (situaie de eec). +tapele acestui mod de raionament pot fi sistematizate n algoritmul urmtor scris n pseudo98ascal.: /ntroducere fapte iniiale i scopul urmrit 8$>&+ U$+ genereaz@ B+;/1 /dentific setul 7 al regulilor aplicabile OP/:+ 7 nu este gol >$ scopul nu a fost atins > B+;/1 7electeaz o regul $ din setul 7 (etapa de rezol3are conflicte)@ 'plic $@ Gut $ din setul 7 i restaureaz efectul aplicrii lui $@ /% problema este rezol3at prin aplicarea lui $ 0P+1 /ndic succes@ +:7+ 7e apeleaz recursi3 procedura Kgenereaz# +1 +1 @

1:

8entru e!emplificarea acestui raionament, 3om considera o baz de cunotine abstract format din < reguli: $,: Dac B i i + atunci % $2: Dac i ; atunci ' $J: Dac & i % atunci ' $=: Dac B atunci M $Q: Dac atunci + $F: Dac ' i M atunci P $D: Dac & atunci $R: Dac M i & atunci ' $<: Dac M i B atunci &onsiderm o problem ale crei date de intrare sunt faptele B i & iar scopul este P.

B'C -/ -9 -0 -9 -0 -9 -0 -9 -0 6 inferene -9 -0 -& B'C' 8 -/ B'C' 8' D -+ B'C' 8' D'2 -1 B'C' 8' D' 2' 5 -) B'C' 8' D' 2' 5'A -. B'C' 8' D' 2' 5'A' ;
Fig. !.!-)

5n figura 2.29, este prezentat graful de raionament deducti3 care folosete drept criteriu de alegere n etapa de rezol3are a conflictelor prima regul aplicabil n ordinea numerotrii.

11

B' C -/ -& B' C' 8 -/ -9 -/ -0 B' C' 8' A -. B' C' 8' A' ; -9 3 inferene

Fig. !.!-*

5n figura 2.292 este prezentat graful de raionament deducti3 n care se alege regula cea mai comple! (cu numrul cel mai mare de premise), iar n caz de egalitate se ia regula cu numrul cel mai mic. 7pre e!emplu, regula $R este preferat lui $D deoarece are dou premise, iar $D are una. 'rcele ntrerupte din figurile 2.29, i 2.292 corespund regulilor aplicabile ale cror premise se gsesc n baza de fapte, dar care nu au fost alese pentru e!ecuie (rezultatul etapei de filtrare). 'rcele continue corespund regulilor alese pentru e!ecuie. 7e obser3 de asemenea c n dreptung(iuri cum se mbogete baza de fapte dup fiecare ciclu de baz al motorului de inferene. >prirea algoritmului are loc n momentul n care n baza de fapte apare scopul urmrit P. &riteriul de alegere utilizat n etapa de rezol3are a conflictelor influeneaz performanele motorului de inferene, F inferene n figura 2.29, i J inferene n figura 2.292. $aionamentul deducti3 are dou mari a3anta6e, care n unele aplicaii sunt absolut necesare: d posibilitatea generrii tuturor soluiilor posibile@ mbogete la fiecare ciclu al motorului de inferene baza de fapte, ceea ce simplific deduciile ulterioare. 0otui acest mod de raionament prezint i unele incon3eniente, cum ar fi: baza de fapte trebuie s conin suficiente fapte iniiale pentru ca sistemul s poat atinge scopul urmrit (problema trebuie definit n detaliu)@ sunt declanate toate regulile aplicabile, c(iar dac unele nu prezint interes@ n unele situaii , cnd numrul de reguli i de fapte este foarte mare, iar scopul nu poate fi atins, e!ist riscul a6ungerii la o e!plozie combinatorie pri3ind numrul de cicluri de baz ale motorului de inferen@ nu este interacti3 n timpul inferenelor: ceea ce face ca n situaiile de eec n care numrul de fapte necunoscute se reduce la unul singur sau la un numr mai mic, utilizatorul s nu poat cunoate aceast situaie, n care ar putea inter3eni.

2.3. Raionament inducti !diri"at de scop#


$aionamentul inducti3 este deasemenea cunoscut i sub numele de raionament "top S do?n# sau "bacB?ard S c(aining#.

1#

$aionamentul inducti3 pleac de la un scop (o problem de rezol3at) pe care l descompune n subprobleme pn cnd obine probleme primiti3e (fapte do3edite sau interogabile). e aceea se spune c acest mod de raionament este diri6at de scop n sensul gsirii faptelor care permit atingerea acestuia (in3ers dect raionamentul deducti3). $egulile selecionate au n partea de concluzii (dreapta) scopul specificat iniial. 8remisele acestora 3or de3eni subscopuri ce urmeaz s fie demonstrate. 'cest proces se repet pn cnd toate subscopurile obinute sunt demonstrate sau n urma etapei de filtrare mulimea regulilor aplicabile este 3id (situaie de eec). Urmtoarea funcie, scris n pseudo98ascal, sc(ieaz structura unui simplu interpretor de reguli de aplicaie (motor de inferene) care folosete abordarea diri6at de scop. %U1&0/>1 3alidare (M : e!presie) : B>>:+'1@ T'$ rezultat : B>>:+'1@ B+;/1 rezultat: N %':7+@ Ucaut regula de baz pentru a identifica setul regulilor aplicabile 7 care au M pe partea dreapt@ /% 7 este gol 0P+1 ntreab utilizatorul pentru adugarea ctor3a reguli la 7@ OP/:+ (rezultat N %':7+) '1 (7 nu este gol) > B+;/1 selecteaz i scoate o regul $ din 7@ &:N partea de condiie a lui $@ /% & este ade3rat n baza de dat 0P+1 rezultat: N 0$U+ +:7+ /% & este fals n baza de date 0P+1 Unu se face nimic +:7+ /% 3alidare(&) este ade3rat 0P+1 rezultat: N 0$U+ +1 @ 3alidare: N rezultat +1 @ 5n scopul de a porni procesul, utilizatorul ntreab 3aloarea de ade3r a funciei "3alidare (+)#, unde + este o e!presie cum ar fi: #1 este di3izibil cu Q#. 8rimul lucru pe care sistemul l face este identificarea tuturor regulilor care au + n partea dreapt, asumnd substituiile potri3ite. 'cestea sunt regulile care 3or putea stabili 3aloarea de ade3r a lui + i sunt reguli aplicabile n aceast abordare. ac nu e!ist astfel de reguli, sistemul ntreab utilizatorul pentru a da ce3a informaii. ac e!ist mai multe reguli sistemul selecteaz una singur. &nd o regul este selectat, partea sa stng (adic partea de condiie) & este 3erificat n baza de date. ac & este ade3rat n baza de date (cu substituiile corespunztoare), atunci aceasta stabilete ade3rul lui + i procesul se poate termina cu succes. ac & este fals n baza de date, atunci $ nu poate fi folosit la stabilirea ade3rului lui + i alt regul este selectat din 7. ac & este necunoscut (adic nu este nici ade3rat nici fals), atunci este referit ca un "subSscop# i o ncercare de a stabili 3aloarea sa de ade3r este realizat prin apelul recursi3 al funciei de "3alidare# a3nd & ca i parametru. ac "3alidare(&)# este ade3rat, atunci regula $ este aplicabil, 3aloarea de ade3r a lui + este stabilit i procesul se poate termina cu succes. ac 3alidare(&) returneaz fals, atunci este selectat alt regul

1)

din 7. 5n acest fel procesul ruleaz napoi de la scop ncercnd s ating subS scopuri care pot ele nsui s stabileasc scopul. Un e!emplu de raionament inducti3: 8utem ilustra modul de lucru prin urmtorul e!emplu. 8resupunem c a3em un sistem de producie care conine urmtoarele reguli: $,: dac M este di3izibil cu ,2 atunci M este di3izibil cu F $2: dac M este di3izibil cu 2E atunci M este di3izibil cu ,E $J: dac M este di3izibil cu F atunci M este di3izibil cu 2 $=: dac M este di3izibil cu ,E atunci M este di3izibil cu Q 7e presupune, regulile $, pn la $= descrise anterior mpreun cu o baz de date coninnd regulile: 1 este di3izibil cu ,2 1 este di3izibil cu 2E. 7e cere s determinm dac "1 este di3izibil cu Q#. 5ncepem prin apelul funciei "3alidare (1 este di3izibil cu Q)#. +!ecuia apelului funciei ncepe prin cutarea regulii de baz, obinndu9se: 7 N V$=W 'dic, $= este singura regul cu XM este di3izibil cu QY pe partea dreapt. (se noteaz c partea dreapt a lui $= se poate face ec(i3alent la e!presia scopului prin substituia lui M cu 1). 8rocesul continu prin selectarea lui $= i generarea de subscop X1 este di3izibil cu ,EY prin substituirea lui M cu 1 n partea de condiie a lui $=. eoarece X1 este di3izibil cu ,EY nu este nici ade3rat nici fals n baza da date. %uncia "3alidare# este apelat recursi3 cu X1 este di3izibil cu ,EY ca i parametru. 'cest apel recursi3 ncepe cu identificarea urmtorului set al regulilor: 7Y N V$2W $2 este inclus n acest set deoarece are XM este di3izibil cu ,EY pe partea sa dreapt. 8rocesul continu prin selectarea $2 i generarea a noilor subSscopuri X1 este di3izibil cu 2EY. eoarece X1 este di3izibil cu 2EY este ade3rat n baza de date, apelul recursi3 se termin cu "3alidare (1 este di3izibil cu ,E)# N 0$U+. 5n acest fel, apelul iniial a funciei "3alidare# se poate termina acum cu 3aloare ade3rat. $emarcm faptul, c n sistemele diri6ate de scop utilizatorul nu necesit introducerea tuturor datelor iniiale (ca i cazul din e!emplu), dar poate atepta pn cnd sistemul cere date. 5n e!emplu de mai sus, n locul introducerii n baza de date a lui X1 este di3izibil cu ,2Y i X1 este di3izibil cu 2EY, utilizatorul poate atepta pn cnd sistemul deine X1 este di3izibil cu ,2Y sau X1 este di3izibil cu 2EY ca i subS scop. %uncia "3alidareY descris mai sus este simplificat n aa fel nct se presupune c prile de condiie a regulilor const din declaraii unice cum ar fi XM este di3izibil cu ,2Y. 5n multe aplicaii, condiiile 3or fi e!presii compuse cum ar fi urmtoarele reguli:

1&

/% &, '1

&2 '1 &J 0P+1 '

%uncia "3alidare# ar trebui s fie modificat pentru astfel de tip de reguli. Godificrile necesare ar fi: (a) 7c(imb "/% & este fals n baza de date# cu " /% (&, este fals) >$ (&2 este fals) >$ (&J este fals)Y. (b) 7c(imb " /% 3alidare (&) este ade3rat# cu " /% (3alidare(&,) este ade3rat) '1 ( 3alidare(&2) este ade3rat) '1 ( 3alidare(&J) este ade3rat)Y. '3anta6ul principal al raionamentului inducti3 este acela c nu caut date i nu aplic reguli care nu sunt rele3ante cu problema dat. Un al a3anta6 al acestui mod de raionament const n primul rnd ntr9un spaiu de memorie intern redus, deoarece arborele de cutare este adesea foarte mic. 5n al doilea rnd, timpul de gsire a soluiilor este mai scurt, deoarece cutarea se face numai pentru scopurile care au o ans de 3erificare. Unul din riscurile raionamentului inducti3 este acela al ciclrii: pentru a demonstra ' trebuie demonstrat B, pentru a demonstra B trebuie demonstrat '.

2.4. $trategii de cutare folosite %n rezol area problemei


$aionamentul deducti3 i cel inducti3 pot fi pri3ite ca ncercri n gsirea unei ci care leag starea iniial a problemei de scop. 5n raionamentul deducti3, sistemul caut o cale prin identificarea seturilor regulilor aplicabile a cror pri de condiie sunt satisfcute n baza de date, selectarea i aplicarea regulilor din aceste seturi. 5n raionamentul inducti3 sistemul caut o cale prin identificarea seturilor de reguli aplicabile, (cu ce3a a3nd n partea dreapt) i selecteaz regulile din aceste seturi ca subSscopuri pe care ncearc apoi s le stabileasc. 5n raionamentul deducti3 cutarea se mut de la starea problemei iniiale la scop. 5n raionamentul inducti3 cutarea se mut n direcia opus. e e!emplu, n ambele cazuri sistemul trebuie s decid care regul trebuie selectat din setul regulilor aplicabile n fiecare faz. 'ceast decizie este determinat de aa numita "strategie de rezol3are a conflictului#, care este folosit de un planificator. 'lte decizii implic luarea n considere a modului de folosire a XbacBtracBingY9ului i ordinea n care spaiul de cutare 3a trebui parcurs: parcurgere n adncime ("dept(Sfirst#), parcurgere n lime ("breadt(Sfirst#), sau n alt ordine determinat de cte3a reguli numite "(euristici#.

!.).1. Strategia de rezol#are a conflictului


Godul n care regula este selectat din setul regulilor aplicabile este denumit "strategie de rezol3are a conflictului#. 'stfel de strategii sunt bazate pe una (sau mai multe) din urmtoarele principii: selecteaz regulile arbitrar@

1+

selecteaz o regul diferit n faze succesi3e@ selecteaz prima regul aplicabil identificat@ regulile au 3alori care sunt folosite pentru a determina care dintre ele s fie selectat. &ac'trac'ing

ac o regul $ este selectat dintr9un set 7 de reguli aplicabile i este folosit (adic n raionamentul deducti3 este e!ecutat i n raionamentul inducti3 este folosit ca un subSscop), atunci una din cele dou situaii s9ar putea ntlni dup una sau mai multe etape: (a) sistemul a6unge la sfritul cutri, adic a6unge la o faz unde nu pot fi identificate noi reguli aplicabile@ (b) o cale este stabilit legnd starea iniial a problemei de scopul su. ac se ntmpl cazul (a), atunci ar fi folositor s se rentoarc la setul 7, probabil refecnd efectul selectrii $, i apoi s se selecteze o alt regul din 7 pentru folosirea acesteia n ncercarea de identificare a ci, procedeu numit bac'tra'ing. ac se ntmpl cazul (b) (i noi suntem interesai numai ntr9o singur soluie), atunci procesul se poate termina cu succes. ei, dac suntem interesai de mai multe soluii, ar fi folositoare posibilitatea de rentoarcere n maniera descris mai sus. e menionat faptul c dac strategia de rezol3are a conflictului se face prin selectarea unei singure reguli dintr9un set de reguli aplicabile i se ndeprteaz restul, atunci nu poate a3ea loc nici un fel de rentoarcere. 5n acest caz, n loc s acioneze pentru a diri6a cutarea n 3ederea gsirii unei soluii, strategia de rezol3are a conflictului determin soluia sau non9soluia problemei.

!.).!. $utarea +n ad,ncime &depth-first(


8rocedura "genereaza# din raionamentul deducti3 i funcia "3alideaz# din raionamentul inducti3, care au fost descrise pot fi categorisite ca metode de cutare n adncime ("dept(S first#). +le sunt numite astfel pentru c tra3erseaz arborele spaiului problemei n adncime ( "dept(Sfirst#). 'stfel c ele ncep de la rdcina arborelui spaiului problemei i l tra3erseaz n 6os pe ramura cea mai din stnga pn la ultimul nod (fiecare reuit sau nereuit) nainte de a porni pe o alt ramur. &utarea n adncime prezint dou deza3anta6e: (a) :a cutarea n adncime putem urmri o ramur infinit pe o perioad nedefinit fr a mai parcurge restul arborelui. 'cest lucru se poate ntmpla dac regula de baz conine urmtoarele reguli i am folosit funcia "3alidare#: /% , este divi ibil cu - 0P+1 , este divi ibil cu (b) &utarea n adncime nu poate garanta identificarea celei mai scurte cii pentru o soluie nainte de urmrirea altor ci mai lungi. :a cutarea n adncime putem gsi o soluie pe o ramur, dar calea cea mai scurt pentru soluie poate e!ista n partea arborelui care nu a fost tra3ersat. Un a3anta6 al cutrii n adncime este simplitatea cu care poate fi implementat. Un alt a3anta6 este acela c necesit mai puin memorie dect cutarea n lime.

1.

!.). . $utarea +n lime &breadth-first(


:a cutarea n lime, toate nodurile din arborele spaiului problemei sunt tra3ersate astfel: mai nti fiecare nod de pe ni3elul ,, apoi toate nodurile de pe ni3elul 2 i aa mai departe. e e!emplu, fiind dat arborele de mai 6os, nodurile 3or fi tra3ersate n ordinea indicat de numerele nodurilor. Z , J R < = Q 2 F D

&utarea n lime prezint dou caracteristici: (a) 0oate nodurile 3or fi parcurse, oferind destule resurse, c(iar dac una din ramuri poate fi infinit. (b) 8rima soluie gsit 3a fi soluia (sau una din soluii) cu cea mai scurt cale. 5n acest fel, cutarea n lime elimin problemele asociate cutrii n adncime. 0otui metoda poate a3ea costuri ridicate: la orice faz, toate nodurile din stnga i toate nodurile deasupra nodului parcurs, trebuiesc memorate.

!.).). $utarea euristic


&utarile n adncime i lime caut n arborele spaiului problemei negli6nd problema particular. >amenii nu rezol3 problemele n acest mod. 5n general, ei folosesc meta9reguli pentru a determina care nod 3a fi tra3ersat. e e!emplu, n cutarea bottomSup regulile puteau oferi lucruri importante, indicnd demonstrarea lor, folositoare pentru probleme. eci se poate folosi o meta9regul, care afirm c dac e!ist o alegere, 3a fi aplicat regula cu nsemntatea cea mai mare. &utarea rezultatului nu se face nici cu cutarea n adncime i nici cu cutarea n lime, ci cu o cutare numit cutare euristic "(euristic#. &onsiderm e!emplul care a mai fost prezentat la raionamentul inducti3. 8resupunem c regulile au urmtoarele indicaii: $, $2 $J $= D ,E Q 2E

> abordare euristic diri6at de date poate tra3ersa arborele astfel: 5n primul pas, $, i $2 3or fi singurele reguli aplicabile. eoarece $2 prezint o importan mai mare dect $,, aceasta este aplicat prima. 5n pasul urmtor se pot aplica $, sau $=. eoarece $= prezint o importan mai mare dect $,, aceasta este aplicat prima, etc.

1/

1odurilor care sunt tra3ersate sunt n general pstrate ntrSo list denumit "agend#. 1odul urmtor tra3ersat este ntotdeauna unul asociat cu importana cea mai mare. 7trategia de rezol3are a conflictului, strategia bacBtracBing i ordinea dez3oltrii spaiului problemei determin mpreun strategia de cutare folosit n rezol3area unei probleme. 7trategia de cutare controleaz felul n care problema este rezol3at.

10

. .imba'ul de programare "%/./0 3.1. (ntroducere


:imba6ul 8$>:>; a fost definit de ctre 'lain &olmerauer din ;roupe dY/ntelligence 'rtificielle din Garsilia, n anul ,<RJ. +l este alturi de :/78, cele mai rspndite limba6e de programare pentru dez3oltarea i implementarea de 7+. 8rolog a fost ales de ctre cercettorii 6aponezi ca limba6 de baz pentru calculatoarele din generaia a cincea. :a ora actual, acest limba6 se bucur de o e!tindere din ce n ce mai mare i n consecin e!ist mai multe dialecte dez3oltate i implementate.

3.2. )aracteristicile generale


:imba6ul 8rolog se deosebete de alte limba6e de programare nu numai prin elemente de structur i sinta! ci i prin modul total diferit de funcionare. +l poate fi considerat, n esen, un motor de inferen de ordinul unu, care accept deci reguli de producie cu 3ariabile. 8rolog ncorporeaz n mod implicit operaiile de unificare i filtrare. &um e!ecuia unui program se realizeaz prin e3aluarea de predicate, problema de rezol3at trebuie e!primat, la rndul ei, n aceast form. 8rolog este un limba6 descripti3 specific relaiilor. &a urmare un program n 8rolog const dintr9o descriere a problemei i dintr9o serie de pai ce definesc reguli de calcul, deci dispare diferena dintre date i proceduri, acestea fiind gestionate dinamic n cadrul bazei de cunotine prezent n memorie. 8rolog poate efectua deducii logice. 'a cum s9a precizat, 8rolog este el nsi un motor de inferen. '3nd programul e!primat n fapte i reguli, el este capabil s efectueze operaii de inferen logic, deci s deduc noi fapte pe baza regulilor i faptelor de care dispune. Gai mult dect att, e!ecuia programului este controlat automat n aa fel nct s se poat obine nu numai o singur soluie pentru problema dat, ci toate soluiile posibile. 5n acest scop, 8rolog ncorporeaz implicit un mecanism de memorare a deduciilor fcute, care permite refacerea drumului parcurs n cutarea unei soluii n sens in3ers pentru a putea in3estiga i celelalte ci posibile (bac'trac'ing). $egulile de sinta! care trebuiesc respectate n redactarea programelor sunt puine la numr i deosebit de simple. e asemenea, limba6ul conine un numr redus de cu3inte rezer3ate iar programele se scriu n format liber. 8rincipalele domenii de utilizare ale limba6ului 8rolog sunt: $ealizarea de sisteme e!pert@ &onstruirea de interfee n limba6 natural pentru aplicaiile de6a e!istente@ 'plicaii de inteligen artificial@ /mplementarea dinamic de baze de date relaionale.

3.3. $tructura bazei de cunotine

19

7tructura este definit n cadrul urmtoarelor seciuni: omains &lauses 8redicates ;oal (opional) 5n seciunea domains se definesc anumite tipuri de date definite de utilizator. 5n 8rolog e!ist urmtoarele domenii standard: 9 integer ntregi definii pe 2 octei@ 9 real real definit pe = octei@ 9 s[mbol corespunztor numelor simbolice care cuprind ca subdomeniu domeniul standard string, delimitat ntre dou perec(i de g(ilimele duble@ 9 c(ar corespunztor domeniului caracter fiind definit de o 3aloare alfanumeric, i este definit ntre dou perec(i de g(ilimele:YaY. 5n seciunea clauses sunt specificate caracteristicile i relaiile e!istente ntre un set de obiecte. escrierea se face utiliznd sinta!a Porn, astfel nct propoziie n limba6 natural : # +ste albastru cerul# se 3a scrie esteLalbastru(cerul). 7tructura predicatelor care inter3in se 3a scrie n seciunea predicates. 8redicatul constituie, n 8rolog, ec(i3alentul structural al instruciunilor din alte limba6e de programare, a3nd ns un mod total diferit de interpretare. %orma sintactic general a unui predicat este: )predicat* \()argument* \,)argument*]^)^ Un predicat poate a3ea mai multe argumente. +!ist dou categorii de predicate: < definite de ctre programator@ < predefinite, care fac parte din limba6, spre e!emplu: read(), ?rite(), assert(), retract() etc. 5n 8rolog numele predicatelor se scrie ntotdeauna cu litere minuscule. 'rgumentele unui predicat sunt de trei tipuri: constante, 3ariabile i structuri. &onstantele reprezint 3alori specificate e!plicit. +!ist dou tipuri de constante: atomii i numerele. 'tomii sunt constante formate dintr9un ir de caractere. 'tomii se noteaz cu litere minuscule i nu pot conine spaii. ac un atom e format din mai multe cu3inte, acestea se pot e3idenia prin utilizarea semnului #L#. Un ir de cu3inte ntre apostrofuri 3a fi tratat drept atom. 0ot n aceast manier se pot scrie cu ma6uscule numele proprii. Tariabilele sunt argumente ale cror coninut se stabilete sau se modific n timpul prelucrrii. 5n 8rolog numele 3ariabilelor trebuie s nceap fie cu o liter ma6uscul, fie cu semnul de subliniere #L#. 7pre e!emplu, n fiecare din clauzele urmtoare, primul argument este o 3ariabil: lucreaza(8ersoana, birouLcontabilitate). cumpara(L, masina). 5n situaiile n care pentru o anumit prelucrare este suficient specificarea e!istenei unei 3ariabile fr s fie necesar utilizarea sa, ea poate fi notat drept variabil anonim. > 3ariabil anonim se simbolizeaz prin caracterul #L#. 7pre e!emplu, n predicatul urmtor primul argument este o 3ariabil anonim: lucreaza (L, locLmunca).

#:

1xemplu: &onstruii o baz de fapte care s specifice informaiile pri3ind numele i 3rsta unor copii: an are R ani. 8aul are ,E ani. /oan are < ani. 'na are R ani. 8redicatul care l utilizm 3a fi de forma: copil(nume, 3rsta) 7ec3ena de program scris n 8rolog 3a fi: domains nume N s[mbol 3arsta N integer predicates copil(nume, 3arsta) clauses copil(dan, R). copil(paul, ,E). copil(ion, <). copil(ana, R). 5ntrebarea: &ine are 3rsta de < ani _, poate fi pus astfel: copil(1ume, <). rezult 1umeN ion ac 3ariabila apare cu liter mare, poart denumirea de 3ariabil liber, n cursul procesului de cutare i se aloc 3alori care pot sau nu reprezenta soluii. 5n momentul primiri unei 3alori 3ariabila de3ine legat eliberarea ei urmnd a fi fcut la tiprirea soluiei. Tariabilele pot fi anonime, caz n care se definesc prin caracterul #L#. 5ntrebarea: +!ist cine3a cu 3rsta de ,E ani_, poate fi pus astfel: copil(L,,E). $ezultat: H+7.

3.4. )lauze simple i compuse


&lauzele care conin un singur predicat, aa cum sunt cele e!emplificate anterior, sunt denumite clauze simple. > clauz poate fi ns compus din mai multe clauze simple asociate prin conectorii logici ./ sau 7'U, de3enind astfel o clauz compus. 5n 8rolog conectorul logic ./ se noteaz prin 3irgul, iar conectorul 7'U prin punt i 3irgul (@). 'adar: )clauza,* ./ )clauza2* este ec(i3alent cu )clauza,* , )clauza2* )clauza,* 7'U )clauza2* este ec(i3alent cu )clauza,* @ )clauza2* 7e obser3 c 3irgula ser3ete att ca delimitator ntre argumente ct i drept conector logic ntre cele dou clauze. %olosind e!emplu de la paragraful anterior, o ntrebare de forma: #&are sunt perec(ile de copii cu 3rsta de R ani _#, se 3a scrie n 8rolog astfel : copil(1ume,, R), copil(1ume2, R) , 1ume,)*1ume2.

#1

$: 1ume,Ndan 1ume,Nana

1ume2Nana 1ume2Ndan

3.*. +apte i reguli


%aptele se reprezint n 8rolog prin a!iome. > a!iom este o clauz simpl nc(eiat cu punct. $egulile se reprezint n 8rolog numai n forma inducti3. &ele dou pri ale unei reguli S conclu ia i premisele9 sunt separate prin simbolul #:9# care are semnificaia #dac#. 'tt concluzia ct i premisele sunt e!primate sub form de clauze. &a i faptele o regul se nc(eie ntotdeauna cu punct. 8unctul final nu face parte nici din reguli nici din fapte, el ser3ete numai ca element le!ical de specificare a sfritului clauzei respecti3e. +!emple: a) informatician(M):9 programator(M). b) barbat(M):9 se!Lmasculin(M), adult(M). c) femeie(M):9 se!Lfeminin(M), adult(M). d) casatorit(M, H):9 sot(M,H). e) casatorit(M, H):9 sotie(M,H). $egula a) are urmtoarea semnificaie: # ac cine3a(M) este programator, atunci el este informatician#. 5n aceast regul, att concluzia ct i premisa sunt reprezentate prin clauze simple. $egula b) precizeaz c # dac o persoan M are se! masculin i este adult, atunci M este un brbat.# 5n acest caz, premisa este o clauz compus, format din dou clauze simple asociate prin conectorul ./. Ultimele dou reguli prezint o situaie mai interesant, aceeai concluzie apare n dou reguli diferite sau, astfel spus, ea poate fi stabilit pe dou ci diferite. ac apar reguli a cror predicat este identic pot fi grupate n una singur. $egulile d) i g) pot fi grupate n una singur, a3nd forma: casatorit(M, H):9 sot(M,H) @ sotie(M,H). Tariabila sau 3ariabilele cuprinse n concluzie trebuie s se regseasc i n premise i toate e!emplele anterioare au confirmat aceasta. 8remisele pot s conin ns i 3ariabile suplimentare, care nu se regsesc n concluzie, aa cum se poate obser3a n e!emplul urmtor: bunic(M, H):9 tata(`, H), parinte(M, `). care precizeaz c #dac tatl lui ` este H, iar printele lui M este `, atunci bunicul lui M este H#. 7e constat c dei 3ariabila ` apare numai n premise, prezena ei este indispensabil pentru a putea defini regula. 79a precizat anterior c 8rolog admite i utilizarea de 3ariabile anonime. 7pre e!emplu, noiunea de printe poate fi formulat astfel: parinte(M, L) :9tata(M, L) @ mama(M, L). 'ici, 3ariabilele anonime confer reguli urmtoarea interpretare: # o persoan este printe dac este fie tatl, fie mama cui3a#. +!ist, n felul acesta, posibilitatea de a nuana utilizarea regulilor scond n e3iden numai atribute sau caracteristici.

##

3.,. E aluarea clauzelor


Un program 8rolog, indiferent dac este compilat sau interpretat, se e!ecut interacti3, parcurgnd paii urmtori: 9 afieaz pe ecran prompter9ul@ 9 citete o a!iom sau o regul de la terminal, o e3alueaz, afieaz rezultatul pe ecran i reia ciclul +3aluarea unei clauze returneaz ntotdeauna un rezultat logic care poate fi H+7 sau 1>. 'cest rezultat precizeaz dac respecti3a clauz a putut fi confirmat sau nu. 5n cazul n care este 3orba de o clauz compus, rezultatul e3alurii sale depinde att de rezultatul e3alurii fiecrei clauze componente ct i de tipul conectorilor logici prin care acestea sunt asociate. 8entru a ilustra acest mod de funcionare i pentru o nelegere mai bun a conceptelor e!puse pn n prezent, 3om considera, urmtoarea baz de cunotine: debitor(ion, adi). debitor (dan, adi). creditor(paul, ion). creditor(andrei, adi). 5n continuare 3om e!emplifica interpretarea ctor3a clauze: debitor(ion, adi). [es debitor(paul, ion). 1o :a prima aseriune, sistemul rspunde cu .es (rezultatul e3alurii clauzei), deoarece aceasta se regsete n baza de fapte. 8utem asocia clauza cu o ntrebare de tipul "+ste ade3rat c /on este debitorul lui 'di#, la care sistemul rspunde afirmati3. :a a doua aseriune, n sc(imb, rspunsul este negati3, deoarece nici un fapt din cele specificate nu confirm c 8aul este debitorul lui /on. Tom continua e!emplificarea folosind de aceast dat 3ariabile. 5at cum s9ar putea formula o ntrebare " &are sunt debitorii lui /on _ #: debitor(ion, M). $spuns: M N adi 7 formulm acum o ntrebare de tipul " &ui i este debitor 'di _#. debitor(M, adi). $spuns: M N ion M N dan 5n ambele e!emple s9a folosit acelai nume de 3ariabil: M. 'ceasta a fost posibil deoarece orice 3ariabil este local aseriunii sau reguli n care apare. >dat e3aluarea terminat, 3ariabila (sau 3ariabilele) nceteaz s mai e!iste. 5at acum formularea cererii: " &are persoane sunt debitori i ai cui debitori sunt _# debitor(M, H). $spuns: M N ion H N adi M N dan H N adi 7 adugm acum la faptele e!istente regulile urmtoare:

#)

areLobligatii(M, H) :9 debitor(H, M). areLobligatii(M, H) :9 creditor(M,H). care au semnificaia: " dac M este debitorul lui H, atunci M are obligaii fa de H# i respecti3, " dac H este creditorul lui M, atunci M are obligaii fa de H#. areLobligatii(M, adi). $spuns: M N andrei areLobligatii(adi, M). $spuns: M N ion M N dan &um a obinut sistemul aceste rezultate _. +!ist dou reguli care permit stabilirea concluziei "areLobligatii#. 8entru prima cerere, aplicarea celei dinti reguli conduce la eec, deoarece nici o a!iom din baza de fapte nu pote fi pus n coresponden cu premisele. 7e ncearc deci aplicarea celei de a doua regul, ale crei premise pot fi 3erificate dac i se atribuie 3ariabilei M 3aloarea "andrei#. &ea de9 a doua cerere poate fi rezol3at prin aplicarea primei reguli, ale crei premise sunt confirmate de baza de fapte pentru dou 3alori diferite ale 3ariabilei M: "ion# i "dan#. 7 presupunem c dorim s aflm care sunt persoanele cu obligaii, fr s ne intereseze numele celor fa de care acetia au obligaii. %ormularea unei asemenea cereri se poate face utiliznd o 3ariabil anonim: areLobligatii(M, L). $spuns: M N adi M N adi M N paul M N andrei 'cest e!emplu permite s facem o obser3aie important: dei prima regul a oferit dou rezultate, e3aluarea a continuat i pentru cea de9a dou, care coninea la rndul ei concluzia cutat, astfel nct, n final, s9au obinut patru rspunsuri. +3aluarea regulilor i a faptelor se face conform urmtoarelor principii: 7copurile se e3aluaz de la stnga la dreapta, n ordinea n care sunt specificate@ &lauzele sunt e3aluate n ordinea n care apar n program@ &nd un scop satisface partea din stnga (concluzia) a unei reguli, premisele regulii de3in noi scopuri de stabilit i se trece imediat la 3erificarea lor@ Un scop se consider stabilit (confirmat) atunci cnd subscopurile care9i corespund sunt stabilite n totalitate ade3rate, adic e3aluarea lor ca propoziie compus returneaz rezultatul ade3rat.

3.-. .peraia de bac'trac'ing. /redicatul )ut


BacBtracBingul definete procesul de cutare n baza de fapte. 5n cursul operaiei se efectueaz simultan cu cutarea o ncercare de potri3ire ntre predicatele din ntrebare (sau reguli) cu a!iomele i regulile prezente n baz. 5n cursul procesului fiecare predicat din ntrebare definete un ablon care se aplic succesi3 pe a!iomele i regulile din baz. 5n momentul realizri unei potri3iri 3ariabilele libere din ablon se leag, 3aloarea lor fiind motenit de urmtoarele abloane prezente (n cazul ntrebrilor compuse). 8entru fiecare potri3ire realizat

#&

se amplaseaz un pointer pe a!ioma sau regula n cauz. 'cesta 3a fi utilizat pentru cutarea n continuare a unei noi soluii. 8ot apare dou cazuri: a) Baza de cunotine este format numai din a!iome. %iecare predicat din ntrebare este utilizat de la stnga spre dreapta. 5n momentul potri3iri toate predicatele care urmeaz motenesc sau primesc 3aloarea rezultat din potri3ire. ac la ni3elul unui predicat baza s9a e!pirat complet se ncepe e!plorarea de la nceputul bazei cu predicatul anterior. b) Baza este format din a!iome i reguli. ac unul din predicatele din ntrebare se poate unifica cu o regul, regula de3ine o ntrebare suplimentar care se aplic bazei de fapte care se trateaz similar cazului anterior. 5n urma e!plorrii se obine un spaiu se soluii din acest spaiu urmeaz s fie tiat sau selectat soluia care intereseaz la un moment dat. &um pentru o problem dat pot e!ista mai multe soluii posibile, dup gsirea unei soluii motorul de inferen trebuie s refac n sens in3ers o parte din
Nodul obiectiv (scop) re!obli"atii(#$%)

(1$ are=obligatii(8' >$ ?< debitor (>' 8$% (#$ are=obligatii(8' >$ ?< creditor (8'>$% ()$ debitor(ion' adi$% (&$ debitor (dan' adi$% (+$ creditor(paul' ion$% (.$ creditor(andrei' adi$%

drumul parcurs pentru a putea e!plora celelalte ci posibile de soluionare (bacBtracBing). 5n figura J.D9, unde este reprezentat arborele de cutare corespunztor scopului areLobligatii(M, H), se poate obser3a modul n care motorul de inferen a3anseaz i respecti3, re3ine la puncte de6a e!plorate, n cutarea tuturor soluiilor posibile. Gecanismul de bacBtracBing poate fi blocat n orice punct ales de ctre programator cu a6utorul predicatului cut, simbolizat prin caracterul 2. $ut este un predicat fr argumente. 5n propoziia n care apare interzice re3enirea, blocnd astfel cutarea de noi soluii. 7 modificm, pentru e!emplificare, cele dou reguli anterioare, introducnd acest predicat: areLobligatii(M, H) :9 debitor(H, M), a. areLobligatii(M, H) :9 creditor(M,H), a. i s analizm efectul su asupra modului n care se 3a parcurge arborele de cutare %ig. J.D92.

#+

Nodul obiectiv (scop) re!obli"atii(#$%)

2 6

4 &

up parcurgerea punctelor , i J, se ntlnete predicatul cut care bloc(eaz re3enirea, astfel nct se 3a obine un singur rezultat, cu toate c, n realitate e!ist patru cupluri de 3alori care stisfac scopul iniial. areLobligaii(M, H). $: M N adi H N ion 8redicatul cut este frec3ent utilizat n elaborarea de programe.

3.0. Recursi itatea %n /rolog


$ecursi3itatea este o te(nic de programare care const, n esen n posibilitatea de a include ntr9o procedur apleluri la ea nsi. 5n 8rolog, aceasta se traduce prin aceea c premisele unei reguli pot in3oca, direct sau indirect, concluzia sa.

#.

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