Thuat Toan Choi Co

Embed Size (px)

Citation preview

T VIT CHNG TRNH C TNG Tc gi: Phm Mc lc Chng 1 Hng Nguyn

Li ni u (11/2002)Nhm gip cc bn yu thch c Tng my tnh c thm ti liu nghin cu, hc tp, ti xut bn quyn sch ny dng min ph. So vi phin bn ban u (nm 1998) n c mt s sa i v chnh l, ct b phn dy vit chng trnh c Vua v cc ph lc (ph lc ch l cc chng trnh mu). Mt s phn ca ti liu c trch dn v ng ti trn tp ch PCWorld VN. Bn c th dng (c, download, lu tr) ti liu ny cho mc ch s dng ca c nhn hoc sao chp (copy) cho ngi khc nhng khng c php: sa i (bt c cu ch, hnh v no), kinh doanh (di bt c hnh thc no), ng ti li trang web khc (trch dn l c php v phi tun theo cc qui nh v trch dn), xut bn li bt c dng no. (Mt s ngoi l c th c xem xt ring). Hi vng, vi cc iu khon d v fair ny s c cc bn tun th nghim chnh. Mt iu lu na l ti liu ny c cung cp dng AS IT (c th no xin dng th y) v s khng c km thm cc bi ging hay cc tr gip. Ti c cung cp a ch email, nhng ch yu l nhn nhng phn hi c ch cho mi ngi nh nhng gp , ph bnh - xin ng lm dng n. Nhng yu cu c nhn nh xin chng trnh (bn hy t download ly hoc xin bn b), xin ging thm v thut ton hoc gii thch ring cho mt chi tit k thut no ni chung s khng c p ng. Bn cn phi t suy ngh, nh bn b, tm kim cu tr li c sn hoc hi cc din n, bn b. Mc d ti cung cp cc chng trnh mu v quyn sch ny dng min ph nhng iu khng c ngha l ton b qu thi gian (vn rt eo hp) v sc lc ca ti ch dnh cho chng - cc bn cn hiu v thng cm. Phm Hng Nguyn

Li ni u (1998)C Tng v c Vua l cc mn th thao tr tu hp dn v ph bin trn th gii. Tuy nhin vic tm hiu v vit chng trnh my tnh c th chi c cc loi c ny vn l cc thch thc ln, nht l i vi cc bn tr. c kh nhiu chng trnh ngun ca c Vua cho t do (trn Internet). Hu ht cc chng trnh ny ch c cho sau khi cc tc gi pht trin chng trong nhiu nm rng. V d, b GNU Chess cho sau khi pht trin hn 20 nm, b CRAFTY sau khong 10 nm. Nhiu chng trnh trong s chi rt hay, t th hng cao trong lng c my (v d GNU c h s ELO 2350-2400, CRAFTY 2500-2700). Nhng cng v vy cc chng trnh

Chng 1TR CHI I KHNG V CC PHNG PHP TM KIM

I. Dng tr chiTrong phn ny, ta s xem cch mt chng trnh my tnh c th chi c cc tr chi u tr nh cc tr chi c Vua, c Tng, c vy, c caro (go-moku), go, checker... nh th no. Cc tr ny cn gi l cc tr chi i khng, din ra gia hai u th. Ni chung, cc tr chi u c th chuyn v mt dng bi ton tm kim c bit: tm ng i n cc im cao nht gia hai u th. c im ca cc tr chi trn nh sau:

C hai u th, mi ngi ch i mt nc khi ti lt. Cc u th u bit mi thng tin v tnh trng trn u. Trn u khng ko di v tn, phi din ra ha, hoc mt bn thng v bn kia thua.

Thng thng ta hay gi cc tr chi ny l cc loi c. i khi ta gi y l cc tr chi Minimax (da trn tn ca thut ton tm kim c bn p dng cho chng). Hnh 1.1 l v d v mt s tr chi ni trn. Cc tr chi nh chi bi, d mn, xc sc... khng thuc lp tr chi ny.

II. Cy tr chiCc trng thi bn c khc nhau (hay cn gi l mt th c, tnh hung c) trong qu trnh chi c th biu din thnh mt cy tm kim (c gi l cy tr chi - hnh 1.2) v ta s tin hnh tm kim trn cy tm c nc i tt nht. Cy tr chi c cc nt ca cy l cc tnh hung khc nhau ca bn c, cc nhnh ni gia cc nt s cho bit t mt tnh hung bn c chuyn sang tnh hung khc thng qua ch mt nc i n no . D nhin, cc nc i ny din ra theo cp do hai u th ln lt tin hnh. su ca cy tr chi ply l s tng ca cy (chnh l su d ca cy). Thut ng nc i trong sch c thng nht ch bao gm mt ln i ca mt u th hoc mt ln i phn ng li ca i th bn kia. Ch n khc vi thi quen dng trong thc t mt nc i bao gm ln i ca ta v mt ln i ca i th. Ni cch khc, nc i y thc cht ch l "na nc" theo cch hiu ca lng c.

III. Vt cnDng mt thut ton vt cn tm kim trn cy tr chi dng nh l mt tng n gin. Ta ch cn chn nhnh cy s dn ti nc thng i qun l m bo thng li. Nu ng vy, cc loi c s tr thnh cc tr chi bun t, s chng cn u nhng b quyt huyn o thn k v bn c s chng khc g bn... tnh. Rt tic (hoc rt may) rng, cch lm ny li khng th thc hin ni do ci gi l bng n t hp. V d, nu t mt th c, trung bnh c kh nng i c 16 nc i khc nhau (ta gi l h s nhnh con ti mi nt l b = 16). Nh vy, sau mt tng ta s c 16 nt con, mi nt ny li c th c 16 con na. Tng s nt con su th hai l 16x16 = b2. C nh vy su d s c bd nt. Nu gi s su ca cy l 100 (h s nhnh 16 v su 100 u l nhng con s cn nh hn con s thng gp trong tr chi c), th s nhnh phi duyt ln n 16100 hay xp x 10120 - mt con s ln khng khip. hnh dung s ln th no, ta gi s tt c cc nguyn t trong v tr u tr thnh my tnh tnh nc i vi tc mt giy tnh c c 1010 (10 t) nc i, v nu chng hot ng ct lc t thi v n ln n nay (theo mt s l thuyt, th th gii ny hnh thnh sau mt v n gi l v n ln bigbang, trc y c 15 t nm) th n by gi mi c th i c nc i u tin. V s cc kh nng tng qu nhanh, ch c mt s t nhng vn n gin l thch hp vi kiu tm kim vt ht mi kh nng ny (kiu tm kim vt cn i hi phi kim tra

tt c cc nh). Do , cc phng php tm kim khc ra i v pht trin. Ngc li, nu c mt phng php lun lun chnh xc nhm nh gi mt th c ny l tt hay km so vi th kia, th tr chi tr thnh n gin bng cch chn nc i dn ti th c tt nht. Do s khng cn phi tm kim g na. Rt tic, cc th tc nh vy khng h c. Ta cn c chin lc tm kim trong tr chi.

IV. Chin lc tm kim trong tr chiMt chin lc thng c c ngi ln my dng l phn tch th c ch sau mt s nc i no ca c hai bn. Sau khi "nhn xa" xem bn c c nhng kh nng bin i nh th no sau mt s nc, ta s nh gi xu tt ca cc th c nhn c. Tip theo, ta s chn nc i s dn ti mt th c tt nht trong s c cn nhc n cch i ca c hai bn. Vi my, th c ny c nh gi l tt hn th c kia nh so snh im ca th do b lng gi tr li. Chng ta ch c kh nng xt trc mt s hu hn cc nc (v d i kin tng chi c vua c th xt trc 8-10 nc i, ngi thng ch 24 nc i). R rng l nu xt cng su th chi cng gii. Nhng khng th thc hin iu ny vi su qu ln c do s nt su c th tr nn ln khng khip v khng thi gian phn tch. Nu dng mt su hp l th b phn tch c th hon thnh vic tnh ton trong mt thi gian hn nh.

V. Th tc Minimax[1]Gi s chng ta c mt b phn tch th c c th p dng tt c cc lut, cc phng php nh c khc nhau vo tng th c v chuyn i chng thnh mt con s i din (cho im th c). Mt khc, ta gi s con s l dng khi p dng cho th c ca mt u th (c gi l ngi chi cc i - maximizer), v l m khi p dng cho u th bn kia (c gi l ngi chi cc tiu - minimizer). Qu trnh tnh ton cho im th

c c gi l lng gi tnh (static evaluation). Hm thc hin vic tnh ton c gi l mt b lng gi tnh, v gi tr nhn c gi l im lng gi tnh. C hai u th u c gng i nh th no t c im tuyt i ln nht. Ngi chi cc i s tm nhng nc i dn n im ca mnh tr nn ln hn (hay cao nht c th c) hay im ca i th bt m hn (nh hn v gi tr tuyt i). Cn u th ca anh ta, ngi chi cc tiu, li ra sc phn khng li, dn ti im m ca anh ta m hn hay im dng ca i th nh i (hnh 1.4).

V d mt phn cy tr chi trong hnh 1.5.

Ngi chi cc i hi vng chn nc i bn phi t c im 8. Th nhng nu i nh vy th khi n lt i ca ngi chi cc tiu, anh ta s c gng khng cho ngi chi cc i t c im ny bng cch chn nc i nhnh bn tri v nh vy, ngi chi cc i ch c c 1 im thay v 8. Ngc li, nu ngi chi cc i chn nc i bn tri, th trong tnh hung xu nht anh ta vn cn c 2 im, ln hn l chn nc i bn phi. Ni chung, ngi chi cc i s phi tm cch nhn ra cc nc i ca i phng tip theo lm cho im gim xung. V tng t nh vy, ngi chi cc tiu phi nhn bit c nc i ca ngi chi cc i c gng lm tng im ln. Th tc tm nc i tt nht trn cy tr chi nh trn c gi l th tc Minimax do im mi nt c th l im cc i hoc c th l im cc tiu v c thut ton nh sau:

Thut ton Minimax

Nu nh t n gii hn tm kim (n tng di cng ca cy tm kim), tnh gi tr tnh ca th c hin ti ng vi ngi chi . Ghi nh kt qu Nu nh mc ang xt l ca ngi chi cc tiu, p dng th tc Minimax ny cho cc con ca n. Ghi nh kt qu nh nht Nu nh mc ang xt l ca ngi chi cc i, p dng th tc Minimax ny cho cc con ca n. Ghi nh kt qu ln nht.

Vit chng trnh cho thut ton MinimaxBy gi, ta th da vo pht biu trn vit chng trnh cho thut ton ny bng ngn ng ta Pascal. y l mt hm c tn l Minimax v s l loi qui. Trc ht, hm ny bit t n gii hn tm kim cha, ta cn cung cp cho n mt tham s v su tm kim depth ( bit phi tm n u), ng thi ta cng phi cho bit th c hin ti pos n t n bit cch tnh tip. Gi tr tr v ca hm chnh l im ca th c (bn c) pos. Vy hm s c khai bo dng: function Minimax (pos, depth): integer; Mi khi Minimax c gi, n s cng gn n gii hn tm kim, do ta s gi hm ny vi su bng su c tr i mt. t n su gii hn chnh l khi depth = 0. Khi t su ny ta s gi hm lng gi Eval nh gi cht lng ca th c pos hin ti (thc hin iu mt ca thut ton). Nh vy bc u hm ny c dng sau:

function Minimax (pos, depth): integer; begin if depth = 0 then { t n gii hn } Minimax := Eval (pos) { Tnh gi tr th c pos } else begin ... Minimax (pos, depth - 1); { Gi qui vi su gin dn} ... end; end; trn, Minimax c gi vi su gim i mt. l su ca cc th c l con. Cc th c con pos' l cc th c c to ra t pos bng cch i mt nc i hp l m no . Do ta phi c cc lnh thc hin i qun n cc th c mi. bit t th c pos c th i c nhng nc no, ta dng mt th tc Gen c tham s l th c cha

pos. Th tc ny s ct cc th c con pos' vo b nh (dng danh sch). Vic tip theo l ta ly tng th c ra v p dng tip th tc Minimax cho n tnh im value ca n. Vy hm Minimax by gi c dng: function Minimax (pos, depth): integer; begin if depth = 0 then Minimax := Eval (pos) { Tnh gi tr th c pos } else begin Gen (pos); { Sinh ra mi nc i t th c pos } while cn ly c mt nc i m do begin pos := Tnh th c mi nh i m; value := Minimax (pos, depth-1); { Tnh im ca pos } ... end; ... end; end; Theo pht biu ca thut ton, ta thy cc iu 2 v 3 ch khc nhau cch chn kt qu tt nht best ph thuc vo ngi chi ang l ngi chi cc i hay cc tiu. Cui cng thut ton s tr v im tt nht t c. Vy hm ny c pht trin tip thnh: function Minimax (pos, depth): integer; begin if depth = 0 then Minimax := Eval (pos) { Tnh gi tr th c pos } else begin Gen (pos); { Sinh ra mi nc i t th c pos } while cn ly c mt nc i m do begin pos := Tnh th c mi nh i m; value := Minimax (pos, depth-1); { Tnh im ca pos } { Chn im tt nht tu thuc theo ngi chi } if ngi chi l ngi cc i then begin if best < value then best := value; end else begin if best > value then best := value; end end; Minimax := best; { Tr v gi tr tt nht }

end; end; Thng thng cho tin (v cng rt gn s thc) ta coi c hai ngi chi (hai bn) c cng cch nh gi v mt th c. C iu th c ny l tt vi mt ngi th phi c nh gi l ti vi ngi kia v ngc li. Trong my tnh cch th hin tt nht l ta cho im mt th c c thm du m dng: du m dnh cho ngi chi cc i v du m cho ngi chi cc tiu. Vi ngi chi cc i s mong mun im ny cng dng cng tt, cn ngi chi cc tiu li mong mun im ny cng m cng tt. Do d x l ta s tu theo mc ngi chi m i du gi tr nh gi th c pos. Ch rng, thay i su l chuyn sang i phng nn phi i du. Chng trnh thc hin i du nh sau: value := -Minimax (pos, depth-1); { Tnh im ca pos } Cng do dng cng hm lng gi nn khi n lt ngi chi cc i v cc tiu c cng ci nhn nh nhau v mt th c. iu ny dn n c th dng cng cch chn nc i tt nht cho h (gp c iu 2 v 3 li vi nhau c). Gi tr best cn c khi u rt nh m bo khng vt mi gi tr value, tt nht l gi tr -v cng: function Minimax (pos, depth): integer; begin if depth = 0 then Minimax := Eval (pos) { Tnh gi tr th c pos } else begin best := -INFINITY; Gen (pos); { Sinh ra mi nc i t th c pos } while cn ly c mt nc i m do begin pos := Tnh th c mi nh i m; value := -Minimax (pos, depth - 1); if value > best then best := value; end; Minimax := best; end; end; Thng thng, bn c c biu din bng cc bin ton cc. Do thay cho truyn tham s l mt bn c mi pos vo th thc Minimax th ngi ta bin i lun bin ton cc ny nh thc hin nc i "th" (nc i dn n bn c mi pos). Sau khi Minimax thc hin vic tnh ton da vo bn c lu bin ton cc th thut ton s dng mt s th tc loi b nc i ny. Nh vy Minimax b cc tham s pos nh sau: function Minimax (depth): integer; begin if depth = 0 then Minimax := Eval { Tnh th c pos trong bin ton cc }

else begin best := -INFINITY; Gen; { Sinh ra mi nc i t th c pos } while cn ly c mt nc i m do begin thc hin nc i m; value := -Minimax (depth - 1); b thc hin nc i m; if value > best then best := value; end; Minimax := best; end; end; Thut ton Minimax vi vic o du mi khi thay i su nh trn i khi c gi l thut ton Negamax.

nh gi thut ton MinimaxNu h s nhnh trung bnh ca cy l b v ta thc hin tm kim n su d th s nt phi lng gi y cy nh ta bit l bd. y chnh l s o phc tp ca thut ton. Nu b = 40, d = 4 (cc con s thng gp trong tr chi c) th s nt phi lng gi l 404 = 2560000 (trn 2 triu ri nt). Cn vi b = 40, d = 5 th s nt phi lng gi s tng 40 ln na thnh 405 = 102400000 (trn 102 triu nt). Lu : ton b tng ca thut ton ny l da trn vic chuyn i mi th c thnh mt con s nh gi. Rt tic l cc con s ny thng khng tt v khng nh gi ht mi iu. Mt khc, thut ton ny c th rt tn km (chy chm) do vic sinh cc nc i v lng gi rt tn thi gian tnh ton, do vy su ca cy tr chi cng b hn ch nhiu. Ta cn c thm nhng ci tin ci thin tnh hnh.

VI. Th tc AlphaBetaTh tc AlphaBeta l mt ci tin thut ton Minimax nhm ta bt nhnh ca cy tr chi, lm gim s lng nt phi sinh v lng gi, do c th tng su ca cy tm kim. Gi s hnh 1.6 l mt th c m hai nt u tin c lng gi. Nu thc hin th tc Minimax i vi cc nt s cho thy ngi chi cc i c m bo nu i nc bn tri s c t nht l 2 im d l cc lng gi ca cc nt khc cho kt qu nh th no i na.

By gi, ta li gi s nt tip theo c lng gi v cho kt qu l 1. Nu i vo nhnh ny th i phng s m bo lm im ca ngi chi cc i khng th vt qu c gi tr 1 d l cc lng gi ca cc nt khc cho kt qu nh th no i na. Do n y, nc i tt nht l chn nc i bn tri vi m bo l t nht t c 2 im. V do , hon ton khng cn thit phi lng gi nt cn li.

Nguyn tc Alpha-BetaNu bit iu tht s ti th ng mt thi gian tm hiu n s ti t n u tng ny c gi l nguyn tc Alpha-Beta do n dng trong th tc AlphaBeta (ta s xt di y). Hai tham s ca th tc ny (theo cc t tn truyn thng) c gi l alpha v beta v dng theo di cc trin vng - chng cho bit cc gi tr nm ngoi khong [alpha, beta] l cc im "tht s ti" v khng cn phi xem xt na. Khong [alpha, beta] cn c gi l ca s alpha, beta. Trong ng cnh ca cc tr chi, nguyn tc Alpha-Beta ni rng, mi khi xem xt mt nt bt k, nn kim tra cc thng tin bit v cc nt cha, ng ca n. Rt c th do c thng tin t cha, ng nn khng cn phi lm bt c vic g na cho nt ny. Cng vy, nguyn tc ny cng gip chnh sa

hoc xc nh chnh xc gi tr ti nt cha, ng n. Nh trn ni, mt cch tin theo di qu trnh tnh ton l dng cc tham s alpha v beta ghi li cc thng tin theo di cn thit. Th tc AlphaBeta c bt u ti nt gc vi gi tr ca alpha l -vcng v beta l +vcng. Th tc s t gi quy chnh n vi khong cch gia cc gi tr alpha v beta ngy cng hp hn.

Thut ton AlphaBeta* Nu mc ang xt l nh (gc cy), t gi tr ca alpha l -vcng v beta l +vcng * Nu nh t n gii hn tm kim (n tng di cng ca cy tm kim), tnh gi tr tnh ca th c hin ti ng vi ngi chi . Ghi li kt qu * Nu nh mc ang xt l ca ngi chi cc tiu, Thc hin cc cng vic sau cho n khi tt c cc con ca n c xt vi th tc AlphaBeta hoc cho n khi alpha l bng hoc ln hn beta. - p dng th tc AlphaBeta vi gi tr alpha v beta hin ti cho mt con. Ghi nh li kt qu. - So snh gi tr ghi nh vi gi tr beta, nu gi tr nh hn th t beta bng gi tr mi ny. Ghi nh li beta * Nu nh mc ang xt l ca ngi chi cc i,

Thc hin cc cng vic sau cho n khi tt c cc con ca n c xt vi th tc AlphaBeta hoc cho n khi alpha l bng hoc ln hn beta. - p dng th tc AlphaBeta vi gi tr alpha v beta hin ti cho mt con. Ghi nh li kt qu. - So snh gi tr ghi nh vi gi tr alpha, nu gi tr ln hn th t alpha bng gi tr mi ny. Ghi nh li alpha.

Vit chng trnh cho thut ton AlphaBetaT pht biu trn ta s xy dng hm AlphaBeta bng ngn ng ta Pascal. Hm ny s c dng khai bo nh di, trong depth l su tm kim, INFINITY l gi tr v cng, thut ton tnh ton da trn th c hin ti pos l cc bin ton cc:

function AlphaBeta(alpha, beta, depth): integer; begin if depth = 0 then AlphaBeta := Eval { Tnh gi tr th c pos } else begin best := -INFINITY; Gen; { Sinh ra mi nc i t v tr pos } while (cn ly c mt nc i m) and (best < beta) do begin if best > alpha then alpha := best; thc hin nc i m; value := -AlphaBeta(-beta, -alpha, depth-1); b thc hin nc i m; if value > best then best := value; end; AlphaBeta := best; end; end; Li gi th tc AlphaBeta u tin vi su tm kim 4 v th c hin ti pos c dng nh sau: AlphaBeta(-INFINITY, +INFINITY, 4); Cng tng t nh thut ton Minimax ta gp hai mc 2 v 3 lm mt nh vic i du thch hp. So vi thut ton Minimax th trong thut ton AlphaBeta a thm hai bin alpha, beta lm hai mc ngng. Ta thy c mi khi best >= beta th thut ton khng thc hin tip vng lp, c ngha l n khng chu m rng tip nhng nhnh cn li na. Cc nhnh b ct b - v do ta s tit kim c thi gian. Vic ct b ny hon ton an ton vi nhng l do ta xt trn. Ta thy rng mi ln hm ny c gi th ch c tham s beta c dng so snh ct b, cn tham s alpha khng c dng. Tuy nhin khi p dng cng thut ton cho cy con th ta hon v hai gi tr alpha, beta cho nhau (v o c du), do alpha s c tc dng trong su sau, ri su sau na li n lt beta... Ni cch khc, mt gi tr ch lun nh hng n ngi chi cc i, cn gi tr kia li lun nh hng n ngi chi cc tiu. Chng l cc ngng ca h (ngng gia cc nc i c chp nhn v khng chp nhn). Nhng nc i cn quan tm phi nm lt gia hai gi tr ny. Dn dn khong cch gia hai gi tr alpha - beta cng ngy cng thu hp v dn n cc nhnh cy c gi tr nm ngoi khong ny nhanh chng b ct b (hnh 1.7).

nh gi thut ton AlphaBetaTrong iu kin l tng, thut ton AlphaBeta ch phi xt s nt theo cng thc: vi d chn vi d l

= =

Vi b = 40 v d = 4 ta c s nt phi xt l 2x402 - 1 = 3199. Nh vy trong iu kin l tng th s nt phi xt nh AlphaBeta (ch khong 3 nghn nt) t hn thut ton Minimax (hn 2,5 triu nt) l 2560000 / 3199 khong 800 ln. Cn vi b = 40 v d = 5 ta c s nt phi xt l 403 + 405/2 - 1 = 64000+10119-1 = 74118. S nt phi xt nh AlphaBeta t hn thut ton Minimax (hn 102 triu nt) l 102400000/74118 = 1382 ln. Di y l bng so snh s nt phi xt gia hai thut ton Minimax v AlphaBeta. Minimax su 1 2 3 4 5 6 7 S nt 40 1600 64000 2560000 102400000 4096000000 163840000000 S ln tng 40 40 40 40 40 40 AlphaBeta S nt 40 79 1852 3199 74118 127999 2964770 S ln tng 1 1.9 23.2 1.7 23.2 1.7 23.2 T l s nt Minimax / AlphaBeta 20 34 800 1381 32000 55262

8

6553600000000

40

5120000

1.7

1280000

Ta c th nhn xt nh sau:

S ln tng s nt khi tng su ca Minimax lun l h s phn nhnh b, trong trng hp ny l 40. S ln tng ca AlphaBeta t hn nhiu: ch c 1.7 ln khi tng t d l sang d chn v 23.2 ln khi t d chn sang l - trung bnh ch tng khong hn 6 ln khi tng d S nt ca AlphaBeta tng chm hn rt nhiu ln so vi Minimax. T s nt phi xt gia hai thut ton ny cng cao khi d cng ln.

Cng thc tnh s nt cho thy s nt phi xt khi dng AlphaBeta t hn nhiu so vi Minimax nhng vn l hm s m v vn dn ti bng n t hp. Thut ton AlphaBeta hon ton khng chng c bng n t hp m ch lm gim tc bng n. Tuy trong thc t s nt phi xt (lng gi) thng nhiu hn trong iu kin l tng nhng n vn tit kim kh nhiu thi gian. Trong cng mt khong thi gian, thut ton AlphaBeta c th tm n su gp hai ln su tm kim bng Minimax. Hnh 1.8 l th so snh gia hai thut ton ny.

V d: Ta s xem xt thut ton AlphaBeta hot ng nh th no i vi cy tr chi nh trong hnh 1.9.

Cy ny c su bng 3 v h s phn nhnh bng 3. Cc th t kt lun (cc con s bn tri) c a ra nh sau: 1-2 Tm kim i xung di theo nhnh tri cho n l. y gi tr tnh thu c l 8. Gi tr u tin ny do ngi chi cc i c php chn trong ba gi tr nhnh ny m bo rng l kt qu thu c s t nht l bng 8. iu lu ny c bc 2 ghi li. 3-5 chc chn khng cn c im no cao hn 8, ngi chi cc i phi xt c hai th c cn li v thu c cc gi tr 7 v 2. Do n y kt lun chnh xc im cao nht c th t c cy con l ng bng 8. 6. Leo ln mt tng cy. y l cc nc i ca ngi chi cc tiu. Ta khng hi vng anh ta cho ngi chi cc i c nhiu im nn c th tm kt lun mc ny l s t c nhiu nht l 8 im. 7-8. xem ngi chi cc tiu cn la chn no tt hn (v ti t hn cho ngi chi cc i) ta phi xem xt c hai nc i cn li. Nc i cn li u tin dn n gi tr lng gi tnh l 9 - mt gi tr ln hn 8. Nh vy nhnh gia l ti t hn cho ngi chi cc tiu. n y vic ct b c thc hin - ng hng ngi chi cc i vi ti c im khi c sn la chn thp hn cho anh ta (l 8). iu ny cng dn n khng cn thit phi xt hai nt cn li - ng no nhnh gia cng ti t ri v ngi chi cc tiu s khng chn n i. 9-14. Ngi chi cc tiu cn phi kho st tip la chn cui cng. Cch lm tng t nh phn trn. y phi lng gi c ba nt cy v kt lun cui cng c a ra l ngi chi cc i i gii lm th ch t c 4 im.

15.

Nh vy nh vic kho st nhnh cy bn phi ngi chi cc tiu thy rng nu chn i theo nhnh ny th ngi chi cc i ch c c 4 im thay cho 8. 16. By gi ta c th kt lun mc trn cng. Mc ny l ca ngi chi cc i. Anh ta thy rng nu chn i theo nhnh tri th c 4 im. Nh vy anh ta chc chn im ca mnh s t nht l 4 ri. xem liu c th t c im cao hn na hay khng cn phi xem xt hai nhnh cn li. 17-30. Tng t nh phn trn, ta kt lun nhnh gia s mang li cho ngi chi cc i 5 im. 31. Cng tng t nh kt lun 16, y ta kt lun kh quan hn l ngi chi cc i cm chc 5 im v c th cn cao hn. 32-38 Ta kt lun c rt nhanh l cy con bn phi ch cho "thu hoch" nhiu nht l 3 im - mt im s qu km do thut ton khng bun xem xt cc trng hp cn li na. Do tit kim c 6 nt khng cn phi lng gi v cng khng phi sinh nc i cho hai trng hp. 39. Kt lun cui cng l im cao nht m ngi chi cc i c th thu c l 5 im nh chn i theo nhnh gia.

VII. Hng ci thin vic ta nhnh ca thut ton AlphaBetaThut ton AlphaBeta ni chung gip chng ta tit kim nhiu thi gian so vi Minimax m vn m bo kt qu tm kim chnh xc. Tuy nhin lng tit kim ny khng n nh - ph thuc vo s nt m n ct b. Trong trng hp xu nht thut ton khng ct c mt nhnh no v phi xt s nt ng bng Minimax. Ta cn y mnh vic ct b nh y nhanh s thu hp ca ca s tm kim alpha - beta. Ca s ny c thu hp mt bc khi gp mt gi tr mi tt hn gi tr c. Khi gp gi tr tt nht th ca s ny thu hp nht. Do nu cng sm gp gi tr tt nht th ca s cng chng thu hp. Nh vy phi lm sao cho cc nt l c sp xp theo trt t t cao xung thp. Trt t ny cng tt bao nhiu th thut ton chy cng nhanh by nhiu (cc cng thc v s nt phi lng gi trong iu kin l tng trn tnh c vi trt t l tt nht). Ta s tr li phn ny trong mt chng ring.

Tng kt chng 1Chng ny trnh by nhng kin thc chung v tr chi c, cc nh ngha v th no l cy tr chi. Do bng n t hp qu ln ca cy tr chi m c ngi v my khng th (v khng bao gi) c th tm kim vt cn (ht mi kh nng). Do phng php tm kim duy nht l ch tm kim n mt su gii hn no v chn nc i dn n mt th c c li nht cho mnh. Do phi tnh c kh nng chng tr ca i phng nn ta khng dng c cc thut ton tm kim thng thng. Phi dng mt thut ton tm kim ring cho cy tr chi. l thut ton Minimax v ci tin ca n l AlphaBeta.

Tuy c hai thut ton u khng trnh c bng n t hp nhng AlphaBeta lm chm bng n t hp hn nn c dng nhiu trong cc tr chi c.

Bi c S LC V LCH S CC CHNG TRNH CHI C Vo nm 1950, Alan Turing - mt nh nghin cu ngi Anh i tin phong trong lnh vc my tnh s, vit chng trnh chi c u tin. Vo lc , Turing phi vit v chy chng trnh ca ng bng... bt ch v giy. Chng trnh , cng nh ch nhn ca n, chi c rt ti, nhng t c mc ch: cho thy my tnh c th chi c c. Cng vo nm , Claude Shannon vch ra mt chin lc cho my tnh chi c tt. Nhng vo nhng nm 1950 tc my tnh rt chm nn khng ai dm tin on liu my tnh c th thng con ngi c khng, d trong cc tr chi n gin nh tr Checker. Nm 1958, mt chng trnh chi c ln u tin h c i phng l con ngi. Ngi thua l mt c th k ca chnh i lp trnh ra n, c cha bao gi chi c trc v c dy chi c ch mt gi trc cuc u. i vi ngy nay chin cng ny tht nh nhoi, nhng n cho thy tri thc c th c a vo trong mt chng trnh chi c. Lng tri thc ny c o chnh xc bng mt gi hc chi. Sau chin thng , mt s ngi trong nhm lp trnh c u tin tin on rng vo nhng nm 60 s c chng trnh chi c c lit vo hng ng kin tng th gii. Vo nhng nm cui ca thp k 60, Spassky tr thnh kin tng c th gii v cc chng trnh chi c chim c nhng th hng cao trong hng ng nhng ngi chi cao cp. Nhng nhiu ngi cho rng my tnh s khng bao gi c th gii quyt c nhng nhim v thng minh, khng th t c chc V ch c th gii. Li tin on ny c nhc li mt ln na vo nhng nm 70, lin quan n mt cuc nh cc gia David Levy, mt kin tng quc t ngi Anh (theo phn loi ca Lin on c quc t cc ng cp cao bao gm: Kin tng quc t, i kin tng v V ch th gii) v John McCarthy, mt nh nghin cu trong lnh vc tr tu nhn to. Li thch u c a ra vo nm 1978. Trn u c din ra v chng trnh c tt nht thi , CHESS 4.7 b Levy h trong trn u c nm vn ti Toronto vi thnh tch ba vn ngi thng, mt ho v mt my thng. Levy khng ch chin thng m cn t ti s tin nh cc 1000 bng. Nu nh mc ch ca cuc nh cc l lm cho nhng nh nghin cu phi ngh k trc khi tin on n ngy thng li, th ln nh cc ny cho thy: mc d tin on sai trong nhng nm 1958-1968 v 1968-1978, cc chuyn gia chng trnh c li tip tc tin on tip rng my tnh s t n v ch c th gii trong thp k tip theo. Nhng mt ln na, vo nm 1988, V ch c th gii vn l con ngi.

Trong nm tip theo, Deep Thought, mt chng trnh c mnh nht t xa n nay chin thng mt cch d dng Kin tng Quc t Levy. B no ca Deep Thought c 250 chip v hai b x l trong mt bng mch n, n c kh nng xt 750.000 th c trong mt giy v tm trc c n 10 nc. Cng trong nm , n l my tnh u tin h c mt i kin tng (Bent Larsen). Deep Thought tr thnh mt trong mt trm ngi chi c mnh nht th gii. Nhng trong trn u din ra vo nm 1989 gia nh V ch th gii Garry Kasparov v Deep Thought th n b nh v ch bp. Cc li tin on li n nh cc ln trc. ba ln cc nh nghin cu tin on: 'trong thp k ti'. Nhng ln ny h li sa li l: 'trong 3 nm ti'... Trong nm 1993, Deep Thought h Judit Polgar - lc l i kin tng tr nht trong lch s v l ngi ph n chi hay nht th gii, trong trn u 2 vn. Trong nm 1996, Deep Blue (tn mi ca Deep Thought v lc ny n thuc hng IBM) l mt my tnh song song c 32 b x l vi 256 mch tch hp c ln, kh nng xt t 2 n 400 triu nc i mi giy) thng Gary Kasparov trong vn u tin ca trn u 6 vn, nhng li thua trong ton trn (vi t s my thng 1, ho 2 v thua 3). Cui cng ch m mi ngi ch i ti, nhng sau 9 nm t li tin on cui v 39 nm t lc c chng trnh chi c u tin, Deep Blue chin thng nh ng kim V ch th gii Garry Kasparov vo thng 5/1997 trong mt cuc chin di y kh khn, vi t s st nt 2 thng, 1 thua v 3 ho. Phm Hng Nguyn, su tm, tng hp v dch t Internet

[1] "ngm" c cc thut ton Minimax v AlphaBeta c th cn nhiu thi gian. Nu cm thy kh, cc bn c th xem nhanh phn ny hiu tng ri chuyn sang chng sau vit chng trnh chi c. Sau quay li chng ny hiu k hn v cc thut ton . Copyright 2002, Phm Hng Nguyn T VIT CHNG TRNH C TNG Tc gi: Phm Hng Mc lc Chng 1 Nguyn

Chng 3

Chng 2 C TNG - PHIN BN U TIN (VERY SIMPLE CHINESE CHESS PROGRAM - VSCCP 1.0)

I. Gii thiuTr chi C Tng (tn phin m Trung Quc XiangQi, tn ting Anh Chinese Chess) l mt minh ho rt tt cho bi ton tm kim trn cy tr chi v p dng thut ton AlphaBeta trn cy ny nh th no. y l mt tr chi th v v tng i ph bin Vit nam, chu cng nh trn ton th gii. N to cm gic dng nh my tnh c th suy ngh v sc vi con ngi (thc t cho n nay n vn ch tnh ton m thi). C Tng l loi c c phc tp v rt nhiu mt tng ng vi c Vua. Trong phn ny, chng ti s gii thiu vi bn nhng kin thc c bn nht v mt chng trnh chi c phi nh th no. Cc chng trnh mu VSCCP (Very Simple Chinese Chess Program - Chng trnh C Tng rt n gin) cng ht sc n gin v c y trong cc ph lc.

II. Vit chng trnh chi c VSCCP 1.0 1. Biu din bn c v qun cBn c trong tr chi c Tng l mt bng ch nht bao gm 9 ng dc v 10 ng ngang. Cc qun c chia lm hai bn ng ti cc giao im ca cc ng. Bn c v v tr khi u cc qun c nh hnh 2.1. Cch n gin nht biu din mt bn c trong my tnh l ta dng mt mng hai chiu, kch thc 9 x 10: piece: array[1..10, 1..9] of byte

Mng trn hot ng tt nhng c ci bt tin l ta phi dng ti hai ch s truy cp vo mng (v d v tr qun Pho gc trn bn tri (ct 2, dng 3) l piece[3, 2]). Mt ci tin nh l ta dng mng mt chiu nh sau: piece: array[1..90] of byte Truy nhp n v tr qun Pho gc trn bn tri lc ny l piece[20].

Cc ca mng s cha nhng gi tr khc nhau cho bit l qun c g. Mi qun c s c gn mt m s khc nhau nh bng di y. Cc ch trng (khng c qun c) s c in k hiu trng (EMPTY): Qun c Tt (Cht) S Tng M Pho Xe Tng Trng K hiu PAWN BISHOP ELEPHANT KNIGHT CANNON ROOK KING EMPTY Gi tr 1 2 3 4 5 6 7 0

Ngoi mc ch gn mi qun c mt m s phn bit, m ny cn gip ta c lng s b tm quan trng ca qun c . Nh vy, lc khi u, cc trong mng s c gn cc gi tr qun c nh khai bo const (trong Pascal) nh di, trong BOARD_SIZE (kch thc bn c = 90) l mt hng s c nh ngha trc : piece: array[1..BOARD_SIZE] of byte = ( 6, 4, 3, 2, 7, 2, 3, 4, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 5, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 5, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 4, 3, 2, 7, 2, 3, 4, 6); n y, bn c cn cha c thng tin phn bit mt qun c l ca bn no. Ta c th ci tin thay cho kiu byte ca mng piece l mt bn ghi nhm lu thm cc thng tin ny. Chng ti xin gii thiu mt phng php n gin l dng thm mt mng na mng color, lu cc thng tin v bn. Hai bn c gn k hiu v m nh bng di. Nhng ch trng s dng cng k hiu trng EMPTY. Bn en Trng Trng K hiu DARK LIGHT EMPTY Gi tr 1 2 0

Ta li c thng tin v bn c khai bo khi u tng t: color: array[1..BOARD_SIZE] of byte = (1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2); bit bn no ti lt i, ta dng mt bin ton cc side cha mt trong hai gi tr LIGHT v DARK. Mt bin ton cc khc xside s c sn gi tr ngc vi side tin tnh ton (v d nu side = LIGHT th xside = DARK). Khi ti phin i phng i, ta

cn o ngc gi tr trong c side v xside bng cc lnh nh sau (ch l LIGHT+DARK = 3): side := xside; xside := 3 - xside; Ngoi ra, ta cn khai bo bin computerside cng ch c mt trong hai gi tr LIGHT v DARK nhm cho bit bn no l my. hin bn c, phng php n gin nht l hin ch text (vn bn). Tuy cch ny trng xu v thng khng dng trong cc chng trnh c trn th trng nhng n c cc u im ni tri sau:

Vn hin c bn c rt y , trc quan, d hiu, cho php theo di v thi u bnh thng. Rt n gin v tin cy. Bn s nhiu thi gian tm hiu v pht trin giao din, dn sc cho vic quan trng hn - lm chng trnh chi hay hn. Giao din ho ch cn thit lc hon chnh - lc bn "ng gi" chng trnh. Vic hin thm cc thng tin kim tra, tm li rt d dng. R rng vic dng hai th tc c sn ca Pascal l gotoxy v write th d, nhanh v m bo hn cc hm ho. D chuyn i h my v h iu hnh. C th bn s mun th chy trn nhng my tnh c nn tng khc nh my mini, macintosh, h iu hnh Windows 3.1, Win95, Win98, WinNT, System7, UNIX... Bn c th t pht trin giao din ho v ci chut theo mnh.

Qun c c biu din bng mt ch ci vit hoa ng u tn ca n. Qun hai bn s c mu khc nhau. Do qun Tng v Tng c cng ch ci u T nn trnh nhm ln ta dng ch V (Voi) biu din qun Tng. Tuy qun Tt v Tng cng c cng ch ci u nhng ta khng s nhm do Tt khng th nhp cung bn mnh c. N ch c th "tip chuyn" Tng i phng, nhng lc ny hai bn li phn bit c nh mu (cc phng php khc l dng ch ci u tn ting Anh: P-Tt, E-Tng, N-M, B-S, R-Xe, C-Pho, K-Tng; hoc theo qui nh ca Lin on c Vit Nam: Tg-Tng, SS, T-Tng, X-Xe, P-Pho, M-M, C-Cht). Ta s hin bn c dng nh hnh 2.3. Ch cch nh k hiu cc v tr trong bn c bng ch v s ging nh bn c Vua. hin mt qun c, ta vit mt th tc DrawCell vi tham s l v tr bn c. Ngoi ra, n cn mt tham s na cho bit s hin mu nn ca qun c vi mu bnh thng NORMAL (s c nn en) hay mu khc SELECT (s c nn xanh sm) th hin qun c c chn (phc v cho chn v i qun ca ngi chi). procedure DrawCell(pos, mode: byte); Nh vy, hin ton b bn c ta ch cn gi mt vng lp for l xong: for i := 1 to BOARD_SIZE do DrawCell(i, NORMAL);

2. Sinh nc iMt trong nhng vic quan trng nht my tnh c th chi c c l phi ch cho n bit mi nc i c th i c t mt th c. My s tnh ton chn nc i c li nht cho n. Cc yu cu chnh i vi mt th tc sinh nc i l:

Chnh xc (rt quan trng). Mt nc i sai s lm hng mi tnh ton. ng thi chng trnh c th b trng ti x thua lun. Do s lng nc i sinh ra ln, lut i qun nhiu v phc tp nn vic kim tra tnh ng n tng i kh. y (rt quan trng). Sinh c mi nc i c th c t mt th c. Nhanh. Do chc nng ny phi sinh c hng triu nc i mi khi my n lt nn gim thi gian sinh nc i c ngha rt ln.

Sinh nc i l mt thut ton vt cn. My s tm mi nc i hp l c th c. My phi sinh c t nhng nc i rt hay cho n nhng nc i rt ng ngn (nh y Tng vo v tr khng ch ca i phng). Ta hnh dung ngay th tc sinh nc i Gen s c y nhng vng lp for, cc cu lnh kim tra if v r nhnh case, trong cc php tnh kim tra gii hn chim mt phn ng k. Th tc ny lun sinh nc cho bn ang ti lt chi cn c vo ni dung ca bin side. y l mt trong nhng th tc phc tp v d sai nht. Mt nc i c hai gi tr cn quan tm. l im xut pht (from) v im n (dest). Ta s khai bo mt cu trc move nh sau dng nhng ni cn n d liu nc i. type move = record { nh ngha cu trc nc i }

from, dest: byte; end;

Kim tra gii hn bn c V d c mt qun Xe nm s 84 (trong mng piece). By gi ta s sinh th mt nc i sang tri mt cho n. Nc i sang tri mt c chuyn thnh s 83 l mt v tr cng hng vi xut pht nn c chp nhn. Mt nc i khc cn phi xem xt l sang tri ba - 81. 81 tuy c trong bn c nhng khc hng nn khng c chp nhn. Nh vy, mun bit ca nc i sang tri c c php khng ta phi kim tra xem n c cng hng vi xut pht khng. Vic kim tra thc hin bng cch chia cho 9 (kch thc ca mt dng) v ly phn nguyn (trc li phi chuyn th t v gc l 0 bng cch tr i 1). Ta thy ((83-1) div 9) = ((84-1) div 9) nn 83 c chp nhn; trong khi do ((81-1) div 9) ((84-1) div 9) nn kt lun l nc i n 81 khng hp l (hnh 2.5).

Cc nc i va sinh ra s c a vo danh sch nc i nh gi th tc Gen_push. Th tc ny c hai tham s l v tr xut pht ca qun c s i v ni n dest ca qun c . Di y l on chng trnh dng sinh nhng nc i sang tri ca mt qun Xe, trong x l v tr ca qun Xe ny . i := x - 1; { Nc sang tri u tin } while ((i-1) div 9) = ((x-1) div 9) do begin if ( th i l trng) or ( th i c qun i phng) then gen_push(v tr ca Xe, v tr ang xt); if th i khng trng then break; { Kt thc qu trnh sinh nc i sang tri } i := i - 1; { Xt tip v tr bn tri } end; Vic sinh nhng nc i theo chiu khc cng tng t (v d sinh nc i theo chiu ng ta ch cn cng hoc tr mt bi s ca 9) nhng iu kin kim tra s khc nhau. Nh vy, chng trnh sinh nc i Gen c dng nh sau: for Xt ln lt tng qun c bn hin ti do case qunc of Xe: begin while Xt ln lt tt c cc t bn phi Xe cho n l tri bn c do begin if ( ang xt l trng) or ( ang xt cha qun i phng) then gen_push(v tr ca Xe, v tr ang xt) if ang xt khng trng then break; end; while Xt ln lt tt c cc t bn tri Xe cho n l phi bn c do ... while Xt ln lt tt c cc t bn trn Xe cho n l trn bn c do ... while Xt ln lt tt c cc t bn di Xe cho n l di bn c do ... end; { Xong qun Xe } Pho: ... Phng php ny c nhc im l chng trnh phi vit phc tp, cng knh, kh tm li nhng kh nhanh.

Trong chng trnh mu VSCCP, chng ti gii thiu mt k thut khc c tn gi l "hp th" (mail box - do cc bng ca n c dng cc hp phn th). Mc ch chnh ca k thut ny l nhm gim bt cc php kim tra vt gii hn bn c v lm n gin chng trnh. Mu cht l thay cho bn c c kch thc bnh thng 9x10 = 90, ta dng mt bn c m rng, mi chiu c thm 2 ng na (bn c mi c kch thc 13x14 = 182). Cc ng vi cc ng bao m rng u c gi tr -1, tc l cc gi tr bo vt bin. Cc nc i trn bn c 9x10 c chuyn tng ng sang bn c ny. Nu mt nc i c sinh ra li ri vo mt trong hai ng bao th c ngha n ri ra ngoi bn c ri, phi b i v ngng sinh nc v pha . S d c n hai ng bin (ch khng phi mt) do qun M v Tng c th nhy xa n hai (hnh 2.6).

Vic chuyn i to thc hin nh hai mng. Mng mailbox90 dng chuyn t to bn c thng sang to bn c mi. Mng ng vi bn c mi - mailbox182 dng kim tra cc nc i vt qu ng bin v d liu chuyn tr li to bnh thng. V d, nu v tr qun Xe nm s 84 (trong mng piece) nh hnh 2.5, th khi i sang bn c m rng s thnh v tr mailbox90[84] = 148. C ngha l n ng vi th 148 ca mng mailbox182. By gi ta s sinh th mt nc i sang tri mt cho qun Xe ny. Vic sinh v kim tra s c thc hin trong bn c m rng, nc i mi l s 148 - 1 = 147. Do mailbox182[147] = 83 -1 nn nc i ny c chp nhn. S 83 cho bit kt qu sang tri mt l v tr 83 trong bn c bnh thng. Tuy nhin, nc i sang tri ba , c s 148 - 3 = 145 v mailbox182[145] = -1 cho bit l mt nc i khng hp l. Chng trnh cng cn kim tra s nc i ti a theo mt hng ca qun c ang xt. Ch c qun Pho v Xe c th i n 9 nc i, cn cc qun khc c nhiu nht l 1. Vic i mt qun sang v tr mi thc cht l ta thay i to ca n bng cch cng vi mt hng s (dng hoc m). trn ta thy qun Xe sang tri mt nc ta phi cng v tr hin ti vi -1. sinh mt mi theo hng dc, ta phi cng vi +13 hoc -13 (ch , vic sinh nc v kim tra hp l u da vo mng mailbox182 nn gi tr 13 l kch thc mt dng ca mng ny). sinh cc nc i cho ta phi cng tr vi mt hng s khc. Ta nn lu cc hng s ny vo mng offset c 2 chiu. Mt chiu da vo loi qun c nn ch s c nh t 1 n 7. Chiu cn li l s hng i ti a

ca mt qun c. Qun c c nhiu hng nht l qun M c ti 8 hng nn chiu ny c khai bo ch s t 1 n 8. Cc qun c c s hng t hn s c in 0 vo phn tha. Ch l nc i qun Tt ca hai bn khc nhau hng tin. tit kim ta ch lu nc tin ca Tt en, cn nc tin ca Tt trng ch n gin ly ngc du.

Kim tra v tr c php n Vic chuyn to t bn c thng sang bn c m rng ch gip ta loi b c cc nc vt qu bin. Ta cn phi kim tra mt s gii hn khc. V d nh Tng v S khng th i ra ngoi cung, Tng ch c php 7 im c nh pha bn mnh, Tt ch c php tung honh trn t i phng, cn pha bn mnh cng b gii hn ngt ngho mt s ... thc hin nhng php kim tra ny, ta dng mt mng l legalmove ng vi tng trn bn c s cung cp cc thng tin ny. kim tra mt qun c c c php khng, ta dng mt mt n bt Maskpiece m tu theo tng qun s c gi tr khc nhau. Nu cn kim tra c bit trng vi mt n ny c t l 1 th qun c c php n y.

V d, s 3 c gi tr legalmove[3] = 5 (chuyn thnh s nh phn l 00000101) cho bit cc qun c c php i n l Tng, Xe, Pho, M. Ngoi ra, ta cn phi kim tra nc b cn (i vi Tng v M) v x l cch n qun ca qun Pho nh mt trng hp c bit. Nh vy, tng th sinh cc nc i cho mt qun c c dng nh sau: p := piece[i]; { Sinh nc i cho qun c p v tr i } for j := 1 to 8 do begin { S hng i ti a } if offset[p,j] = 0 then break; x:=mailbox90[i]; { Chuyn sang bn c m rng} if p in [ROOK, CANNON] then n := 9 else n := 1; for t:=1 to n do { S nc c th i theo mt hng} begin

if (p=PAWN) and (side=LIGHT) then x := x - offset[p, j] else x := x + offset[p, j]; { Nc i mi } y := mailbox182[x]; { Chuyn v to bnh thng } if side = DARK then t := y else t := 91-y; if (y=-1) or { Ra ngoi l ? } ((legalmove[t] and maskpiece[p])=0) { c php v tr ny khng ? } then break; { Thot nu nc i khng hp l } { Kim tra nc cn vi Tng, M v x l Pho y } ... Mt vn na l lut hai Tng khng c i mt trc tip vi nhau. Vic kim tra c thc hin nh hm kingface. Hm s tr li gi tr true nu nc va i gy h mt Tng. Hm ny c th c t trong th tc sinh nc Gen. Tuy nhin n gin hn, ta t n trong th tc gen_push, nu h mt Tng th tc ny s khng a nc i vo danh sch cc nc i.

3. nh gi mt th cnh gi mt th c l mt trong nhng nhim v quyt nh chng trnh chi c ca bn c l "cao th" hay khng. Cn c vo mt th c my s gn cho n mt im s (lng gi tnh) nh gi tt - xu. Nh im ny my mi c th so snh cc th c vi nhau v bit chn nc i tt nht. y l mt nhim v rt kh khn v phc tp do khng tn ti mt thut ton tng qut v thng nht no tnh im c. im ca mt th c da trn rt nhiu yu t m kh c th s ho ht c nh ph thuc vo s lng v gi tr cc qun c hin ti, ph thuc vo tnh hm, tnh bin, th cng, th th ca tng qun c cng nh c cc din trn u. V d, mt cp M giao chn, c th st cnh tin qun v ta lng phng th thng c gi hn hai M ng ri. Nhng cng c lc hai M ng ri li tt hn hai M giao chn khi M ny li cn M kia trong mt th trn no . Ta cng bit rng, "lc nc hai Xe nh b ph, gp thi mt Tt cng thnh cng", th nhng s ho iu ny qua hm lng gi qu l mt iu kh qu sc. Chng ta bt u vi vic cng nhn cc gi thuyt sau: 1. Ta c th biu din cht lng mt th c bng mt con s. V d, con s c th l nh gi ca ta v xc sut chin thng, nhng i vi a s chng trnh th con s khng c g c bit, n ch l con s m mc ch chnh l so snh c vi nhau. 2. Chng ta nn o cht lng ca mt th c tng t nh php o ca i phng (do , nu ta coi l t c mt th tt th i phng ca ta phi thy l th xu i vi h v ngc li). iu ny tuy khng tht ng lm, nhng n gip cho thut ton tm kim ca ta lm vic tt v trong thc t cng kh gn vi s tht.

Trong chng ny chng ta ch ci t phng php n gin nhng c bn nht: lng gi da trn c s gi tr ca tng qun c. Cch tnh ny s ly tng gi tr cc qun c hin c ca bn mnh tr i tng gi tr cc qun c hin c ca i phng. Do , mt th c ny hn th c kia ch n cn nhiu qun bn mnh hn, nhiu qun gi tr cao hn cng nh c bt c nhiu qun v qun gi tr cao ca i phng hn khng. Cch lm ny b qua mt nhng ngh thut, chin lc chi c (m l nhng im nh gi mt ngi l gii c hay khng). Cc qun c c trin khai khng theo mt chin lc chung no ht (v nh). N cn to cm gic nh c "v", ngha l ch nhm nhm s h ca i phng l "n" ngay m khng cn bit n hu qu (iu ny khng hn ng, l do s trnh by di). Tuy nhin phng php tnh im ny c nhng u im sau:

L cch tnh im c bn nht, ng vai tr ch o trong im ca mt th c. N l c s ca a s hm nh gi. Ta cng c th nhn thy trong phn ln thi gian din ra trn u, hai bn u tm cch tiu dit qun ca nhau. Cc phng n, chin lc thng ch c tnh nh nhng im cng thm vo v ng gp mt t l nh trong tng s im ca mt th c. Vic ch nhm "v" qun ca i phng nhng sau khi suy ngh su nhiu nc cng tr thnh "cao c" ri y. Ni cho cng, mc ch chnh ca chng ta cng l "v" bng c qun c gi tr cao nht - Tng i phng. L cch tnh n gin nht v nhanh nht. Do tnh nhanh, ta c th tng thm su tm kim. Vic tng thm su li gip my c ci nhn xa hn, "cao c" hn v nhiu khi khc phc c nhc im ca cch tnh n gin.

im cc qun c c nh gi theo kinh nghim v cho bit s tng quan gia cc qun c. Sau y l im tng qun m mi ngi thng chp nhn: Qun c Tt S Tng M Pho Xe K hiu PAWN BISHOP ELEPHANT KNIGHT CANNON ROOK im 1 (2 nu qua sng) 2 2 4 4.5 9

Bn cng c th theo bt k thang im no khc tu theo hiu bit v s thch ca mnh. V d nh trong lng c Vit nam thng cho im cc qun hi khc (xem bi c di): Tt - 1 (2 nu qua sng), S - 2, Tng - 2.5, M - 4.5, Pho - 5, Xe - 10. Trong chng trnh c ca chng ta, im c th ca tng qun c l cc s nguyn 10, 20, 20, 40, 45 v 90. Ta dng mt mng piecevalue lu im tng qun c. Cho im nh vy khng nhng vn gi nguyn c tng quan v trnh dng s thc (tnh chm) m ta cn c mt khong cch hp l gia cc im sau ny d dng thm nhng im b xung "thng" hoc "pht", tc l nhng im cn c vo nhng yu t

khc (v d cng l Pho nhng lc ch c 40 im do v tr "b", lc khc li c th n 85 do v tr Pho trng v ang e do Pho lng). Trong bn c, qun Tng l qun quan trng nht, d mt mi qun hoc t c th c no i na u khng c mt Tng v n dn n thua c. Do , Tng thng c cho mt im rt cao, cch bit nhiu ln so vi cc qun khc, m bo im tng ca cc qun cn li cng mi loi "thng", "thm" u khng bng c Tng. Trong chng trnh, ta cho n 1000 im. Hm lng gi tht n gin nh sau (ch l ta cha tng im cho Tt qua sng): function Eval: integer; const piecevalue:array[1..7]of integer=(10,20,20,40,45,90,1000); var i, s: integer; begin s := 0; for i:=1 to BOARD_SIZE do begin if color[i] = side then s := s + piecevalue[piece[i]] else if color[i] = xside then s := s - piecevalue[piece[i]]; end; Eval := s; end; Vn ci tin hm lng gi s c bn ring trong mt chng phn sau. Tham kho kin thc c Tng GI TR CA CC QUN C Khi nim gi tr ca cc qun c khng phi l mi i vi nhng ngi chi c t cc th k trc. T lu, lng c c cu nhn nh sc mnh ca cc qun ch lc l "Xe 10, Pho 7, M 3" hoc nh gi Xe l qun ch lc mnh nht bng cu "Nht Xa st vn" hay nh gi mt Tt qua h, sc mnh bng na con Xe (nht Tt h, bn Xa chi lc). Th nhng s nh gi nhn nh ny v sc mnh ca cc qun khng chnh xc v cng khng y . Do khi nim gi tr ca cc qun cn c xc nh r v hon chnh hn. Thng thng, theo thi gian mt vn c c chia thnh ba giai on: khai cuc, trung cuc v tn cuc. Trong ba giai on ny th trung cuc chim nhiu thi gian nht v c ngha n thng thua nhiu nht. Do cc nh gi qun c thng l cho giai on ny. Chng ta bit mi loi qun c hay mi binh chng c c im, tnh nng v tc dng khc nhau nn sc mnh ca chng cng khc nhau, gi tr ca chng cng khng ging nhau. Ngay bn thn mi qun c cng khng phi lc no sc mnh cng gi nguyn nh c. Khi ng v tr tt n pht huy tnh nng tc dng ti a khc hn vi khi n ng v tr xu, khng th pht huy tnh nng tc dng c, hay ch pht huy mc rt hn ch. Vy iu trc tin chng ta phi thy mi qun c c hai gi tr: gi tr vn c v gi tr bin ng. Gi tr vn c thng c gi l gi tr c bn (gi tr tnh), cn gi

tr bin ng c gi l gi tr tng i. Cc nh nghin cu l lun v c trao i thng nht vi nhau bng gi tr c bn ca cc qun nh sau: Nu ly Tt cha qua sng lm chun xc nh gi tr th n l qun km nng lc nht trn bn c. Khi cha qua sng n ch kim sot hay khng ch mi mt im trc mt n nn tm cho n c gi tr bng 1. Khi Tt qua sng, n khng ch n 2 hay 3 im trc mt v bn cnh (Tt bin ch khng ch c 2). By gi n mang gi tr tng i, phi thy n mnh hn lc cha qua sng nn gi tr lc ny ca n phi bng 2. i vi S, Tng l loi binh chng phng ng, c nhim v chnh l bo v an ton cho Tng, i lc chng cng tr gip cc qun khc tn cng. Trong giai on trung cuc, Tt i phng qua sng i c mt S hoc mt Tng. Do ngi ta nh gi S hoc Tng c gi tr bng mt Tt qua sng, tc l bng 2. Nhng v so snh nng lc gia Tng v S th thy Tng c phn c lc hn nn nh gi tr S l 2 th Tng phi l 2.5 mi cng bng. Qun M trn bn c c kh nng khng ch ti a 8 im. Mi bc nhy ca n vt c hai tuyn ng ngang hay dc. So ra th M cng mnh y nhng tc chin tm c ly ngn m thi. Nu so vi hai Tt qua sng cp k nhau th nng lc ca M khng hn bao nhiu, do nh gi tr c bn ca M 4.5 l va. Nn nh hai Tt cp k nhau khi qua sng phi c gi tr hn 4. Pho l binh chng tc chin tm xa rt c hiu qu. Trn ng dc, Pho khng ch ti a ch 8 im nhng n cn khng ch c c ng ngang. Mt khc Pho l qun c tnh c ng cao, n c th i mt bc vt n 9 tuyn ng. Nhng c li gn, nhiu khi Pho bt lc, khng lm g c khng ch i phng. Do so vi M th phi thy mi qun c mt s trng ring, sc mnh ca chng coi nh tng ng nhau. Th nhng trong giai on trung cuc qun s ca hai bn tng i cn nhiu, M i li d b cn tr, cn Pho th nhanh nhn hn, d pht huy nng lc hn nn gi tr c bn ca Pho phi hn M mt cht v bng 5. i vi Xe th r rng l mt binh chng c ng mnh nht, n khng ch ngang, dc ti a n 17 im. Nu em Xe i ly mt Pho v mt M ca i phng th thy c phn thit thi mt cht, cn i vi hai Pho th c th coi l cn bng. Do gi tr c bn ca Xe l 10. Cn Tng, bn thn n khng c sc mnh g nhiu d i khi n cng lm c nhim v tr gip cho cc qun phe n tn cng c kt qu. Th nhng gi tr c bn ca n th v cng to ln, khng mt qun no so snh c. Tt c cc qun u c th i, c th hi sinh nhng ring qun Tng khng th nh i m cng khng th hi sinh, v mt Tng l thua c. Do cng khng nn nh gi tr c bn ca Tng v nh cng chng c ngha g.

(Su tm)

4. X l mt nc i "th"Trong qu trnh tnh ton tm nc i tt nht cho mnh, my thng phi i "th" mt nc ri li tnh tip. Sau n s phc hi li nc i ny. Do qu trnh th - phc hi din ra rt nhanh v khng hin ra mn hnh nn my c th th hng chc triu ln mi khi n lt. Vic i th c thc hin nh gi hm Makemove. Vic khi phc nc i ny nh gi th tc UnMakemove. Nh vy, chng trnh thng xuyn thc hin cc cu lnh dng nh sau: while tt c cc nc i c th c t mt th c do begin Makemove(mt_nc_i); { i th mt nc } best := Tnh im ca nc i th ; UnMakemove; { phc hi nc i ny} Lu nc i c im cao nht; end; tnh c im ca nc i va thc hin, nhiu khi my li phi th i tip mt s nc na. C nh vy cc hm Makemove v UnMakemove c th c gi lng nhau rt su. Khi i th, hm Makemove phi lu li cc thng tin cn thit cho vic khi phc li sau ny. Cch n gin nht - lu li c bn c, khng dng c do cc thng tin phi lu qu nhiu. Thc cht, ta ch cn lu cc thng tin bao gm: im xut pht ca qun c, im n v loi qun c m n bt c (nu c). lu cc thng tin ny, hm s dng mt mng hist_dat cc bn ghi cha thng tin v con tr hdp c t chc nh mt ngn xp, ngha l nc i sau cng s c phc hi trc nht. Khi my i "th" cho mt bn mt nc, th nc sau s n lt i phng. Do hm ny cng phi thay i gi tr cc bin ton cc v bn i v i th side v xside (vic thay i ny l rt cn thit hm Gen sinh nc i cho ng bn ti lt). N cng tng bin ply ( su) thm 1 do dn su thm mt bc trn cy tm kim. Hm khi phc nc i th UnMakemove c nhim v l lm mi th ngc li vi hm Makemove. Mt vn ny sinh y l nu mt qun Tng b bt th c cn phi i "th" na khng. Nu mt mt Tng, vn c s kt thc ngay lp tc, do khng cn phi i th tip v nhnh cy tr chi b ct ti y d vn cha t n su tm kim ti a. Cn nu my i th tip, my s coi Tng nh mt qun bnh thng (d c gi tr rt

cao) v c th i qun c - n sn sng mt Tng min l ngay sau n li c Tng i phng (hnh 2.8). Ta buc phi ct nhnh nhng ni Tng b mt (hnh 2.9).

x l nhng trng hp ny, ta cn chuyn Makemove thnh mt hm boolean, tr li gi tr true nu nc i th ny li n c Tng i phng. Nu n c, hin nhin im s rt cao (c 1000 im) v khng cn phi tnh im cho nhng nhnh con na. Phn chng trnh i th c dng nh sau:

while tt c cc nc i c th c t mt th c do begin if Makemove(mt_nc_i) then { i th mt nc. Hm tr v gi tr true nu n c Tng i phng } best := 1000 - ply { im ca nc c nu n c Tng i phng} else best := Tnh im ca nc i th; UnMakemove; { phc hi nc i ny} Lu nc i c im cao nht end; Trong cc cu lnh trn c mt ch hi kh hiu: ti sao ta li cho nc n Tng l 1000 - ply m khng phi ng 1000? Bin ply l bin ch su tm kim. Nu khng c bin ny v trong trng hp Tng (bn my tnh) sp b bt d i bt c nc no th mi nhnh cy u tr v im -1000. Do my s chn nhnh u tin i. Nc i ny c th khng hay do chp nhn thua qu sm nh minh ho trn hnh 2.10. My nn chn nc thua lu nht hi vng i phng i "nhm" (cn nc cn tt) v ng tinh thn chin u hn.

5. Tm kim AlphaBetaTa thy chng trnh mu ca th tc AlphaBeta trong chng 1. Hm AlphaBeta ca VSCCP v c bn l ging nh vy, ch b i cc tham s pos (th c hin ti - y l gi tr ca hai mng piece v color) mt s hm do bin i trc tip vo cc mng ton cc piece v color (nh cc hm Makemove v UnMakemove m ta cp n trn) nn chng chnh l th c ang xt.

function AlphaBeta(alpha, beta: integer; depth: byte): integer; var i, best, value: integer; begin if depth = 0 then AlphaBeta := Eval else begin Gen; best := -INFINITY; i := gen_begin[ply]; { Khi u lp tt c cc nc } while (i < gen_end[ply]) and (best < beta) do begin if best > alpha then alpha := best; if MakeMove(gen_dat[i].m) then value := 1000-ply else value := -AlphaBeta(-beta, -alpha, depth-1); UnMakemove; if value > best then begin best := value; if ply = 0 then newmove := gen_dat[i].m; end; inc (i); end; { while } AlphaBeta := best; end; end; Nc i tt nht (im cao nht) su 0 (ply = 0) c lu vo mt bin ton cc newmove. My s chn i theo nc ny. Th tc gi hm AlphaBeta ch c cc lnh n gin nh di. N gi hm ny vi cc gi tr khi u thch hp bt u tm kim. (***** THINK - MY TNH TNH NC I *****) procedure ComputerThink; { Tm nc i tt nht cho my } begin AlphaBeta (-INFINITY, INFINITY, MAX_PLY); end;

6. X l iu khin ca ngi chiNgi chi dng bn phm iu khin cc qun bn mnh khi n lt: dng cc phm mi tn iu khin con tr mn hnh chy n qun c thch hp, bm phm Space hoc Enter ch mnh s i qun ny, chuyn con tr n ch mi v vn bm phm Space hoc Enter ch l ch n. Ngi chi c th ngng chi gia chng bng cch bm phm ESC. Hm x l iu khin ca ngi chi GetHumanMove phi lm nhim

v x l cc phm iu khin v tr v nc i c chn trong bin ton cc newmove. Hm cng x l hai bin ton cc x, y l to ca con tr mn hnh. Mt chng trnh chi c tt cn phi gip ngi chi khng i sai lut. Cc nc i khng hp l (d c hay v tnh) u cn c pht hin v ngn cm. Cch lm th c nhiu, y chng ti gii thiu phng php n gin nht s dng hm sn c: hm Gen. u tin, ta gi n sinh ra tt c nhng nc i c th c t th c hin ti vi bn i l ngi - chnh l cc nc i hp l. Mi khi ngi chi chn mt nc, my s kim tra xem n c trong danh sch cc nc i hp l khng. Nu c, my s chp nhn nc i v thot khi hm GetHumanMove. Nu khng n s i ngi chi phi chn li. function GetHumanMove: boolean; const x: byte = 5; y: byte = 5; var ch: char; selecting, from, t, i: integer; begin Gen; { Dng kim tra nc i hp l ca ngi chi } GetHumanMove := false; selecting := 0; while true do begin MoveTo(x, y); ch := ReadKey; case ch of #13, ' ': begin { nh du/chn mt nc i } t := x + (y-1)*SIZE_X; if selecting=0 then begin { Ngi chi nh du } if color[t]=side then begin selecting:=1; from := t; DrawCell(t,SELECT); end; end else begin { Ngi chi ch ra nc i n } if t from then DrawCell(from, NORMAL); if color[t]=side then begin from := t; DrawCell(t, SELECT); end else begin newmove.from := from; newmove.dest := t; { Kim tra xem nc i va chn c trong danh sch cc nc i hp l khng. Nu c s thot khi hm ny n lt my } for i := gen_begin[ply] to gen_end[ply]-1 do if (gen_dat[i].m.from = from) and (gen_dat[i].m.dest = t)then exit; { Nu nc khng hp l, hin li qun xut pht, ngi chi chn nc i khc }

DrawCell(from, SELECT); end; end; end; #27: { X l cc phm khc y } ...

7. Cp nht mt nc iSau khi "suy ngh" xong, n lc my hoc ngi phi thc hin mt nc i thc s. Chng trnh phi cp nht tt c cc thng tin cn thit lin quan n nc i v hin hnh nhng thay i. Vic ny c thc hin nh gi hm UpdateNewMove. N c kh nhiu ch ging nh hm Makemove nhng n gin hn. Tham s quan trng nht m n quan tm l nc i c ngi hoc my chn i (t trong bin ton cc newmove). Hm cng ng thi s kim tra tnh trng thng c ca bn va i (n c Tng i phng) v tr v gi tr true nu c mt bn thng. Vng lp chnh s cn c vo gi tr chn l ny ngng chi.

8. Vng lp chnh x l tr chiSau khi c cc hm v th tc cn thit, n lc ta lin kt chng li thnh mt tr chi hp dn. Trong phn thn chng trnh chnh, ta s bt gp vng lp repeat. Vng lp ny s lp mi cho n khi ngi chi bm phm ESC hoc mt bn thng c. Tu theo bn ti lt n s gi hm x l thch hp cho ngi hoc my. Sau khi nhn kt qu n lo cp nht cc s liu cn thit, chuyn i phng thnh ngi n lt chi. repeat if side=computerside then ComputerThink else if GetHumanMove then break;{ Thot nu ESC c bm} side := xside; xside := 3 - xside; { i bn ti lt chi } until UpdateNewMove;

9. Hin thng tinn y, chng trnh sn sng sc vi bn ri y. Nhng c th bn mun bit thm mt vi s liu nh: thi gian mi ln my ngh, h s phn nhnh ca cy tr chi, s th c n phi tnh gi tr, kh nng xt th c trung bnh ca my l bao nhiu cng nh nhiu s liu khc. Vic quan st cc s liu ny cn gip ta bit cc ci tin, sa i v sau c thc s hot ng tt khng. Cch ly s liu rt n gin, ta khai bo thm mt s bin ton cc, thm mt s lnh v

cui cng in chng ra mn hnh ch thch hp. Mt s thng tin rt kh ly chnh xc, ta s tm bng lng vi nhng s liu gn ng vy. bit mi ln ngh, my lng gi bao nhiu th c - mt thng tin v cng quan trng, ta khai bo mt bin ton cc evalcount v mi khi hm Eval c gi ta li tng gi tr ca n thm mt. Ta cng cn bit my ngh trong bao lu bng cch khai bo cc bin tnh thi gian. Thi gian c o cn c vo s xung ng h v tr tuyt i $40:$6c trong b nh. T y ta tnh c thi gian tnh bng giy nh chia cho 18.23 - s xung trong mi giy. Khi bit c thi gian tiu tn c th c tnh tc lng gi ca my bng cch chia tng s nt lng gi cho thi gian tiu tn. Tt nhin thi gian tiu tn ny ngoi thi gian tiu cho hm lng gi cn phi chi cho nhiu th khc nh chy cc lnh ca hm Gen, hm AlphaBeta... nn cch lm ny ch cho bit con s c lng m thi. c c h s phn nhnh chnh xc ta phi thng k qua mt s d liu ln. Ch rng, s nhnh con c sinh ra mi ln gi hm Gen c o bng hiu gen_end[ply]gen_begin[ply]. Do h s phn nhnh c o bng cch ly tng cc nhnh con ny ri chia cho s ln gi hm Gen (o bng bin gencount). Cng chi lu, cc d liu o c cng ln, kt qu s cng chnh xc. Ngoi ra, bn c th cn mun hin ch gii nc va i ca my d theo di v xem xt im t c. Hy ch cch tnh cc con s ny (ch s 65 l m ca ch ci A, 9 l s ct ca mt dng bn c). Sau y l nhng ch cn b xung bn c c cc thng tin cn thit. Nhng ch thm, sa t nay v sau u c nh du bng mt mi tn trng cho d tm. const ... { Cc bin dng o h s phn nhnh } brandtotal: longint = 0; gencount: longint = 0; ... Var evalcount: longint; systicks: longint absolute $40:$6C; { Bin o thi gian } ... procedure Gen; ... brandtotal := brandtotal + gen_end[ply] - gen_begin[ply]; inc(gencount); end; function Eval: integer; var i, s: integer; begin inc(evalcount);

... procedure ComputerThink; { Tm nc i v hin thng tin } var best: integer; tickstart, tickend: longint; begin evalcount := 0; tickstart := systicks; best := AlphaBeta(-INFINITY, INFINITY, MAX_PLY); { Phc v hin cc thng tin theo di } tickend := systicks; textcolor(7); gotoxy(50, 4); write('Do sau : ', MAX_PLY); gotoxy(50, 5); write('So nut luong gia: ', evalcount, ' '); gotoxy(50, 6); write('He so phan nhanh: ', brandtotal/gencount:3:2, ' '); gotoxy(50, 7); write('Thoi gian (giay): ', (tickend-tickstart)/18.23:0:2, ' '); gotoxy(50, 8); write('Toc do xet nut : ', evalcount*18.23/(tickend-tickstart+1):0:0, ' '); gotoxy(50, 9); write('Diem dat duoc : ', best, ' '); gotoxy(50,11); write('May tinh di : ', chr(((newmove.from-1) mod SIZE_X)+65), SIZE_X -(newmove.from-1) div SIZE_X, chr(((newmove.dest-1) mod SIZE_X)+65), SIZE_X-(newmove.dest-1)div SIZE_X,' '); end;

10. Chy thBy gi bn hy dch v chy th chng trnh trn (ton b ngun trong Ph lc A). Cn thn nh, ta cha ci chc nng cho php hon i. Nu i nhm bn khng th i li. Chng trnh my tnh li khng "nhm ln" v vi su ngm nh 4 (tc l ngh trc ti 4 nc i) n c kh nng nh bi nhng ngi chi c trnh trung bnh v chi u. Bn hy chu kh suy ngh k mt cht, cn thn mt cht th c th thng c. Hnh 2.11 l thng tin in ra mn hnh sau khi my i nc u tin. Chng trnh c chy trn my tnh Pentium 166MHZ ci h iu hnh Windows 98 v tm kim n su bng 4. Cc s liu cho ta bit cy tr chi c h s phn nhnh khong 41. Nu ly trn l 40 th ta c bd = 404 = 2560000 (tc l s nt l ca cy tr chi c khong trn hai triu ri nt). chnh l s nt ta phi xt nu dng phng php tm kim Minimax. Vi tc trung bnh xt c 55985 nt mi giy th thi gian xt ht bng phng php ny s mt khong 2560000/55985 46 giy. y, ta ang dng phng php tm kim AlphaBeta, s nt phi xt ch cn 150480, ngha l t hn 17 ln v tng thi gian phi b ra ch 2.63 giy thay cho 46 giy. Nc i M vo gc khng c hay lm - nhng khng sao, y mi ch l phin bn u tin v su tm kim cn hn ch.

su 1 2 3 4 5 6 7

S nt lng gi 44 877 24411 150480 5574794 62929742 723007130

Thi gian (giy) 0.00 0.00 0.38 2.63 90.73 1031.32 13355.24

H s phn nhnh 44.00 43.78 41.73 41.75 40.40 40.15 39.86

im

Nc i B7B0 B7B0 B7B0 B9A7 B7C7 B7C7 B7C7

S ln tng s nt lng gi 19.9 27.8 6.2 37.0 11.3 11.5

40 -5 35 -5 10 -5 10

Hnh 2.11 Nu bn cha h thc hin mt ci tin no m ch nhp nguyn vn chng trnh mu t Ph lc A v dch chy th cc gi tr v su, s nt lng gi, h s phn nhnh, im t c, my tnh i (tr nhng thng s lin quan n thi gian do tu thuc loi my bn c) phi y ht nh hnh 2.11. Nu c iu g khc c ngha l c sai st trong khi nhp chng trnh ngun, bn cn thn trng kim tra chng trnh. Tu theo sc mnh my tnh (v c kh nng ch i), bn hy th tng su tm kim bng cch sa khai bo hng s MAX_PLY t 4 ln 5 hoc 6. ng ham tng nhiu. Do bng n t hp, nu tng nhiu bn s khng ch ni u. Cng tng su, bn s thy chng trnh chi cng bt h hnh v cng kh thng y. Bn hy th kim nghim vi su 5 xem sao. Cc con s u tng khng khip. Trn my tnh ca ti, thi gian xt nc u tin tng t 2.63 ti 88 giy (tng 33 ln). S nt phi lng gi l 5574794 nt (tng 37 ln). Nu my tnh ca bn l loi tt, hy th tip vi su 6. Trn my tnh ca ti, thi gian my "ngh" nc u tin mt ti 1031 giy (hn 17 pht, gn gp 12 ln). Cn s nt phi lng gi l 62929742 (gp 11 ln). Bn c th thy cc con s cng tng rt nhiu nhng d sao ch tng c 11 ln. H s phn nhnh c thng k qua s lng nhiu hn tt xung cn 40.15. Nc c chn i hi khc l B7C7 (c l l nc tt hn). Cn su 7 ti ch dm th mt ln v thi gian tiu tn cho ln ngh nc u tin mt n... 3.7 gi (trong khi qui nh tng cng tt c cc nc ca mt u th ch c trong 1 gi khi thi u). Nu ta cho rng tng mt su thi gian tnh ton ch di thm trung bnh 10 ln th ch cn n su 11, cc my tnh c Pentium 166 MHZ s mt n... 4 nm ngh nc i u tin (cn n su 14 th mt... 4223 nm).

Ta hy th c m nu c c chic my tnh mnh v chuyn dng (cho c) nh Deep Blue th tnh c n u. Loi my ln u tin thng c Kasparov (nm 1997) c kh nng xt c trung bnh 200 triu (i khi ln n 400 triu) nc i mi giy. Vi su 7 (m my tnh ca ti phi ch trong 3.7 ting ng h) s c my chiu c trong khong... 3 giy. Nu c ngh mt nc trong 3 pht (thi gian c php trung bnh cho mt nc) th su c th n c s khong t 8 n 10 (nu khng c ci tin c bit). n y ta cng c th thy, cc chng trnh c thuc loi tt nht chy trn cc my tnh thng thng (loi PC v khng gn cc mch chuyn dng) cng ch tm kim c y n su t 5 n 8 m thi (vi gii hn thi gian thi u bnh thng). D vy cc c gng ci tin b ra cng phi rt nhiu v rt lu mi t c n cc su nh vy (bn s c nghin cu mt vi ci tin nhm nng su trong thi gian chi hp l). Ch l thng bo v tc xt nc c th rt khc nhau khi thay i su cc i do hm lng gi dng y qu n gin, t trng thi gian khng ln so vi cc hm khc v thi gian o li bao gm tt c mi th nn cc con s b nh hng nhiu. Tuy nhin, nu vi cng su th tc hin tng i n nh. Ton b m ngun chng trnh c Tng VSCCP phin bn 1.0 cho trong phn Ph lc A.

Tng kt chng 2Chng ny i su vo cch vit mt chng trnh c Tng n gin. Nhng im quan trng trong chng l cc khai bo cc loi d liu khc nhau, cch biu din mt bn c, cc th tc v hm c bn. Ch l cc cu trc d liu v cc khai bo trong chng trnh mu rt n gin nhng cng rt hiu qu. Th tc Gen l lng nhng, phc tp v d sai nht. Thut ton AlphaBeta tuy ging nh cp n trong chng 1 nhng n chng ny bn cn phi hiu n tht s. Bn cng cn nm vng cch ly s liu cng nh hiu cc s liu ny tip tc theo di cc ci tin chng trnh trong cc chng sau.

GI PHT TRIN1. Thay cho mng mt chiu biu din bn c, bn hy th dng mng hai chiu (dng piece[1..10, 1..9] of byte). T mnh khm ph cc u, nhc im ca cch lm ny.

2. Mt byte l qu lu thng tin v qun c v bn chi. Ni cch khc, mng color khng tht cn thit. Bn hy sa li chng trnh sao cho vn gia nguyn khai bo ca mng piece, nhng li b c mng color. 3. Ti sao bn li phi chuyn sang bn c m rng kch thc 1314 (v ri li phi chuyn v bn c thng 910) lm mi nhim v kim tra vic vt qu bin cho nc c ang c sinh? Bn c th dng trc tip bn c m rng ny chi c khng (dng trc tip bn c 13x14)? 4. Bn hy t sa chng trnh cho php c hai bn u l my (hoc u l ngi) chi. Ngha l cho my c th t u. 5. Th my u c hai bn vi su ging v khc nhau (v d nh 3-3, 3-4, 44, 3-5 hoc 4-5) v thay i lt i trc ca cc bn. Bn no thng? 6. Bn hy t ci tin hm lng gi theo mnh. V d hy th cho im cc qun c tu . 7. Hy thi u nhiu vi my. Chc chn trong qu trnh chi my s i nhiu nc kh l lng (trn quan im ca ngi chi bnh thng). Hy ghi li nhng nc i v hy th l gii v sao my li i nh vy. Kho st k v hy th ci tin hm lng gi nu my phm sai lm nhiu. 8. Bn hy ci thm mt chc nng na cho ngi chi: chc nng "hon", ngha l b nc va i (hoc mt lot nc va i) v cho ngi chi i li nc khc. Ch : hy tn dng ti a nhng th tc c sn nh UnMakemove. 9. Bn hy ci chc nng "gi " (hay "mch nc") cho ngi chi bit nn i nc no bng cch ch ra cc nc i chng c tt nht. Bn nn tn dng nhng kt qu c sn trong ln my ngh trc m khng cn phi tnh li. 10. Hy cho php ngi chi ghi li vn c ang chi d v lc khc c th np vo chi tip. 11. Cho php ngi chi c by c th. By xong mi thi u. 12. Hy t ci tin giao din: dng ho, ci thm chut, thm menu, phm g tt... Hy tham kho cc chng trnh c c trn th trng lm cho tt. 13. Bnh lun: Theo di mt trn u bt k, mi khi mt u th i mt nc th c gng gii thch l do chn nc . V d gii thch nc i dn ti th c hay (nh im cao), s n c qun no ca i phng hoc trnh c mt qun, hoc dn ti thng hoc trnh thua sau bao nhiu nc... 14. Ghi nc i: Ta lm quen vi cch ghi nc i n gin trn. V d nh A1A6 ngha l qun c v tr A1 s chuyn n v tr A6. Cch ny x l tht n gin. Tuy vy, y khng phi l cch ghi nc i thng dng trong "lng c". Nu bn a bn ghi mt vn c nh th cho mt ngi chi c bnh thng th h khng hiu. Ta cn ghi mt vn c theo cc qui nh ghi chp bin bn vn u (do Lin on c Vit nam a ra). Cc qui nh ny nh sau:

Bn c c tnh theo ct (hnh 2.12). Bn no tnh theo ct bn .

K hiu qun c: Tg - Tng; S - S; T - Tng; X - Xe; P - Pho; M - M; B - Tt (Binh). phn bit cc qun cng loi ng trc, sau hay gia th dng cc ch vit tt: t - trc, s - sau, g - gia. K hiu i qun:

+Tn (tin): (.) du chm. Ch l nc tn ca Xe, Pho, Tt c ghi hi khc vi M, Tng. V d: X2.6 c ngha Xe ct 2 tin 6 . Cn M 2.3 c ngha l qun M ang ct 2 tin sang ct 3). +Thoi (lui): (/) gch cho. Ngc vi tn. V d M7/8 ngha l M ct 7 thoi lui sang ct 8. +Bnh (sang ngang): (-) du ngang (P2-5 ngha l Pho 2 sang ngang n ct 5). V d: Cc nc i dn n th c nh hnh 2.12 (th ny c tn di dng l: Pho u Xe tun h i bnh phong M c in) c ghi nh sau: 1. P2-5 M8.7 2. M2.3 C3.1 3. X1-2 X9-8 4. X2.4 M2.3

Bi c VI NT V NGUN GC C TNGC Tng ra i u? thi i no? C lin quan g n c Vua? l nhng cu hi m ngi hm m rt mun tm hiu. Ngun gc c Tng l vn rt th v, hin nay vn cn ang tranh lun v tip tc c tm ti, kho cu. Cc nh nghin cu b ra nhiu cng sc tm ra cu tr li. Tuy vy cho ti nay, c mt iu phn ng chuyn gia tha nhn l: C Tng xut x t Trung Quc, trong khi c Vua li c ngun gc t mt loi c c ca n (xut hin vo khong th k th 6, c truyn b sang Iran ri sang chu u v pht trin thnh c Vua nh ngy nay). Hai loi c ny c ngun gc khc nhau nhng li c nhng im tng ng nh cch i ca mt s qun. D nhin khng loi tr trng hp tng c nhng m hnh tng trng cho chin trng c i cng c hnh thnh t nhiu min t khc nhau v mang nhng c im ring bit. Trong qu trnh tin ho ca lch s, do s ho nhp, giao lu hnh thnh hai loi c Tng ca phng ng v c Vua ca phng Ty cng c nhng im ging nhau. C Tng theo Hn vn gi l Tng k. Tng c ngha l hnh tng, tng trng ch khng phi l qun voi (Tng) trn bn c. Theo cc vn kin lch s v cc vn vt c pht hin th c Tng xut hin t thi Chin Quc (t nm 403 n 221 trc cng nguyn) m tin thn l "Lc bc k", mt loi c rt thnh hnh thi k . Nu ng nh vy th c Tng c trn 2000 nm lch s. Nhng c th khng nh rng c Tng lc mi c m hnh s khai ch cha phi loi c Tng m chng ta chi ngy nay. c bit c Tng c i khng c qun Pho. Cc nh nghin cu u nht tr l qun Pho c b xung t thi nh ng (sau nm 618) l qun c ra i mun nht trn bn c Tng bi cho ti lc con ngi mi tm ra v kh "Pho" s dng trong chin tranh - l cc loi my mc th s dng bn cc vin to. Trong mt thi gian di, qun Pho trong ch Hn vit vi b "thch". Cho ti i Tng (nm 960 1276) khi pht minh ra loi Pho mi mang thuc n th qun Pho mi c vit li vi b "ho". iu l th nht l theo cc ti liu lch s c Tng thi ng c gi l Tng h (du h - tr chi) c c im l qun c lp th, bn c c 8 8 = 64 vung xen k hai mu trng en, ging ht bn c Vua hin nay. Loi bn c ny c li trn cc bc tranh dt "Cm, K, Thi, Ho" thi ng. Ti Uyn ng tr, Vnh Xng, tnh Cam Tc (Trung Quc) ngi ta cng pht hin dng bn c ny trn cc vt dng bng s c i vi 64 . Nhiu kin cho rng loi bn c ny rt hp vi cc con s m nhiu hc thuyt thuc nn vn minh Trung hoa thng cp n nh "Thi Cc, Lng Nghi, m dng, T Tng, Bt qui, Lc thp t ngao"... Trong khi , theo Bch khoa ton th ca nc Anh th trc th k 13, ngi chu u s dng loi bn c 64 cng mu. Nh vy lch s c Tng, c Vua ra sao? Cho ti nay cc nh nghin cu cha c ng lun im. Nhng c mt iu c th gi l chung:

C Tng hin i c hon chnh vo i Tng. Cc quy nh v bn c, qun c rt hp vi c ch qun s thi : Tng soi trong dinh ch huy, c v s tc trc, binh cht c 5 qun ng vi lut "ng nhn vi ng" (nm ngi mt i ng). iu ny c ghi chp li trong nhiu tc phm i Tng nh "Qung tng k " ca Triu V Cu, " m kinh" ca L Thanh Chiu, bi th "Tng dch" ca thi s Lu Khc Trang. Cun k ph u tin v c Tng hin i l "S Lm Qung k" ca Trn Nguyn Tnh thi k cui i Tng (cch y hn 700 nm) trong khi tc phm u tin v c Vua c xut bn ti Ty Ban Nha vo nm 1495.

CU CHUYN V HNH CC QUN C TNGNgi chu u (v c nhiu ngi chu ) hc chi c Tng rt kh khn do khng nh ni mt ch ca qun c. n thun ch l cc ch Hn, khng c hnh tng r rng, c th nh c Vua. Cc ch tng hnh ny trng kh lng nhng rc ri (ti chc bn khng th m bo v li c ton b cc qun c m khng nhn mu). Bit th nhng ti sao ngi chu chng ta (v c Vit nam) li khng thay i m vn c dng mi nhng qun c ch truyn thng cho ti tn hm nay? Thc ra, nhiu ln ngi ta mun i v th i. My nm gn y mt s gii u ngi ta cng b cc qun c c dng biu tng nh M hnh u nga, Pho c hnh khu thn cng... (bn c th xem li cc qun c biu tng hnh 2.1, qun c lp th hnh di) v thm ch c ni sn xut cc qun c theo kiu c Vua ci bin ri. Th nhng "u li hon y": cc gii c Tng trong tng quc gia cng nh cc gii th gii ton chi bng cc qun c truyn thng dng cc ch Hn quen thuc. V sao vy? C l thi quen n su vo u c nhng ngi chi c, khin ngi ta kh tip nhn mt s ci tin hoc ci cch. Cng c th i vi ngi ng cch suy ngh c phn su sc hn: ci cch th ni dung l chnh ch khng phi l hnh thc. Nu ch ci cch hnh thc m khng ci cch ni dung th ci cch cng khng cn thit lm. Qun c truyn thng c ci tin ca n: khng cng knh nh c Vua, rt gin d, d lm, d mang i, hng d thay... bnh dn v gn gi vi mi ngi. Nhng cng c th l s t ho su xa ca mt nn vn ho phng ng: mun c ci g mang du n ca ring mnh, khng mun c s lai cng bt chc t bn ngoi. Bi xt cho cng c Tng cng hay, cng hp dn khng km c Vua. (Trch t bo Ngi Chi C )

Copyright 2002, Pham Hong Nguyen

T xin tip tc ch ny nh Bi 1 Cy tm kim l mt gii thut chnh trong cc game c. Chng ta tin hnh tm kim tt c cc nc i c th c ca game, v a ln mt cy. L ca cy l nc i cui cng chng ta c th kim sot c tnh t thi im hin ti. tm ra cc nc i tt nht, chng ta tin hnh tm kim trn cy, nh gi cc nt l. iu kh khn nht l cc cy tm kim thng rt ln, do tm kim nc i tiu tn lng thi gian ln, ngay c i vi cc my tnh nhanh nht. Thut ton n gin nht l MiniMax, c mt t cch y 60 nm. MiniMax c m t nh sau: Chng ta gi s rng c mt cch no nh gi game bng cc con s, v c 2 u th Max v Min. Gi tr ca game l dng dnh cho Max, m dnh cho Min, tr tuyt i cc gi tr ny ch mc thun li. Max lun tm mi cch lm tng mc gi tr ca game Min lun tm mi cch lm gim mc gi tr ca game Gi c hai u th u chi rt hon ho, ngha l khng h mc sai lm trong qua trnh chi Chng ta hy xt tnh hung sau: Max Move Min Move Evaluation A C 12 A D -2 BC5 BD6 Max gi s rng Min chi rt hon ho, do anh ta bit rng, nu anh ta i nc A, i th ca anh ta s i D, v kt qu cui cng l -2. Cn nu anh ta i B, i th s i C, kt qu cui l 5. Do trong thut ton MiniMax, Max lun lun chn i B. phc tp: gi thit c B nc i cho mi i th, v chng ta tm kim n su n, th thut ton phi tm khong O(B^n). on m C nh sau: int NegaMax (pos, depth) { if (depth == 0) return Evaluate(pos); best = -INFINITY; succ = Successors(pos); while (not Empty(succ)) { pos = RemoveOne(succ); value = -NegaMax(pos, depth-1); if (value > best) best = value; } return best; } trong Pos Mt v tr ca game. Depth su tm kim. Evaluate Hm lng gi. C gi tr trong khong -INFINITY v +INFINITY. Best Gi tr tt nht. Successors Mt hm sinh ra cc nc i hp l. Succ Tp hp cc nc i hp l.

AlphaBeta: Lm cho MiniMax kh thi hn: Gi s rng chng ta tm kim nc i tt nht cho Max, do chng ta bit rng nc i tt nht l 5. gi s rng chng ta tm kim ti A, v i theo ng A-D. ng i ny t -2 im. Vi Max, iu ny tht ti t: nu anh ta i ti A, anh ta s thu c -2 im, bi v Min khng bao gi phm sai lm, ngha l Min s khng bao gi i theo A-C. Vy, khng cn thit phi tm kim A-C, hay bt c nhnh no xut pht t A, v Max buc phi chn B. Nh vy, mi khi chng ta tm c mt nc i tt hn, chng ta s loi b cc nc i khng tt bng. on m C nh sau: int AlphaBeta (pos, depth, alpha, beta) { if (depth == 0) return Evaluate(pos); best = -INFINITY; succ = Successors(pos); while (not Empty(succ) && best < beta) { pos = RemoveOne(succ); if (best > alpha) alpha = best; value = -AlphaBeta(pos, depth-1, -beta, -alpha); if (value > best) best = value; } return best; } phc tp: trong trng hp tt nht, chng ta s tm O(B^(n/2)) thay v O(B^n). Tuy nhin, vi AlphaBeta, chng ta phi a ra sch lc tm kim sao cho gim c nhiu nht cc nhanh con. Nu trong trng hp ti nht, gi tr ca tr chi tng dn, ngha l cc nc i sau tt hn cc nc i trc, th AlphaBeta chng th ct b c nhnh no, v phc tp ca n bng vi MiniMax. (Bi sau: thut ton NegaScout v MTD(f)) Cu trc d liu trong game c: c mt game c hay, ngoi gii thut tm kim tt, cn phi c cc cu trc d liu ph hp vi cc gii thut . Biu din bn c: C 2 cch biu din bn c Cch thng thng: dng mt mng biu din bn c v cc qun c tng ng. Chng hn vi c vua, dng mng 8x8, cha cc s nguyn tng ng vi cc qun c. Vi cch ny, mt k thut hay dng nht, l phn t lnh canh: bn c 8x8 c bao ph thm 2 vng ngoi cng thnh 12x12 trnh trng hp kim tra xem mt nc i c nm trong bn c hay khng (v d i vi qun m) Dng mng bit: Chng ta dng cc mng 64 bit. Mi bit l mt gi tr cho bit ti v tr c qun c hay khng. V vy, trng thi bn c (vua) c biu din bi 12 mng bit tng ng vi 12 loi qun c: vua trng-en, hu trng-en, tng trng-en, m trng-en, xe trng-en, tt trng-en. C th c thm 2 mng bit na, mi mng biu din tt c cc qun c ca mi bn. Chng ta s so snh u im ca hai cch biu din trn. Gi s cn xt hu trng c ang "chiu" vua en khng. Vi cch biu din thng thng: Tm v tr ca hu trng, bng php tm tuyn tnh, mt trung bnh 32 chu k my Kim tra tt c cc m hu trng c th di chuyn c (8 hng), cho n khi tm thy vua en, hoc kt thc tm kim. Qu trnh ny lun tiu tn thi gian, cng nhiu khi qu trnh tm kim cng v cui, v trong a s trng hp l khng tm thy. Vi mng bit, cch lm nh sau: Np mng bit biu th v tr hu trng Np mng cc v tr tn cng tng ng ca hu trng AND vi mng bit biu th v tr vua en.

Nu kt qu khc 0, th hu trng ang chiu vua en. Ton b qu trnh trn ch mt khong 3-4 chu k my. Bng hon v Trong c, c nhiu cch i t c cng mt trng thi. Chng hn, khng ph thuc vic bn i 1.P-K4, 2.P-Q4 hay 1.P-Q4, 2.P-K4, th trng thi cui cng ca bn c l nh nhau. Vic lu tr trng thi cui ca bn c gi l bng hon v. Nh vy, nu bn mun tm kim kt qu nc i 1.P-Q4, 2.P-K4 th bn c th ly kt qu lu sn trong 1.P-K4, 2.P-Q4. Mi bng hon v c lu nh cc hm bm (hash function). Khi mt v tr c tm kim, kt qu tm kim c lu vo bng hon v. Vi mi u vo mi, chng ta s tm trn bng hon v trc. Nu thy, s s dng kt qu trong bng, v vut qua nt tm kim ny. Hm bm Mt phng php lu bng hon v l dng hm bm. Hm bm c m t nh sau: Sinh ra mt bng12x64 s N-bit. Mi s tng ng vi mt v tr trn bn c. Xut pht t 0 Vi mi v tr, XOR vi gi tr tng ng ca bng ngu nhin, hoc vi 0 nu v tr trn bn c l trng Thc hin tng t nh trn vi mt bng ngu nhin khc to kho. Nh vy mi trang thi ca bn c c biu din bi 2 s. Hai trng thi ca bn c l ging nhau nu c hai s trn l nh nhau.

Dch t History of computer chess (http://www.x3dchess.com/press/historyofcomputerchess.htm), do Frederic Friedel vit. S lc lch s my tnh trong c Vua Chic my nh c u tin Nm 1769 k s ngi Hungary Baron Wolfgang von Kempelen thit k mt chic my chi c lm vui cho n hong o Maria Theresia. y l mt c my c kh hon ton, c hnh dng ging nh mt ngi Th. Tt nhin l sc mnh ni bt ca n l nh mt kin tng c kho lo giu bn trong n. Chic my ny l gi mo :) Chic "my giy" ca Turing Mt iu ng kinh ngc l chng trnh chi c u tin c vit trc khi chic my tnh u tin c pht minh. N c vit bi mt ngi nhn xa trng rng, bit rng my tnh c th lp trnh c sp ra i v mt khi n c pht minh ra, n c th chi c c. Ngi l Alan Turing, mt trong nhng nh ton hc ln ca thi k . Turing ng u nhm ph m b mt "Enigma" ca c, c nh hng ln n kt cc ca chin tranh th gii ln th 2. ng rt thch chi c nhng mc d rt cc k thng minh v ginh rt nhiu cng sc hc c nhng ng vn ch l mt ngi chi tng i yu. Sau chin tranh, ng vit nhng lnh hng dn my tnh c th chi c c. Vo thi im cha c chic my tnh no c th chy c cc lnh nn chnh ng thc hin cc lnh , ng vai b x l trung tm v cn khong na ting cho mt nc i. Mt vn c c ghi li, trong chic "paper machine" ca Turing thua mt ng nghip. y l vn c lch s: Turing's paper machine Alick Glennie, Manchester 1952: 1.e4 e5 2.Nc3 Nf6 3.d4 Bb4 4.Nf3 d6 5.Bd2 Nc6 6.d5 Nd4 7.h4 Bg4 8.a4 Nxf3+ 9.gxf3 Bh5 10.Bb5+ c6 11.dxc6 0-0 12.cxb7 Rb8 13.Ba6 Qa5 14.Qe2 Nd7 15.Rg1 Nc5 16.Rg5 Bg6 17.Bb5 Nxb7 18.0-0-0 Nc5 19.Bc6 Rfc8 20.Bd5 Bxc3 21.Bxc3 Qxa4 22.Kd2? [22.h5 would have trapped the bishop] 22...Ne6 23.Rg4 Nd4? [23...Rxb2! 24.Bxb2 Rxc2+] 24.Qd3 Nb5 25.Bb3 Qa6 26.Bc4 Bh5 27.Rg3 Qa4 28.Bxb5 Qxb5 29.Qxd6 Rd8 0-1. Chin lc ca Shanon Cng vo cng thi vi Turing, mt nh ton hc ln khc, Claude Shanon ca Bell Laboratori cng ngh ti vic dy my tnh chi c. ng nhn ra rng vn l ch c qu nhiu kh nng tip din sau mt nc i. Do ng phn bit gia "chin lc A", tm kim tt c nhng nc tip theo, v "chin lc B", b nhng ng khng cn thit. Ngy nay chng ta phn bit cc chng trnh theo loi "cc sc" (brute force) hay "la chn" mc d tt c cc chng trnh mnh u t nhiu thuc v loi "cc sc". C thay v bom nguyn t Trong nhng nm chin tranh, M xy dng mt phng th nghim khng l Los Alamos trong sa mc ca bang New Mexico. Mc ch ca n l nghin cu ch to bom nguyn t. tm ra dng cu to ca phn kch n c th to thnh phn ng dy chuyn i hi rt nhiu tnh ton. Nm 1946, nh ton hc Hungary/M John von Neumann c giao nhim v thit k mt chic my tnh thc hin cng vic ny nhanh hn. Nm 1950, mt chic my khng l c goi l MANIAC I c ch to. N c hng nghn bng chn khng v cng tc v c th thc hin 10000 lnh trong mt giy. N cng c th c lp trnh.

Thay v ngay lp tc bt tay vo vic ch to bom, cc nh khoa hc bt u th nghim vi chic my. Mt trong nhng iu u tin h lm l vit mt chng trnh chi c. N chi trn mt bn c thu nh 6x6 v khng c Tng. Mc d vy chng trnh ny vn cn 12 pht tm kim trc 4 ply (ply l na nc i, v d e4 hay ...d5; 1.e4 e5 l mt nc i) (vi Tng trn bn c n s cn khong 3 ting). Chng trnh ny chi ba vn c trong nhng nm 50. Vn u tin thi u vi chnh n (Trng thng), vn th hai vi mt ngi chi hay, chp n mt hu. Vn c ko di 10 ting v ngi thng. Cui cng n chi vi mt ph n tr, mi hc chi c tun trc. Chng trnh thng trong vng 23 nc. l ln u tin con ngi thua mt chic my tnh trong mt tr chi tr tu. y l vn c lch s th hai (bn c 6x6, khng tng, tt khng c php i hai trong nc u tin, khng c nhp thnh) MANIAC 1 Human, Los Alamos 1956: 1.d3 b4 2.Nf3 d4 3.b3 e4 4.Ne1 a4 5.bxa4? [5.Nd2 and 6.Nd2-c4+ Nbcxc4 7.b3xc4 with a good game] 5...Nxa4 6.Kd2? Nc3 7.Nxc3 bxc3+ 8.Kd1 f4 9.a3 Rb6 10.a4 Ra6 11.a5 Kd5 12.Qa3 Qb5 13.Qa2+ Ke5 14.Rb1 Rxa5 15.Rxb5 Rxa2 16.Rb1 [to prevent 16...Ra1 mate!] 16...Ra5 17.f3 Ra4 18.fxe4 c4 19.Nf3+ Kd6 20.e5+ Kd5 21.exf6Q Nc5 22.Qf6xd4+ Kc6 23.Nf3-e5 mate. C v ton hc Vn chnh vi cc chng trnh chi c l s lng ln cc nc phi tnh ton. Mt v tr trung bnh s c 40 nc i hp l. Nu bn tnh tt c cc nc i i phng tr li bn s c 40x40 = 1600 v tr. iu ny c ngha l sau hai ply, c coi l mt nc i trong c Vua, 16000 v tr c th xy ra. Sau hai nc n l 2.5 triu v tr v sau ba nc l 4.1 t. Trung bnh mt vn c ko di khong 40 nc. S v tr cn tnh l khong 10 m 128, ln hn c s nguyn t c trong v tr (ch khong 10 m 80) Mt iu d nhn thy l khng c chic my tnh hay loi my no c th chi c bng cch tm ra tt c cc kh nng. Nhng con ngi cng khng phi l hon ho. Cu hi l my cn tm kim ti su no (trc bao nhiu nc) c th i chi c vi kh nng chin lc ca con ngi. Nhng chic my tnh thi u c th to v nh gi khong 500 v tr trong mt giy hay 90000 v tr trong ba pht, thi gian bn c i mt nc trong cc cuc thi u. iu ny c ngha l n ch c th tm kim trc 3 ply (mt nc i ri). iu ny c ngha l n chi rt km - ch ngang mt ngi mi tp chi. tm kim su hn na n cn gii quyt c 15000 v tr trong mt giy, nhanh hn gp 30 ln. Nhng tnh ton trc 4 ply cng cha su. Do my tnh dng nh khng bao gi c th chi trnh kin tng trong c Vua. Alpha-beta Bc nhy vt u tin l nm 1958 khi ba nh khoa hc ca i hc Carnegie-Mellon University ti Pittsburgh (Newell, Shaw v Simon) tm ra mt pht hin quan trng. Bn c th b mt phn ln ca cy tm kim m khng nh hng ti kt qu. H gi l thut ton alpha-beta. Mt im cn nh l y l mt k thut ton hc thun tu. y l s lc thut ton alpha-beta trong c Vua: gi s my tnh kt thc c lng mt nc i v bt u tnh ton nc th hai. Ngay khi c mt ng chng t n s c gi tr thp hn nc u tin chng ta c th b ng tm kim ny. Chng ta khng cn bit chnh xc l nc i th hai t hn bao nhiu so vi nc i u tin nhng chc chn l chng ta mun nc i u tin hn. Thut ton alpha-beta c kt qu ging nh mt tm kim y trong khi ch phi i qua cn bc hai s v tr m tm kim y cn. t nhin nhng chic my tnh thi u c th tm kim trc 5 hoc 6 ply. Vo thp k 70, chic my tnh nhanh nht (CDC Cyber series) c th tm trc ti 7 ply v t c kh nng chi ng n. Nhng k c vi alpha-beta, bn vn cn tc gp 5 ln c th tm thm mt ply na. S m ca s phi tm kim mt ln na ui kp cc nh lp trnh. Chic my Belle Ken Thompson l mt nh khoa hc khng th ch i nhng chic siu my tnh gi hng triu tr nn 5 hay 25 ln nhanh hn c th chi c tt hn. ng v mt ng nghip Bell Laboratories quyt nh ch to mt chic my ch chuyn chi c, s dng hng trm con chip v gi khong 20 nghn la. H gi chic my l "Belle" v n ch c th chi c. Nhng n c th tm kim ti 180 nghn v tr trong mt giy (siu my tnh vo thi ch c th tm c 5000 v tr) Belle c th tm trc 8 hay 9 ply trong cc cuc thi u, gip n c th c chi trong hng kin tng. N thng gii v ch th gii my tnh chi c u tin v tt c nhng gii u khc t 1980 n 1983 cho n khi n b chic my khng l Cray X-MPs, t hn n mt nghn ln, qua mt. Nhng con chip chi c Vo gia nhng nm 80, gio s Hans Berliner, mt nh khoa hc my in ton i hc Carnegie-Mellon tip tc cng vic ca Ken Thompson. Berliner, tng l phng vin bo ch gii v ch c vua th gii, ch to mt chic my tnh c phn cng c bit chi c, gi l HiTech. ng v sinh vin Carl Ebeling ch to mt con chip tnh cc nc i. Vi 64 chip chy song song, HiTech sut na t c danh hiu v ch my tnh nh c vua th gii vo nm 1986 (mt chic Cray thng gii ny). Sau cc sinh vin ca Berliner nh Feng-hsiung Hsu, Murray Campbell v nhng ngi khc t pht trin mt chic my tnh khc, c gi l ChipTest v sau Deep Thought. Gi ca n khong 5000 la v c th tnh ton c 500 000 v tr trong mt giy. Sau Hsu v Campbell ct t vi cc thy v gia nhm IBM. Cng vi Joe Hoane h ch to ra Deep Blue. Deep Blue Garry Kasparov thi u vi Deep blue ti Philadelphia v New York. N gm c mt my ch IBM SP/2 vi mt s ln cc con chip c bit tnh ton nhanh. Mi con chip c th x l hai n ba triu v tr mt giy. Vi vic s dng hn 200 con chip ny, tc tng cng ca chng trnh c th tng ln ti 200 triu v tr trong mt giy. su tm kim v kh nng chi c X l 200 triu v tr trong mt giy c ngha g vi mt chic my tnh nh c ? Ken Thompson, cha ca Belle (cng nh Unix v ngn ng lp trnh C) tin hnh mt s th nghim th v trong nhng nm 80 cho thy tng quan gia su tm kim v kh nng chi c.

Thompson chi Belle vi chnh n vi mt bn c tnh ton su hn. Trung bnh tnh trc c thm mt ply ngang bng vi khong 200 im ELO. Vi 4 ply Belle khong 1230 v vi 9 ply n t ti 2328 im ELO. Bng cch tip tc tng su tm kim (cng v sau ELO cng tng chm) ta c th kt lun l cn tnh trc c 14 ply c th t n trnh v ch th gii (2800) Kt lun ca cc chuyn gia: bn cn ch to mt chic my tnh c th x l mt t v tr trong mt giy (v tnh trc 14 ply) nu bn mun thch u vi nh v ch c vua th gii. Deep Blue tin kh gn, nhng cha t ti im ny. Nhng chic my nh b Tt nhin l cht lng lp trnh cng c v tr rt quan trng. Nhng chng trnh chi c trn PC ngy ny nh Fritz hay Junior c th x l 5 triu hoc hn v tr trong mt giy. Chng u t n sc mnh khong 2700 ELO v l i th cho bt k ai trong nhm 100 k th ng u th gii. Trong c nhanh ch c khong 10 k th ng u c th cnh tranh vi n v nu chi blitz c l ch hai hoc ba ngi c th sng st. Tn cng trn c hai mt trn Mt trong nhng im quan trng trong sc mnh ca my tnh l n c kh nng chi theo cc sch khai cuc. Nhng kin thc v kinh nghim qua bao i ca cc kin tng c th d dng c lu tr trn a cng v my tnh c th truy cp n trong khi chi khai cuc. Ngay c nhng chng trnh trn PC cng bit khong 10 triu v tr khai cuc v c th truy cp y thng k v chng (nhng nc no c i, kt qu nh th no, th hng ca ngi chi v.v...). Thng th my tnh s chi mi lm hoc hai mi nc trc khi n phi tnh ton nc u tin. Nu khng c c li th t kin thc ca con ngi trong khai cuc, my tnh s yu i nhiu My tnh khng ch c li t khi lng kin thc khng l trong khai cuc t lch s c Vua m n cn c li th t nhng nghin cu v c tn. C s d liu c tn Mt ln na chng ta li gp li Ken Thompson, ngi tin phong trong lnh vc ny. Trong nhng nm 80, ng bt u to v ghi li tt c nhng v tr tn cuc vi bn v nm qun trn bn c. Mt th c tn cuc bnh thng vi 5 qun, v d nh mt Vua vi hai Tng v mt Vua vi mt M, s c khong 121 triu v tr. Vi mt con tt, do n i khng u (nc u tin c th i hai ), s v tr tng ln 335 triu. Thompson vit mt chng trnh tnh ton tt c cc v tr hp l v tm ra tt c cc ng bt buc dn trong mi tn cuc. ng cng nn d liu v c th lu tr khong 20 loi tn cuc trong mt a CD-ROM chun. S dng c s d liu ny, my tnh s chi mi tn cuc vi chnh xc tuyt i ("nh l cha tri"). Cho bt k th tn cuc no, n bit ngay lp tc l mt trn thng, ho hay thua v trong bao nhiu nc. Thng th n s thng bo chin thng hay chiu ht trc khong 50 nc. Khi bn thua n s chi theo ng tt nht. Deep Blue s dng c s d liu tn cuc ca Thompson v ngay c chng trnh cho PC Fritz by gi cng s dng n trong cy tm kim ca mnh. iu ny s nh hng n sc mnh ca n nh th no s cn thi gian tr li. Mt s tn cuc vi 5 qun ni ting l kh hoc khng th cho con ngi c th lm ch. Mt v d in hnh l Hu chng li Hu v Tt, trong trng hp ny con ngi khng c c hi no c th thng c my tnh. Nhng nhng tn cuc vi 5 qun ch l tic-tac-toe (mt tr chi rt n gin) so vi nhng tn cuc vi 6 qun m Thompson ang to ra. Trong mt s tn cuc vi 6 qun, bn cn i chnh xc 200 nc i c th dnh chin thng. Thng th ngay c nhng k th mnh nht trn th gii cng khng th bit c mnh tin n u sau 100 nc i m my tnh ni vi chng ta l bt buc. S pht trin v cng ngh phn cng cng lm tng li th ca my tinhs. Cc th tn cuc vi 6 qun ca Thompson, vi 8 n 20 t v tr mi loi, c th c nn v lu tr trn mt chic DVD. May mn thay tn cuc vi 7 qun, gm khong 500 nghn t v tr cho mi loi, vn l mt tng lai xa. V may mn hn na l hai u - nghin cu khai cuc v c s d liu v tn cuc - s khng bao gi gp nhau. C l bn s khng bao gi thy my tnh i 1.e4 v thng bo s chiu ht nc th 40. Nhng hu nh ch cn l vn thi gian, vi nm hay mt thp k, trc khi my tnh c th lin tc nh bi nh v ch c Vua th gii. Frederic Friedel Edit: sa on bc Turing :) xin cm n bc Hng gp :)