Sunteți pe pagina 1din 52
CUPRINS Capitolul 1 Rezolvarea problemelor in inteligenta artificial 1.1 Tebnici de inteligenta artificial 1.2 Formularea problemelor in inteligenta artificial 1.3 Strategia generala de rezolvare Teme de laborator Intrebari gi exercitii Capitolul 2 Strategii neinformate de cdutare .. 2.1 Cautarea pe nivel 2.2 Cautarea de cost uniform 2.3 Cautarea in adancime .. 2.4 Cautarea in adancime cu nivel iterativ 7 24 31 33) 33 37 40 “ 4.7 Alte facilitati Prolog 2.5 Cautarea bidirectionala Teme de laborator 42 Teme de laborator 73 Intrebari gi exercitii ~ 44 Intrebari si exercitii se TH Capitolul 3 Capitolul 5 Strategii informate de cautare ... 45 Sisteme expert ... 75 3.1 Cautarea informata de tip best-first .... 45 5.1 Structura unui sistem expert 75 3.2 Algoritmul A’ a7 5.2 Ontologii 3.3 Algoritmul AO* .. 50 5.2.1 Construirea ontologiilor 7 ‘Teme de laborator 5.2.2 Protégé 7 Intrebari gi exercitii oe ee 55 5.3 Generatorul de sisteme expert VP-Expert ............ 83 5.3.1 Prezentare general... oo 83 Capitolul 4 « ’ 5.3.2 Structura sistemului expert 84 a 387 5.3.2.1 Baza de cunostinte 84 Limbajul Prolog 5.3.2.2 Motorul de inferente .. 4.1 Elemente de baza 97 5.3.3 Crearea bazei de cunostinte .. cose 88 4.2 Sectiunile unui program Prolog ... ceventees 1 5.3.4 Consultarea unei baze de cunostinte ....... 89 4.3 Evaluarea clauzelor ..... 62 5.3.5 Iteratia VP-EXpert cesses 90 4.4 Recursivitate gi liste — 4 5.3.6 Trasarea lantului de rationamente ........-90 4.5 Figiere 2 66 5.3.7 Inlanguirea bazelor de cunostinte 90 4.6 Baze de date interne 68 5.3.8 Depanarea bazelor de cunostinte 91 5.4 Aplicatii 5.4.1 Aplicatia 1 5.4.2 Aplicatia 2 Teme de laborator Intrebari gi exercitit Bibliografie .. . 107 CAPITOLUL 1 REZOLVAREA PROBLEMELOR iN INTELIGENTA ARTIFICIALA 1.1 TEHNICI DE INTELIGENTA ARTIFICIALA, Caracteristica esentiala a unui sistem inteligent este _utilizarea cunostinfelor in peocesul de rezolvare a unei probleme. Cunostinfele sunt cele care ghideazA cAutarea unei soluti. Rezolvarea problemelor de inteligenta artficiala (IA) consté in aplicarea unor tehnici specifice si a unor modalitati adecvate de reprezentare a cunostintelor. in continuare, prezentim trei solutii de rezolvare a problemei TIC-TAC-IOE (jocul X 51 0), evidengiind generalitatea, claritatea exprimarii cunostinjelor gi posibilitatea de extindere a solutici. Problema Tic-Tac-Toe Pe o tabla 3x3 doi jucdtori pot plasa altemativ X, respectiv 0 (figura 1.1). Jucatonul care reuseste sé plaseze trei simboluri (X, respectiv 0) pe Tinie (vertcala, orizontald sau diagonala) este declarat cdstigator. Se cere si se construiascd schema unui program care sa simuleze acest joc, program care s poata juca pe postul jucstorului X sau pe postul jucdtorului 0 si care si incerce s8 cdstige jocul. To x fo] [x Jo x] fo co + Rp] > PRR Te a it i) re L | X|_|o. x0 JO. x/0 jo OX] > POR] -» Polxpe] -» [ox o xo ixjo] IX Fig. LL Jocul X 10 ~exemply, Prezentiim trei solufii de rezolvare a acestei probleme. Solutia 1 Aigoritmul 1.1 - Rezolvarea problemei TIC-TAC-TOE (solutia 1) Structuri de date + Tabla, vector de 9 elements cre een bla eo (nize ni, Elemente vector pot ave tndlorle tlt 0 pet sete Hay 1 (penta X) 912 (er. + Tabata de mutars, in vector de 19683 clement (9, eee element find arnt lun vector de 9 semen (de tip taba eh, Hee configura a abled jo corespunde nvr incenah bel de aa car conine nus poi tint prin execurea mut sop, |. inifializeazi Tabla cu 0 si Tabela_de mutari cu toate pozitile posibile edt timp — * nici un jucstor nu a céstigat executi 2.1 * consider Tabla ca un numar temar (in baza 3) i il converteste in baza 10 obfindnd N 22 * utiizeazd N ca index in Tabela_de_mutari si objine nous porte Polite nova Tabela de mutari(N] 2.3 abla Pozitie_noua 2A4dack * Pozitie noua este cistiguoare ——atunei 2.4.1 © intrerupe itrafia 2.5 * teste mutare adversar i modified Taba corespunzitor 3. © anunfa jucitorul cistigator sfarsit Observatii: * Algoritmul 1.1 este foarte eficient din punet de vedere al timpului si teoretic, ponte juca optim TIC-TAC-TOE, © Dezavantajele principale ale algoritmului 1.1 © Spatiu foarte mare pentru memorareatabelei de muti, care specific mutrile corecte asociate fiecdrei configuratii a tablei de joe. © Inifializarea tabelei de mutari cu valori corecte nu este usor de realizat, © Nu permite extinderea solutiei pentru eazuri mai generale (de exemplu, pentru jocul in 3 dimensiuni ar trebui memorate 3” poziti in tabela de muta). + Tehnica de rezolvare uilizata in algoritmul 1.1 nu este o tehnicai de. intetigenta artificial, Solutia 2 Algoritmul 1.2 - Rezolvarea problemei TIC-TAC-TOE (solutia 2) Structuri de date: ‘+ Tabla, vector de 9 elemente care reprezini tabla de joc (liniarizat pe lini. Blementele veetorului pot avea urmitoarele valor: 2 (penieu spafiu liber), 5 {pentra X) 3S (pentru 0). + Mutare, o variabilé cu valori numere iniregi care indic& numarel mutiié ___urmatoare (de exemplu, 1 indicd prima mutar, iar 9 ultima mutare) Funct utilizate + Mua(Q), efectueaza o mutare in patratal N pentru jucitorul care tebuie realizeze mutarea curena + PozCastig(), evalucaz& posibiltatea de cAstig a juctorului J la urmatoarea ‘murare in funetie de configuratiacurenté a tabei de joc: ‘+ Scop), implementeaza 0 funete euristicd de alegere a unui patra liber in cazul in care exist mai multe mutisi posibile care nu afecteaz4cisigul Jucttoralui curent, 1. inifializeaza Tabla cu 0 2. Mutare <1 3. cit timp * nici un jucdtor nu a edstigat executd | Mutare ~7:dacd PozCastig(X) #0 atunci 7 ' * catia jucatorul X */ Balege Mutare — dintre i. Muta(PocCastig(X)) i. *imtrerupe iteatia Matare =I: Muta(I) altfet ? ‘ dack PozCastig(0) #0 atunei Mutare=?:daci Tabla[5]=2 atunei uta(5) + blocheaza castig adversar */ altfel—Muta(1) Muta(PozCastig(0)) altfel Mutare=3:daci Tabla(9]=2 atunei Muta(9) * muta in orice patrat rimas liber altfel — uta(3) . Matare = 8: dack PozCastig(0) +0 atunei Mutare=4:daci PozCastig(X) #0 atun * cistiga jucdtorul 0 */ /* blocheaza cistig adversar */ i, Muta(PozCastig(0)) aza(PozCastig(X)) ii intrerupeiteratia altfel_— mut.a(Scop()) altfel, ach PozCastig(X) #0 atunei Mutare=S:dacd PocCastig(X) +0 atunei * blocheazacistig adversar */ /* cagtiga jueatorul X */ Muta(PozCastig(X)) i, Mata(PorCastig(X)) altfet ii. * intrerupe iteratia * muta in orice patrat ramas liber altel acd PorCastig(0) #0 atunci Mutare=9:daci PozCastig(X) #0 atunci /* blocheaza castig adversar */ /* cAstiga juctitorul X */ » Muta(PozCastig(0)) i. Muta(PozCastig(X)) altfel ty ii, * intrerupe iteratia dack Tab1a{7]=2 atunei altfet Muta(7) dacd PozCastig(0) #0 atunci altfel. Muta(3) /* blocheaza cdstig adversar */ | Muca(PozCastig(0)) Matare=6:dacd PozCastie(0) #0 atunci | altfet /* cdstiga jucdtorul 0 */ | * muta in orice patrat rmas liber i, Muta(PozCastig(0)) i. *intrerupe iteratia 3.2 Mutare < Mutare +1 altel daei PozCastig(X) #0 atunei * blocheaza castig adversar */ Muta(PozCastig(X)) altfelMuta(Scop()) sfarsit 1263) Prezentim implementarea functiilor utilizate. Algoritmul 12 273) J. daca * jucdtoral Jnu poate castiga la mutares umtoare_atunei ioarce 0 2. intoarce * poziia patratului cu mutare eisigitoare shir Funetia Muta(N) Tabla[NJ@3 |. dacd *Mutare are valoare impart atunei altfel tabla [NJ5 sfirsit Solutia 3.5 Algoritmul 1.3 - Rezolvarea problemei TIC-TAC-TOE (solutia 3) Structuri de date + Tabla, vector de 9 elemente care eprezinia tabla de jos (liniarzat pe lini). Elementele vectorului pot avea urmatoarle valori: 2 (pentru spaiu liber), 3 (pentru X) si (pent 0), + Vem, o isth care contine toate contiguratile posible ce se objin din configuratiacurent a table de joc prin efectuatea tuturor mutiilor permise. + Merit, un numrintreg care reprezinté o estimare a posibilitii de cagtg din [ely a[7[o ails (2) Stars ints (b) Stara fnta Fig. 1.2 Exemplu de joc 8-puzze a Jocul 8-puzzle apartine familiei de jocuri cu blocuri glisante. Accasta clasa generala este cunoscuté a fi NP-completi. Jocurile 8-puzzle 51 15- puzzle sunt probleme standard de test pentru algoritmii de cautare ezvoltati in cadrul inteligentei artificial. A2) Problema celor 8 regine Obiectivul problemei este de a plasa 8 regine pe o tabla de sah astfel in ginele s nu se atace reciproc (figura 1.3). O regina ataca orice pozitie aflati pe acelasi rind, coloana sau diagonala. | T . ie Fig. 1.3 Problema color ®ine, Exist& doud tipuri de formulati ale problemei. Formularea incrementala implicd plasarea reginelor una céte una, in timp ce formularea stare- ‘completa incepe cu toate cele 8 regine asezate pe tabla, urmind ca apoi sa se realizeze 0 seevenfi de mutiri. In ambele cazuri, costul cali nu intereseaz deoarece conteaz& doar starea finali; astfel, algoritmii sunt comparati doar prin costul cdutiri, Asadar avem urmitorul test obiectiv si urmatorul costal ei Test obiectiv: 8 regine pe tabla, nici o regina nu atacd alta regina; Cost cale: zero, Prezentim doua posibilitati de formulare a probleme: () Formutarea problemei: ‘Stari: aranjamente de 0 pang la 8 regine care nu se ataca; Operatori: plaseaza 0 regin’ in coloana cea mai din stinga, care este libera, intr-o pozitie care s@ nu fie atacatd de nici o alta regina, (11) Formularea problemei: ‘Stari: aranjamente ale celor $ regine cite una in fiecare coloan’; Operator: muta reginele atacate, in altd pozitie a aceleiagi coloane. Aceasti ultima formulare reduce semnificativ spatul de cautare. A3) Criptoaritmetica in problemete de criptoaritmetica literele reprezinta cifte, iar obiectivul este de a gasi o substitutic a literelor cu cifre astel incat suma rezultaté si fie corecti din punct de vedere aritmetic. De obicei, fiecare litera reprezinta o cifta diferia Un exemplu binecunoscut este urmatorul: FORTY Solujie: 29786- F=2,0=9,R=7,T=8, + TEN 850 + TEN 850 SIXTY 31486 ‘Cea mai simpl8 formulare a problemei este urmitoarca: Star: un careu criptoaitmetic cu unee litge inlocuite cu cifre; Operator: intocuest toate apatite une ere cu o cif care nu apare deja in careu; Test obiecti: careul contine doar cite si reprezinta o suma corect; Costul edt: zero. Ad) Problema agentului aspirator Se consider problema aspirdrii automate a gunojului cu ajutorul unui aspirator care are trei senzori: un senzor de contact (pentru detectarea obstacolelor), un fotosenzor care detectea7 gunoiul de sub aspirator gi un senzor infrarogu care recunceste locafia “acest” « aspirstorulai. In caml general, aspiratorul poate realiza urmatoarele actiuni: mers_inainte, intoarcere dreapta_90_grd, intoarcere_stanga_90_grd, aspirare gunot, inchidere. Mediul de lucrt este aleatuit din camere in care exists gunoi si Jiferite obiecte de mobilier. Scopul agentului aspirator este de a face Ccurat gi apoi, de a se retrage in locayia “acasa’” in figura 1.4 sunt prezentate cele 8 stiri posibile in cazul in care agentul aspirator va face curat in dou camere fir mobilier. Accasta problema reprezinté o variant simplificata a problemei agentului aspirator, Alte variante ale problemei fin cont de forma camerelor (dreptunghivlard sau neregulata) si de prezenfa mobilierului in camere. De asemenea, se poate introduce o masura a performanfei agentului aspirator. De exemplu, se acorda 100 puncte pentru fiecare gunoi aspirat, -1 pentru 0 actiune realizata, -1000 punete, dac& aspiratorul se inchide cénd nu este in locatia “casa” Q 1 ]o],: S| |= [a 3 ol, = S fo : Qe => = a 7 |. Fig. 1 Spatial strilor pentru problema aspiratorult Formularea problemei simplifieate (conform figurii 1.4): ‘Stari: una din cele opt stiri din figura 14; Operatori: miscare stinga, miscare dreapta, aspit Test obiectiv: nu mai exist gunoi in camere; Costul cai: fiecare actiune are costul | .A3) Problema misionarilor si canibalilor ‘rei misionari si trei canibali se afl pe unul din malurile unui rau, impreund cu 0 barcd care poate duce la-un moment dat unul sau doi oameni. Se cere si se glseasci o modalitate de a-i duce pe tofi pe celalalt ‘mal, fird a lisa niciodaté ca numarul de misionari dintr-un loc sa fie mat mic deedt cel al canibalilor din acel loc. in figura 1.5 este prezentata schematic aceasta problema. = a ge eoaeSee _ = Fig. 1.5 Problema misionarir 5 canibalilo. Exemplu de formulare a problemei: Stari: 0 stare consti dintr-o seevent& ordonatd de tei numere reprezentind numarul de misionari, numarul de canibali $i numarul de bic de pe malul fului de la care au port Starea initiala (de start) este 3, 3, 0 Operatori: din fiecare stare operatorii posiili pot lua un misionar sau un canibal sau doi misionari sau doi canibali pay cite unul din ficare gi s& treacd cu barca pe celalalt mal Exist cel mult inci operatori aplicabili unei stiri Test scop: starea finals (0, 0, 0) Cost cate: numirul de traverse, B. Probleme ale lumii reale B1) Cawiarea unet rure (a unui traseu) Cautarea unei rute implica specificarea unor locatii gi a tranzitiilor de-a lungul legaturilor intre locafii, astfel incdt sA se giseasca calea optima (sau 0 cale ct mai buna) de la locafia sursd (punctul de plecare) la locatia destinatie etn neta Exemple de aplicafii: rutarea in rejele de calculatoare, sisteme automate de transpor, sisteme de planificare a zborurilor. 82) Probleme de tip comis-voiajor (probleme de vizitare) Acest tip de probleme este asemanitor celui anterior menfionat, cu specificarea ci ini acest caz, spatiul strilor trebuie s& inregistreze mai rnulte informatii. De exemplu, trebuie mentionate toate locale (oragele) Nizitate la un moment dat. Fiecare oras trebuie vizitat doar o dati, iar scopul este de a gisi drumul cel mai scurt(turul cel mai scurt), stiind c& cragul de plecare va fi ultimul vizitat i Problemele de tip comis-voiajor se incadreazat in clasa problemelor NP- complete. B3) Navigarea robotilor Problema este 0 generalizarea a problemelor din clasa BI). Astfel, un robot este capabil 54 se miste intr-un spatiu continuu cu un set (teorctic) infinit de actiuni si star posibile. Un exemplu de navigare a robotului este cazul unui robot circular care se mised pe o suprafaté plana si relizeaza distribuirea postei. Pentru transformarea spatiului sirlor int-un spatiu finit sunt necesare tehnici avansate de LA. In plus, roboii trebuie s& se ‘ocupe si de corectarea erorilor care pot apare (de exemplu, erori de citire adatelor primite de la senzori). BS) Secventierea asambleirii Posibilitatea asamblarii automate a obiectelor complexe de etre un robot a fost realizat& pentru prima data de robotul FREDDY. In problemele de asamblare se cere s& Se giseascd 0 secventa (0 ordine) in care si fie asamblate parti componente ale unui object. Verificarea unui pas din seevenfa, pentru fezabilitate, este o problemi complex de ciutare geometric’, asemindtoare problemei navigirii unui robot. Rezolvarea problemei necesita utilizarea de algoritmi informati pentru a reduce ‘impul de cdutare a solutiei. Exemple de aplicati: asamblarea motoarelor ckectrice, asamblarea laptop-urilor, asamblarea masinilor ete. 1.3 STRATEGIA GENERALA DE REZOLVARE Rezolvarea unei probleme in inteligenta artificial necesita speciticarea unei structuri simbolice (pentra descrierea starilor problemei), a unci ‘multimi de operatori de transformare a starilor si a unei metode de planificare (numiti strategie de control), care si indice ordinea de aplicare a operatorilor de transformare astfe!incat solutia problemei si fie gisita cit mai repede. Un algoritm de ciutare a solutiei primeste ca intrare 0 problema si intoarce 0 solujie sub forma unei secvente de actiuni Gisirea unei solutii se realizeaz& prin ciutare in spatiul starior. Idea de baza este plistrarea si extinderea unei secvente de solutii partiale. Dacd dintr-0 stare se pot genera (prin aplicarea operatorilor legali de transformare) mai multe stéri succesoare, alegerea uneia dintre acestea este realizatd de strategia de cdutare. Procesul de ciutare a solutiei este asemiinator cu cel al construirii unui arbore de cdutare, Raddcina arborelui de cautare este reprezentati de nodul asociat stiri initiale Nodurile frunzit ale arborelui corespund stirilor care nu au succesori, adic, fie nu au fost inca expandate sau au. fost expandate, dar au generat ‘multimea vida. La fiecare pas algoritmul de cAutare alege un nod frunzi pentru expandare, Problemele de inteligenté artificial sunt probleme complex computationale (NP-complete). De cele mai multe ori, solutia se obtine printr-un proces de ciutare si nu prin aplicarea unei secvente de transformari antetior specificatt. Prezentim un algoritm general de rezolvare a unei probleme prin cdutare, algSritmul 1.4. 4 Stragia pera Slum a soll nel robles — Algoritm S\~starea inital, S~starea final, S ~ stareacurent (Or—multimea operatorilor de transformaré Lses, repetd 2.1 selecteaza un operator de transformare Or (* iniializeazaS cu stara niin */ * aplicabil tii S*/ 2.28, = OS) /* aplicd Of asupea starii S */ 238< “pind cind S~S; sfarsit Algoritmul prezentat este nedeterminist intrucdt la pasul 2.1 nu se 4 modul de selectare a operatorului de transformare Or care se speci iplica starii curente, Selectarea operatorilor de transformare si memorarea ectuate constituie strategia de control. Structuri de date pentru arbori de cdutare: Presupunem ci un nod este o structura de date cu cinci componente: «© starea din spatiul starilor cdreia fi corespunde nodul; © nodul din arborele de cAutare care a generat acest nod (nodul parinte); «+ operatorul care a fost aplicat pentru a genera nodul; numarul de noduri pe calea de la ridiciné la nodul curent {adincimea nodului); © costul ci de ta starea inital ta nod. in parcurgerea spayilut de cautare, un od poate fi © necunoscut nod apartine zoel neexplorate a pail de cute; © evaluat ‘© nodul este cunoscut, dar fie nu se eunoaste nic un sueceso, fie se-cunose doar o parte din suecesori lis ©. expandat ‘+ nodul este cunoscut gi tot suecesori lu sunt cunoscu Expandarea unui nod reprezinta generarea tuturor succesorilor acestuia, Jn procesul de edutare a solujieiunei probleme se vor utiliza dou ist: © FRONTIERA - lista nodurilor evaluate © TERITORIU - lista nodurilor expandate Lista FRONTIERA reprezinta frontiera spatiului de cautare parcurs spre partea necunoscuta (neexplorati) a spatiului de cdutare, in timp ce lista TERITORIU reprezinta partea cumoscuti (explorati) a spafiului de utare. Strategia de cfutare va selecta nodurile de expandat din lista FRONTIERA. Reprezentarea solutiei unei probleme Solutia unei probleme se poate reprezenta in dou’ moduri = prin spatiul stirilor, - prin grafuri SUSAU. A. Reprezentarea solutiei unei probleme prin spasiul stirilor Definitie: O reprezentare a solujiei unei probleme prin spagiul starilor este aleatuita dintr-un triplet (S;, Or, §) S\ ~reprezint starea inital; Or = reprezintt muljimea de opeatri apliabili asupea stisilor universuli problemei pentru ajunge tn noi sts S: reprezint stares final sau o multime de sti finale Definite: Adancimea unui nod int-o reprezentare a soluici problemei prin spaiul stacilo, se defineste ast 1) Adancime 2) Addincime(S) = Adincime(S,) + 1, unde Sp este nodul predecesor noduli S unde S este nodul stare inital; © soluyie a problemei este o secventa de operatori care transforma starea initialé inte-o stare final. in figura 1.6 este prezentat un exemplu de reprezentare prin spatiulstrilor a problemei 8-puzzle. 1 {73 s map ral 7 [ie StaNGa Jos DREAPTA | 'T2]foeTsfe]foq2 s] spa 8 3 s[sfa a[o7 s[7[o +[7[s S S 3 FF. 1.6 Reprezentare prin spatial strilor a probleme’ §-puzzle, unde, multimea de operatori este Or = { SUS, STANGA, JOS, DREAPTA }, ine stareainfial si cea finala sunt cele din exemplul dat in figura 1.2 ee B. Reprezentarea solutiei unei probleme prin grafuri $USAU Definite: O reprezentare a solujiei unei probleme prin grafuri $USAU ste aleatuitd dinte-un triplet (S\, Or, Po). ~ reprezind starea inital (descrierea probleme! iniiale); (r+ reprezintd multimea operatorilor de transformare(descompunere) a problemel in subprobleme; , ~ reprezint deserierea unei multimi de probleme elementare Definite: Un graf SUSAU se.consruieste pe baza urmitoarelorregulis (8) Fiecare nod reprezinté fe o problems, fie o muljime de probleme ce urmeazi afi rerolvate, (R}) Un nod ce reprezinta o singurd problema nu are suecesor. Problema este fie cementard (direct rezolvabila), fle neslementard (au se mai poate descompune in subprobleme gi deci, nu poate fi rezolvatd). (Ry) Nodurite ce reprezintd muilimea de subprobleme in care s-a descompus 0 problema prin aplicarea unui operator de descompunere se numesc noduri $I (R) Nodurile ce reprezintd descompuneri alternative ale unei probleme in sabprobleme se numese noduri SAU. in figura 1.7 este prezentat un exemplu de graf $USAU. O pis vr Diyg a y Fig. 1.7 Exempl de graf SUSAU penta reprezentars spat de care, in cazul in care solufia unei probleme se reprezintA prin grafuri $USAU, problema are solutie dact nodul stare initials (corespunzatoare descrierii inifiale a problemei), este rezolvat. Un nod dintr-un grat $USAU este rezolnat dca: (1) este un nod terminal (reprezentind o problems elementar), (2) este un nod neterminal $1 cu ti succesori noduri rezolvate, (3) este un nod neterminal SAU cw cel putin un succesoreezalvat Defintie: Un nod dite-un graf SUSAU este nerezolvabil dct (1) este un nod terminal etichetat cuo problema neelementar (2) este un nod neterminal SI cu cel putin un succesornerezolvabil, (3) este un nod neterminal SAU cu toy suecesorii nerezolvabil Defic: Adéncimee unui nod ist rpczen 8 solu probleme’ prin graf SUSAU, se defineste astfel: poe 1) Addéncime(Si) = 0, unde S, este nodul stare intial (problema initila); 2) Addéncime(S) = Adancime(S,) +1, daca S, este nod SAU predecesor al lui S; 3) Addncime(S) = Adéncime(S,), daca S, este nod SI predecesor a ui S. Problema labirintului: Se considera un labirint si problema gasiri ieiri din labirint, flind data o pozitie iniiala in labirint. In figura 1.8 este prezentat un exemplu de reprezentare prin graf SUSAU a acestei probleme, Descrierea problemei initiale este “Gaseste iesire din pozitia initial Py”, Multimea de operatori de descompunere este Or = { 1, Os, Os, O }, unde 0 -deplasare un pas la Est si gAsesteiesre din noua poziie; (02 deplasare un pas la Sud gi gisesteisir din noua poztie; (03 - deplasare un pas a Vest si piseseiesre din noua poziie; (0¢-deplasare un pas la Nord §igisesteiesre din noua poziie. Problemele elementare (P,) sunt: deplashgun pas la Est, Sud, Vest $i respectiv Nord, dacd labirintul permite, si iesie din lairint, dac& pozitia este la ieire > °, Py Fig 18 Reprezemare prin gra SUSAU a probleme! bin Observatie > Cele doud tipuri de reprezentari ale solufiei unei probleme sunt echivalente. Strategia generala de edutare a solutiei unei probleme in spatul stirilor sau intr-un graf $USAU se poate particulariza pentru dou tipuri de cautari, meinformate si informate. Strategiile neinformate de cautare x su informasii despre numirul de pasi sau despre costul caii din starea curenta in starga/stirile scop; Singurul lucnu pe care il pot face este distineta intr o stare scop si starile care nu reprezinta starew/starile scop. Existé cinci strategii de cdutare neinformatd: cdutarea pe nivel, cdutarea de cost uniform, cdutarea in adéncime, ciuarea in adancime cu nivel iterativ, cautarea bidirecpionala. Diferentierea intre aceste strategii este data de ordinea care sunt expandate nodurile. Strategiile de edutare neinformats pot gisi solutile problemelor prin generarea sistematicd de noi stiri si testarea lor {in raport cu scopul. Din picate, ele sunt ineficiente in majoritatea cazurilo. Strategiile informate de céutare incearca reducerea numarului de stiri inspectate din spafiul de cautare, pe baza unor criterii numite euristici. Aplicarea curisticilor conduce la reducerea costului clutarii. Euristica sau functia euristicd este o functie de evaluare, care estimeaza distanta de Ja starea curenta la starea scop, ghidind astfel procesul de ciutare a solufiei. Practic, ea este utilizat& pentru a extinde 0 solutie partials, astfel incdt certitudinea obtinerii solujiei problemei din solufia extins si fie maxima. in general, euristicile mu sunt exacte, sunt greu de formalizat si de explicat, iar aplicarea lor nu garanteazA gisirea solutiei (eventual, a solujiei optime). Ele sunt determinate din experienja acumulats de expert. ‘Alegerea unei strategii de cdutare se realizeazA in funcie de tre criteri: completitudinea (o strategie este complet daca garanteaza gasirea unei solutii, in cazul in care aceasta exista), optimalitatea (0 strategie este optimalé dacd iseyte solutia optima) 31 compleritatea (complexitatea lunei strategii se referd la complexitatea timp - in cit timp se giseste 0 solujie $i complexitatea spatiu - cit spatiu de memorie este necesar pentru a realiza ciutarea solutici). Teme de laborator Tema 1. Problema TIC-TAC-TOE Implementaji in limbajul C algoritmii 1, 2 i3 de rezolvare a problemei TIC-TAC-TOE. Comparaji rezultatele ‘obyinute prin rularea celor trei programe. Furnizati 0 alt solutie inteligent a. problemei. Realizati Jmplementarea in limbajul C, Comparati solutia propusd cu cele trei soluti date in carte Tema 2. Problema mozaicului de 8 numere A. Proiectafi un algoritm de rezolvare a problemei mozaicului de 8 ‘numere. Implementafi algoritmul in limbajul C. Daca algoritmul propus este inteligent, explicafi in ce consta inteligenfa Iu B. Implementati in limbajul C o reprezentare a unei stiri a problemei gi cei patru operatori de transformare. Tema 3. Problema celor 8 regine A. Proiectati un algoritm de rezolvare @ problemei celor 8 -regine. Implementaji algoritmul in limbajul C. Utilizati una din formulacile Propuse in carte. Fumizati o solutie a problemei. B. Implementafi in limbajul C reprezentarea unei stiri a problemei gi operatorii de transformare, q ‘Tema 4. Problema misionarilor si canibalilor A. Proiectafi un algoritm de rezolvare a problemei misionarilor si canibalilor. Implementafi algoritmul in limbajul C. Este inteligent algoritmul propus ? Daca da, justficafi. Furizafi o solutie a problemei. B. Implementafi in limbajul C reprezentarea unei stari a problemei gi ‘operatorii de transformare. ‘Tema 5. Criptoaritmetica A. Proiectaji un algoritm de rezolvare a unei probleme de criptoaritmeticS. Implementai algoritmal in limbajul C. Rulai programul pentru exemplul dat in carte B. Implementati in limbajul C reprezentarea unei stiri a problemei si operatorii de transformare. Tema 6, Problema agentului aspirator A. Proiectati un algoritm de rezolvare a problemei agentului aspirator in varianta simplificaté (dou camere ira mobilier). Implementati algoritmul in limbajul C. Eurizafi o solutie a problemei, B. Implementafi in limbajul C reprezentarea unei stari a problemei si operatorii de transformare, ‘Tema 7. Cdutarea unei rute A. Proiectaji un algoritm de rezolvare a problemei de cdutare a unei rute siimplementati algoritmul in limbajul C. Consideragi o hart simplificats 2 Romanie’ si determinati cel mai scurt drum intre doud orase. B. Implementaji in limbajul C reprezentarea unei stiri a problemei si coperatorii de transformare. ‘Tema 8, Secventierea asamblarit A. Proiectafi un algoritm de rezolvare a problemei de asamblare a unui calculator si implementafi algoritmul in timbajul C. B. Implementati in limbajul C reprezentarea unei stiri a problemei si operatorii de transformare. intrebari gi exercitii 1. Cum se realizeaza rezolvarea problemetor in inteligenta artificial®? 2. Care este caracteristca esentialé a unui sistem inteligent? 3. Definifio stare a unei probleme. Dafi exemple. 4. Ce confine spayiul de cdutare a solufei unei probleme? 5. Care sunt elementele de bazi pentru definirea unei probleme in IA? 6, Incadraji problemele enunjate in seciunea 1.2 in cele patra categorii? 1. Existd diferente intre noduri gi sti? Daca da, eae sunt? &, Reprezentaji o solujie « probleme’ Tumurile in Hanoi. 5. Ce fumizeaza un algoritm de ciutare a solute unei probleme? 1. Dati si alte exemple de probleme ce se pot rezolva in LA, 11. Dati exemple de probleme a ciror rezolvare mu necesita utilizarea uror tehnici de inteligent& artficiala, c de IA care au fost prezentate in acest capitol. 12, Sintetizati teh 13, De ce sunt echivalente cele dowd modalitati de reprezentare a solutiei une probleme (prin spatiulstirilor si prin grafuri SUSAU)? 14, Dati un exemplu de functie euristie’ pentru rezolvarea problemei TIC-TAC-TOE. 15, Formulafi problema mozaicului de 15 numere (15-puzzle) si eterminafi numarul de stiri posible. 16, Calculafi adancimea nodului Nr si specificati seevenfa de muti care permite transformarea stiri S; in starea Sr 17, Care este principala diferent intre;strategiile neinformate si cele informate de cdutare a solutiei unei problem2? 18, Care este adncimea maxima de cdutare a solutiei in cazul problemei TIC-TAC-TOE? 19, Definiti o functie euristic& pentru rezolvarea problemei celor 8 regine. 20, Implementati in limbajul C structura unui arbore de cButare a solutici pentru rezolvarea probleme! mozaicului de 8 numere. Poriti de la atS in sectiunen 1.3, structura de date w unui nod, speci # Capitol 1 4 CAPITOLUL 2 STRATEGII NEINFORMATE DE CAUTARE 2.1 CAUTAREA PE NIVEL, Strategia de cdutare pe nivel (numita si cfutare jn lifime, breadth first search) este 0 strategie sistematica de cAutare, care incepe expandarea si cutarea solufiei cu nodul ridicind, apoi continua procesul de expandare i cdutare a solutiei pe nivelul urmator, pentru toate nodurile generate din nodul ridacina si repetd procesul de expandare si cdutare a solutiei pe nivelele urmatoare, pentru tofi suecesoriidirecti ai nodurilor de pe nivelul curent, pand la gasirea solujiei. Toate nodurile aflate la adancimea d in arborele de cdutare sunt expandate inaintea nodurilor aflate la adncimea +, iar cdutarea trece la nivelul urmator doar daca nu exista o solutie pe nivelul curent. Strategia de cdutare pe nivel se obfine din particularizarea strategiei generale de cdutare (algoritmul 1.4) prin implementarea listei FRONTIERA sub forma de coada. in figura 2.1 sunt reprezentati arborii de cdutare in latime dupa expandarea 0, 1, 2,3 noduri. RR irecia de relizarea operator de expandar i cOuareasoluet ence peared Fig. 2.1 Arbor de cauare pe nivel dup expandares 0, 1,2, 3 nour Daca exist 0 solutie, strategia de ciutare pe nivel garanteazé gisirea acestela, iar daca exist mai multe solu, prima solutie pe care 0 va gasi este cea pentru care starea scop are adncimea minima in arborele de cutare. Ciutarea pe nivel este completa si optimala, In continuare, analizam complexitatea strategici. Considerim un spajiu ipotetic al starilor in care fiecare stare poate fi expandati pentru a genera un numar de b noi stiri Factorul de ramificare al acestor stari (si implicit al arborelui de ciautare) este prin definitie 6. Nodul radacind al arborelui de caiutare va genera b noduri pe primul nivel, 6 noduri pe nivelul 2 samd, Presupunem ci solutia problemei este 0 cale de lungime d, Atunci, rnumarul maxim de noduri expandate in timpul cautari solutiei este 1 + b +b? +b" +... + b%, Acesta este numarul maxim, dar solutia poate fi gasita in otice punet de pe nivelul d. Deci, in cazul cel mai bun, numarul ar fi ‘mai mic. Din analiza complewititi rezultd c& aceasta este exponential O{b). Complexitatea spatiu este aceeagi cu complexitatea timp, deoarece toate nodurile frunza ale arborelui trebuie stocate in memorie in acelasi timp. Complexitatea spajiu foarte mare face ca aceasti strategie si nu fie practiea in multe cazuri Prezentim algoritmii de cdutare pe nivel in spafiul starilor si respectiv, in arafuri $USAU (de fapt, in arbori $/SAU). Algoritmul 2.1 - Ciutarea pe nivel in spafiul starilor Structuri de date: © coada FRONTIERA $i lista TERITORIU ‘*arhorele generat in procesul de cdutare (spatiul de cduare) ~ solutia este ocale In arbore 1 niizeart FRONTIERA «= (8) TERITORIU = () 2udieh FRONTIERA =(} atwaeltnoare INSUCCES nue soli */ 4. lia prim aod din RONTIERA ginserea In TERITORIU 4. expandeazt nodul s CAL AR wa) ue 4.1 penereaz8 tof succesoi drei a nol S 42 petra fear succes §, (5 li exeent 42.1 sable tun §, > 4.22 ded Sst stare Sal tunel aout $8) itmoare SUCCES fost st sola */ 42.3 duck § ¢ PRONTIERAU TERITORIU tune + vcore uel taro genera“ * inserezt§,in FRONTIERA, lasteit/‘tax ays S.repetd de la pasul 2 starsit > In cazul in care solutia exist algorimul intoarce sotupia cale de lungime ‘mini. Algoritmul 2.2 - Cautarea pe nivel in arbori $USAU Structuri de date: ‘© coada FRONTIERA si lista TERITORIU + arborele SUSAU generat in procesul de cdutare (spaiul de cdutare) ~ solujia este un subarbore $USAU 1 inalizeazd FRONTIERA & (S\} si TERITORIU « (} 2. climind primal nod $ din FRONTIERA gi insereazi-l in TERITORIU 3." expandeaza nodul S 3.1 * genereard tof suecesori dire S, ai nodului 3.2 pentra fecare suecesor §, (I< 8 3.2.2 dacd §, este nod $1 reprezentind 0 muljime cu mrinimum 2 subprobleme atunei i. * genereaztfi suecesorii subprobleme S} (I< kp) ai lu , siete legaturileIntrenodutile SS, (I k g(S), pentru V nod S, adicd costul unei c&i nu scade de-a lungul acesteia. De exemplu, in cazul jn care costul unei e&i este suma costurilor asociate operatorilor aplicati de-a lungul cdii, daca fiecare operator are un cost pozitiv, atunci costul tunei cai nu se va micsora pe misurd ce parcurgem calea, iar cautarea de cost uniform poate gisi calea cea mai ieftind, fra si exploreze intregul arbore de cdutare. Daca unit operatori au cost negativ, singura solute este o clutare exhaustiva, prin toate nodurile, pentru a gisi solutia optima. 2.3 CAUTAREA IN ADANCIME, Strategia de cdutare in adincime expandeazd intotdeauna unul din nodurile de pe nivelul cel mai adane din arborele de cdutare. Cautarea revine pe nivelele anterioare doar atunei cind s-a blocat (a aparut-un nod care nu este nod scop gi care nu poate fi expandat). Strategia de cfutare in adincime se objine din particularizarea strategiei generale de cAutare (algoritmal 1.4) prin implementarea listei FRONTIERA sub forma de stiva. In figura 2.2 sunt reprezentaji arborii de cdutare in adancime pentru tun exemplu care presupune cd nodurile de adncime 3 nu au suecesor Oo decade reaiare a operator de expandare ‘tutor @souiet Fig. 2.2 Exemple de arbor de cautar inane, Strategia de ctutare in adincime nu este completa si nici optimald. Complexitatea spajiu este liniard, iar complexitatea timp este exponenfiala. Dac& spafiul starilor are factorul de ramificare b si adincimea maxima h, complexitatea spatiu este O(bh), iar complexitatea timp este O(b"), Pentru problemele care au mai multe soluji, cdutarea in adincime poate fi mai rapida decat cAutarea pe nivel, deoarece are sanse mai mari si giscascd 0 solufie dupa explorarea unei mici portiuni a spatiului de cutare. Dezavantajul cdutarii in adncime este posibilitatea blocarii intr- o cale gresit aleasd. Multe probleme au arbori de cdutare cu adincime foarte mare, uncori infinité si strategia de clutare in adncime nu va fi capabild si revind, datoriti unei alegeri nepotrivite a unuia din nodurile aflate in apropierca riddcinii arborelui. Cautarea in adancime va continua chiar atunci cénd exist& 0 solutie de adincime mai micd. Astfel, pentru aceste probleme, cautarea in adncime fie va intra intr-o bucl8 infinits, fie va gisi, eventual, o solutie (diferita de solutia optima). O varianta imbunatafta a cdutdrii in adncime este strategia de clutare in adéncime limitatd. Accast® strategie este completd, dar nu este optimald. Daca se alege o limita prea micd a adncimii, ciutarea nu este nici macar completa. Presupunind cA limita stabilita pentru adancime este Has, complexitatea timp este O(b!""", iar complexitatea spatiu este OCbH ane). Strategia de cautare in adncime limitata este indieata in cazul problemelor pentru care se poate estima o adncime maxima de cdutare, Prezentam algoritmii de cdutare in adancime limitata, in spafiul stacilor si respectiv in grafuri S/SAU (de fapt, in arbori $U/SAU). “jutare in adincime limitatd, in spafiul stirilor Algoritmul 2.3 - Structuri de date © stiva FRONTIERA gi lista TERITORIU ‘+ srborele generat in procesul de cautare(spaiul de cdutae) ~soluia este ocale in arbore 1 initializeaza FRONTIERA «= (S)} si TERITORIU € {) 2.dacd FRONTIERA =} atunei intoarce INSUCCES * nu exist solute sau solutia nu poate fi gsi pana a adincimen Fas */ 3. elimin& primul nod S din FRONTIERA gi insereaz8- in TERITORIU 4. daca Adancime(S) = Hau stuns 4.1 repeta de a pasul 2 5." expandeazt nodulS ; SA. * gonereaa toy succesori ret, fai $ 5.2 pentru fiecaresuccesor S, (Ij S, prin atagarea unui pointer 4e la napoi aS 7.2.3 daed S, ¢ FRONTIERA U TERITORIU atunei + introduce Sn FRONTIERA, 7.24 atfel I fie copia lu S, din FRONTIERA sau TERITORIU li daca fS) < AS") atun * transforma lepituraS', > predecesor(S}) In legitura S', > S eufS) * Inlocuiete A'S) asociat ui ‘dacd S', ¢ TERITORIU atunet * liming Sdn TERITQRIU ginsereazil in FRONTIERA ii. * ignora nodut S, 8. repeta de la pasul 3. sirsit ‘Algoritmal 3.1 22) Observati: ‘© Strategiile de tip bes-frstdifera tn funetie de tipul functiei de evaluare pe care © utilizeazd. Algoritmul prezentat este comun tuturortipuilor de strategit BF, Intrucat nu Sunt impuse restric asupra natu neti), ‘© Daca pe parcursul elute o stare a fost redescopert, jar calea pind la noua partie este mai scurt, algoritmul va considera noua cale gasit (72.4 i). + Strategia BF este o strategie completa daca reujestesA limine cle ciclce. Pentru a realiza acest lucru trebuie ca, in cazul cailor find cieluri, cost acestora st fie mai mie deci costuleailor care contin cic. "7 + Strategi de cdutare hestfrstreprezino generaizare a sreegilor de cute neinformats, pezentate in sectiunea antrioard. Prin particulariarea functicif tem obfinestrategile de baz 2 elutarea pe nivel, dacd AS) = Adincime(S), ‘cutarea in adincime, dacs (8) = — AdancimeS), (© clutarea de cost uniform (branch and bound), dacd kt E cost_arc(S),Sj1), unde Feste indicele stiri initale f 115k ‘+ Una din cele mai simple strategiiinformate de cAutare a soluici in spatial starlor 0 reprezinth sirategia alpinistului (sau metoda gradientulut ~ hil- Climbing). Ideea de baz8 a cdutirio constitu mirimizareadistanje ce separa starea curentd de starea Scop a problemei, pornind de la o stare inifal data Stategia alpinistlui se bazeaza pe un etteriu de optim local. Astfel, past Prinipali- sunt expandarea unui nod, inspectarea sucvesorilor direct ai fcestuia, caleulul valorilor functiei de evaluare euristicd pentru acesti suocesori gi selectarea celui mai bun nod in functie de valorile obyinute. Toate Celelalte noduri sunt ignorate, inelusiv nodul stare curent, astel 8 strategia teste irevocabilA, Dezavanajele acestl strategii sunt: posbilitatea de a pierde Soluia, blocarea in maxime locale si inspectarea repetath a aceleiai str Strategiaalpinistului nu este complet. O solute a evitriiblocdrit im maxime locale o consttuie utilzarea calirié simulate (simulated annealing), care permite glsirea maximului global reusind sd iasA din maxime locale. Ideea Algortmlui cAliri simulate o constituie posbilitatea de a reveni pe nivelele fanterioare pind cAnd se iese din maximul local si apoi continu strategia lpnistlu, repetind acest pagi ori de eate ori este nevoie. 3.2 ALGORITMUL A" jin cazul in care strategia best-first minimizeazi costul total al cAii se obtine strategia A". Funcfia de evaluare euristicd este o functie aditiva de forma: AS) = g(S) + h(S), unde g(S) reprezinta costul solutiei partiale (Si... S), costului (distanjei) portiunii de solutie (S, ..., S). In prezentate componentele functiei curistce a algoritmului A” 8), iar h(S) estimata figura 3.1. sunt Funefia de evaluare /(S) reprezinta o estimare a costului real: g(S) + AS), al unei solutii a problemei care trece prin Funcfia g(S) este calculatd ca find costul actual al drumului parcurs in cutare inte stare inifiald i starea curent, S. nt (5) =F cost_are(Sj,S +1), unde Sp este starea S. j in cazul in care spatiul stirilor este un arbore, g(S) este 0 estimare perfecta a costului real g'(S). Dac spatiul de edutare este un graf, 2(S) poate s8 supraestimeze costul real g'(S). Asadar, (S) 2 g'(S), V starea S 38) hs) Fig. 3.1 Componentele fincyieieurstice #algoritmulut A* ‘Algoritmul 3.2 - Strategia de cdutare informaté de tip A ‘Seructari de date «© listele FRONTIERA gi TERITORIU 1 gaful generat in procesul de clutae (spatil de efutare) ~solutia este 0 eale * fumeya de evaluare eristicd A) = e() +) *7 1. initalizeaza FRONTIERA € {S)} si TERITORIU & {) 2. * caleuleazd AS) si asociaza aceasta valoare noduli S, 3. daca FRONTIERA ~ {) atunet intoarce INSUCCES /* problema nu are solute */ 4. * selecteazd din FRONTIERA un nod S pentru care S) este minima 5, * elimind nodul S din FRONTIERA sf insereazi-l in TERITORIU ~~ Algoritmat 3.2 (1/2) es (6. daca S ese starea finald atunel 6.1 + constuieste solutia (S, .,§), prin trasarea cai de-alungul pointerilor de ia sop inapoi te steea initial, S 2intoaree SUCCES _/* sa gist solutia problemei */ 7.7 expandeazA nodut S 7.1 * genereaz toi succesori drei Sai odului S 72 pentru fecre succesor SIs) al i 7.24 + calouleat AS) = g(S) + cost artS, S) + 4S) asia valoarea lu : 72.2 * sabilege lepitura fu pine S-> S dela, inapoi la S 7.23 dacdS, ¢ FRONTIERA U TERITORIU atunel + introduce §, in FRONTIERA ‘rin atagarea unui pointer 724 altfel * fe S’ copia ui S din FRONTIERA sau TERITORIU i, dacd a(S) < a(S) atunel + transforma legitua S' > predecesor(S') in legitura Sy —> S * inlouieste (8) asociat li Seu S) (se modifi doar) acd S', © TERITORIU atuneh + climind S' din TERITORIU gi insereazil in FRONTIERA. ii, *ignora nodul S, 8. repetd de la pasul 3. sfiesit - ‘Algoritmul 32 2) ‘Observa Se poate demonsta ed strategia A” cate complet i optimal dae este imps (G restrictie asupa Functeih. Aceast restictie const in alegerea unet functii/t ‘are si nu supraestimeze niciodat® costal pentru atingerea scopului. © astiel fe fimctie h se numeste eurstcd admisibld. Euristcile admisibite sunt prin hntura lor optimiste, deoerece gaadese costl rezolvarii problemei afi mai mic ‘eedt este acesta in realtate, Daca’ este admisbill, nu supraestimeaz8 niciodsta costul real al celei mai bune solufi care rece prin nodul asociat stiri S. Defintie: © Tancte eurstica este admisibil daca 0=MS)ah (S) pentru orie sare 5. Teoremd: Fie un algoritm A* care utlizeaz funeta faditiva, anterior specifica, Daca (1) functia heste admisiila (2) cost_are(s, ‘constant finitd,atunei algoriomad 4° este admisibil, adic este g calea de cost minim spre solute. > ct, pentru ¥ dous stiri § si S', unde o0 este 0 tat SA gBseasca ‘© Algoritmul A* poate i utilizat pentru rezolvarea problemelor in care sarea Final este cunoscuta ‘© Strategia A” este complet pentru grafuricu factor de ramificace fini. '* Dac MS) = 0 atuncialgoritmul A se reduce la strategie de cAutare de cost uniform. ‘* Compiexitatea spatu este mai mare deed complexitates timp, Complexitates timp a strategic A depinde de calitatea functei curse, Exemple de euristici pentru problema mozaicului de 8 numere (8-puczle): (1) iy = numarul de plicufe aflate in pozitie gresita Fonctia hee o cure admit deoaece exe lar ore plc care se fa intro at poze (eri de poi din configura final) rebut st fe muta cel pin od ; : (2) hy = suma distanfelor plicutelor fat de pote lor in contiguratia final. 8 eee at fntrucét placufele nu pot fi mutate de-a lungul diagonalelor, distama care va fi eterminaté este suma distantelor orizontale si vertical (distanta Manhattan), Functia /n este de asemenea o euristicd admisibila, itrucdt orice mutare poate deplasa doar 0 plicut, cu un pas mai aproape de scop. 3.3 ALGORITMUL AO" Jn cazul in care cdutarea solutiei optime se realizeaza in grafuri SUSAU se poate utiliza algoritmul AO", un algoritm similar cu algoritmul A’ Informatia curistcd poate fi uilizaté in doud etape ale cut. Astfel, se identifica soligia cea mai promititoare prin utilizarea unei functii de evaluare a grafului/arborelui solutie, f; Apoi, se selecteaza din aceasta solufie partiald nodul care urmeaza a fi expandat, utiliznd o functie de evaluare a nodurilor, fq, Determinarea grafului/arborelui solutie, cel mai promititor, se realizeazd pe baza costului asociat grafurilor/arborilor generafi pe parcursul cdutdrii. Presupunem cA solufia este un arbore SVSAU. Exist& dou modalitati de definire a costului unui arbore solute: (1) costul suma al unui arbore solujie - suma costurilor tuturor arcelor din arbore, (2) costul maxim al unui arbore solutie - suma costurilor de-a lungul cai celei mai costisitoare intre rédicina gi un nod terminal. Definite: Costul unui arbore solu optima, noatw, int-unspajiu de ciutare graf SUSAU se calouleazd ate: 0 (1) daca S este nod terminal etichetat cu o problema elementara,atunci (S) (2) dacd § este nod terminal etichetat cu problema neelementard (care nu mai poate fi descompusd), atunci w(S)2 (G) daca $ este nod SAU cu succesoriiS1, Sr, w(S)= min (cost_are($,Sq)+ (S54) kein (4) daca § este nod $l cu succesorii 8), Sp, ., Sq $i utlizeazd costul sumd, atunci w(S)= ¥ (cost_are(S,S¢)+ (Sk) fal (3) dact $ este nod $I ou succesorii Si, $2, .. Sm gi S¢utlizeaz® costal maxim, tunel (8) = fax (cost_arelS.)+ (5k) Observati ‘+ Costul nodulut problema initiala w(P) este finit daca si numai daca problema reprecentata prin nodul iifalP, este rezolvara. + in cazul unui nod oarecare S, w(S) reprezints costul arborelui solujie optimala a problemi eprezentati prin nodul S, + Functia w(S)asociatd unui arbor soli optim reprezintscostul ea, similar funetet /(S) din edutarea informata in spaiulstrilor. Funeia de evaluare a ‘rfl, este oestimare a funcici de cost real w(S), iar funcyia de evaluare & odio. fa este estimare a meritului eal fal uni nod Algoritmul AO", pe care fl vom prezenta in aceasts secfiune, determina gTeH Solutia optima prin construirea arborelui cel mai promifator pe baza 6. * selecteac un nod § « FRONTIERAOT fanctie euristice f Costulestimat al acestui arbore solutie este AP.) unde eer ass eens cpa bloga Ames tach P; reprezinta problema initial asociatd nodului radacina al arborelui. me i 7.1 * eticheteaza S rezolvat Define: Arborele solute cst mai promititor T ine-an graf SUSAU etichetat (co 12 * asosiaz nou S cost 8) = (8). contr asociatearcelo) se deine asl: 7.3* propaga etichetarezolvat spre toate nodurile predecesoae lui S din (1) nodul problema intialé S, ¢ T FRONTIERA, care devin rezolvate datorta lui S (2) daca arborele $VSAU de cdutare confine un nod $1 7.4 * recalculeaz’ A'S.) pe baza noului cost ai nodului S atunci tof suocesori acest nod € T 15S repeth dela pasl3 {@) daca arborele SUSAU de cfutare confine un nod SAU eu succesorii Si. So, Oe tc incarl inca cout are(S,Sp) + /(Se) ese niin. 8, daca ¢ S este nod terminal asociat unei probleme neelemeéntare atunel 8.1 * etches nol §nerezovabi Obseraie: * .2 * asociazA nodului S costul f($) = 0 + Intimpul tut arborea solute cel mat promitor, {S) se cleleaa de 3 blancs fin ps bas nll de al kt S roduriefrunzi la nodulradscind. Deoarece Ia un moment dat arbre este arial constr, functa AS) trebuie sd estimeze eurstic costal nodurlor S, 844 dac 8) = eexpandate inch Ast, la 0 expandare a unui asemenea nod se face 0 Sr niaired m probione a are tio” teevaluare #costuliftal al arborelui 8) pe baza nol cost obfinut peru Mata eaten Lat tue *1 sSaltfel radi S, heft: Algrtml AO” este edmisibt hse arbor sole opm) dac sunt 8.5.1 * elimina din FRONTIERA toate nodurile care au un predecesor ‘ndepliniteurmatoarele conti: nerezolvabil (1) AS) sm), 0S 8.52 repett de la pasul 3 (2) ear Ss) > 0 aS S68 suecesorul 9, *expandeazd nodul § 9. * genereaz tof succesoi dire, a moduli S ‘Algoritmul 3.3 - Strategia de cAutare informala de tip AO” 2 pent fecar sucesor SI} alli S exceutt Gramimdsies Ls. cuban ie 9.2.1 * stabileselegturafu-prine, SS 19.2.2 daca nodul S; are asocata © mullime cu cel putin 2 subprobleme 7 (* nodul S, este nod $I */ i. + genereaz toi succesorisubprobleme S}(I[((, ...])] Observatie: + In Prolog numete predicatelor trebuie 4 inceapa cu literd mica, Exemple: programeaza( Maria", “Prolog” Iucreaza(* Andrei”, “ROSOFT") este_student(“Irimescu”, “Ioan”, informatica) Exist doud tipuri de predicate: predefinite (standard) si definite de programator. Numarul de argumente ale unui predicat reprezint aritatea predicatului. Argumentele predicatului pot fi: constante, variabile gi structuti Constantele reprezinta valori speciticate explicit si sunt de doua categori: atomi si numere. A‘omii sunt constante simbolice care incep cu. litera mica gi pot confine liter, citre si caracterul “_”. Numerele pot fi integi sau reale, in Prolog girurile de caractere trebuie incadrate de ghilimele. Variabilele sunt din punct de vedere sintactic tot atomi, Ele reprezinta obiecte necunoseute ale ciror valori se stabilesc sau se modificd in timpul prelucririi, Numele variabilelor trebuie si Inceapa fie cu literi' mare, fie ‘cu caracterul de subliniere “". Variabilele anonime sunt variabile ale ciror valori mu intereseaza, ele fiind simbolizate prin caracterul “ ”. Exista doua predicate standard care verificd daca o variabilt Prolog este legata (adie, are 0 valoare asociaté) sau liberd, la un anumit moment al executiei programului: free(X) si bound{(X). Predicatul free(X) este adevirat dacd variabila X este liberd (nu are valoare asociati), iar predicatul bound(X) este adevarat dac&. Variabila X este legati (are 0 valoare asociata). te Structura este un-obiect ce desemneaza o colectie de obiecte corelate logic, care formeazi componentele structuri Exemplu de structura Prolog: lab_cercetare(catedra(informatica.upg).nume_lab(*Tehnologi informative avansate”)) Clauzele Prolog pot fi simple (contin un.singur predicat) sau compuse (mai multe clauze simple legate prin conectorii logici $I - conjuncti, respectiv SAU - disjunct). Conectorii logici Prolog: = conectorul $I(n)- “" (virgula) + conectorul SAU (v)~";” (Punct si virgula) + NOT (5) predicatul not() Termenii sunt intormatii, cunostinfe, care permit construirea programelor Prolog. Un fermen poate fi 0 clauzi, o intrebare sau o structurai de date, Un program Prolog cuprinde urmatoarele entitati fapte, reguli gi scopuri (intrebari), Fapiele sunt predicate de ordinul | de aritate n, considerate adevarate. Ele stabilesc relat intre obiectele universului problemei. O fapta se incheie cu punct. Regulile se reprezinté in Prolog numai in forma inductiva. Cele oud pirti ale unei reguli, conchia si premisa, sunt separate prin simbolul “:-", care are semnificatia “daca”, Concluzia si premisa sunt exprimate sub forma de clauze. O reguld se incheie cu punct, i reguli Prolog: redicat_concluzie() + predicat_premisa() . Unde predicat_premisa poate confine mai multe conditi (predicate) legate prin conectori logic. Forma general a un ‘Multimea regulilor si faptelor dintr-un program Prolog formeazi baza de cunostinge Prolog. Exemple: informatician(ioana). _/* fat Prolog */ rogrameaza(nicolae, prolog) :- este_studens(nicolae, calculatoare), ~~ invata(nicolae, protog, “anul III"). Tipuri de date Tipuri elementare: + caracter (char) Exomple:*. + intreg (integer) Exemple: 2,20 + real (real) Exemple: 12.285, 30 + sir(string) Exemple: “Carte™ 244573171" + simbol (symbol) Exemple: ott, at, upb + fisier (file) Exemple: printer, sreen + numar de referinta (ref) Exemple:~3,-15 + selector de baza extema (db selector) Exemple: baza, personal + selector de arbore binar (bt selector) Exemple:0, 1,2 + localizare (place) Ecemplcin_fle Tipuri complexe: = liste * tipuri compuse Operatori aritmetici si relationali Operatorii aritmetict: +,-, *,, div, mod >=, > (diferit), = Operatorit relationali: <, >, Operatorul “=” din Prolog are un rol diferit de cel wzual, el fiind un operator cu dou argumente, partea sting si partea dreapt a semnului Interpretarea acestui operator este urmatoarea: + dacd unul din argumente este variabild legatt, iar celalt este un object atunci operatorul testeaz daca valoarea legata este acceagi cu obiectul respectiv; * daca unul din argumente este variabilé nelegatd, iar celalalteste un object atunci operatorul leaga variabila la obiectul respectiv; * daca unul din argumente este variabild liber8, iar celalalt este vvariabild legata atunci operatorul leaga variabila libera la obiectul legat de cealalta variabila; daca ambele argumente sunt variabile legate atunci operatorul testeaza dact valorile legate sunt aceleagi Predicate standard de intrare/iesire Predicate standard de intrare in Prolog exist urmatoarele predicate standard (predefinite - built_in) pentru operatia de cite: 5 + readin(X) (citeste un obiect X de tip string sau symbol), readehar(X) (citeste un carscter X), readine(X) (cteste un numar ines X), readreal(X) (cites un numar real X), readdevice(T) (dirijeaz8 citirea intrdrilor de la T care poate fi tastturd, fier sau alt dispozitiv de intare; Te {keyboard,..). Predicate standard de iesire Cperatiile de scriere se pot realiza in Prolog prin intermediul urmatoarelor predicate standard: * wrte() (afigeazA valorile expresilor speciicate ca parametei), + writeft) (afieazA cu format specifcat de yarametral valorile expresilor din lista de parameti), + ritedevice(T) (Srijeaz8 afigarea rezutatelor etre T, im dspocitv de ieyie, ce poate fi imprimanti, eeran,fsir; Te {printersereen,.} 4.2 SECTIUNILE UNUI PROGRAM PROLOG Din punct de vedere sintactic, un program Prolog se compune din unul sau mai multe module, Prezentim structura generala a unui program Prolog. constants /* sectiunea de definire a constantelor */ domains + seotiunea de declarare a domeniilor de valori pentru argumentele predicatelor */ database / secfiunea de definie a bazelor de date inteme */ predicates 7 setiunea de declarare a predicatelor definite de programator */ global domains 1 sectiunea de declarare a domeniilor globale de valori pentru argumentele predicatelor */ global database sectiunea de defini a bazelor de date inteme globale */ global predicates /* sectiunea de declarare a predicatelor globale */ clauses 7 sectiunea de definire a clauzelor ~ reguli i fapte ~ definirea tuturor predicatelor declarate in sectiunea predicates sau global predicates */ goal /* secfiunea de declarare a scopurilor interne programului */ Structura generala a unui program Prolog Scopurile interne sunt declarate in cadrul programului (sectiunes goat) si ‘determina oprirea sistemului la prima solute gisitd. Scopurile externe sunt introduse interact, de edtre uilizato, ori de cite ori este nevoie, in timpul rulirit programului, atunci cdnd ‘nu existi sectiunea goa! in program. Scopurile determing sistemul Prolog si giseasca, solutii alternative. Figierele care contin programe Prolog au extensia PRO. Exemplu de program Prolog 7 PLPRO*7 domains ume = string prenume specializaré facultate srupa = integer predicates este_student(nume, prenume, specializare, facultate, grupa) clauses este_student(‘Irimescu’, “loan, ‘este_student(‘Stoenescu'", "Maria", ime, 1815). in programul p/,pro scopul este intern Daca se doreste definirea externa a scopului, se va introduce clauza respectivis la momentul rulari programului, la opfiunea Goal: afiata in fereastra de dialog a mediului de programare Prolog (de exeniplu, Turbo Prolog sau LPA Prolog). in cazul programului P1, réspunsul sistemului la ifkraducerea scopului extern va {i urmatoarul: X = “caleulatoare”, Y = ime, Z = 1815, 1 Solution, ceca ce inseamni c& a fost glsité o soluie, iar predicatul este student este satisficut (are valoarea de adevar adevarat. 4.3 EVALUAREA CLAUZELOR Relafiile existente intre obiectele universului problemei de rezolvat se definese cu ajutorul clauzelor (fapte si reguli). Obfinerea rezultatului unui program Prolog se realizeaza prin stabilirea uno scopuri care pot fi adevirate sau false, in finctie de conginutul bazei de cunostinte Prolog, Scopurile sunt predicate pentru care se doreste aflarea valorii de adevar. Pentru a satisface un scop, Prolog va inspecta baza de cunostinte. Evaluarea unei clauze returneaza intotdeauna un rezultat logic, care poate fi Yes (predicat adevarat) sau No (predicat fals). Acest rezultat precizeaza dacd respectiva clauz4 a putut fi sau nu confirmaté. incercarea de satisfacere a unui scop implica ciutarea acestuia in baza de cunostinje Prolog, pomind intotdeauna de la inceputul bazei de cunostinge. In procesul de satisfacere a unui scop se aplic& algoritmul de unificare a scopului atat cu fapte cat si cu antetul unor reguli (coneluzia lor), ceea ce poate conduce la stabilirea unor noi subscopuri, corespunzitoare premiselor din respectivele reguli, Algoritmul aplicat de Prolog. pentru satisfacerea scopurilor este backtracking. Astlel, daca satisfacerea unui scop esueaza, sistemul incearca resatisfacerea scopului anterior satisficut. Controtul procesutui de backtracking Pentru a satisface un scop, sistemul Prolog intra automat intr-un proces de backtracking. Existd situatii in care dorim si controlim acest proces, de exemplu, dupa gisirea unei solutii sistemul s& intrerupa cdutarea. Astfel, in Prolog s-au introdus dowd predicate standard, cut (notat si cu simbolul 1) si fail, care nu au argumente. Predicatul fail este intotdeauna fals, el fiind utilizat pentru fortarea backtracking-ului. Predicatul cut permite oprirea procesului de resatisfacere a scopului. Introducerea unui predicat ‘fail int-0 conjunctie de scopuri, de obicei la sfargit, determina intrarea intr-un proces de backtracking. Dac& predicatul fail este intalnit dupa predicatul cuf, sistemul nu mai intr in backtracking. Existh dout contexte diferite in care se poote introduce predicatul cut. In primul context predicatul cut se introduce pentru a creste eficienta programului (predicatul se numeste cut verde ~ green cut). In al doilea context utilizarea lui cu modified semnificatia procedurald a programului (predicatul se numeste cut rogu—red cut). Prezentim trei exemple care ilustreaz efectul introducerii predicatului cut asupra semnificatiei declarative a programelor Prolog, pl, p2. ps. " (plapdyvp3 * pl p2. (pl apt)v(-plaps */ p3. 3. * p3v(plap2) * Exemplu de utilizare a predicatului fail: Considerdim programul P2, 0 versiunea modificata a programului PI, tn care am adaugat un predicat start ce va afiga date despre studentit din baza de cunostinfe Prolog. domains ‘ume = string. prenume = string specializare = string facultate = symbol grupa = integer predicates este_student(nume, prenume, specializare, facultate, grupa) start clauses ‘este_student('Irimescu’, “loan”, “calculatoare", ime, 1815). ‘este _student('Stoenescu', "Maria", “calculatoare”, ime, 1815). ‘este _student('Stroescu’, “Andrei”, "informatica", is, 4220). este _student("Manole’, ‘Irina’, “informatica’, [s, 4220). student(X,Y,Z,U,W), write," sudent In 2, “facut. Us “rapa W), al, fail. goal start Programa P2 Predicatul start forteazA backtracking-ul pentra a genera toate solutile predicatului este_student Combinafia cut, fail are rolul de negae Jechivalenta cu predicatul standard not). Limbajul Prolog modeleazi négatia ca esec al satisfacerii unui scop, 4.4 RECURSIVITATE SI LISTE Recursivitatea este o tehnica de programare care permite definirea unei relafii in functie de ea insagi. In Prolog, recursivitatea este utilizat pentru a defini un predicat prin el insusi Exemplu: pred_a(...) = pred_..:),pred_a..) Ori de cate ori este utilizatt recursivitatea, programatorul trebuie sa se asigure c& aceasta se va incheia in toate cazurile posibile. Conditile de terminare sunt fapte sau reguli simple, nerecursive, care definese cazurile in care recursivitatea se incheie. 0 lista Prolog este o structuri de date ce reprezinta 0 seevents ordonata de n clemente (120). Elementele unei liste sunt separate prin virgule, iar Intreaga seeventa este incadrata de paranteze patrate. Lista este o structura recursiva care se poate defini astfel: 1. lista vida, [ |, este o lista: 2. o listé este o structura cu dows componente [ P| R ], primul clement din lista, P gi restul listei, R jin Prolog clementele unei liste pot fi atomi, numere, liste si structuri. Tipurile de liste trebuie declarate in secfiunea, domains sub forma nume_domeniu®, unde nume_domeniu este un tip standard sau un tip definit de utilizator. Exemple de liste: L=[]—lista vida L=[°UB”, UPB", “UPG”, “UBB®, “UAIC”} (1, 3}, (2, 41, £5, 71, (6.811 28, 58, 87, 120] Limbajul Prolog permite specificarea unei liste fie prin enumerarea clementelor listei, separate de virguld, fie prin specificarea primului tlement al listei gia restuluilistei, cele doud componente fiind separate de caracterul “|” (L_= [ Primul_element| Restul_listei). {n Prolog nu sunt predefinite predicate de lucru cu liste. Avestea trebuie definite de programator, in continuare, propunem cateva predicate de Jucru cu liste care trebuie implementate de programator atunei end sunt utilizate, 1) membru ~testeaaa apartenenfa unui element [ao list membru(A, {Al_])- membru(a, [_li]):-membru(A,L). 2) nr_elem ~numara elementele dint-o list nr_elem({ ], 0) rar_elemif.iL}, N):-nr_elem(L, Nt), N-Nt+1. 3) concat_lista ~ concateneaza dous liste concat_tista({ J, L, L). concat lista({H|T1], L2, {H1T3] concat_lista(T1, L2, 73). 4) invers_lista ~ inverseazA o lists invers lista, Li-inversa(L, (1, Li). inversa({], Ly L). inversa({H{T], Lt, L2):-inversa(T, (H/L1], 12). 5) afisare_lista ~ afigeaza elementele unei liste afisare_lista({ J afisare_listal{AlL) rite(A), nl, afisare_tista(L). 4.5 FISIERE Limbajul Prolog permite salvarea informatiilor pe disc, in figiere. Pe lnga numele extem al figierului va exista si un nume simbolic, intern programului Prolog. in cazul dispozitivelor standard (tastaturd, ecran, imprimanta) aceste nume simbolice sunt predefinite (keyboard, screen, printer). Pentru celelalte tipuri de fisiere, numele simbolic va fi dat de programator si reprezinté modalitatea de referire la fisier in cadrul programului Prolog. Numele simbolic va fi declarat de tip file in seefiunea domains, Predicate de lucru cu fisiere: 1) deschiderea $i inchiderea unui fisier openwrite(Nume_simbotic, Nume_fisier) -deschide Fiserl pentru seriere ‘openread(Nume.simbolic, Nume_fisier) —deschide figierul pentru citre closefile(Nume_simbotic) —inchidefisiegl 2) redirectarea intra iegiii readdevice(Nume_simbolic)—redirecteaz& dispoztivul de intare \ritedevice(Nume_simbolic) ~redirecteaza dispoztivul de isire 3) deschiderea figierului pentru adugare / modificare ‘openappend|Nume_simbolic, Nume_fisier) ~deschide figierul pentru seriere openmodify(Nume_simbotic, Nume_fisier) — desehide fisierul pentru ctire/serere sfrgitul lu 4) alte predicate de Iucru cu figiere filepos\Nume_simbolic, Poztie, Mod) — poztionar in fier dict Mod =2 mumdrare sealer oer ae stl Tye 7 filemode(Nume_simbolic, Mod) ~ permite accesul la gere text sau binare «daca Mod = 0 acces ia figiere text ddacd Mod | acces la fisierebinare flush(Nume_simbotic) ~forteazAtansferul de date din bufer etre fiser eof(Nume_simbolic) ~testeazdsfryitul de figier existfile(Nume_fisier) — testeaa existentafsierlui pe dise renamefile(NumeVechi_fisier, NumeNou_fisier) —schimba numele unui fg detetefile(Nume_fisier) —sterge fiserl speciticat copyfile(Nume_sursa, Nume_destinatie) -copiaza un fisier Ordinea operatiltor de lucru eu fie ‘+ deschiderea fisierului; redirectarea fluxului de informatii; realizarea operatilor de citire / seriere; Inchiderea figierului redirectarea intrari /iegriicAtretastaturd / ecran Prezentim dou programe Prolog, P3 si P4, pentru crearea unui figier text, respectiv afigarea unui fisier text, Numele figierului este student dat, a domains file predicates ‘creare_fis, citeste_sir(string) start clauses creare. is = write("\n Crearea unui fisier text), writen introducetisiruri de caractere grupate pe tint! \n"), openwrite(, ‘studenti.dat"), writedevice(f), readin(S), clteste_sir(S), closefile(f), writedevice(screen). citeste_sir(#'}:-flushif). iteste_sir(S):-write(S), nl, readin(St), citeste_sir(St). start:- creare fis. goal start Program P3, os domains file =f predicates afisare_fis Citeste_linie /* citeste o inie text din fisier si o afiseaza pe ecran */ start clauses afisare_fis :- writen Continutul fisierulu text estes"), openread(f, “studenti.c readdevice((), citeste_tinie, closefile(f), readdevice keyboard). citeste_inie:-not(eof(f)), readin(S), nl, write(S), citeste_tinie, citeste Linie:-eof(f). start: afisare_fis. goal start Programul Ps 4.6 BAZE DE DATE INTERNE © bac de date interna (bazd dinamicd) este 0 bazi de fapte care pot fi addugate si sterse in timpul execufiei programului. in cadrul unui program se pot defini mai multe baze dingmice, fiecare fiind identificata printr-un nume. Predicatele care vor fi ittizate intr-o baz dinamica trebuie declarate in seefiunea database. Predicate predefinite de lucru eu bace dinamice 1) adaugarea unor fapte in baza de date Nurme_BD ‘asserta(, Nume_BD) ™ sdauga la inceputal bazei de date Nume_ 5D cassertz(, Nume_BD) ~adauga la sfiritl baz de date Nume_BD assert(, Nume_BD) adaugi tn pocitia curen a bazei de date Nume BD 2) consultarea faptelor din baza de date Nume_BD consult(Nume_fisier) ~citeste fapte dintrun fier consute(Nume_fisier, Nume_80) - citeste un fisier cu tapte dectarate in sestunea database sii adauga a sfisitul azei de date Nume 8D 3) stergerea faptelor dintr-o baza de date retract(«fapt», [, Nume_80}) serge un fap din baza de date Nume_BD sau din baza curenta retractalt = serge toate clauzele de tip fapre din baza de cunostnte 4) salvarea faptelor din baze de date save(Nue_fsier, Nume_BD) ~ salveazafapele din bara de date Nume_BD in figicrul Nume_fisier Stergerea tuturor faptelor care se referd la acelayi nume de predicat, se poate realiza prin fortarea backtracking-ului. Prezentim o variants de definire a predicatului sterge sterge:- retract(nume_predicat(_)), fail. sterge, Programul PS defineste o baz dinamied studenti noi fapte in baza dinamicd. permite adaugarea de domains Nume, Prenume, Specializ = string Grupa = integer database - studenti student(Nume, Prenume, Specializ, Grupa) predicates start adauga_student{string, string, string, integer) citeste_date_student clauses citeste_date_student:-write(‘\n Introduceti datele studentilor:"), nl, write(Nume:"), readin(Num), write("Prenume:"), readin(Pren), write("Specializarea:"), readin(Spec), write('Grupa:’), readint(G), adauga_student(Num, Pren, Spec, G), write("\n Continuati? (d/n) *),readchar(Opt), write(Opt), Opt=d, citeste date student. adauga_student(N, P, S, G):-assertz(student(N, P, S, G)). start:-citeste_date_student, goal sat Programul PS. 4.7 ALTE FACILITATI PROLOG: in limbajul Prolog existé dod modalititi de @ implementa o interfata: utilizarea ferestrelor Prolog sau graficd in Prolog. Ferestre Prolog 0 fereasted Prolog este 0 portiune dreptunghiulard de ecran in care se pot realiza operat de citire, seriere si stergere Exemple de predicate de lucru cu ferestre: ‘makewindow «listaParametriFereastra>) ™ defines o fereasiri cu parametti specifica in list shiftwindow|) permite deplasarea inte ferestre gotowindow ) ~ similar cu shiftwindow, dar nu poate fi tliat pentrs ferestre care se suprapun resizewindow {(«listaParametriFereastra>)] ~ redimensioneazAfereastra curent la dimensiunile implicite cexistwindow(NrFereastra>)] ~testeaz existena ferestrei NeFereastra removewindow liming fereasta activa clearwindow . serge conyinuul din fereasta ac Programul P6 prezinta un exemplu de creare a unei ferestre meniu. 7 P6.PRO */ predicates ‘tart clauses start:-makewindow(t, 78, 97, MENIU PRINCIPAL, 1, 1, 7, 38,0, 255, "°F, wwrtetin t= Creare fsler), Wirtein 2 Afsare iter), Ween starse Wr) Tarte(in Optunea dvs), Feadehar(Opt), write(Opt. ‘pal Grafica Utilizarea graficit in Prolog presupune parcurgerea acelorasi pagi ea in It limbaj de programare (Pascal, C etc). Prima operatic este initializarea modului grafic, care presupune specificarea driver-ului si a modului grafic suportat de adaptorul grafic. Apoi, sunt apelate predicatele grafice care realizeaza prelucrarea grafica dorita, urmand ca in final sistemul grafic si fie inchis. Prezentim programul P7 care apeleaza predicate grafice Prolog pentru desenarea unor obiecte grafice cu diferite caractetistici (culoare, sablon de umplere etc). 7 _P7.PRO Include “c:\\protogh\grapdect. pro domains lista constants ‘cale_bgt = “cs\\protog\\bgi* sabion = [Sbb, $65, Sbb, $45, $cd, $45, Sed, $65] predicates start clauses start:-initgraph(detect, 2, ‘etcolor(10), {getillsettings(Model_ump\_orig, Cul_umpl_orig), getfillpattern(Sablon_orig), setfilstyle(tslash_FILL, blue), bar(20, 20, 110, 110), setfilstyle(bkstash_fill, magenta), fillelipse(65, 65, 45, 45), setfillpattern(sablon, yellow), bar(110, 110, 200, 260), setfillpattern Sabion_orig, Cul_umpl_orig), rectangle(200, 0, 220, 226), rectangle(0, 200, 220, 220), rectangle(0, 0, 20, 220), rectangle(0, 0, 220, 20), readchar(_), closegraph. start teger* = cale_bei), goal Programul P7 Programare modular Limbajul Prolog utilizeaz conceptele de proiect si declarayii globale care permit realizarea de programe mari si complexe, divizate in module, ce pot fi editate si compilate separat, iar apoi introduse in proiect, in conditile existentei declaratilorglobale. Proiectele sunt facilitfi utilizate in cazul programelor complexe care trebuie realizate din module, unele fiind serise de programatori diferiti, Se ‘defineste un proiect in care sunt specificate numele modulelor cuprinse in program. Proiectul utilizeazi confinutul fisicrului creat in timpul procesului de legare (linkage), numele modulelor fiind inserate ‘comanda de legare. De asemenea, numele proiectului (project) va fi utiliza in timpul compilarit pentra a identifica o tabelt simbol, distribuitd Ja toate modulele din proiect. Numele proiectului va fi dat fiecdrui modul prin directiva project a compilatorulu. Declarapiile globale permit comunicarea intre module prin sectiunile predicate globale (global predicates) 51 baze de date globale (global database), Domeniile utilizate in predicatele globale trebuie definite ca domenii globale, altfel sunt domenii standard. Toate modulele unui proiect trebuie si cunoasca aceleasi predicate globale si domenii globale, ‘ceca ce se poate realiza prin scrierea declaratilor globale intr-un singur fisiet, care va fi inclus eu directiva include in fiecare modul relevant. tw in finalul acestui capitol, trebuie precizat ci limbajul Prolog este un limbaj dedicat implementarii aplicatillor inteligentei artificiale, care realizeaza practic rationamente, avind un mecanism inter de rafionare. Din acest motiv, nu regasim predefinite instructiunile de control wzuale altor limbaje de programare de tip procedural sau functional. Teme de laborator Tema 1. Problema TIC-TAC-TOE Implementafi in limbajul Prolog un algoritm de rezolvare a problemei TIC-TAC-TOE. Se pot utiliza algoritmii prezentati in Capitolul 1 Tema 2, Problema mozaicului de 8 munere Implementafi in limbajul Prolog un algoritm de rezolvare a problemei mozaicului de 8 numere. Problema a fost definits it Capitoll 1. Tema 3. Liste Prolog A. Implementati in limbajul Prolog predicatele de tueru cu liste Prolog, definite in seefiunea 44. Testati programul pentru o list de simboluri si pentru o listd de numere intregi date de programator. B. Moditicati programul astfel incat listele sf fie cite de la tastatura. ‘Tema 4, Liste Prolog A. Modificafi programul realizat la tema 3 (B) astfel incét sa includeti lurmitoarele predicate de lucru cu liste: edutarea unei valori intr-o list, inserarea unui element intro lista gi sortarea unei liste, Considerai o list de numere intregi. Testai toate predicatele definite. B. Modificaji programul astfel incat apelul predicatelor definite la punctul A si fie icut dintr-un meniu text sau grafic, la alegere, Tema 5. Fisiere Prolog Implementati in limbajul Prolog un program care, pe baza unui meni text sau grafic, la alegere, permite eredrea unui figier text, afigarea continutulfigierului respectiy si cdutarea unor informafit in fsier. Tema 6. Baze de date interne Implementati in limbajul Prolog un program care, pe baza unui meniu text sau grafic, la alegere, permite realizarea urmétoarelor operatii asupra unei baze dinamice: creare, afigare si cdutare. intrebari si exercitii 1. Caracterizati limbajul Prolog. 2. Puteti implementa un program Prolog care rezolva un sistem de dou’ ecuatii cu doud necunoseute? 3. Care sunt sectiunile unui program Prolog? 4. Ce este un scop Prolog? Dai un exemplu 5. Definiti predicatul Prolog? Dafi un exemplu. 6. Explicati cum functioneaza predicatele eut si fail. 7. Ce este 0 lista Prolog? Dati un exemplu de list de simboluri 8. Care sunt diferenfele inte tipul string si tipul symbol? 9, Care sunt predicatele de tucru cu fisiere? Explicati de ce trebuie redirectata intrarea gi iesirea atunci cénd luerim cu figiere. 10, Ce este o baza dinamica? 11, Se pot sterge reguli dintr-un program Prolog? Justificati rispunsul, 12. Ce este o fereastrd Prolog gi la ce poate fi folosita? 13. Explicafi cum funcfioneazi mecanismul intem de rafionare al limbajului Prolog. ¥ : 14, Exist diferente intre reguli si fapté Brolog? Dac da, care sunt acestea? 15, De ce nu sunt predefinite instruciunile de control in limbajul Prolog? 16, Este importanta ordinea de scriere a definitiei unui predicat? Justficati ispunsul 17, Ce fel de pretucrari realizeaza limbajul Prolog? 18, Definiti clauza Prolog gi dati un exemplu, Explicafi cum sunt evaluate clauzele Prolog. F Capito s # CAPITOLUL 5 SISTEME EXPERT 5.1 STRUCTURA UNUI SISTEM EXPERT Un sistem expert este un sistem software care inrhagazineaza cunostinjele expertilor dintr-un domeniu bine definit, pe care le utilizeazé. in rezolvarea problemelor din acel domeniu, aplicind un mecanism de rationare. Componentele fundamentale ale unui sistem expert sunt baza de cunostinfe ce confine cunostinje generale si specilice domeniului de expertiza si un motor de inferenfi pentru realizarea rationamentelor. In figura 5.1 este prezentaté. structura de bazii a unui sistem expert. Fig St Structra de bas uni sist expert. © bazd de cunostinfe cuprinde cunostinjele domeniului problemei de rezolvat, exprimate sub forma regulilor de produectie i cunostinte specifice instanfelor problemei, exprimate sub form de fapte. © ‘categorie aparte de cunostinge 0 formeaza cunostinfele euristice care sunt criteri, metode sau principii ce permit alegerea intre diverse altemative de actiune pe aceea care promite a fi cea mai eficienta in realizarea unui obiectiv. Ele reprezinta compromisuriintre doua cerinje: necesitatea de a tliza criterit simple si dorinja de a realiza o selectie corectd intre altemative. Baza de cunostinfe (BC) este folositi de motorul de inferent& care, pe baza unui context (baza de fapte - BF), va inléinfui cunostingele din baza de cunostinfe in vederea atingerii unui anumit obiectiv. Mecanismul de inferenta va genera noi fapte care sunt acumulate in baza de cunostinfe a sistemului expert. Motorul de inferenta reprezint& componenta de control $i execufie a unui sistem expert, El este cel care rationeaza si care, printr-un proces de 16 inlanquire a cunostinfelor, giseste sau nu solutia problemei de rezolvat. Algoritmul 5.1 prezinti modul de functionare al unui sistem bazat pe reguli (sistem expert in care cunostinfele sunt reprezentate sub forma de reguli) Aigoritmul 5.1 Algoritmal de Fancfionare al una sistem bazat pe regli “1. BF © date de intrare (date de caz ~ fapte intiale) 2. repettt 1 identiticare reguliaplicbile ~ compara partea stingA sau partea dreaptd a regulilor cu fapteleexistete la momenta curent */ 2.1 executd operata de identifcareintre BF 51 BC ; ~ creeaz4 muljimea regulilor aplicabile (* rezolvA eventualele conficte- daca exist mai multe reguli aplicabile */ 2 /* executd reg selectata */ 2.3 aplica regula selectatt pin cid nu mai exist regullaplcabile sau selecteazto regult conform unui critriu de selectie baza de fapte contne faptele asociate stiri scop - solute probleme’ sau fost epuizatd o canttate predefinit de efor (timp si spatiu de memorie) starsit selectia pijmei regu aplicabile,alegerea unei reguli din multimea de conflicte“(preferinge bazate pe natura regulilor: alegerea regulii cu specificitate maxima, adic8, cu numarul maxim de conditii in premis&; preferinfe bazate pe obiectele identificate: alegerea regulii care are meritul maxim, sau a fost cel mai des utilizat; preferinte bazate pe stiri: in functie de valoarea unei functii euristice atagate fiecdrei stiri utilizarea metaregulilor:reguli care stabilese ordinea de inltinguire a altor reguli) aplicarea tuturor regulilor din multimea de contlicte. inlantuirea regulilor se poate realiza inainte (rationament deductiv), ‘napoi (rafionament inductiv) sau combinat (rafionament mixt) 52 ONTOLOGIL Reprezentarea cunostinfelor dintr-un domeniu de expertiza presupune identficarea conceptclor specifice acelui domeniu. Ontologia reprezinta specificarca explicit a unei conceptualiziri pentru un anumit domeniu. Ea este o descriere de concepte si relat Intre acestea, Practic, ontologia ccuprinde un vocabular de termeni bine defini, eu semnificatie specific& unui anumit domeniu de expertiz 5.2.1 CONSTRUIREA ONTOLOGHLOR in gencral, ontologiile sunt echivalate eu ierahii taxonomice de clase, dar cle contin pe langa definiti si axiome care restrictioneaza interpretarile posibile ale termenilor definiti Principalele etape ale construirii unei ontologii 1. Identificarea conceptelor cheie si a relafiilor dintre ele, definirea lor 51 identficarea termenilor care refer aceste concepte si rela 2. Reprezentarea explicit a conceptelor gi relatilor. 3. Integrarea, evaluarea si documentarea ontologici Exemplu: Considerim ontologia Onto_POO definits pentru domeniul programarii orientate pe obiecte. = Concepte cheie: clast, obiect, clas de bazd, clast derivatd, clasi virtual, clasd abstract, functie virtual, polimorfism, incapsulare, constructor, destructor, functie friend etc + Descriere concept: clasd ( Secfiuni: privat, publied si protejata; ‘Membr: date si funcyii membru) = Relayii: derivare, mostenire, abstractizare etc, Construirea unei ontologii se poate realiza pomind de la ontologii cexistente, care pot fi extinse. In general, ontologiile dezvoltate sunt publice, astfl cA ele pot fi utilizate gi de alte sisteme. Utilitatea definirii ‘unei ontologii constd in partajarea cunostintelor din domeniu intre oameni si sisteme de inteligent& artificiala (de exemplu, agenti software, sisteme expert). La ora actuald existé 0 serie de medii de editare a unei ontoloj (Protégé, Ontolingua, Chimaera, CommonK ADS). 5.2.2 PROTEGE Protégé este un mediu de editare a ontologiilor scris in limbajul Java, care are la baz metodologia orientata pe obiecte. In figura 5.2 este prezentat un screenshot al sistemului Protégé-2000 - versiunea 3.3 [16] Fig, 52 Protégé-2000 (versiunea 3.3) Etapele dezvoltarii unei ontologii in Protégé sunt urmatoarele: 1. definirea claselor (conceptelor); 2. aranjarea claselor intr-o ierarhie taxonomic (subclase ~ superclase); 5. definirea sloturilor gi descrierea valorilor permise acestor sloturis 4. completarea valorilor gorespunzatoare sloturilor pentru instante. ta Sfoturile sunt atributele, caracteristicile, rofurile conceptelor. Fajetele reprezinta restrict ale sloturilor. In Protégé, metoda de reprezentari a conceptelor este similara cadretor. Principalele optiuni din meniul Protégé sunt Classes (definirea claselor si 4 ierarhiei de clase, figura 5.3), Slots (definirea sloturilor, figura 5.4), Forms (definirea formelor, figura 5.5), Instances (definirea instanjelor, figura 5.6) i Queries (realizarea de interogiri ale ontologiei, figura 5.7) Consideram o ontologie a echipamentelor electronice de calcul si birotica Exemple de concepte (clase) din aceast& ontologie sunt CALCULATOR, IMPRIMANTA, SCANNER, XEROX, FAX. in figura 5.3 este prezentat un screenshot cu structura clasei CALCULATOR. dau sana do as BR ee] tit ts (Protégs-2000 - versiunea 3.3). Figura 5.5_prezinta un screenshot al opfiunii Forms pentru clasa CALCULATOR x0 55 Opiuea Forms (Protégé-2000-versiune 33). In figura 5.6 este prezenat un screenshot al opfiuni Instances pentru clasa CALCULATOR. a dau yeaa ate ee Nees AV wx Fig. 56 Opjiunea Instances (Protégé-2000 - versiunea 3.3) Figura 5.7 prezinti un screenshot al opfiunii Queries pentru clasa CALCULATOR 65g 4e0e de ae ae Fig, 5.7 Opfiunea Queries (Protégé-2000 - versiunea 33). Exemple de ontologi fn figura 5.8 este prezentata portiune dintr-o ontologie referitoare la organizarea unei universit3fi emo] nerrene | a UNIVERSITATE Lo DEPARTAMENT ¥ LADORATOR TABORATOR. Fig. $8 Exempl de onologie (rganizare universe) in figura 5.9 este prezentata o portiune dintr-o ontologie referitoare la ‘hipamentele din dotarea laboratoarelor unei universitfi, Fig. 5.9 Exemps de onologie(eshipament eletronice). In figura 5.10 sunt prezentate portiuni dintr-o ontologie referitoare la programele de studii si la cadrele didactice dintr-o universitate [ PRoceawsropm_ | ca _\ MASTERAT | [” POSTUNIVERSITAR t / IS 4 Ne —— sa / ron Y a [—reoreson—] [ conreneri Fig. 5.10 Exempla de ontologe (programe de stu, eare didactic) 5.3 GENERATORUL DE SISTEME EXPERT VP-EXPERT NERALA PREZENTARE Gi VP-Expert este un generator de sisteme expert care permite dezvoltarea de sisteme expert in diferite domenii, prin includerea cunostinfelor specifice fiecdrui domeniu de aplicatic, intr-una sau mai multe baze de cunostinte. A fost realizat in anul 1987 de cétre B. Sawyer gi este distribuit de firma Paperback Software International. in figura 5.11 este prezentat un screenshot al sistemului educational VP-Expert 2.1 [18] Fig, 5.1 Screenshot al sistemului VP-Expert 2.1 Un generator de sisteme expert (GSE) este un produs informatie de tip nucleu (shell), fird baz de cunostinfe, care este capabil de a crea si exploata o bazi de cunostinfe, avand un mecanism inter de rafionare, ‘Componentele principale ale generatorului VP-Expert sunt urmatoarele: modulul de dezvoltare a bazei de cunostinte; motorul de inferente; editorul; trasorul interfaja cu utilizatorul; interpretorul de reguli VP-Expert oferi un mediu de dezvoltare a sistemelor expert. Practic, un sistem expert generat cu VP-Expert cuprinde motorul de inferenje incorporat VP-Expert si baza de cunostinfe care este elaborata de utilizator i inelusi in sistem. De asemenea, VP-Expert permite exploatarea sistemului expert generat: consultarea acestuia, apelul 4 modulului explicativ, trasarea lanqului de rationamente, utilizarea cunostinjelor incerte, inlinjuirea mai multor baze de cunostinte. in VP- Expert, cunostinfele sunt reprezentate sub forma regulilor de productie. Caractersticile GSE VP-Expert: = Mediu de dezvoltare putemic constind din editor, mecanism de generare automati a intrebirilor, posibiltatea de a inregistra si alia grafic lanturile de rajionamente efectuate de cdtre motorul de inferente; + Permite import / export de date din / in sisteme de gestiune @ bazelor de date, procesoare de tabele,figiere text ASCII; + Posibilitatea manipularii cunostinfelor inexacte prin atribuirea de coeficienfi de certitudine faptelor din baza de fapte si coneluziilor regulilor in baza de regu; + Permite inlnfuirea mai multor baze de cunostinje; * Posibilitatea generdsii automate, prin inductie, a bazei de cunostinfe pomind de lao tabela de deci Tipurile de figiere care pot fi utilizate de VP-Expert sunt: KBS ~ baze de cunostinte, DBF ~ baze de date, EXE, COM, BAT ~ fisiere executabile, ‘BL — tabele, TRC — urma lanfului de rationamente, WKS ~ figiere tip tabel. 5.3.2 STRUCTURA SISTEMULUI EXPERT Un sistem expert generat cu VP-Expert cuprinde o baz de cunostinte speviteadomeniull de experi (un Fer KB) si motor de inferente Incorporat in generatorul VP-Expert. 53.2.1 BAZA DE CUNOSTINTE Baza de cunostinfe VP-Expert cuprinde baza de reguli, baza de fapte si programe DOS. Baza de reguli este alcituita din trei componente: blocul de actiuni, regulile propriv-zise si blocul declaratilor, In blocul de actiuni si in sectiunea regulilor pot aparea clauze (un tip de instructiune). Blocul de actiuni stabileste agenda pentru consultarea bazei de ccunostinge. El confine clauzele care se vor executa la momentul ‘consulta sistemului exper. Simaxa: ACTIONS sclauza 2> Regulile permit reprezentarea cunostintelor expertilor umani intr-o forma acceptata de VP-Expert. Sintaxa: RULE IF [AND/OR] {AND/OR] THEN [CNF al] [CNF m2], (CNF nt} {clauza 1) {elauza 2} {elauza nr} (ELSE, (CNF nl] [CNF n2] [CNF nt] {elauza 1] [elauza 2] (clauza tr] } BECAUSE “text explicativ regula” in concluzia unei reguli nu se pot utiliza conectorii logici AND si OR pentru a lega concluzile intre ele (concluziile sunt doar enumerate). Clauza BECAUSE permite introducerea unor explicafii referitoare Ia regula. Dectaratiile contin informatii referitoare la consultarea sistemului expert i specifica posibilitatea de initilizare a variabilelor VP-Expert cu valori preluate de la utilizator. Principalele tipuri de declarafii VP-Expert sunt: ASK, AUTOQUERY, CHOICES, PLURAL, REPORT, RANGE etc. Baza de fapte cuprinde datele initiale ale aplicatici (fapte initiale) si valorile variabilelor deduse in timpul consultarii bazei de cunostinje (fapte deduse). Faptele acumulate in timpul consultiii pot fi vizualizate in fereastra faptelor (Facts Window). De asemenea, faptele pot fi salvate intr-un fisier (SAVEFACTS) si reincdrcate ulterior (LOADFAC aceste operafii find utile la inkénquirea mai multor baze de cunostint. Variabile VP-Expert in VP-Expert existh trei tiputi de variabile: simple (monovaloare), ‘multiple (multivaloare) si tablou. Variabilele simple pot primi 0 singura valoare, iar c4nd motorul de inferenfe cauté valoarea uni astfel de variabile igi va inceta cdutarea dupa aflarea primei valori a acesteia Variabilele multiple (de tip plural) sunt specificate prin declaratia PLURAL si pot primi valori multiple. Atunci cdnd motorul de inferente cautd valoarea unei astfel de variabile, nu va opri cdutarea dupa aflarea primei valor, ci va continua pind cind se vor afla toate valorile posibite. Variabilele de tip tablou pot primi valori multiple sub forma unui tablou cu o singura dimensiune. Referirea clementelor unei variabile de tip tablou este identicd eu cea din limbajul de programare Pascal. Variabilele pot primi valori prin: operajii de atribuire din blocul de actiuni, prin concluziile regulilor, prin interogarea utilizatorului (declaratii de tip ASK, AUTOQUERY, CHOICES, MENU), transfer de date din baze de date, tabele si figiere text. ‘Transferul de date intr variable se poate realiza prin + adresare indirect - var_dest = (var_sursa) + adresare indirect pe dou nivele- var dest= ((@var_sursa) te Exemplu: x=(@u) — valoarea variabilei u este egala cu valoarea variabilei 5 in VP-Expert, expresiiletrebuie incluse intre paranteze rotunde (adresare indirect). Toate functiile matematice trebuie precedate de simbolul ‘@ Exemple: @abs(x), @exp(x), @log(x), @sqrt(x) fn VP-Expest, operatorul logic OR este prortar in raport eu operatoral logie AND, Cunostinge incerte Reprezentarea cunostinfelor incerte in VP-Expert se realizeaza cu ajutorul coeficientilor de certitudine asociati faptelor sau regulilor (pentru concluzii), Un coeficient de certitudine (CNF) este un numar intreg din intervalul (0, 100}, care reprezint& o expresie a nivelului de incredere in premisa unei reguli, in concluzia unei reguli sau in concluzia unei consultari a bazei de cunostinje. Nu este o probabilitate statistic Atribuirea de valori coeficiengilor de certitudine se bazeaza pe criteri obiective sau pe intuitie. Valoarea impliciti a unui coeficient de certitudine este 100, pentru cunostinge certe (adevarate 100%). Factorii de certitudine pot fi introdusi de utilizator in timpul unci consultari a bazei de cunostinfe ori de cite ori este cerutd valoarea unci variabile (printr-o declarajie ASK). Pentru a introduce valoarea coeficientului de certitudine in timpul unei consultiri se apasa tasta Home inainte de a face selectia (apisarea tastei Enter) si se introduce valoarea corespunzitoare faptei 51 apoi se apast tasta Enfe?. Anularea unei setectii se realizeaza prin apasarea tastei Del. Coeficientul de certitudine va fi sters. Reguli de caleul al coeficiemtilor de certitudine 1, CNF(P; AND P; AND ... AND P,) = min(CNF(P)), i=l, 0 2, CNF(NOT p) = 100 - CNF(p) 3. CNF),(P, OR P.) = CNF, + CNF; ~ CNF;*CNF,/100 unde CNF, $i CNF; se obfin inmulfind coeficientul de certitudine al primei condi respectiv al celei de-a doua condi cu cel al concluziei, CNF), reprezintd ccoeficientul de certitudine in concluzia regulei. 4, CNF(concluzie) = CNF(premisa) x CNF(regula) /100 5. _ CNP(R,, Ra) = CNF(R,) + CNF(R) ~ CNF(R))*CNF(R;Y/100 ~ coeficientul de incredere intr-o concluzie care e dedusa de doud reguli diferite, Ri si Ro. Afisarea coeficientului de certitudine asociat unei variabile se realizeazi prin introducerea caracterului ‘#” inaintea numelui de variabila. 5.3.2.2 MOTORUL DE INFERENTE Motorul de inferente VP-Expert utilizeaza strategia de inlintuire inapoi a regulilor (rafionament inductiv). Dac& motorul de inferente gaseste 0 regula care are in concluzie scopul ciutat (scop care este dat ca parametnt al clauzei FIND), premisele acelei reguli devin subscopuri. Procesul se Tepetd pind cind se gisesc toate valorile posibile ale variabilei scop din clauza FIND sau edutarea a esuat din diferite motive (de exemply, nu cxisti suficiente fapte cunoscute, baza de reguli nu este completi etc) Declansarea motorului de inferente este realizata de clauza FIND care initiazd procesul de cdutare a valorilor unei variabile scop, Cautarca inductiva este considerata a fi cea mai cficienta metoda de cutare a 88 ‘cunostintelor in baze de reguli, Cautarea deductiva (inknquirea inainte a regulilor) este implementata in VP-Expert de regulile WHENEVER. 5.3.3 CREAREA BAZEI DE CUNOSTINTE Crearea unei baze de cunostinge VP-Expert se poate realiza manual (prin serierea cunostinfelor cu ajutorul editorului bazei de cunostinfe), sau automat, prin generarea bazei de cunostinfe prin inductie. Generarea bazei de cunostinte prin inductie \VP-Expert permite generarea unei baze de cunostinje prin inducfie pomind de la un fisier sursi al cdrui tip este acceptat de generator. Tipul Fisierului depinde de software-ul utilizat pentru crearea sa. In VP-Expert sunt acceptate trei tipuri de fisiere: baze de date (Foxbase, dBASE), tabele tip spreadsheet (LOTUS-123, VP-Plannet) si fisiere text ASCUL. 0 tabeld de decizie este 0 forma de organizare a conditilor $i concluzilor regulilor unei baze de cunostinge. Prin conventie, VP-Expertinterpreteaz variabila din ultima coloand a tabelei de decizie, drept variabila scop. Regulile se citese pe lini Etapele generdrii bazei de cunostinte prin inductie: 1. ereeaza tabela de decizie a problemei care trebuie rezolvat; 2. converteste tabela de decizie intr-o baza de reguli VP-Expert; 2.1, selecteaza optiuneadnduce din meniul principal; 2.2. n cazul in care se doreste crearea'aneli de decizi, se va selecta ‘optiunea Create din meniul Induce (editarea tabelei de decizie se realizeaza cu ajutorul editorului VP-Expert) gi se va erea un fisier ‘cu extensia TBL; 2.3. genereaza automat baza de cunostinte ; 2.3.1 daca figierul surs este o baza de date, se va selecta opfiunea ‘Database din meniul Induce; 2.3.2. daca figierul surs este de tip text, se va selecta optiunea Text din meniul Induce; 2.3.3, dacd figierul sursi este de tip tabel (spreadsheet), se va selecta opfiunea Workshe din meniul Induce; 24, se alege figierul sursd; 2.5, se introduce numele bazei de cunostinfe care va fi generatd, sa Generarea bazei de cunostinfe se poate realiza doar dintr-o singura tabeli de decizie, Prima regula generata este RULE 0. Nu se pot face modificari ulterioare de actualizare automata a bazei de cunostinfe. Acestea trebuie realizate manual 53.4 CONSULTAREA UNEI BAZE DE CUNOSTINTE Operatia de consultare a unei baze de cunostinfe (figier cu extensia KBS, care a fost incircat in memorie) se realizeaz cu opfiunea Consult din meniul principal urmati de opfiunea Go din meniul de consultare. In cazul in care in baza de cunostinfe exist declarafia EXECUTE, consultarea incepe direct de la opfiunea Consult, firi a mai trece prin optiunea Go. Consultarea unei baze de cunostinfe inseamné interpretarca bazei de cunostinfe (verficarea sintacticd a acesteia) si in cazul in care nu par crori sau ele au fost corectate, se executa in ordine clauzele din blocul de acfiuni, Rezultatul execufiei clauzelor apare in cele trei ferestre de pe ecran: fereastra de consultare (reaultatul clauzelor DISPLAY de afigare a mesajelor), fereastra regulilor (permite vizualizarea regulilor aplicate de cdtre motorul de infereni), fereastra faptelor (permite vizualizarea faptelor acumulate in timpul consultarit. In cazul tn care bbaza de cunostinfe confine declaratia RUNTIME, pe ecran va apare doar fereastra de consultare, celelalte dou fereste find eliminate Activarea modulului explicativ Modulul explicativ al generatorului VP-Expert poate fi activat prin taslarea caracterului ‘/" in timpul consultirit bazei de cunostinge si sclectarea intrebarii care se doreste a fi pusi: + De ce? (Why?) ~ de ce a fost pus intrebarea curent§; dac& regula care a generat intebarea are 0 clauzi BECAUSE asociata, textul ‘acesteia va fi afigat drept eispuns, in caz contrat se va afiga regula respectiva, = Cum? (How?) — explicd modul in care au fost gisite valori pentru anumite variabile in timpul consultirii bazei de cunostinte; utilizatorul specificd numele variabile, iar sistemul va rispunde in doud moduri afigeaza textul din clauza BECAUSE a regule prin a ccirci aplicare s-a obfinut valoarea variabilei; afigeazd_mesajul “BECAUSE YOU SAY SO”, dacd valoarea variabilei a fost obfinuté in urma unei declaratii ASK. 0 5.3.5 ITERATIA VP-EXPERT VP-Expert combina caracteristici ale programarii declarative cu cele procedurale. Caracteristicile declarative sunt reprezentate de blocul de reguli in care motorul de inferenta cautd euristic reguli de tip IF — THEN pentru a gisi o solufie, in timp ce caracteristicile procedurale sunt reprezentate de blocul de actiuni. Iteratia VP-Expert permite repetarea analizei pentru diferite seturi de date de intrare (fapte iniiale). Clauzele de tip iteratie sunt WHILEKNOWN- END (repetd seoventa de clauze dintre WHILEKNOWN gi END atita timp cat valoarea variabilei de control este cunoscuti), WHILETRUE, END (repeta secventa de clauzé dintre WHILETRUE si END atata timp ct conditia este adevarata), FOR-END (iteratia cu contor). Iteratiile VP-Expert nu pot fi imbricate 5.3.6 TRASAREA LANTULUI DE RATIONAMENTE, Lantul de rafionamente pe care le realizeazd motorul de inferenje in timpul unei consultéri poate fi salvat intr-un figier care are acelasi nume cu cel al bazei de cunostinte si extensia TRC (srace). Etapele trasarit langului de rationamente: 1, se incaret in memorie baza de cunostinte; 2, se selecteazA opfiunea Trace din menivl Set ~ Trace On (fisicrul eu extensia TRC este creat si deschis); 3. se realizeazd consultarea propriu-ziga (opfiunea Go din meniul Consult) —in timpul consultirii toate rafioMlamentele Ricute de motorul de inferenfe sunt memorate in fsierul TRC); 4. se vizualizeaza figierul TRC (care conjine urma consultari); 4.1, vizualizare in mod text ~ optiunea Tree din meniul principal, optiunea Text, 4.2.vimalizare in mod grafic - optiunea Tree din meniul principal, ‘optiunea Graphics, 5.3.7 INLANTUIREA BAZELOR DE CUNOSTINTE i cazul in care se lucreazd cu mai multe baze de cunostinfe si apar probleme la incarcarea acestora in memorie, se poate utiliza inlintuirea lor cu ajutorul comenzilor SAVEFACTS, LOADFACTS, CHAIN. Etapele inlnguirii mai multor baze de cunosting: 1. salveazd faptele cunoscute din consultarea curenté. cu ajutorul clauzei SAVEFACTS; 2. apeleazd 0 nowd bazd de cunostin(a prin clauza CHAIN (vechea baz de cunostinfe va fi inchisa), incarca faptele salvate de SAVEFACTS in noua baza de cunostinge Rolul depanarii unei baze de cunostinfe este de a verifica corectitudinea rafionamentelor efectuate de motorul de inferente. 5.4 APLICATIL Prezentim dou aplicatii pentru care am proiectat si implementat bazele de cunostinte, analiza evolutiei ciffei de afuceri a unei intreprinderi si evaluarea proicctelor de investi, Scopul acestor aplicatii este de a prezenta modalitatea de dezvoltare a unei baze de cunostinje intr-un sistem expert. 3.4.1 APLICATIA 1 Consideram problema simplificata a analizei evolutei ciffei de afaceri a lunei intreprinderi. Cifra de afaceri a unei intreprinderi depinde de pretul de vanzare si de canttatea vanduta din fiecare tip de produs. La randul su, pretul de vanzare este influentat de concuren{a si de costurile unitare de productie, iar concurenja de gradul de inovare al produsului si de structura piefei, in figura S.12 este prezentat arborele de analizA a 2 problemei influenfeaza evolujia ciffei de afaceri a unei intreprinderi CIFRA DEAFACERI Teg ca js. - PRET DE VANZARE ‘CANTITATE VAND UTA | Fig. $.12 Actorele de anal tr aplcafia |. Variabila seop: Cifra_Afaceri Domeniul de valort: (crest, reste, cresteU, seade, scadeP, scadeU, staioneaza} Unde, cresteP ~creste puteric, crete —creste uyor scadeP ~ scade puteric, seadeU) — seade usor Parametei analiza: 1) Concurenta + variabila: Concurenta ‘Domeniul de valor: (slaba, moderata, puterica) 2) Cost untae * variabila: Cost ‘Domeniul de valor: (mare, medivg mi 3) Pret vanzare = varpbila: Pret Domeniul de valor: (mare, mediuy mf) 4) Grad inovare = variabila: Grad ‘Domeniul de valor: (redus, mediu,creseut) 5) Structuraofertei pe pat. variabila: Oferta ‘Domeniul de valor: {oligopol, monopol,dispersata} 6) Cantitate vinduta variabila: Cant Domeniul de valor: {mare, medi, inca} 7) Cerere variable: Cerere ‘Domeniul de valor: {mare, medie, mica} 8) Retea comercials variabila: ReteaC ‘Domeniul de valor: (extinsa, resransa} Baza de reguli cuprinde patra tipuri de reguli = Reg_concurenta(Concurenta, Graal, Oferta) = Reg_pret_vancare(PretV, Concurenta, CostU) = Reg_cantitate_vanduta(CantV, Cerere, ReteaC) = Reg_cifra_afaceri(Cifra_Afaceri, PretV, CantV) care defineste dependentele existente intre factorii ce Baza de reguli (selectie) Reguli analiza concurenta (Concurenta, Grad, Oferta) RI. dae Gradl = crescut si Oferta = monopol atunei Concurenta = slaba. 2, daed Grad! = redus si Oferta = oligopol atunei Concurenta = moderata 3. daca Gradl ~ redus si Oferta = monopol atunci Concurenta = slaba. 4, daca Gradl = crescut si Oferta = oligopol atunei Concurenta = puternica. 3. dacd Gradl = crescut si Oferta = dispersata atunei Concurenta = moderata, 6, daed Grad = mediu si Oferta = oligopol atuneé Concurenta = moderata, 7. daed Grad! = mediu si Oferta * dispersata atunei Concurenta = putemica. Reguli analiza pret vancare (PretV, Concurenta, CostU) RIL. dae Concurenta = slaba si CostU = mare atunei Pret = mare. R12. daca Concurenta = puternica si CostU = mare atunei PretV = mediu. 13. daed Concurenta = puternica gi Cost) = medi atunei PretV = mediv, Rd, dack Concurenta ~ puternica si CostlJ = mic atunei PretV = mic. Regull analiza cantitate vandutd (CantV, Cerere, ReteaC) ROL. dack Cerere = mare gi ReteaC ™ restransa atunei Cant = mare. R22. daci Cerere = mare gi ReteaC ~ extinsa atunei CantV = mare. R23. daca Cerere = mica gi ReteaC ~ extinsa atunei CantV = mica. R24, daed Cerere = mica si ReteaC = restransa atunei CantV = mica, 2S. daca Cerere = medie si ReteaC = extinsa atunei CantV = medie. Reguli analiza cifra de afaceri (Cifra_Afaceri, PretV, CantV) R31 daed PretV = mare si CantV = medie atunei Cifra_Afaceri = creste. R32. daed PretV ~ mare si CantV = mare atunet Citra Afaceri = cresteP. R33. dacd PretV = mare gi CantV = mica atunet Cifta_AMfaceri ~ cresteU, R34. daca Pret ~ mic $i Cant = mare atunei Citra_Afaceri = cresteU. 3S. daca PretV = mic $i CantV = medie attuned Ciffa_A faceri~ stationeaza. R36. daca PretV = mie gi CantV ~ mica atunei Ciffa_A ceri = scade. R37, daca PretV = mediu gi CantV = mica atunei Cifra_Afaceri = seade. Prezentim baza de cunostinte VP-Expert (Cifra_Afaceri.KBS), trasarea lanjului de rationamente (Cifra_Afaceri.TRC) gi sistemul expert Prolog care implementeaza aplicatia 1 (Cifta_Afaceri.PRO). [BaZa De cUNOSTINTE VP-EXPERT PENTRU APLICATIAT | Analizaciftei de afaceri a unei intreprinderi | BLOCUL ACTIUNILOR ACTIONS DISPLAY “Analiza cifei de afaceri a unei intreprinderi" FIND Cifra_Afaceri DISPLAY "Rezultatul analize:cifra de afaceri {Cifta_Afaceri}" | BLOCUL REGULILOR | Reguli pentru analiza concurentei RULE | IF Graal = crescut AND Oferta = monopol THEN Concurenta = slaba; RULE2 IF Graal = redus AND Oferta = oligopol THEN Concurenta = moderata; RULE3 IF Gradl = redus AND Oferta = monopol THEN Concurenta = slaba; RULE 4 tw IF Gradl = crescut AND Oferta = oligopol THEN Concurenta = puternica; RULES IF GradI = creseut AND Oferta = dispersata, THEN Concurenta = moderata; RULES IF GradI = mediu AND Oferta = oligopol THEN Coneurenta = moderata RULE7 IF Grad = medi AND Oferta = dispersata THEN Concurenta = puternica; Baza de cunostinje VP-Expert Cifra_Afueeriskbs (1/3) 1 Regal pent analiza petull de vanoare RULE I IF Concurenta = slaba AND CostlJ = mare THEN Pret = mare; RULE 12 IF Concurenta = puternica AND CostU= mare THEN PretV = media; RULE 13 IF Concurenta = puternica AND CostU = mediu THEN PretV = mediu; . RULE 14 IF Concurenta = puternica AND CostU= mie THEN Pret = mie; ! Reguli pentru analiza cantitatit vandute RULE 21 IF Cerere = mare AND ReteaC = restransa ‘THEN CantV = medie: RULE 22, IF Cerere = mare AND ReteaC = extinsa ‘THEN CantV = mare; RULE 23 IF Cerere = mica AND ReteaC = extinsa THEN Cant¥ = mica; RULE 24 IF Cerere = mica AND ReteaC = restranse ‘THEN CantV = mica; RULE 25 IF Cerere = medie AND ReteaC = restransa ‘THEN CamtV = edie: ' Reguli pentru analiza cifrei de afaceri RULE31 IF PretV = mare AND CantV = mare THEN Cifra_Afaceri

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