Sunteți pe pagina 1din 42

Petre Ru

LECII DE AH COMPUTER

Editura InfoRapArt

CUPRINS

n loc de prefa Concepte de baz n ahul programat 1. Reprezentarea tablei de ah 2. Codificarea pieselor 3. Direcii de cutare pentru efectuarea unei mutri 4. Determinarea mutrilor posibile 5. Codificarea mutrilor 6. Generatorul de mutri 7. Generatorul de mutri. Nivelul de joc 8. Funcia de evaluare 9. Alegera mutrii optime 10. Tratarea excepiilor n ahul programat 11. Fiiere de deschidere i finaluri 12.Consideraii finale Aspecte geometrice ale tablei de ah n programarea finalurilor Funcia de evaluare n ahul programat

3 7 8 10 12 15 17 19 21 23 26 28 31 32 35 40

n loc de prefa
(Extras dintr-un interviu la Radio)

Reporter: - Ce reprezint calculatorul pentru dumneavoastr? P.R.: - Calculatorul reprezint unealta cu care omul poate atinge mai repede perfeciunea n faa naturii. El este un instrument al cunoaterii, menit s-l apropie pe om de adevr, de esen. Reporter: - Mai concret, la ce v folosete calculatorul? P.R.: - n ceea ce m privete calculatorul mi-a fost mereu de mare ajutor i asta nu numai pentru c profesia mea este legat de acesta, ci i datorit faptului c aproape de fiecare dat cnd m-am aflat la limita imposibilitii de a rezolva o problem i-am cerut sprijinul. Desigur, nu m refer numai la ceea ce poate oferi calculatorul vizavi de societate, producie, de economie n general, ci i la ajutorul oferit cercettorului, n domeniul creativitii etc. Este nu numai util, dar i minunat s poi mnui asemenea instrumente. Reporter: - Din cte tim ai experimentat multe lucruri pe calculator. Putei oferi mai multe amnunte n acest sens? P.R.: - Da. n general m-au preocupat foarte mult problemele pe care le ridic astzi inteligena artificial. La noi n ar nceputurile acestora au fost foarte dificile, ele au vizat mai mult planul teoretic al fenomenului i mai puin realizrile practice. Poate i din acest motiv inteligena artificial nu i-a putut crea un drum sigur i nu sa bucurat de popularitatea pe care ar fi meritat-o. Prerea mea este c, fiecare cercettor din acest domeniu ar trebui, mai devreme sau mai trziu, s experimenteze n mod practic cte ceva, de pild s vad nu numai teoretic ce nseamn un program autoinstruibil, sau un demonstrator de teoreme, atunci cnd sunt puse la lucru, ce nseamn un motor de inferene i s experimenteze un motor de inferene logice, ce dificulti apar atunci cnd ncerci s-i ceri calculatorului s comunice n limbaj natural sau s se supun unui limbaj logic n esena lui. Cercettorul poate sesiza mai bine n acest mod adevratele probleme care se nasc atunci cnd ncerci s-l faci pe calculator s se comporte la fel ca o inteligen uman. Este convenabil i, dac vrei, prea panic ;i comod s te mrgineti la a sesiza nuane ale comportamentului unei inteligene umane, mai greu este ns gsirea unor ,,reete'' pentru implementarea acestora pe un calculator. Reporter: - i dumneavoastr ai gsit? Ai experimentat ceva din toate acestea? P.R. - Eu am pornit tocmai de la aceast ultim idee i anume aceea de a experimenta ct mai multe similitudini de exprimare inteligent a unui program de calculator n faa inteligenei umane. Un mare cobai al inteligenei artificiale a fost, este i va mai rmne nc jocul de ah... Reporter: - Acesta a fost nceputul? 3

P.R. - Da. Reporter: - De ce tocmai cu jocul de ah? P.R.: - Foarte simplu! Pentru acest joc planeta noastr a investit n ultimile dou secole poate cea mai mare cantitate de inteligen creatoare i astzi tot mai putem spune c tainele lui n-au fost pe deplin clarificare. A trebuit, periodic, s intervin mini aproape diabolice cum au fost toi marii campioni pentru a mai avansa civa pai n cunoaterea acestui joc. Va trebui deci s treac poate alte secole pentru ca el s devin n totalitate cunoscut minii omeneti. Singura salvare rmne totui calculatorul, dei el, pn astzi, n-a atins nici pe departe cele mai importante cote ale performanei umane. Reporter: - Considerai c ceea ce n-a putut face mintea omeneasc ar putea face calculatorul? P.R.: - Nu tocmai, dei, innd cont de finitudinea jocului i de logica niruirii operaiunilor pe tabla de ah calculatorul, dac ar fi suficient de nzestrat, ar trebui s-l trateze n ntregime. Dar deocamdat el se afl n dificultate n faa imensitii de variante ale jocului propriu zis. i atunci, pn cnd se va nate un calculator care s vad finalul jocului nc de la primele mutri, ceea ce eu cred c se va petrece nu peste mult timp, calculatorul este nvat doar s imite ceea ce gndete juctorul uman n faa tablei de ah i, eventual, s egaleze performanele acestuia. Reporter: - Ar trebui s nelegem c dumneavoastr v-ai ocupat de aceast ultim problem? P.R.: - Da. M-am ocupat nu s implementez nite strategii particulare de joc, cele pe care le aplic fiecare juctor avansat i care au fost copiate aproape identic n mai toate programele de ah existente astzi n lume, ci s implementez ceea ce juctorul singur nu ar putea face cu deplin facilitate n faa tablei de ah. Mai precis am pornit de la ideea c nu anumite stategii de joc aduc ctigul, ci mai degrab nelegerea, n ansamblul lor, a tuturor operaiunilor logice care se execut pe tabla de ah i corelarea acestora. Reporter: - i cum ai concretizat aceast idee? P.R.: - n primul rnd a aduga c eu am lansat ideea de dominare i de utilitate n joc. Cu fiecare mutare fcut, calculatorul trebuie s rein ca unic criteriu de eficien ideea de dominare caracterizat n principal de totalitatea operaiunilor de atac, de aprare i de control al pieselor i cmpurilor de joc. Din punct de vedere matematic, toate acestea sunt nglobate n ceea ce se cheam funcia de evaluare, care este o funcie mai mult sau mai puin liniar, alimentat de un sistem de constante prestabilite i de condiiile concrete care intervin pe tabla de ah. Totul depinde de stabilirea acestor constante care exprim, dac vrei, la modul cel mai simplu, valoarea relaiei de atac, aprare sau control. Aceast matrice a constantelor poate fi permanent mbuntit, ba mai mult, ea poate fi supus unui riguros sistem de adaptare ntr-un program autoinstruibil. Reporter: - Vrem s putem nelege diferena dintre ideea de care vorbii i celelalte utilizate pn n prezent n lumea ahului programat. P.R.: - S v dau un exemplu. Pornii, dac vrei, de la un joc oarecare cunoscut, care presupune doi parteneri de ntrecere. Dac exist o singur strategie de ctig, atunci lucrurile sunt clare, ctigul fiind asigurat celui care o stpnete i o respect cu strictee. El va efectua un ir logic de operaiuni fidele acestei strategii. Dac jocul ar avea dou strategii de ctig atunci lucrurile se complic, n timpul jocului putnd aprea condiii cnd sunt valabile ambele strategii sau numai una din ele. n acest caz, juctorul trebuie s sesizeze totdeauna corelarea acestora, altfel ctigul nu mai poate fi sigur. Dac vrei un exemplu mai simplu, s presupunem c doi parteneri se ntrec n a strbate cel mai scurt traseu al unui labirint necunoscut. Exist dou strategii simple de abordat: una care presupune parcurgerea labirintului 4

urmnd fiecare perete din dreapta, i duala sa, pentru peretele din stnga. Oricare dintre ele poate fi ctigtoare sau nu. O a treia strategie, dac ar fi inventat, este aproape obligatoriu s mbine componente ale celorlalte dou i s coreleze pri ale acestora pentru a gsi un drum i mai scurt, mai optim... Reporter: - Despre punerea n practic a acestora idei ce ne putei spune? P.R.: - Ar trebui s ncep prin a v spune c, dei astzi lumea este invadat pur i simplu de claculatoare i programe de ah, problema algoritmizrii acestui joc nc este actual. Nicieri n lume nu s-a putut emite pretenia finalizrii acestei probleme i numeroase premii au fost i nc mai sunt oferite n acest scop. Eu am realizat mai nti, n anul 1985, dup aproape doi ani de munc, un program de rezolvare a problemelor de ah cu care am participat la faza final a concursului de programare Calculatorul n sprijinul societii, organizat n principal de revista tiin i tehnic. Programul a fost foarte apreciat la acea vreme, era primul de acest gen creat n ara noastr, dar eu personal nu am vrut s m opresc n aceast faz. Dorina mea era s creez un program de jucat ah. i parial am reuit. La cteva luni dup aceea am prezentat conceptul noului meu program la primul festival naional pe aceast tem, susinut la Bile Herculane n martie 1986. Ideile mele sau bucurat de o larg apreciere, programul a fost declarat ca fiind a doua concepie original romneasc n acest domeniu, prima fiind semnat n 1976 de cunoscutul cercettor Viorel Darie. Imediat dup aceea am nceput s m bucur de sprijinul moral i documentar al unui mare animator al ahului electronic, pe atunci preedintele Comisiei Centrale de ah- Computer, Uly Vlureanu. Ideile au fost multe i frumoase, dar cine pe vremea aceea i putea oferi condiii favorabile pentru punerea lor n practic? M-am lovit de numeroase obstacole, multe dintre ele neputndu-le depi. Trebuie s menionez c de aceast problem m-am ocupat numai n timpul meu liber, lipsit de mijloace tehnice adecvate, singur, fr colaboratori, iar ntr-un ora de provincie, chiar dac este vorba de Galai, preocuprile i interesul pentru aceast activitate au fost i mai sunt nc foarte rare. Munca este ns imens i nu poate fi acoperit n ntregime de un singur om. Oricum, rezultatele la care am ajuns mi-au oferit destule satisfacii personale i muli consider c am realizat pai importani... Reporter: - S nelegem, prin cele ce ne-ai mrturisit, c ateptai propuneri de colaborare sau sprijin n acest sens? P.R.: - De ce nu? Experiena pe care am ctigat-o n acest domeniu este imens. Realizarea unui program de ah este astzi relativ uoar i chiar un elev ar putea-o aborda. Programul ns, algoritmul propriu-zis, nu nseamn nimic. El i arat calculatorului cum s mute corect piesele pe tabla de ah, dar nu s i joace corect i bine. Problema cheie n ahul-computer rmne acea subrutin nc fantomatic, care este funcia de evaluare. Ori de cte ori se nlocuiete aceast funcie cu o alta mai bun, crete i nivelul de joc al programului. Reporter: - Cred c ar fi util pentru cititorii notri s le oferii mai multe detalii n legtur cu aceast enigmatic funcie de evaluare. Bineneles, dac nu este un secret... P.R.: - Nu este nici un secret. Eu a zice mai degrab c este un fel de mister. Pentru mai multe detalii despre funcia de evaluare invit cititorii s consulte articolul meu intitulat Funcia de evaluare n ahul programat... Reporter: - Suntei un bun juctor de ah? Deinei o clasificare sportiv? P.R.: - Am practicat foarte mult acest joc i, desigur, l mai practic i astzi atunci cnd timpul mi permite. N-am fost preocupat niciodat de performane i clasificri n acest domeniu, jocul m-a atras mai mult pentru frumuseea lui i, de ce nu, ca obiect de studio pentru cercetrile mele. Totui, am jucat multe competiii ahiste, ndeosebi ah prin coresponden, am ctigat mai multe concursuri dar nu 5

am depit niciodat nivelul unui juctor de categoria I. Reporter: - Este important s fii un foarte bun juctor pentru a face un program performant de jucat ah? P.R.: - Prerea mea este c nu. Dar pentru mai multe explicaii v rog s consultai articolul meu intitulat Geometria tablei de ah n programarea finalurilor care abordeaz n detaliu acest subiect. Reporter: - n final ce ai dori s adresai celor interesai de acest subiect? P.R.: - Cred c un gnd bun i un ndemn ctre ndreptarea ateniei spre nebnuitele frumusei i satisfacii pe care i le ofer jocul de ah n general i ahul electronic n special. Personal cred c problema ahului-computer va putea fi depit, ca de altfel marea majoritate a celorlalte probleme care fac obiectul de studiu al inteligenei artificiale. Mai devreme sau mai trziu omul va depi cele mai multe dificulti i-i va face din calculator un prieten. Un prieten care nu trdeaz, un prieten cu adevrat util. Simona erban, 1991

CONCEPTE DE BAZ N AHUL PROGRAMAT

Materialul care urmeaz, structurat sub forma unor lecii care cuprind ideile i conceptele de baz utilizate n realizarea unui program de ah pentru computer, se adreseaz n primul rnd tuturor celor interesai n acest domeniu, dar i oricrui ahist obinuit care poate ntlni aici multe principiile generale precum i unele strategii particulare utilizate mai des n practica acestui joc. n cea mai mare parte materialul conine idei i concepte originale folosite de autor pe parcursul a mai multor ani de experimentri n acest domeniu. Fr ndoial, ntregul arsenal de cunotine necesare abordrii problematicii ahului-computer este deosebit de complex i vast. Autorul sper totui ca din puinele pagini pe care le dedic aici acestui subiect s clarifice principalele noiuni i concepte care stau la baza oricrui program de jucat ah i s deschid unele ci de noi de cercetare care ar putea intra n atenia unor categorii de cititori interesai n definitivarea complet a acestei probleme. Autorul s-a strduit s prezinte materialul la modul cel mai accesibil, astfel c se poate spera c cititorul interesat va putea asimila fr prea mari dificulti ABC-ul ahului-computer, acest cobai pe care numeroase mini inteligente l-au adoptat fr reticene n fruntea btliei de pe trmul panic al inteligenei artificiale.

1. Reprezentarea tabelei de ah

n memoria calculatorului tabla de ah poate fi reprezentat, cel mai simplu i sugestiv n acelai timp, printr-o matrice ptratic de dimensiune 8x8. Fiecare element al acesteia, avnd coordonatele (i, j), este pus n coresponden biunivoc cu un ptrat al tablei de ah care, n notaie clasic, poate fi scris sub form xy, unde x este una din literele a,b,c,d,e,f,g,h, iar y este o cifr de la 1 la 8. Relaia de transformare a coordonatelor clasice n coordonate matriceale este o relaie liniar de forma i=9-y j=ordnum(x), unde prin ordnum(x) nelegem ordinul numeric al variabilei x ntr-o coresponden indexat a primelor opt litere ale alfabetului. n figura 1 pot fi vzute simultan cele dou sisteme de notaie pentru tabla de ah, sistemul clasic i cel matriceal, precum i corespodena dintre cele dou tipuri de notaie. De exemplu, cmpului f5 din notaia clasic i corespunde cmpul de coordonate (4,6) din notaia maticeal.

8 7 6 5 4 3 2 1 a b c D e f g h
f5 (4,6)

Fig.1 Reprezentarea tablei de ah n computer

Exist, desigur, i alte sisteme de reprezentare a tablei de ah n calculator. Cel mai des utilizat const dintr-o tabl extins de 120 de cmpuri, de fapt o tabl 8

extins la 12 linii i 10 coloane. Cmpurile acestei table sunt numerotate de la 0 la 119 i conin cele 64 de cmpuri de baz, celelalte fiind utilizate n scopul verificrii unor mutri cu salturi care pot depi marginile tablei obinuite. Aceast categorie de reprezentare ale tablei de ah n memoria calculatorului precum i altele nu vor face obiectul acestor lecii; pentru cei care doresc totui s cunoasc i alte tipuri de reprezentri facem invitaia de a consulta unele articole specifice din almanahul Literatur i jocurile minii - Planeta ah din anul 1989.

2.

Codificarea pieselor

Cele ase piese distincte precum i cele dou culori folosite n jocul de ah trebuie s fie foarte bine definite i determinate n ahul electronic. Ele reprezint, de fapt i de drept, elementele de baz ale jocului i, din punct de vedere al programatorului, toate calculele, testele i seleciile se fac n virtutea unor criterii de codificare ct mai clar exprimate i reprezentate. De la bun nceput trebuie s precizm c, cele dou culori ale cmpurilor de pe tabla obinuit de joc nu au nici o semnificaie pentru computer, aa cum de altfel nici pentru un juctor oarecare, nenrobit nc de scheme i tactici bazate pe astfel de criterii. Se pare c la originea sa jocul de ah nici nu cuprindea cele dou culori ale cmpurilor tablei de joc. Acestea au fost introduse mult mai trziu, ca un veritabil amendament pentru gndirea schematic i vizual. De aceea, aa cum se va putea constata, noi nu vom folosi niciodat noiunile de cmpuri albe i negre n tot ceea ce ne intereseaz. Cea mai obinuit codificare a pieselor de ah este cea algebric. Ea const din utilizarea unor coduri numerice pentru cele ase piese i a semnelor algebrice + (plus) i - (minus) pentru culorile acestora. Astfel, codurile utilizate pot fi: 1 pentru Rege 2 pentru Dam 3 pentru Turn 4 pentru Nebun 5 pentru Cal 6 pentru Pion. Ele vor purta totdeauna n fa semnele algebrice de care vorbeam mai nainte i anume: + (plus) pentru o pies de cuoare alb, i - (minus) pentru o pies de culoare neagr. De exemplu, un cal alb va avea codul +5, iar un rege negru va avea codul -1. Acest sistem de codificare ofer un mare avantaj i anume acela c astfel de coduri pot fi uor manipulate n calcule, comparri i evaluri, dar mai ales pentru ceea ce se cheam n programare problema indexrii, adic a accesului i localizrii informaiei pe baza unei ordonri prestabilite. O semnificaie aparte o are codul 0 (zero), el reprezentnd coninutul unui cmp liber. n figura 2 se poate vedea tabla de ah pregtit n memoria calculatorului la nceputul unei partide, adic atunci cnd piesele se afl n poziia lor iniial.

10

8 7 6 5 4 3 2 1

-3 -6 0 0 0 0 +6 +3 a

-5 -6 0 0 0 0 +6 +5 b

-4 -6 0 0 0 0 +6 +4 c

-2 -6 0 0 0 0 +6 +2 d

-1 -6 0 0 0 0 +6 +1 e

-4 -6 0 0 0 0 +6 +4 f

-5 -6 0 0 0 0 +6 +5 g

-3 -6 0 0 0 0 +6 +3 h

Fig.2 Tabla de ah cu poziia iniial a pieselor

n acest moment deja ne-am narmat cu cteva instrumente pentru a putea efectua un control asupra coninutului unei table de ah. De exemplu, verificnd coninutul tablei de ah care este ncrcat cu poziia iniial, n cmpul de coordonate (4, 6), vom gsi valoarea 0 (zero) i vom ti c avem de-a face cu un cmp liber, adic fr nici o pies de culoare alb sau neagr. Sau, verificnd cmpul de coordonate (7,5), vom gsi valoarea +6 i vom ti astfel c acolo se afl un pion de culoare alb. Fr ndoial, sistemul de codificare prezentat mai sus nu este unic. Exist multe alte posibiliti de codificare a pieselor i cmpurilor. Toate ns au la baz criterii de limitare a numrului de instruciuni folosite n program pentru a efectua calcule, comparri i selectri de soluii. nsui limbajul de programare utilizat poate impune alegerea i utilizarea unui sistem de codificare adecvat.

11

3. Direcii de cutare pentru efectuarea unei mutri

n aceast lecie vom ncerca s prezentm posibilitile de micare a pieselor pe o tabl de ah codificat aa cum am stabilit n lecia anterioar. Fr ndoial, micarea pieselor pe tabla de ah, fie ea i cea simulat pe un calculator, trebuie s se fac cu respectarea tuturor regulilor cunoscute ale jocului propriu-zis. De aceea este util s ncepem prin a sintetiza principiile de baz ale acestor micri supuse unor reguli prestabilite. Fie (i0,,j0) coordonatele unui cmp al tablei de ah pe care se afl o pies care trebuie mutat. O mutare nu este posibil, adic nu poate fi efectuat, n urmtoarele situaii: cmpul de destinaie este ocupat de o pies de aceeai culoare, regele propriu rmne n ah (prin descoperire sau prin mutarea acestuia), este o rocad care nu mai poate fi efectuat, este o mutare en-passent care nu mai poate fi efectuat. Cte mutri pot fi efectuate cu piesa aflat pe cmpul iniial (i0, j0)? Exist piese care se pot deplasa pe linii, coloane sau diagonale, peste unul sau mai multe cmpuri deodat i, desigur, pentru acestea trebuie s prevedem posibilitile cnd mutrile pot fi fcute n spiritul regulamentului sau nu. Funcie de natura i culoarea piesei (vom putea observa mai trziu c pentru efectuarea unei mutri culoarea piesei care mut nu conteaz dect n cazul pionilor), precum i funcie de poziia celorlalte piese aflate pe tabla de ah, piesa poate fi mutat pe una din urmtoarele direcii: pe diagonal stnga sus, pe diagonal stnga jos, pe diagonal dreapta sus, pe diagonal dreapta jos, pe orizontal stnga, pe orizontal dreapta, pe vertical sus, pe vertical jos cele maxim opt posibiliti de mutare a calului n form de L. Precizm c mutrile de excepie en-passent i rocadele regelui nu pot fi ncadrate n regulile enunate mai sus, de aceea ele vor fi tratate separat. Fie (i, j) un cmp nou pe care se poate deplasa regulamentar piesa de pe cmpul (i0, j0). Aa cum se poate vedea din figura 3, coordonatele acestui cmp pot fi deduse din relaia vectorial: c = c0 + k.e, 12

unde c = (I,,j) este cmpul de destinaie, c0 = (i0, j0) este cmpul iniial, k = este un factor de multiplicitate dat de natura piesei, iar e = (x, y) este un vector de direcie care se alege n funcie de natura piesei. Valorile posibile pentru k sunt: k = 1 pentru pion, cal i rege i k = 1,2,3,... pentru dam, turn sau nebun.

-2,-1 -1,-2 0,-2 +1,-2 -1,-1 0,-1 +1,-1 +2,-1

-2,0 -1,0

-2,+1 -1,+1 0,+1 -1,+2 0,+2

i0, j0
+1,0 +2,0

+1,+1 +1,+2 +2,+1

Fig.3 Direcii de cutare a mutrilor posibile

Prezentm n continuare valorile posibile ale vectorului de direcie c = (x, y) i semnificaia acestora (cititorul este invitat n acelai timp s urmreasc pe figur direciile ale cror coordonate sunt date mai jos): Coordonate (-1, +1) (-1, -1) (+1, -1) (+1, +1) (0, +1) (-1, 0) (0, -1) (+1, 0) (-1, +2) (-2, +1) (-2, -1) (-1, -2) (+1, -2) (+2, -1) (+2, +1) (+1, +2) 13 Direcie diagonal dreapta sus diagonal stnga sus diagonal stnga jos diagonal dreapta jos orizontal dreapta vertical sus orizontal stnga vertical jos cal, dreapta-dreapta sus cal, dreapta-sus sus cal, stnga-sus sus cal, stnga-stnga sus cal, stnga-stnga jos cal, stnga-jos jos cal, dreapta-jos jos cal, dreapta-dreapta jos.

Pentru introducerea acestor concepte n calculator va trebui s definim urmtorii vectori: p = (-1, -1, +1, +1, 0, -1, 0, +1, -1, -2, -2, -1, +1, +2, +2, +1) q = (+1, -1, -1, +1, +1, 0, -1, 0, +2, +1, -1, -2, -2, -1, +1, +2). Atunci se poate observa c: i = i0 + k . p(x) j = j0 + k . q(x) unde x poate lua una din valorile: 1, 2, 3, 4, 5, 6, 7 sau 8, dac piesa este dam sau rege, sau 1, 2, 3, 4, dac piesa este nebun, sau 5, 6, 7, 8, dac piesa este turn, sau 9, 10, 11, 12, 13, 14, 15, 16, dac piesa este cal. Valorile posibile pentru parametrul k au fost menionate mai sus. Iar acum, pentru o nelegere mai bun, vom exemplifica cele prezentate. S presupunem c n cmpul de coordonate (i0, j0) se gsete un turn care trebuie s fie mutat. Rezult c x poate lua una din valorile 5, 6, 7 sau 8, fiecare corespunznd unei direcii posibile de mutare. Dac, de exemplu, x ia valoarea 6, gsim p(6) = -1 i q(6) = 0 deci este vorba de direcia (-1, 0) care corespunde, aa cum putem vedea i din figura 3, direciei verticale sus. Pentru fiecare mutare pe aceast direcie se ia pe rnd k = 1, 2, 3,... pn cnd se depete spaiul tablei de joc sau se ntlnete o pies de aceeai culoare sau, n sfrit, a fost capturat o pies de culoare advers. Pentru k = 1 avem (i, j) = (i 0-1, j0), pentru k = 2 avem (i, j) = (i 0-2, j0), i aa mai departe, deplasnd cte un cmp turnul de pe poziia (i0, j0) pe vertical sus.

14

4. Determinarea mutrilor posibile

Am vzut n lecia precedent cum pot fi efectuate mutrile pe tabla de ah. Vectorii p i q, cei care dau direciile de parcurs ale unei piese pe tabla de ah reprezint de fapt acele constante determinate de natura piesei care, adugate la coordonatele iniiale ale piesei, detecteaz coordonatele noului cmp pe care poate muta. Pentru a nelege mai bine rolul pe care l joac aceti vectori ntr-un program de ah, vom lua exemplul unui cal care se afl pe cmpul de coordonate (4,6), adic, n notaie clasic, cmpul f5. Pentru cal, variabila x poate lua una din valorile cuprinse ntre 9 i 16, fiecare corespunznd uneia dintre cele maxim opt mutri posibile ale acestei piese. Lund, de exemplu, x = 9 i innd seam de faptul c pentru cal k nu poate lua dect valoarea 1, determinm astfel: p(9) = -1 i q(9) = 2, deci coordonatele noului cmp pe care poate muta calul vor fi: i = i0 + k . p(x) = 4 + 1 . (-1) = 3, j = j0 + k . q(x) = 6 + 1 . (+2) = 8, adic, gsim cmpul de coordonate (3, 8), n notaie clasic echivalent cu h6. Fr ndoial, cititorul i va pune problema ce se ntmpl atunci cnd, prin acest procedeu matematic de determinare a coordonatelor unui cmp pe care trebuie s fie mutat o pies, se depete spaiul tablei de joc. Acest inconvenient poate fi eliminat foarte uor printr-un simplu test: coordonatele (i, j) astfel determinate s fie cuprinse ntre 1 i 8 (de fapt, parametrii i i j nu trebuie s ia valori mai mici dect 1 sau mai mari dect 8). Mai dificil ns este problema determinrii unei mutri posibile din punctul de vedere al regulamentului jocului de ah. ntr-adevr, trebuie avute n vedere o serie de probleme cum ar fi: o pies nu poate muta pe un cmp pe care se afl o alt pies de aceeai culoare, cu excepia mutrii calului i a rocadelor regulamentare, orice alt pies nu poate sri peste o pies proprie sau advers, dama turnul i nebunul n mutrile lor cu o deplasare mai mare de un cmp nu pot captura dect prima pies advers din calea lor etc. S le lum pe rnd. Dama, care poate muta n toate cele opt direcii de baz (orizontale, verticale i diagonale, stnga-dreapta, sus-jos), va muta pe oricare din direciile alese pe orice cmp liber (cmp care conine valoarea 0) pn la marginea tablei sau pn la cmpul pe care se afl o alt pies, inclusiv pe acesta dac piesa este de culoare advers. 15

Regele va muta n acelai mod ca i dama dar numai pe cmpurile adiacente (situaia cu regele aflat n ah se va trata separat). Calul poate muta pe cele maximum opt cmpuri posibile, numai dac acestea sunt libere sau sunt ocupate de piese de culoare advers. Nebunul i turnul vor muta dup aceleai reguli ca ale damei, dar numai pentru patru din cele opt direcii (diagonale pentru nebun i orizontale-verticale pentru turn). n sfrit, pionul care, prin mutrile sale posibile, poate fi ncadrat parial n cteva din categoriile expuse mai sus, cu excepia mutrii en-passent care se trateaz ca un caz special. Rocadele, de asemenea.

16

5. Codificarea mutrilor

Fr ndoial c partenerului de joc, dac este un partener uman, trebuie s i se ofere posibilitatea de a furniza calculatorului mutrile sale ntr-un mod ct mai agreabil i apropiat de cel cunoscut din practica obinuit. Totodat, nsui computerul trebuie s-i anune propria sa mutare, de preferat n acelai mod pentru a fi neles de partenerul de ntrecere. n practic are loc un dialog ntre partenerul uman i calculator, dialog din care nu pot lipsi interpelri de genul: Dai mutarea dumneavoastr sau Mutarea mea este.... Toate informaiile cu privire la mutarea propriu-zis sunt furnizate pe baza unui ablon care conine ase caractere, dup cum urmeaz: L1C1-L2C2X, unde L1 i L2 reprezint o liter de la a la h, C1 i C2 reprezint o cifr de la 1 la 8. Cu alte cuvinte, L1C1 i L2C2 reprezint notaiile clasice ale cmpului din care pleac piesa care mut, respectiv ale cmpului n care ajunge aceast pies. Liniua despritoare de pe poziia a treia poate fi nlocuit cu un spaiu sau, atunci cnd este vorba de o btaie de pies advers, ea poate fi nlocuit cu simbolul cunoscut i utilizat n notaia clasic :. Ultimul caracter, X de pe poziia a asea, de regul nu se completeaz. El va fi utilizat numai n cazuri speciale, atunci cnd, de exemplu, s-a fcut o transformare de pion, i va trebui s se precizeze n ce pies anume se transform respectivul pion, deci n poziia a asea se va completa, dup caz, una din literele: D pentru dam, T pentru turn, N pentru nebun sau C pentru cal. De asemenea X mai poate fi completat cu litera P (pion). n acest caz se are n vedere c este vorba despre o mutare de pion cu luare en-passent posibil, conform mutrii precedente a adversarului. Un ultim caz de utilizare a celui de-al aselea caracter din codificarea mutrii este cel n care se folosete litera R (rege), semnificnd c este vorba de efectuarea unei rocade. De data aceasta cele dou cmpuri (L1C1 iniial i L2C2 final) vor constitui cmpurile de pe care mut regele i, respectiv, n care ajunge regele dup efectuarea regulamentar a rocadei. Tipul rocadei (mare sau mic) este determinat automat, n funcie de destinaie. Iat n continuare cteva exemple de mutri: e2-e4 : piesa de pe cmpul e2 mut pe cmpul e4; e7:e8D : pionul de la e7 bate piesa aflat pe cmpul e8 i se transform n dam; e8-e8R, e8-g8R : rocada mare, respectiv rocada mic a regelui negru; g7-g5P : mutare de pion de pe cmpul iniial g7 pe cmpul g5, cu luare enpassent a pionului de pe cmpul f6 sau h6, funcie de ultima mutare a adversarului.

17

Este de observat c nu este necesar s se precizeze natura piesei care mut, aceasta determinndu-se automat pe baza adresei furnizate (L1C1). Se nelege c acceptarea unei mutri de ctre computer trtebuie s fie precedat de o validare riguroas a respectivei mutri. n caz contrar, poziia de pe tabla de ah poate s fie compromis, iar partida, mai devreme sau mai trziu, va fi anulat. Trebuie neles de asemenea c, dup asimilarea unei mutri, computerul va trebui s-i transforme cu grij toate elementele recepionate n coduri numerice proprii i s rein toate informaiile. Validarea mutrilor primite de un adversar se face n spiritul regulamentului. Orice abatere de la o regul cunoscut n jocul de ah va fi returnat adversarului cu un mesaj de avertizare i i se va cere acestuia s reintroduc mutarea sa, pn cnd computerul constat c a recepionat o mutare corect i poate s treac la propriile sale analize pentru a trimite un rspuns.

18

6. Generatorul de mutri

nainte de a trece la subiectul anunat n titlul acestei lecii considerm c este necesar s spunem cteva cuvinte despre rolul pe care l deine n controlarea jocului de ctre computer un element-pivot care este notat, de exemplu, cu litera 0 i care poate lua valorile +1 pentru cazul n care calculatorul joac cu piesele albe, i +1 pentru cazul contrar. Acest element intervine aproape n toate calculele i transformrile necesare atunci cnd trebuie decis apartenena unei piese sau a unor categorii de mutri. n acest sens prezentm un exemplu care, dei nu este cel mai semnificativ, poate fi uor de neles. Produsul O.T(i, j) va fi totdeauna pozitiv dac piesa de pe cmpul de coordonate (i, j) aparine calculatorului, i este negativ dac piesa respectiv aparine adversarului. Am vzut n leciile anterioare cum poate fi executat o mutare legal. S presupunem c avem memorat n calculator tabla de ah coninnd o poziie oarecare a pieselor, la poziia la care s-a ajuns dup un schimb de mutri ntre calculator i partenerul su de joc, sau care a fost introdus iniial pentru a fi continuat. Cum ar trebui s procedeze calculatorul pentru a efectua o mutare bun? Abia acum apare ca fiind necesar o analogie ntre posibilitile de a gndi ale calculatorului i felul n care gndete i acioneaz n aceast situaie un juctor uman. Un juctor uman, aa cum, de altfel, recomand majoritatea crilor bune de teorie ahist, va ncepe prin a analiza poziia de pe tabla de ah. n aceast situaie el va selecta, din mulimea mutrilor posibile, pe acelea care i se par cele mai adecvate configuraiei de pe tabla de ah. n practic s-a demonstrat c acestea nu sunt, de regul, mai mult de 10. De asemenea, dintre acestea mutri candidat, cele mai importante (printre care ar trebui s se afle, probabil, i cea care va fi aleas de juctor), nu sunt mai mult de dou-trei. n funcie de timpul de gndire de care dispune i de fora de analiz a juctorului respectiv, acesta va analiza de aici nainte, pentru fiecare din mutrile sale candidat, rspunsurile posibile ale adversarului. Practic, el va gndi n mod asemntor i pentru adversar, primele rspunsuri posibile, i aa mai departe, pn cnd, la captul unor variante de mutri (de fapt, semimutri) alternativ generate, va putea s decid dac st mai bine sau mai ru, sau s-a ajuns la o situaie de egalitate n poziia rezultat. n final el va hotr asupra mutrii pe care urmeaz s o execute i, n cazul n care nu mai dispune de timp suficient de verificare a calculelor, sau dac este convins c mutarea aleas este cea mai bun, o va executa. n principiu, computerul ar trebui s urmeze acelai raionament pentru a rezolva problema alegerii mutrii optime. n realitate exist cteva excepii deloc lipsite de semnificaie. De exemplu, juctorul uman, dintr-o singur privire, elimin din calcul aproape toate mutrile care sunt imposibile sau par absurde i, ntr-o proporie covritoare, aceste eliminri se dovedesc a fi corecte. Vznd un pion blocat sau o 19

pies care, dac ar fi mutat de pe poziia pe care o acup ar duce la dezastru sau la situaii sensibil nefavorabile, juctorul uman decide n cteva fraciuni de secund c nu trebuie s mai continue analiza sa pe seama acestor variante. n schimb, calculatorul trebuie s decid n astfel de situaii analiznd pn la capt imposibilitatea efecturii unei mutri sau cutnd unele implicaii care pot surveni pn acolo cnd poate lua o hotrre cert. El nu vede tabla de ah dect controlnd-o n amnunime i calculnd toate implicaiile conform algoritmului implementat. n consecin, calculatorul trebuie s in seama de tot ceea ce se petrece pe tabla de ah, fr s poat elimina nici mcar o mutare doar privind-o, ci numai dup o analiz laborioas supus unor calcule minuioase, deloc simple. S lum ca exemplu acel pion blocat despre care spuneam c juctorul uman aproape c nici nu-l observ n analiza sa. Calculatorul decide asupra imposibilitii mutrii acestuia abia dup ce testeaz toate cmpurile pe care prezunmtiv ar putea fi mutat, inclusiv cele legate de mutri de tip en-passent.

20

7. Generatorul de mutri. Nivelul de joc

Generarea mutrilor posibile se face, de regul, printr-o subrutin specializat care, dup ce valideaz n prealabil posibilitatea execuiei lor, genereaz mutrile posibile dup o parcurgere, secvenial sau nu, a tablei de ah. Generarea se face alternativ pentru alb i negru, crendu-se astfel variante de mutri cu o lungime stabilit anterior sau decis de criterii prestabilite. S presupunem c la prima semimutare sunt generate n1 mutri. S mai presupunem n continuare c adversarul, pentru fiecare din cele n1 mutri, poate rspunde cu n2 mutri i aa mai departe, pn la semimutarea cu numrul k n care, pentru fiecare din cele nk-1 mutri ale adversarului se poate rspunde cu nk mutri. n total vor fi elaborate n cursul procesului de generare un numr de N = n1.n2.n3...nk variante de lungime k i vor fi executate un numr de M = n1+n1.n2+ n1.n2.n3+... mutri. Avem n acest mod de-a face cu un arbore de mutri cu M noduri i N ramuri de lungime maxim. Dac generarea mutrilor s-ar face exhaustiv, atunci variantele generate ar fi suficient de lungi pentru a putea ntlni la captul lor situaii concrete bazate pe criterii de finalitate ale jocului (mat, pat, remiz). Dac toate operaiunile necesare acestor generri de mutri i analizelor poziiilor rezultate ar putea fi acoperite ntr-un timp rezonabil de rspuns al calculatorului, atunci un astfel de program ar rezolva definitiv problema jocului de ah i, fr ndoial, ar ctiga aproape n faa oricrui juctor uman. ns lucrurile nu stau nici pe departe aa. i vom vedea imediat care sunt adevratele motive pentru care nu s-a putut rezolva pn n prezent problema jocului de ah pe calculator la modul definitiv. n practic s-a dovedit c numrul mediu de mutri posibile dintr-o poziie oarecare de pe tabla de ah este de aproximativ n = 40. Dac am considera variantele generate doar pentru m = 10 semimutri (cinci perechi de mutri alternative alb-negru), am avea de-a face cu un numr de N = n m = 4010 variante, adic un numr extraordinar de mare (conine nu mai puin de 17 cifre) pe care nici un calculator din lume la ora actual nu l-ar putea acoperi n timp util, innd seam i de faptul c o variant, n mod practic, presupune ea singur un numr foarte ridicat de operaii elementare bazate pe calcule numerice, comparri sau alegeri. Pornind de la imposibilitatea tratrii exhaustive a problemei jocului de ah pe computer i de la alte probleme asemntoare s-a ajuns, dup lungi cutri i frmntri ale promotorilor, la elaborarea unei discipline tiinifice noi intitulat inteligena artificial care i-a propus n principal transformarea computerului, dintr-o main brut, capabil doar s calculeze ore n ir dup scheme prestabilite, ntr-o unealt capabil s dezvolte raionamente asemntoare cu cele emise de minile omeneti. Despre numrul N = nm se discut mult astzi n literatura de specialitate. n programele de ah n i m se aleg destul de mici pentru a se putea profita de un timp 21

de rspuns rezonabil al calculatorului. Numrul n mai este numit i orizontul analizei, iar m mai este cunoscut i sub denumirea de adncime a analizei. n general, un program de ah poate lua n seam mai multe valori ale perechii (n,m). Acest fapt caracterizeaz de regul nivelul de joc al programului care se materializeaz pn la urm n calitatea jocului mainii. Acest nivel se fixeaz nainte de nceperea jocului, dar sunt i cazuri cnd el poate fi modificat n timpul jocului chiar de ctre program, funcie de anumite elemente sau situaii care intervin pe parcursul desfurrii partidei. Se nelege c un nivel de joc este cu att mai ridicat (practic, calitatea jocului computerului este cu att mai bun), cu ct orizontul i/sau adncimea analizei sunt mai mari.

22

8. Funcia de evaluare

S presupunem c avem o poziie dat P0 i c, n urma unei alegeri (dup anumite criterii al cror coninut nu ne intereseaz deocamdat), s-a efectuat o mutare a unei piese de pe cmpul T(i0, j0) pe cmpul T(i, j). A rezultat o nou poziie P1 n care au intervenit situaii noi. Prin ce difer cele dou poziii? Are oare importan faptul c piesa de pe cmpul iniial a fost pus pe cmpul final i de ce? Ce caracterizeaz n fond o mutare pe tabla de ah? Acestea sunt doar cteva ntrebri la care rspunsul nu este deloc simplu de dat, dar care se pun ori de cte ori suntem interesai s introducem ntr-un program de ah anumite criterii care s evalueze i s compare mutrile. Un singur lucru este foarte clar: n urma unei mutri efectuate se schimb unele relaii pe tabla de ah, care de fapt reflect interdependena pieselor i controlul cmpurilor pe tabla de ah i alctuiesc, prin diferena dintre cele dou poziii P1 i P0 un cumul de avantaje sau dezavantaje care caracterizeaz oportunitatea sau inoportunitatea mutrii. S presupunem acum c dispunem de un sistem de apreciere numeric pentru importana unor astfel de relaii. Acest sistem poate fi conceput sub forma unor tablouri matriceale de punctaje n modul urmtor: tabloul relaiilor de atac, at(x, y), n care sunt pstrate valorile numerice atribuite unor relaii de tipul piesa x atac piesa advers y, tabloul relaiilor de aprare, ap(x, y), n care sunt pstrate valorile numerice atribuite unor relaii de tipul piesa x apr piesa y (se nelege c ambele piese sunt, n acest caz, de aceeai culoare), i tabloul relaiilor de control a cmpurilor libere, care conine valorile numerice ale relaiilor de tipul piesa x controleaz un cmp liber. Dispunnd de toate aceste date se nelege c orice mutare efectuat pe tabla de ah poate fi apreciat numeric prin diferena cumulativ a tuturor relaiilor noi intervenite n poziia P1 i a celor pierdute din poziia anterioar P 0 n urma efecturii mutrii. Pentru a nelege mai bine, s studiem anumite exemple. Considerm poziia P0 ca fiind poziia iniial a jocului de ah, iar poziia P 1 ca fiind cea care survine dup prima mutare a albului, i anume e2-e4. n poziia iniial pot fi semnalate o mulime de relaii de genul acelora anunate mai nainte, dintre care amintim cteva: calul alb din b1 apr pionul din d2; acelai cal controleaz dou cmpuri libere, cele din c3 i a3. turnul negru din h8 apr calul din g8 i pionul din h7 etc. S enumerm relaiile importante legate n exclusivitate de mutarea anunat e2-e4 care transform poziia P0 n poziia P1. Fa de mulimea relaiilor existente n poziia P0, odat cu efectuarea mutrii e2-e4 intervin urmtoarele modificri: 23

- dispar relaiile: pionul e2 controleaz cmpurile libere d3 i f3 calul din g1 apr pionul din e2 nebunul din f1 apr pionul din e2 regele din e1 apr pionul din e2 dama din d1 apr pionul din e2, - apar relaiile: calul din g1 controleaz cmpul liber din e2 nebunul din f1 controleaz cmpurile libere din e2, d3, c4, b5 i a6 regele din e1 controleaz cmpul liber din e2 dama din d1 controleaz cmpurile libere din e2, f3, g4 i h5 pionul din e4 controleaz cmpurile libere din d5 i f5. Toate celelalte relaii existente pe tabla de ah n poziia iniial P0 rmn neschimbate i dup efectuarea mutrii e2-e4, adic n noua poziie P1. Prin diferen (totalitatea punctelor obinute prin apariia noilor relaii din care se scad cele pierdute prin dispariia relaiilor menionate) rezult aa numita not a mutrii care, prin comparaie cu altele, determin pn la urm oportunitatea sau inoportunitatea mutrii studiate. Evident, vor trebui luate n seam doar acele mutri care sunt cotate cu un punctaj maxim. Mai trebuie menionat i faptul c relaiile despre care s-a vorbit mai sus pot fi favorabile calculatorului sau adversarului. Astfel c, dac o anumit mutare conduce la apariia unor relaii favorabile adversarului, punctajul trebuie diminuat n mod corespunztor, iar dac sunt distruse anumite relaii favorabile adversarului, atunci punctajul trebuie s fie mrit corespunztor cu valoarea absolut a acestora. Astfel spus, determinarea notei unei mutri se face printr-o nsumare algebric (cu plus pentru relaiile proprii noi intervenite i pentru dispariia unor relaii ale prii adverse, i cu minus pentru dispariia unor relaii proprii i pentru apariia unor relaii noi favorabile adversarului). Dup cum se poate nelege, tablourile de punctaje despre care s-a amintit mai sus trebuie n mod necesar s conin o apreciere ct mai just a potenialului fiecrei relaii posibile pe tabla de ah. Astfel, relaia de atac de exemplu n cazul unei dame, trebuie s fie mai bine cotat dect cea corespunztoare unui atac a aceleai figuri asupra unui pion sau, controlul unei piese asupra unui cmp central, n special n fazele iniiale ale partidei, trebuie s fie mai bine punctat dect cel asupra unui cmp necentral etc. Cele prezentate mai sus reprezint o concepie original pentru ceea ce se cheam funcie de evaluare n ahul-computer. Punerea ei n practic, adic implementarea acestei idei ntr-un program de ah conduce, aa cum uor se poate presupune, la un joc al calculatorului cu tendina de dominare, de sufocare a adversarului, prin acumularea a ct mai mult spaiu de joc, prin constrngerea pieselor adverse, prin cooperarea i mobilitatea figurilor proprii etc., mai ales n anumite faze ale jocului. Marea dificultate n utilizarea unei astfel de soluii o reprezint stabilirea riguroas a notelor atribuite fiecrei relaii poteniale care poate interveni pe tabla de ah. Exist mai multe ci de determinare a acestor punctaje. Una dintre ele este cea de natur statistic sau apelnd la metode stochastice. Exist cu siguran n unele poziii de pe tabla de ah anumite mutri care pecetluiesc sau compromit definitiv soarta partidei. Acestea sunt mutrile care trebuie s stea n atenia noastr atunci cnd ne propunem s determinm ct mai realist notele care trebuiesc acordate unor relaii de atac, aprare sau control. Evalund prin diferen asemenea mutri n poziii distincte, n comparaie cu altele obinuite, se poate ajunge la un sistem de punctaj care s dea satisfacie. Calea este destul de dificil , dar trebuie reinut c, 24

pn n prezent, ea nu a fost explorat suficient. O alt metod de determinare a unei funcii de evaluare, care face parte din arsenalul celor mai moderne dar foarte rar i dificil de abordat, const n folosirea unei tehnici de autoinstruire a programului, care mbuntete sistemul de evaluare pe msur ce acesta este supus experimentrilor. n mod practic se pornete de la un sistem de evaluare n care notele au fost alese arbitrar i, pentru fiecare partid nou i fiecare mutare care nu conduce la o mbuntire a situaiei, se modific punctajul n mod corespunztor. Se zice, n astfel de cazuri, c programul ''nva din propria-i experien. Funcia de evaluarea n ahul-computer reprezint de fapt cheia descifrrii tuturor enigmelor care mai persist i astzi n problema jocului de ah. Majoritatea programelor care trateaz aceast problem au la baz implementarea unor tehnici i strategii de joc cunoscute din practica ahist: controlul centrului, mobilitatea figurilor, ocuparea coloanelor deschise sau semideschise, avantajul perechii de nebuni, atacul la f7 sau f2, h7 sau h2, jocul pionului izolat, regula ptratului, cooperarea figurilor etc. Toate acestea, orict de multe dintre ele ar fi implementate i respectate ntr-un program de ah, nu pot reui s justifice complet tot ceea ce caracterizeaz oportunitatea unei mutri n ah.

25

9. Alegerea mutrii optime

Aa cum s-a putut nelege pn acum, alegerea celei mai bune mutri reprezint factorul determinant care caracterizeaz diversitatea algoritmilor implementai pe calculator. Jocul unui program este caracterizat n principal de calitatea funciei de evaluare pe care o utilizeaz acesta n alegerea mutrii optime. n elaborarea variantelor de analiz pentru cutarea celei mai bune mutri se genereaz, aa cum am i aflat deja, un arbore de joc al poziiei, format din noduri care conin mutri alternative ale albului i negrului i ramuri care reprezint variante posibile de joc. Un astfel de arbore, care va constitui pentru noi un exemplu pentru cele ce urmeaz, este cel reprezentat n figura 4 i care corespunde urmtoarei poziii simplificate de pe tabla de ah: alb: Rb6, a5, b3, c5, c6 i negru: Rb8, a6, b7.

Fig.4. Arborele de joc al poziiei

Pot fi observate att mutrile alternative alb-negru care corespund nodurilor arborelui, precum i diferitele ramuri formate de acestea, care constituie variantele posibile de joc. O desfurare complet (pn la capt) a acestui arbore de joc pentru poziia dat poate conduce la gsirea unui rspuns potrivit pentru stingerea celui mai important obiectiv urmrit ntr-o partid de ah matul dar, aa cum am mai subliniat ntr-una din leciile anterioare, este imposibil n mod practic s realizezi aceast performan, mai ales n poziiile care conin modaliti largi de mutare ale pieselor. Dup cum se poate uor intui, n practica jocului se manifest dou tendine opuse: n timp ce, de exemplu, albul urmrete s gseasc cea mai bun 26

mutare a sa, negrul va cuta pentru el tot cea mai bun mutare care, de fapt, este cea care diminueaz cel mai mult tendina adversarului. n acest caz se impune cu necesitate intervenia unui compromis i anume, albul va alege, din multitudinea de mutri pe care le are la dispoziie, pe aceea pe care negrul o poate contracara cel mai puin. Aadar, n timp ce albul, care este la mutare, caut un maxim calitativ sau cantitativ prin mutarea sa, interesul adversarului, asemntor cu al su, l determin s aleag doar acea mutare care poate fi combtut de adversar cu un minim de efect. Algoritmul adecvat n asemenea situaii, pentru rezolvarea acestor categorii de probleme, este cunoscut sub denumirea de minimax. Pentru simplificarea aplicrii acestuia n jocul de ah este necesar ca evalurile pentru mutrile calculatorului s se fac cu numere pozitive iar cele ale adversarului cu numere negative. Deoarece algoritmul minimax poate fi ntlnit astzi n multe materiale aparinnd literaturii de specialitate nu-l vom prezenta aici n detaliu. n orice caz, ideea de baz a acestuia a fost sugerat mai sus, iar analizarea complet a exemplului oferit l poate srpijini pe cititorul interesat pentru constituirea pailor care compun un asemenea algoritm. Aplicarea exhaustiv a algoritmului minimax se dovedete deseori insuficient , mai ales atunci cnd orizonturile i adncimile analizei variantelor generate sunt mari. De aceea, algoritmul este nsoit aproape ntotdeauna de diferite criterii de reducere a numrului de ramuri de parcurs ale arborelui generat pentru analiz. Cel mai important criteriu de acest gen se numete principiul alfa-beta i are la baz ideea c, n parcurgerea secvenial a variantelor generate, este foarte important ca mutrile cele mai bune (cele cu note mari) s fie analizate primele. Acest fapt presupune o ordonare a mulimii de noduri de pe acelai nivel, ntruct o variant care conine noduri bine notate are anse mai mari de a duce spre o situaie favorabil. Practic, multe mutri pot aduce un dezavantaj mare i ele nu pot fi ocolite dect dac pot fi comparate cu altele mai bune, care deja au trecut prin ciurul analizei. Un astfel de principiu introdus n algoritmul minimax conduce la o reducere substanial a numrului de variante calculate din arborele de joc. Un alt criteriu utilizat n reducerea numrului de operaii n generarea arborelui de joc al poziiei este denumit criteriul razoring i se bazeaz pe ideea c n jocul de ah nu se poate spera ca prin mutarea adversarului s fie mbuntit poziia proprie. Criteriul este riscant, ntruct este bine tiut c nu totdeauna adversarul rspunde cu mutarea cea mai bun. ns, pentru scopul anunat, acela de a ctiga timp de gndire prin eliminarea anumitor calcule inutile, criteriul se poate dovedi foarte util. n fine, un alt criteriu folosit are la baz ideea c o mutare proprie nu este oportun dac nu aduce o mbuntire a propriei poziii. Acesta se numete criteriul better i, aa cum uor s-ar putea nelege, nici el nu este prea potrivit pentru desfurarea nengrdit a unei partide de ah.

27

10. Tratarea excepiilor n ahul programat

Dup cum s-a mai menionat, nu toate regulile jocului de ah pot fi tratate uniform. Cel puin n privina anumitor mutri lucrurile pot prea destul de dificile i pot ridica destule probleme. De aceea considerm necesar c ar fi binevenite cteva sugestii i orientri n aceast direcie. Pentru includerea mutrilor de excepie ntr-un program de ah este necesar s definim anumii parametri, care vor juca un rol specific important pe tot parcursul desfurrii partidei. n continuare vom ncerca pe rnd toate cazurile care fac obiectul acetor probleme i vom prezenta unele modaliti de soluionare a lor. a) Rocadele Pentru rocada mic se definesc urmtorii parametri: -R1+, pentru alb i R1- pentru negru, care conin valoarea 0 dac rocada mic nu s-a efectuat sau se poate efectua, i valoarea 1 dac rocada mic s-a efectuat sau nu se mai poate efectua. n mod analog se definesc i parametrii pentru rocada mare: -R2+ pentru alb i R2- pentru negru. La nceputul sau pe parcursul desfurrii jocului se va ine seama de urmtoarele observaii: n poziia iniial cei patru parametri trebuiesc iniializai cu valoarea 0. dac partida ncepe de la o anumit poziie, alta dect cea iniial, parametrii rocadelor trebuie s fie iniializai cu valorile corespunztoare (0 dac se mai poate efectua rocada, respectiv 1 n caz contrar). n timpul desfurrii partidei, dac turnul damei (pentru rocada mare) sau turnul regelui (pentru rocada mic) a fost mutat, imediat se atribuie valoarea 1 parametrului corespunztor R2+ sau R2-, respectiv R1+ sau R1-. n timpul desfurrii partidei, dac s-a mutat regele, se actualizeaz cu valoarea 1 parametrii corespunztori ambelor rocade R1+ i R2+ pentru alb, sau R1- i R2- pentru negru. Pentru efectuarea rocadei mici este necesar s se verifice n prealabil dac: - parametrul corespunztor rocadei respective are valoarea 0 (se poate efectua rocada), - cmpurile T(8, 6) i T(8, 7) pentru alb i, respectiv T(1, 6) i T(1, 7) pentru negru sunt libere (au valoarea 0) i nu sunt controlate de o pies advers. Efectuarea rocadei mici presupune urmtoarele operaiuni: - pentru alb: T(8, 7) = +1, T(8, 6) = +3, T(8, 5) = T(8, 8) = 0, R1+ = 1 - pentru negru: T(1, 7) = -1, T(1, 6) = -3, T(1, 5) = T(1,8) = 0, R 1- = 1. 28

Pentru efectuarea rocadei mari este necesar s se verifice n prealabil dac: - parametrul corespunztor rocadei respective are valoarea 0 (se poate efectua rocada), - cmpurile T(8, 2), T(8, 3) i T(8, 4) pentru alb i, respectiv T(1, 2), T(1, 3) i T(1, 4) pentru negru sunt libere (au valoarea 0) i nu sunt controlate de o pies advers. Efectuarea rocadei mari presupune urmtoarele operaiuni: - pentru alb: T(8, 3) = +1, T(8, 4) = +3, T(8, 1) = T(8, 5) = 0, R2+=1, - pentru negru: T(1, 3) = -1, T(1, 4) = -3, T(1, 1) = T(1, 5) = 0, R2=1. b) Mutri de pioni b1) Mutri de naintare: se face j = j0 i I = i0 - 1 pentru alb, sau I = i0 + 1 pentru negru, dac cmpul T(i, j) nu conine valoarea 0 se trece la b2). se consider mutare posibil i se efectueaz operaiunile: T(i, j) = T(i0, j0) i T(i0, j0) = 0, se verific dac mutarea este necesar, altfel urmeaz cutarea unei alte mutri dup cum urmeaz: se verific dac i0 este linia iniial de mutare a pionului, caz n care pionul poate executa un salt de dou cmpuri pe coloan: deci, dac i0 nu este 7 pentru alb, respectiv i0 nu este 2 pentru negru, se trece la pasul b2), se face j = j0 i I = i0 - 2 pentru alb sau I = i0 + 2 pentru negru, dac T(i, j) nu conine valoarea 0 se trece la pasul b2), n caz contrar se consider mutare posibil i se efectueaz urmtoarele operaiuni: T(i, j) = T(i0, j0) i T(i0, j0) = 0. b2) Mutri de capturare: se face I = i0 - 1 pentru alb sau I = i0 + 1 pentru negru, iar j = j0 +/- 1 (pe rnd), dac T (i, j) nu conine o pies de culoare advers se trece la pasul b3), n caz contrar se consider mutare posibil de capturare i se efectueaz operaiunile: T(i, j) = T(i0, j0) i T(i0, j0) = 0. b3) Mutri en-passent: Se bazeaz pe semimutarea anterioar, deci pe mutarea anterioar a adversarului; dac aceast mutare a fost una de pion de pe cmpul su iniial cu avansare imediat de dou ptrele pe coloan i dac a trecut prin btaia pionului propriu i dac (i0, j0) sunt coordonatele cmpului pionului propriu, atunci se face : T(i0, j0+/-1) = 0 (se captureaz pionul advers, dup caz), apoi j = j0 +/- 1, I = i0 - 1 pentru alb, sau I = i0 + 1 pentru negru, T(i, j) = T(i0, j0) i T(i0, j0) = 0. Pentru a ti c mutarea anterioar a adversarului a fost o mutare iniial de pion cu salt de dou cmpuri pe coloan (caz n care ar putea fi posibil o mutare en-passent) se va folosi cte un indicator special, pentru alb i pentru negru, respectnd pentru iniializare i punere la zi a acestora reguli analoage cu cele de la rocade. b4) Transformri de pioni: 29

Dac ntr-una din situaiile b1) sau b2) pionul ajunge pe ultima sa linie de naintare (linia 1 pentru alb i, respectiv linia 8 pentru negru), acesta poate fi transformat n dam D (dam), T (turn), N (nebun) sau C (cal), pe rnd, fiecare din acestea considerndu-se o mutare. Pentru aceste cazuri operaiunile care trebuiesc executate const n: T(i, j) = +/-1, +/-2, +/-3, sau +/-4 i T(i0, j0) = 0. Evident, pot fi gsite ci mult mai simple de efectuare a acestor mutri de excepie. n cele prezentate mai sus s-a ales calea care, din punct de vedere intuitiv, poate prea mult mai uor de neles.

30

11. Fiiere de deschidere i finaluri

De regul, programele de ah pe calculator sunt concepute pentru a rspunde celor mai multe dintre cerinele competiionale. Una dintre aceste cerine este cea legat de timpul de rspuns. n general, pentru efectuarea unei mutri se dispune de circa dou-trei minute. Evident, acest timp nu este mprit uniform pe ntreaga durat a partidei sau n toate fazele ei. Din practica ahitilor profesioniti se tie c n faza de deschidere mutrile se fac mai rapid, juctorii venind, de regul, cu lecia nvat de acas. Prin aceasta se nelege de fapt c ahitii profesioniti stpnesc o bun parte dintre deschideri sau variante ale acestora, bine puse la punct, astfel c, n faa tablei de ah ei pot alege o cale sau alta, funcie de preferinele proprii sau ale adversarului etc. Efectul acestor memorri se manifest i prin aceea c, primele mutri derulndu-se rapid, se beneficiaz de o rezerv important de timp care poate fi de mare folos n fazele mai complicate ale jocului. Aa cum era de ateptat, creatorii de programe de ah au speculat chiar de la nceput aceast idee. Ei au conceput, n diverse variante, ceea ce se cheam astzi n literatura de specialitate, fiierul de deschideri. Acesta const dintr-un arbore de joc care conine principalele mutri i variante din faza de deschidere. Toate mutrile i variantele sunt memorate astfel nct, atunci cnd adversarul a fcut o mutare care corespunde unei variante concrete din acest fiier, calculatorul, utiliznd un sistem facil de cutare bazat pe legturi (nlnuiri), va rspunde imediat cu mutarea urmtoare dac va fi gsit. Aceste cutri se petrec pn cnd una din mutrile adversarului sare din arborele variantelor memorate, sau pn cnd s-a ajuns la captul acestora. Se nelege c variantele memorate pot fi destul de lungi, dar n practic un fiier de deschideri poate cuprinde abia cteva zeci de mii de mutri, ceea ce face ca utilitatea lui s se manifeste n majoritatea cazurilor doar la primele trei-patru mutri ale jocului. Pe de alt parte, ideea utilizrii unui fiier de deschidere ct mai complet nu poate fi i nici n-ar putea vreodat[ fi o rezolvare onorabil a problemei ahului-computer. El ajut doar, aa cum s-a menionat, la ctigarea unui timp de gndire, care poate fi foarte preios (din punct de vedere competiional), ntruct poate deveni foarte necesar n anumite momente mai dificile ale partidei, pentru o analiz mai detaliat a unor situaii complicate intervenite pe tabla de ah. n aceeai idee sunt folosite uneori i fiiere de finaluri, care conin rezolvri, prin acelai mecanism, ale unor finaluri cunoscute din teoria i practica jocului de ah. De exemplu: finalurile de turn i rege contra rege, cal, nebun i rege contra rege, doi nebuni i rege contra rege, cele de pioni etc., sunt doar cteva dintre cele care pot fi incluse ntr-un fiier de finaluri.

31

12. Consideraii finale

Nu exist creatori de programe de ah care s nu-i pun problema evalurii numerice a pieselor din componena acestui joc. Maestrul britanic Howard Staunton a evaluat valoarea acestora, printr-un procedeu contestat astzi, lund ca unitate de apreciere valoarea unui pion. El a oferit urmtoarele evaluri: un turn este egal cu 5,48 pioni, un cal este egal cu 3,05 pioni, un nebun este egal cu 3,50 pioni i o dam este echivalent cu valoarea a 9,94 pioni. Exist ns multe alte evaluri care privesc aspectul material al obiectivelor urmrite n jocul de ah, dar toate pot fi combtute uor. Marea dificultate const de fapt n evaluarea unei piese n conjuctur cu poziia ei i cu celelalte piese de pe tabla de ah, ceea ce sugereaz ideea unei evaluri dinamice. Subiectul este destul de larg i nu ne propunem s-l dezbatem complet aici. Cert este faptul c, fr a lua n seam evaluarea atunci cnd i propui s abordezi rezolvarea problemei jocului de ah pe calculator, este practic imposibil s obii vreun succes. Subiectul deschide n mod necesar tema existenei unei funcii de evaluare ct mai eficiente, de fapt, marea necunoscut a ahului-computer. Ideea evalurii pe baza atribuirii unor note statice, bonificaii sau penalizri pentru piese, strategii, avantaje, dezantaje, cmpuri etc. este din start sortit eecului. Chiar dac i n acest mod se poate ajunge la un program de ah care s ating anumite performane i chiar s ctige n faa unui mare-maestru, nu acesta va conduce la rezolvarea deplin a problemei. Pentru c, ar trebui s se neleag foarte bine, nu nfrngerea unui mare maestru, fie el i campion mondial, este obiectivul cel mai important pe care i l-a propus omul atunci cnd s-a gndit la definitivarea problemei ahului electronic. De la bun nceput omul a sperat c, nvingnd problema ahului computer, va putea s nving apoi numeroase altele care i stau n cale de ani i ani. De sute de ani o mulime de mini luminate nu au reuit s se decid asupra unui sistem de puncte pentru cele ase piese care fac obiectul jocului de ah. Imaginai-v c mine, un asemenea sistem va fi anunat cu mare pomp c a fost descoperit i c un computer nvinge aproape de fiecare dat campionul mondial al jocului de ah. La ce ar mai fi bun acel sistem de puncte care ajut cu exactitate la evaluarea unei mutri? Cu puterea sa de analogie i capacitatea sa creativ, omul l va implementa n diferite alte domenii, unde i-ar putea aduce suficient satisfacie. Dar tot omul este acela care nu se va mulumi niciodat cu jumtile de msur. El va dori n continuare perfeciunea i va fi dezamgit ori de cte ori sistemul nu se va comporta pe msura ateptrilor. Iat un scurt exemplu de ingratitudine manifestat de om n faa jumtilor de msur, luat din domeniul matematicii, practic tot din domeniul rezolvrii problemelor. De trei sute de ani aproape toi marii matematicieni ai lumii i-au btut capul cu rezolvarea unei probleme cunoscut sub numele de marea teorem a lui Fermat. Au fost instituite i numeroase premii, s-au consumat milioane de coli de hrtie cu demonstaii care n-au satisfcut. i iat c, n urm cu civa ani s-a anunat rezolvarea aproape complet a problemei de ctre un tnr 32

matematician german numit Fastings. Era un mare pas nainte, unii au ndrznit s afirme, nu fr oarecare umor, c problema a fost rezolvat doar n proporie de 99,99%. i totui, nici un matematician serios nu consider astzi c problema a fost rezolvat definitiv. Ea mai st nc n atenia specialitilor i mai figureaz nc pe lista problemelor nerezolvate. Jocul de ah este totui un joc finit. Aceasta nseamn c, dei sunt enorm de multe mutri i variante, sau, dac vrei, poziii distincte, numrul acestora este totui limitat (finit). Imaginai-v c avei de numrat pn la 10 miliarde. Dac ai numra n fiecare secund cte un numr ai avea nevoie de mai bine de trei sute de ani, i totui sunt sperane s ducei la capt aceast problem, chiar dac pentru aceasta ar trebui s apelai la cteva generaii care v urmeaz. Zece miliarde este un numr finit. Problema este rezolvabil i oricum, mai domestic dect, s zicem, cea a numrrii pn la... infinit, care este imposibil. Cititorul va scuza, poate, aceste digresiuni care n-au avut alt scop dect acela de a-l convinge asupra importanei i necesitii rezolvrii problemei de determinare a unei funcii de evaluare a mutrilor n ahul programat. Ideea evalurii pe baza relaiilor existente ntre piesele i cmpurile tablei de ah, pe care autorul a prezentat-o n aceast lucrare, are la baz concepte cunoscute, precum cele de mobilitate a figurilor, de cooperare a pieselor, de atac, de aprare, de control a cmpurilor libere. Interdependena pieselor pe tabla de ah reprezint, n concepia autorului, unicul criteriu serios de apreciere a unei poziii pe tabla de ah. Elementele de baz ale acestor interdependene sunt relaiile de atac, de aprare i de control a cmpurilor libere. Aadar, n aceast accepiune, nu valoarea intrinsec a unei piese, de exemple a unui turn sau a unui nebun conteaz, ci totalitatea legturilor acestor piese cu celelalte cu care intr n contact (relaie) direct pe tabla de joc. Tot aa cum nu un cmp sau mai multe cmpuri libere, necontrolate de nici o pies conteaz, ci doar cele care sunt la discreia pieselor de pe tabl. Evaluarea numeric a tuturor acestora, n contextul unei poziii, aceasta ar putea fi cheia unei funcii de evaluare eficient. Fr ndoial c scurtele lecii prezentate aici nu au putut s acopere toate problemele care alctuiesc arsenalul de idei i concepte ale ahului-computer. Exist numeroase detalii pe care programatorul trebuie s le aib n vedere atunci cnd preocuprile sale sunt ndreptate ctre un asemenea obiectiv. Autorul nutrete ns sperana c principalele noiuni i concepte cuprinse n aceast lucrare ar putea fi de folos celor interesai n acest domeniu, i cu siguran celor neiniiai. Cititorul poate alege, din conceptele prezentate, doar pe acelea care l intereseaz. De asemenea, el poate s adapteze multe dintre acestea conform cu ideile i concepiile proprii. Dac aici s-a preferat s se descrie reprezentarea tablei de ah n calculator sub forma matriceal, aceasta s-a fcut tocmai pentru c notaiile binecunoscute ale matricelor sunt i cele mai facile pentru o expunere i o nelegere intuitiv simpl. Un programator va ti ns c adevrata reprezentare n calculator a unei table de ah, sau, dac vrei, a unei matrice, se face printr-un lan nentrerupt de locaii de memorie i pentru acces la o anumit informaie, de exemplu, valoarea (coninutului) unui cmp al tablei de ah, este necesar s se cunoasc adresa locaiei de memorie care o conine. Aceleai chestiuni sunt valabile i pentru alte date legate de problema programului de ah. Reprezentarea tablei de ah sub forma matriceal poate fi util n mod deosebit celor care programeaz n limbaje de nivel nalt sau foarte nalt, unde modul de lucru cu tablouri de date este nu numai permis i detaliat, dar i foarte uor. Desigur, n acest caz, este de ateptat ca performanele programului, n ceea ce privete timpul de rspuns, s fie uor mai sczute. Revenind asupra funciei de evaluare, chiar dac ne repetm, o facem 33

convini c aceasta este adevrata problem a unui program de ah. Ea este inima unui program de ah i, dac ar fi s-l parafrazm pe Goethe care consider c ahul este piatra de ncercare a inteligenei umane, s-ar putea spune c funcia de evaluarea din ahul-computer reprezint piatra de ncercare a inteligenei artificiale.

34

ASPECTE GEOMETRICE ALE TABLEI DE AH

n cele ce urmeaz ne propunem s analizm cteva aspecte geometrice ale tablei de ah cu referire la jocul de final. De ce finalurile? Dei ele sunt cunoscute ca fiind mai srace i mai puin spectaculoase, totui abia aici se impune cu precdere elementul logic. n finalul jocului de ah numrul posibilittilor imprevizibile este redus substanial, dar aceast parte de joc rmne deosebit de interesant, dovad n acest sens aducnd-o, de exemplu, numeroasele studii artistice. Despre finaluri se spune c mintea omeneasc, dei stpn autoritar a tuturor legilor care domin aceast parte a jocului, nu le-a elucidat n ntregime. Unele, chiar dintre cele elementare, mai sunt cnd si cnd puse n discuie i li se mai aduc uneori mbuntiri sau corecii. De ce trebuiesc cunoscute finalurile? Simplu! Deoarece fr valorificarea avantajului material obinut sau fr lupta pentru salvarea partidei cnd avantajul este de partea adversarului jocul n sine ar fi lipsit de sens. Din punct de vedere al planificrii i programrii, finalurile se mpart n dou mari categorii: cele n care exist un avantaj material suficient pentru a obine victoria, i cele n care exist un avantaj material sau poziional de partea adversarului iar lupta se d pentru salvarea partidei. n teoria i practica ahist se ntlnesc deseori reguli prestabilite care conduc la rezolvarea unic a unor poziii concrete. Majoritatea lor nu au un caracter universal, adic nu sunt valabile de la nceputul i pn la sfritul jocului, ns exist i astfel de reguli. Ele in, n principal, de micrile particulare ale pieselor pe tabla de ah, deci de reguli elementare de manevrare. Exist ns un element de care se ine cel mai puin seama n stabilirea unei strategii de joc. Acest element, de altfel foarte important, vizeaz aspectele geometrice ale tablei de ah. La prima vedere tabla de ah pare a fi un ptrat mprtit n 64 de ptrele mai mici, numite cmpuri. Nu insistm asupra notaiei obinuite a acestora care, pn la cel mult o transformare liniar de coordonate, se identific aproape perfect cu notaia matriceal cunoscut n matematic, sau chiar cu cea de la unele rebusuri. Presupunem toate acestea, precum i problemele legate de regulile de desfurare i conveniile de finalitate ale jocului, cunoscute. Ct de inofensiv este aceast tabl de ah? Dac ne-am imagina jocul pe o tabl nemrginit, cu un numr nelimitat de cmpuri, avnd la baz acelai regulament de desfurare, atunci aproape nimic din acest regulament nu trebuie schimbat, n afar poate de transformarea pionilor n figuri. i totusi, jocul n acest caz devine evident imposibil n privina finalitii lui. Sunt de neimaginat, de pild, n astfel de situaii, maturi elementare cu turn i rege contra 35

rege, dam i rege contra rege, doi nebuni i rege contra rege etc. Mai mult, s-ar putea demonstra n astfel de situatii c o figur, de exemplu un nebun, nu poate fi capturat niciodat. Chiar i pe o tabl cu 16 x 16 = 256 cmpuri apar dificulti mari de finalizare, majoritatea strategiilor de joc trebuind s fie modificate, iar unele, chiar abandonate. Devine astfel evident faptul c n ah marginile tablei joac un rol foarte important. Majoritatea finalurilor elementare au la baz o geometrie a matului n care regele slab este dus obligatoriu la marginea tablei. Mai mult, exist unele finaluri care nu pot fi concepute fr constrngerea regelui slab ntr-unul din colurile tablei de ah. Astfel de maturi, cu participarea marginilor tablei, presupun, desigur, existena unui avantaj material suficient, de regul, cel puin de valoarea unui turn. Foarte rar sunt posibile maturi n care regele slab este ncolit definitiv pe un cmp din mijlocul tablei, deci care se lipsesc de aportul concret al marginilor. Astfel de maturi pot fi realizate doar cu un avantaj material suficient de mare (mult mai mare dect n celelalte cazuri), avantaj care poate fi invers proporional cu aportul, contient sau nu, al pieselor regelui slab. Analiznd aceast ultim categorie de maturi se constat c, fa de situaia precedent, diferena de material necesar trebuie s fie suficient pentru delimitarea unei margini unde regele slab va fi constrns. ntr-adevr, un singur turn, de exemplu, poate delimita o margine pentru regele slab (o linie sau o coloan), alta dect cea a tablei de ah, dup care fizionomia finalului devine aceeai ca n cazul precedent. Deci, o prim concluzie ar fi aceasta: dac n-avem margini apropiate, trebuie s le construim cu propriile noastre figuri. Tot la fel i cu colturile. O astfel de strategie nu este una particular, ci delimiteaz reguli cu caracter general ce trebuiesc urmrite i aplicate pe tot timpul desfurrii unui final de partid. Diferena de material despre care vorbeam mai nainte se refer, desigur, la piesele active (cele care pot interveni imediat n lupt) pe tabla de ah. Juctorul condus de aceste reguli va fi ntotdeauna mai puternic. Nu vom insista ns asupra acestor chestiuni, ci vom merge mai departe s cutm i alte principii generale ale jocului, cu rol preponderent n rezolvarea finalurilor. Se spune n ah, i nu numai, c este mai uor s te aperi dect s ataci. Muli ahisti adopt jocul poziional care, desigur, implic mai puin participare i btaie de cap, nu ns i mai puin dificultate. De multe ori apar situaii cu diferene strategice sau materiale care trebuiesc recuperate. n astfel de cazuri, cel mai bun plan de joc vizeaz lupta pentru echilibrarea situaiei care, dac este vorba despre un final de partid, ar trebui s se concretizeze n remiz. Geometria tablei de ah nate, n astfel de situaii, probleme paradoxale. Conjugarea pe o cale de mijloc a mai multor strategii, atunci cnd acestea, luate separat, nu duc la nimic, poate deseori rezolva probleme care sfideaz chiar limita bunului sim. Un exemplu concludent n acest sens a fost pus n eviden printr-un studiu celebru al reputatului ahist-matematician Richard Reti, n anul 1921. Tema studiului este albul mut i face remiz iar poziia prezentat n diagrama nr.1, conine la alb: Rh8 i c6, iar la negru: Ra6 i h5.

36

La prima vedere poziia pare disperat pentru alb, deoarece pionul negru are dou tempouri n plus spre linia de transformare i, n acelai timp, nu se vede nici o ans de promovare a propriului su pion care este i prea ndeprtat de regele su i poate fi capturat uor de regele advers. Exist trei planuri de joc pentru alb, toate prnd la fel de nesatisfctoare. S le analizm pe rnd: P1. Alergarea cu regele pentru a prinde pionul negru. Cel mai scurt drum pare a fi coloana h, deci 1. Rh7, 2. Rh6, 3.Rh5 etc., ns este clar c acest pion nu poate fi prins. De altfel, n asemenea cazuri exist i o regul care clarific rapid situaia, numit regula ptratului. Aceasta afirm c: dac regele se afl sau, fiind la mutare, poate s ptrund, n ptratul mictor al pionului care se ndreapt spre linia de transformare, ptrat imaginar cu latura egal cu numrul cmpurilor pe care le are de parcurs pionul spre transformare, dou dintre laturile acestui ptrat fiind linia de transformare i cea pe care se afl pionul, atunci pionul poate fi ajuns i capturat. n caz contrar, acesta poate ajunge linitit pe ultima linie, unde se va transforma ntr-o figur. O regul geometric i nimic mai mult, care surprinde prin simplitatea i utilitatea ei! n cazul problemei noastre, albul fiind mutare, nu poate ptrunde cu regele n ptratul pionului constituit din vrfurile h5, h1, d1 i d5, deci planul pare absurd. P2: ncercarea de a sri n sprijinul propriului su pion prin deplasarea regelui pe cel mai scurt drum pn la acesta. i n acest caz se vede c planul este total nesatisfctor, ntruct regele advers poate captura pionul alb cu mult nainte ca regele su s-l poat sprijini. P3: ncercarea de promovare a propriului pion prin avansare imediat. ns, conform regulei ptratului, regele aflndu-se deja n ptratul pionului, poate s-l ajung i s-l captureze. Atunci, ce este de fcut? Trebuie abandonat lupta? nc nu! Mai exist un plan, desigur, mai greu de intuit, care are la baz o soluie de compromis: conjugarea celor trei strategii particulare ntr-una singur. Altfel spus, determinarea unui drum optim (variant) care s aib n vedere abordarea tuturor variantelor particulare pe o cale de mijloc. Jucnd 1. Rg7, la prima vedere se pare c albul nu i-a mbuntit cu nimic situaia, ns ceva tot s-a realizat: printr-o singur mutare el a fcut cte un pas 37

n fiecare dintre planurile P1 i P2, cel de-al treilea plan rmnnd n continuare posibil de urmat. Acum, oricare ar fi rspunsul negrului situaia albului rmne mbuntit cel puin cu un pas. Cel mai bun rspuns al negrului pare a fi 1... h4. Continund raionamentul n spiritul aceleiai idei generale de joc albul ar trebui s joace 2. Rf6 dup care apar imediat i unele sperane pentru sprijinirea pionului su, deoarece la 2... h3 se poate juca 3. Re6 h2 4. c7 Rb7, 5. Rd7 i remiz. De aceea, negrul este nevoit s joace 2... Rb6 pentru a prentmpina ameninarea ns, n spiritul aceleiai idei care domin acum jocul albului, se va juca 3. Re5!! Abia acum lucrurile par s se fi lmurit pe deplin ntruct, dac negrul continu cursa de transformare, albul ajunge la timp s-i sprijine pionul, iar dac negrul bate pionul alb, regele alb poate ptrunde n ptratul de transformare al pionului negru (de exemplu, 4. Rf4) i ca urmare l va putea captura la timp. Astfel, situaia paradoxal de la nceput a putut fi depit prin aplicarea unei strategii corespunztoare de joc. Nu ns o strategie oarecare, ci una general, care a cuprins toate planurile particulare de joc existente n poziia concret de pe tabla de ah. De ce a fost posibil aceast strategie? Explicaia logic este strns legat de micarea particular a pieselor pe tabla de ah. n cazul problemei noastre micarea regelui s-a fcut dup o geometrie special, n care diagonala ptratului este egal cu latura. Observaia are un caracter universal i orice strategie de joc (cu att mai mult cele programate) trebuie s in seama de acest aspect. Un studiu asemntor, avnd aceeai tem, la fel de celebru i aparinnd aceluiai neobosit cercettor Reti, este cel prezentat n diagrama nr. 2, cu poziia la alb: Rf8, e6, i la negru: Ra7, Ne2, g6. Se afirm despre aceast poziie c i un campion mondial dac ar fi ntlnit-o n timpul unei partide, ar fi cedat-o, ntr-att pare de dezastruoas situaia pentru alb. i totui, poziia poate fi salvat, chiar i de un ahist mediocre, dac este narmat cu raionamente de genul celor expuse mai sus. Planurile particulare de joc pentru alb sunt: P1: Ptrunderea cu regele n ptratul de transformare al pionului negru P2: Anihilarea nebunului negru care, prin manevra b5 poate mpiedica transformarea pe e8 a pionului alb P3: promovarea pionului alb. Care este atunci strategia general de joc, care mbuntete la fiecare pas situaa albului? Lsm cititorul s reflecteze asupra acesteia, expunndu-i doar solua problemei: 1. Re7 g5 2. d6! g4 3. 7 Nb5 4. Rc5!! i, dup mutarea nebunului oriunde, urmeaz 5. Rd4 g3 6. Re3 i remiz. O curs diabolic n zigzag, sfidnd parc orice logic a bunului sim. O curs care, aparent, nu respect legea celei mai scurte distane dintre dou puncte. Mult mister, dar i mult satisfacie. ntocmai cum spunea marele gnditor N. Iorga: ahul este cel mai minunat mijloc de disciplinare a gndirii, de ordonare a domeniilor de cunoatere i de recreaie a spiritului. Este un univers comprimat pe 64 de ptrele. Exist i alte legi geometrice ale tablei de ah? Cu siguran. Sarcina unui juctor este s descifreze acele reguli care domin jocul i s le aplice n situaii concrete. Iar sarcina unui programator de ah este aceeai, iar n plus trebuie s modeleze matematic aceste reguli i s le transforme n limbajul calculatorului. Unul din cele mai importante principii, valabil n finalurile de regi i pioni, este cel al opoziiei. Fostul mare campion al lumii, J. L. Capablanca afirma n legtur cu aceasta: "opoziia i legile ei pot fi abordate ntr-o manier pur matematic". Este tocmai ceea ce trebuie s fac un programator care doreste s modeleze matematic aceste categorii de reguli. i ele sunt multe. Mai amintim doar cteva dintre ele, lsnd cititorul s reflecteze asupra modului n care acestea pot fi 38

implementate: pionul care blocheaz doi pioni, avansarea rapid a pionilor ncepnd cu pionul care nu ntlnete alt pion n calea sa, ocuparea rapid a centrului cu regele n finalurile de pioni, plasarea regelui n faa pionilor care avanseaz etc. Subiectul analizat este larg i nu ne-am propus s-l epuizm aici. n final mai facem doar o singur observaie general privind planificarea i programarea finalurilor. Am vzut c n acele finaluri n care lupta se d pentru salvare, o modalitate de abordare altgoritmic a acestora se bazeaz pe determinarea unei variante care s mbuntteasc poziia la fiecare mutare cu ci mai muli pai n ct mai multe strategii particulare simultan. Pentru cealalt categorie de finaluri, n care avantajul material este suficient pentru a aborda matul, pot fi avute n vedere urmtoarele aspecte: a) majoritatea finalurilor elementare necesit un avantaj material de cel puin valoarea unui turn pentru a realiza matul, cu ajutorul marginilor sau colurilor tablei b) toate finalurile de acest gen au la baz constrngerea regelui slab, reducndu-i spaiul de micare pn la mutarea decisiv c) orice mat n mijlocul tablei se poate reduce n principiu la cel descris la punctual a), diferena constnd n necesitatea unui avantaj material mai mare, suficient pentru restrngerea spaiului de micare a regelui slab b). Pe baza acestor observaii se poate constata c o strategie care s aib la baz reducerea spaiului de micare a regelui slab, corelat cu determinarea mutrii decisive este tocmai adecvat pentru abordarea programat a acestor categorii de finaluri.

39

FUNCIA DE EVALUARE N AHUL PROGRAMAT

Cea mai dificil problem ntmpinat de programatorii de ah este cea legat de aprecierea unei poziii care se concretizeaz de regul prin alegera unei mutri. Dup cum se tie aceast problem nu este deloc simpl nici chiar pentru un juctor uman. Juctorul de ah, indiferent cte semimutri anticipeaz pe tabla de ah, se oprete n cele din urm la captul variantelor generate asupra unei poziii rezultate i o analizeaz, cutnd s rspund ct mai corect la ntrebri de genul: Stau mai bine?, Stau ru?, Este o poziie de egalitate? .a. De asemenea, pe parcursul generrii variantelor, juctorul nu ia n seam toate mutrile posibile, ci doar pe acelea care, din considerente proprii, par a fi cele mai bune. Tot la fel ar trebui s procedeze i calculatorul, ns el, aa cum se tie, judec doar prin cifre. Apare astfel ideea utilizrii unei funcii de evaluare numeric, funcie care, din punct de vedere matematic, n practic i se d o form linear, care presupune un numr restrns de calcule, avnd la baz operaii elementare, de regul, cele de adunare i de nmulire. Dar forma linear aleas poate fi considerat ca fiind abuziv cci, n realitate, numai puine elemente care intr n componena ei au comportri liniare. Oricare ar fi o funcie de evaluare, ea trebuie s nglobeze obligatoriu criterii precum: diferena de material, controlul centrului, structura pionilor, mobilitatea figurilor, sigurana regelui, posibiliti de atac, de aprare etc. A stabili, de exemplu, o dependen liniar ntre controlul centrului i mobilitatea anumitor figuri este totui un abuz, care nu se justific suficient prin ctigul de timp pentru calcul i evaluare. n prezent, majoritatea programelor cunoscute folosesc funcii asemntoare de evaluare, care difer doar prin numrul de termeni i valorile particulare atribuite parametrilor. O funcie de evaluare ideal nc nu a fost descoperit, ns un lucru este cert: exprimarea ei linear este o arpoximare grosier, cu att mai evident cu ct avem de-a face cu un domeniu discret de valori. De unde provin aceste dificulti? n primul rnd de la numrul relativ mare de parametri criteriali luai n calcul; de exemplu, pentru calculul parametrului privind posibilitile de atac sunt necesare estimri ale altor parametri ajuttori, cum ar fi: piese avansate n tabra advers, turnuri plasate pe coloane deschise sau semideschise, controlul cmpurilor vecine regelui, atacuri la rege, legarea pieselor, atacul dublu sau combinat etc. n al doilea rnd, dificulti mari sunt ntmpinate i la determinarea coeficienelor de corelaie liniar a parametrilor criteriali. Aceti coeficieni, i ei muli la numr, sunt determinai pe ci statistice sau stochastice. Una din cile sigure de elaborare a unei funcii de evaluare ct mai exacte 40

const n reducerea numrul de parametri utilizai. Prsim pentru moment problema funciei de evaluare i aducem n discuie urmtoarea chestiune: ce este valoarea dinamic a unei piese pe tabla de ah i ce rol joac ea? Dup cum se tie, n orice problem de ah ntlnim diferene dintre valoarea intrinsec a unei figuri i utilitatea ei la un moment dat. De exemplu, un turn valoreaz, dup unele criterii statice, aproximativ ct cinci pioni, ns aceast valoare nu se menine pe tot parcursul partidei. Sunt situaii (poziii) n care rolul acestui turn crete att de mult, nct poate depi chiar valoarea static a celei mai puternice figuri. Dar sunt i cazuri n care valoarea acestuia poate s scad (de exemplu, stuaii out of game). Ce anume influeneaz aceast valoare? Evident, ea se modific n raport cu participarea piesei la joc, adic exist o dependen semnificativ ntre aceast pies i toate celelalte cu care ea intr n contact direct, prin relaii de atac i de aprare, dependen care, caracterizat valoric, determin aa numita valoare dinamic a piesei respective. Se nasc astfel ntrebri de genul: ct valoreaz de fapt un turn care atac un nebun, este atacat de un cal, apr un cal i un pion i controleaz nou cmpuri libere? (n toate fazele jocului controlul cmpurilor libere joac un rol foarte important). Aceste probleme inexacte sugereaz ideea unui joc n care strategia de baz este aciunea coordonat i cooperarea armonioas a pieselor. Despre aceasta, fostul campion mondial J. R. Capablanca, ntr-una din crile sale de ah, a fcut observaia c semnific principiul de baz care guverneaz ntreaga partid. Acest principiu se concretizeaz pe tabla de ah prin mobilizarea figurilor i activizarea lor, n aa fel ca prin aciunea lor comun s ridice ct mai multe probleme adversarului. O pies dintr-o poziie oarecare este caracterizat de urmtoarele categorii de relaii: a. se afl n relaia de aprare cu piese proprii (apr i/sau este aprat) b. se afl n relaia de atac cu piese adverse (atac i/sau este atacat) c. controleaz unul sau mai multe cmpuri libere. Unele dintre relaii sunt favorabile taberei din care face parte piesa, altele nu. Vom face acum observaia important c strategia relaional despre care vorbim are avantajul c acoper aproape n ntregime sistemul criterial care st la baza unei funcii de evaluare. Astfel, o pies va fi caracterizat potenial mai bine atunci cnd va deveni furnizoarea mai multor relaii favorabile. Aceasta nu implic altceva dect un joc mai activ, cu o mobilitate mai mare a pieselor i, ca o consecin imediat, cu oportuniti de soluionare a unor probleme precum: centralizarea pieselor, controlul centrului (care confer figurilor fronturi mai largi de aciune), atacul unor zone importante, ocuparea cu turnul a unei coloane deschise (i asta nu ntotdeauna, aa cum s-ar ntmpla ntr-o strategie disparat, ci numai atunci cnd vechiul obiectiv al turnului poate fi prsit), cedarea unei figuri slabe pentru una foarte activ a adversarului (nu nseamn asta, deseori, un nceput de combinaie?) etc. Mulimea celor trei tipuri de relaii existente la un moment dat ntr-o poziie poate defini complet poziia. Mai mult, modalitatea de descriere a poziiilor pe baza relaiilor are i avantajul c grupeaz poziii care sunt considerate a fi distincte n sistemul clasic, n clase mai largi de poziii, conform caracteristicilor relaionale comune. O mutare regulamentar efectuat pe tabla de ah transform poziia P 0 n poziia P1. Din punct de vedere relaional, ne punem ntrebarea prin ce difer cele 41

dou poziii? Rspunsul este uor de ntrevzut: orice mutare efectuat anuleaz cteva relaii existente i, n acelai timp, introduce cteva relaii noi n poziia P 0, transformnd-o n P1. De regul, marea majoritate a relaiilor vechi nu sunt afectate de o mutare, rmnnd intacte. Aa cum se poate stabili statistic, relaiile care sunt afectate n urma unei mutri reprezint circa 5% din totalul relaiilor care caracterizeaz poziia. Dac vom evalua numeric toate aceste relaii, vom observa, fapt deosebit de important, c valorile acestora pot fi nite constante care, pentru a fi determinate, se pot utiliza diferite metode statistice. nsumarea algebric a acestor valori, deci exprimarea cantitativ a relaiilor dinamice, reprezint un criteriu calitativ de departajare a mutrilor. Pentru corelarea celor trei tipuri de parametri relaionali (de aprare, de atac i de control) pot fi folosii trei coeficieni multiplicativi reali, pozitivi i subunitari, a cror sum este egal cu unitatea i care transform funcia de evaluare ntr-o combinaie linear de funcii criteriale. Aceti coeficieni pot fi i ei determinai statistic, de exemplu, analiznd i caracteriznd numeric diferenele poziionale (de preferin, preluate din partidele marilor maetri), care au survenit dup mutri care au rsturnat un echilibru ce prea evident. n acest mod, rezolvnd aceste probleme pur matematic, vom avea dovada unei funcii de evaluare care, dei are baze empirice, este totui mai simpl i adesea poate fi mbuntit n mod experimental.

42

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