Caracteristica esenial a unui sistem inteligent este utilizarea cunotinelor
n procesul de rezolvare a unei probleme. Rezolvarea problemelor de inteligen artificial implic utilizarea unor tehnici specifice, care utilizeaz modaliti adecvate de reprezentare a cunotinelor. n continuare, prezentm trei modaliti de rezolvare a problemei TicTacToe !"ocul # i $% evideniind generalitatea, claritatea e&primrii cunotinelor i posibilitatea de e&tindere a abordrii respective. Problema Tic-Tac-Toe 'e o tabl (( doi "uctori pot plasa alternativ # sau $. )uctorul care reuete s plaseze trei simboluri !#, respectiv $% pe linie !vertical, orizontal sau diagonal% este declarat c*tigtor. +e cere s se construiasc schema unui program care s simuleze acest "oc, program care s poat "uca pe postul "uctorului # sau pe postul "uctorului $ i care s ncerce c c*tige "ocul. 'rezentm cele trei soluii prin descrierea structurilor de date utilizate i a algoritmului corespunztor de rezolvare scris n pseudocod. Soluia 1 Structuri de date, Tabla, vector de - elemente care reprezint tabla de "oc !liniarizat pe linii%. .lementele vectorului pot avea urmtoarele valori, $ !pentru spaiu liber%, / !pentru #% i 0 !pentru $%. Tabela_de_mutari, un vector de /-12( elemente !( - %, fiecare element fiind la r*ndul lui un vector de - elemente !de tip tabla de "oc%. 3iecrei configuraii a tablei de "oc i corespunde o intrare n aceast tabel de mutri care conine noua poziie obinut prin e&ecutarea mutrii respective. Algoritm, /. iniializeaz Tabla cu $ i Tabela_de_mutari cu toate poziiile posibile 0. ct timp 4 nici un "uctor nu a c*tigat execut 0./ 4 consider Tabla ca un numr ternar !n baza (% i l convertete n baza /$ obin*nd N 0.0 4 utilizeaz N ca inde& n Tabela_de_mutari i obine noua poziie Pozitie_noua Tabela_de_mutari567 0.( Tabla Pozitie_noua 0.8 dac 4 Pozitie_noua este c*tigtoare atunci 0.8./ 4 ntrerupe iteraia 0.9 4 citete mutare adversar i modific Tabla corespunztor (. 4 anun "uctorul c*tigtor sfrit Algoritmul 1.1 Observaii, :lgoritmul /./ este foarte eficient din punct de vedere al timpului i, teoretic, poate "uca optim TicTacToe. ;ezavanta"ele principale ale algoritmului, o +paiu foarte mare pentru memorarea tabelei de mutri care specific mutrile corecte asociate fiecrei configuraii a tablei de "oc, o <niializarea tabelei de mutri cu valori corecte nu este uor de realizat, o 6u permite e&tinderea soluiei pentru cazuri mai generale !de e&emplu, pentru "ocul n ( dimensiuni ar trebui memorate ( 0= poziii n tabela de mutri%. Tehnica de rezolvare utilizat n algoritmul /./ nu este o tehnic de inteligen artificial. Soluia 2 Structuri de date, Tabla, vector de - elemente care reprezint tabla de "oc !liniarizat pe linii%. .lementele vectorului pot avea urmtoarele valori, 0 !pentru spaiu liber%, ( !pentru #% i 9 !pentru $%. Mutare, o variabil cu valori numere ntregi care indic numrul mutrii urmtoare !de e&emplu, / indic prima mutare, iar - ultima mutare%. Funcii utilizate, Muta!6%, efectueaz o mutare n ptratul 6 pentru "uctorul care trebuie s realizeze mutarea curent PozCastig!)%, evalueaz posibilitatea de c*tig a "uctorului J la urmtoarea mutare n funcie de configuraia curent a tablei de "oc Scop!%, implementeaz o funcie euristic de alegere a unui ptrat liber n cazul n care e&ist mai multe mutri posibile care nu afecteaz c*tigul "uctorului curent. Algoritm, /. iniializeaz Tabla cu $ 0. Mutare / (. ct timp 4 nici un "uctor nu a c*tigat execut (./ alege Mutare dintre Mutare > /, Muta!/% Mutare > 0, dac Tabla597 > 0 atunci Muta!9% altfel Muta!/% Mutare > (, dac Tabla5-7 > 0 atunci Muta!-% altfel Muta!(% Mutare > 8, dac PozCastig!#% $ atunci ?4 blocheaz c*tig adversar 4? Muta!PozCastig!#%% altfel Muta!Scop!%% Algoritmul 1.2 1!"# Mutare > 9, dac PozCastig!#% $ atunci ?4 c*tig "uctorul # 4? i. Muta!PozCastig!#%% ii. 4 ntrerupe iteraia altfel dac PozCastig!$% $ atunci ?4 blocheaz c*tig adversar 4? Muta!PozCastig!$%% altfel dac Tabla5=7 > 0 atunci Muta!=% altfel Muta!(% Mutare > 1, dac PozCastig!$% $ atunci ?4 c*tig "uctorul $ 4? i. Muta!PozCastig!$%% ii. 4 ntrerupe iteraia altfel dac PozCastig!#% $ atunci ?4 blocheaz c*tig adversar 4? Muta!PozCastig!#%% altfel Muta!Scop!%% Mutare > =, dac PozCastig!#% $ atunci ?4 c*tig "uctorul # 4? i. Muta!PozCastig!#%% ii. 4 ntrerupe iteraia altfel dac PozCastig!$% $ atunci ?4 blocheaz c*tig adversar 4? Muta!PozCastig!$%% altfel 4 mut n orice ptrat rmas liber Algoritmul 1.2 2!"# Mutare > 2, dac PozCastig!$% $ atunci ?4 c*tig "uctorul $ 4? i. Muta!PozCastig!$%% ii. 4 ntrerupe iteraia altfel dac PozCastig!#% $ atunci ?4 blocheaz c*tig adversar 4? Muta!PozCastig!#%% altfel 4 mut n orice ptrat rmas liber Mutare > -, dac PozCastig!#% $ atunci ?4 c*tig "uctorul # 4? i. Muta!PozCastig!#%% ii. 4 ntrerupe iteraia altfel dac PozCastig!$% $ atunci ?4 blocheaz c*tig adversar 4? Muta!PozCastig!$%% altfel 4 mut n orice ptrat rmas liber (.0 Mutare Mutare @ / sfrit Algoritmul 1.2 "!"# Observaii, 3uncia PozCastig!)% verific pe r*nd fiecare linie, coloan i diagonal a tablei de "oc pentru a investiga posibilitatea de c*tig a "uctorului J la urmtoarea mutare. :stfel, conform codificrii propuse, dac produsul celor trei valori aflate pe linie !vertical, orizontal sau diagonal% este 0= !(((%, atunci poate c*tiga "uctorul #. ;ac produsul este 9$ !990%, atunci poate c*tiga "uctorul $. n cazul n care se gsete o linie, coloan sau diagonal din care se poate c*tiga, se caut poziia liber din aceasta i se ntoarce ca valoare a funciei PozCastig!)%. )uctorul # realizeaz mutrile impare, iar "uctorul $ mutrile pare. $uncia PozCastig!)% /. dac 4 "uctorul J nu poate c*tiga la mutarea urmtoare atunci %ntoarce $ 0. %ntoarce 4 poziia ptratului cu mutarea c*tigtoare sfrit $uncia Muta!6% /. dac 4 Mutare are valoare impar atunci Tabla 567 ( altfel Tabla 567 9 sfrit $uncia Scop!% /. dac 4 ptratul din mi"locul tablei de "oc este liber atunci %ntoarce valoarea 9 altfel %ntoarce poziia unui ptrat 0,8,1,2 care este liber sfrit Observaii& :lgoritmul /.0 este mai eficient dec*t algoritmul /./ din punct de vedere al spaiului de memorare. :lgoritmul utilizeaz o strategie relativ e&plicit care poate fi e&tins ntro anumit msur i pentru alte cazuri. Totui, strategia general este stabilit apriori i generalizarea algoritmului, de e&emplu, pentru cazul unei table de "oc n ( dimensiuni, implic schimbarea ntregului algoritm. Soluia 3 Structuri de date, Tabla, vector de - elemente care reprezint tabla de "oc !liniarizat pe linii%. .lementele vectorului pot avea urmtoarele valori, 0 !pentru spaiu liber%, ( !pentru #% i 9 !pentru $%. Urm, o list care conine toate configuraiile posibile ce se obin din configuraia curent a tablei de "oc prin efectuarea tuturor mutrilor permise. Merit, un numr ntreg care reprezint o estimare a posibilitii de c*tig din configuraia curent a tablei de "oc prin una sau mai multe mutri. Funcie utilizat, DetMerit!CT / %, ntoarce valoarea variabilei Merit corespunztoare configuraiei CT / a tablei de "oc, prin investigarea configuraiilor urmtoare posibile ale acesteia. Observaie& n cazul unor "ocuri mai complicate dec*t TicTacToe funcia DetMerit!CT / % poate implica un apel recursiv infinit. 'entru a evita o astfel de situaie se introduce o limit a numrului de mutri urmtoare investigate, cu preul scderii acurateei estimrii meritului. Algoritm, /. iniializeaz Tabla cu $ 0. ct timp 4 nici un "uctor nu a c*tigat execut 0./ Urm AB 0.0 pentru 4 fiecare mutare posibil din configuraia curent CT execut 0.0./ 4 determin configuraia urmtoare CT / a tablei de "oc 0.0.0 Urm Urm CT / 0.( pentru 4 fiecare configuraie CT / din lista Urm execut 0.(./ Merit DetMerit !CT / % 0.(.0 MeritMaxim Maxim !Merit% 0.8 4 e&ecut mutarea asociat configuraiei cu meritul MeritMaxim i obine noua poziie, PozNoua 0.9 dac 4 PozNoua este poziie c*tigtoare atunci 4 ntrerupe iteraia 0.1 4 citete mutare adversar i modific Tabla corespunztor sfrit Algoritmul 1." $uncia DetMerit!CT / % /. dac 4 configuraia CT / este c*tigtoare atunci %ntoarce valoarea ma&im predefinit a meritului, C.R<TC:# 0. 4 consider toate mutrile posibile ale adversarului din configuraia CT /
(. 4 calculeaz meritul C i al fiecrei configuraii rezultate prin aceste mutri 8. 4 alege configuraia cu meritul minim, C min , presupun*nd c adversarul va efectua cea mai defavorabil micare pentru opozant 9. ntoarce C min sfrit Observaii& :lgoritmul /.( inspecteaz n avans mai multe secvene de micri pentru a determina secvena care duce la c*tig. :lgoritmul ncearc s ma&imizeze ansele "uctorului J de a c*tiga presupun*nd c adversarul lui J va ncerca si minimizeze aceste anse. +trategia de "oc este cunoscut sub numele de strategia CinCa& i este utilizat n implementarea problemelor de tip "ocuri n inteligena artificial. Timpul de calcul necesar n cazul algoritmului /.( este mai mare dec*t n cazul soluiilor anterior prezentate, ntruc*t algoritmul trebuie s inspecteze naintea fiecrei mutri o parte din arborele de configuraii urmtoare posibile. :lgoritmul /.( ofer o soluie care poate fi e&tins la "ocuri mai complicate, pentru care enumerarea tuturor posibilitilor de mutare nu este posibil. mbuntirea algoritmului /.( se poate realiza prin modificarea modului de calcul al meritului asociat unei configuraii a tablei de "oc. :lgoritmul /.( prezint o tehnic tipic de inteligen artificial. :stfel, rezolvarea problemei se realizeaz prin cutarea soluiei i n plus sunt utilizate cunotine specifice domeniului.