Sunteți pe pagina 1din 10

Tehnici de inteligen artificial

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.

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