of 52 /52
TVIT CHƯƠNG TRÌNH CTƯỚNG Tác gi: Phm  Hng Nguyên Mc lc Chương 1 Li nói đầu (11/2002)  Nhm giúp các bn yêu thích cTướng máy tính có thêm tài liu nghiên cu, hc tp, tôi xut bn quyn sách này dng min phí. So vi phiên bn ban đầu (năm 1998) nó có mt ssa đổi và chnh lý, ct bphn dy viết chương trình cVua và các phlc (phlc chlà các chương trình mu). Mt sphn ca tài liu đã được trích dn và đăng ti trên tp chí PCWorld VN. Bn có thdùng (đọc, download, lưu tr) tài liu này cho mc đích sdng ca cá nhân hoc sao chép (copy) cho người khác nhưng không được phép: sa đổi (bt ccâu ch, hình vnào), kinh doanh (dưới bt chình thc nào), đăng ti li trang web khác (trích dn là được phép và phi tuân theo các qui định vtrích dn), xut  bn li bt cdng nào. (Mt sngoi lcó thđược xe m xét riêng). Hi vng, vi các điu khon dvà “fair” này sđược các bn tuân thnghiêm chnh. Mt điu lưu ý na là tài liu này được cung cp dng AS IT (có thế nào xin dùng thế y) và skhông được kèm thêm các bài ging hay các trgiúp. Tôi có cung cp địa chemail, nhưng chyếu là để nhn nhng phn hi có ích cho mi người như nhng góp ý, phê bình - xin đừng lm dng nó. Nhng yêu cu cá nhân như xin chương trình (bn hãy tdownload ly hoc xin bn bè), xin ging thêm vthut toán hoc gii thích riêng cho mt chi tiết kthut nào đó nói chung skhông được đáp ng. Bn cn phi tsuy nghĩ, nhbn bè, tìm kiếm câu trli có sn hoc hi các din đàn, bn bè. Mc dù tôi cung cp các chương trình mu và quyn sách này dng min phí nhưng điu đó không có nghĩa là toàn bquĩ thi gian (vn đã rt eo hp) và sc lc ca tôi chdành cho chúng - các bn cn hiu và thông cm.  Phm Hng Nguyên Li nói đầu (1998) CTướng và cVua là các môn ththao trí tuhp dn và phbiến trên thế gii. Tuy nhiên vic tìm hiu và viết chương trình máy tính có thchơi được các loi cnày vn là các thách thc ln, nht là đối vi các bn tr. Đã có khá nhiu chương trình ngun ca cVua cho tdo (trên Internet). Hu hết các chương trình này chđược cho sau khi các tác giđã phát trin chúng trong nhiu năm ròng. Ví d, bGNU Chess cho sau khi phát trin hơn 20 năm, bCRAFTY sau khong 10 năm.  Nhiu chương trình trong sđó chơi rt hay , đạt thhng cao trong làng cmáy (ví dGNU có hsELO 2350-2400, CRAFTY 2500-2700). Nhưng cũng vì vy các chương trình

Thuat toan minimax.pdf

Embed Size (px)

Text of Thuat toan minimax.pdf

  • 7/22/2019 Thuat toan minimax.pdf

    1/52

    T VIT CHNG TRNH C TNGTc gi: PhmHng Nguyn

    Mc lc Chng 1

    Li ni u (11/2002)

    Nhm gip cc bn yu thch c Tng my tnh c thm ti liu nghin cu, hctp, ti xut bn quyn sch ny dng min ph. So vi phin bn ban u (nm1998) n c mt s sa i v chnh l, ct b phn dy vit chng trnh c Vua vcc ph lc (ph lc ch l cc chng trnh mu). Mt s phn ca ti liu ctrch 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 cnhn hoc sao chp (copy) cho ngi khc nhng khng c php: sa i (bt ccu ch, hnh v no), kinh doanh (di bt c hnh thc no), ng ti li trangweb khc (trch dn l c php v phi tun theo cc qui nh v trch dn), xutbn li bt c dng no. (Mt s ngoi l c th c xem xt ring). Hi vng, vicc 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 dngAS IT(c th no xin dngth y) v s khng c km thm cc bi ging hay cc tr gip. Ti c cung cpa ch email, nhng ch yu l nhn nhng phn hi c ch cho mi ngi nhnhng gp , ph bnh - xin ng lm dng n. Nhng yu cu c nhn nh xinchng trnh (bn hy t download ly hoc xin bn b), xin ging thm v thutton hoc gii thch ring cho mt chi tit k thut no ni chung s khng cp 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 schny 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 nhinvic tm hiu v vit chng trnh my tnh c th chi c cc loi c ny vn l ccthch 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 ccchng 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 dGNU c h s ELO 2350-2400, CRAFTY 2500-2700). Nhng cng v vy cc chng trnh

    http://www.nchess.com/book1/index.htmlhttp://www.nchess.com/book1/c1.htmlhttp://www.nchess.com/book1/index.htmlhttp://www.nchess.com/book1/c1.html
  • 7/22/2019 Thuat toan minimax.pdf

    2/52

    Chng 1

    TR CHI I KHNG V CC PHNG PHP TMKIM

    I. Dng tr chi

    Trong phn ny, ta s xem cch mt chng trnh my tnh c th chi c cc tr chiu tr nh cc tr chi c Vua, c Tng, c vy, c caro (go-moku), go, checker... nhth no. Cc tr ny cn gi l cc tr chi i khng, din ra gia hai u th. Nichung, cc tr chi u c th chuyn v mt dng bi ton tm kim c bit: tmng 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 chiMinimax (da trn tn ca thut ton tm kim c bn p dng cho chng). Hnh 1.1 l vd v mt s tr chi ni trn. Cc tr chi nh chi bi, d mn, xc sc... khng thuclp tr chi ny.

    mailto:[email protected]://www.geocities.com/phhnguyen
  • 7/22/2019 Thuat toan minimax.pdf

    3/52

    http://www.geocities.com/phhnguyenhttp://www.nchess.com/
  • 7/22/2019 Thuat toan minimax.pdf

    4/52

    II. Cy tr chi

    Cc trng thi bn c khc nhau (hay cn gi l mt th c, tnh hung c) trong qutrnh chi c th biu din thnh mt cy tm kim (c gi l cy tr chi - hnh 1.2) vta 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 tmt 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. suca cy tr chi ply l s tng ca cy (chnh l su d ca cy). Thut ng nc itrong sch c thng nht ch bao gm mt ln i ca mt u th hoc mt ln i phnng li ca i th bn kia. Ch n khc vi thi quen dng trong thc t mt nc ibao gm ln i ca ta v mt ln i ca i th. Ni cch khc, nc i y thc chtch l "na nc" theo cch hiu ca lng c.

    III. Vt cn

    Dng mt thut ton vt cn tm kim trn cy tr chi dng nh l mt tng ngin. 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 bquyt 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 tmt th c, trung bnh c kh nng i c 16 nc i khc nhau (ta gi l h snhnh con ti mi nt l b = 16). Nh vy, sau mt tng ta s c 16 nt con, mi nt nyli c th c 16 con na. Tng s nt con su th hai l 16x16 = b2. C nh vy su ds c bd nt.

    Nu gi s su ca cy l 100 (h s nhnh 16 v su 100 u l nhng con s cnnh hn con s thng gp trong tr chi c), th s nhnh phi duyt ln n 16 100 hayxp x 10120 - mt con s ln khng khip. hnh dung s ln th no, ta gi s tt ccc nguyn t trong v tr u tr thnh my tnh tnh nc i vi tc mt giytnh c c 1010 (10 t) nc i, v nu chng hot ng ct lc t thi v n ln nnay (theo mt s l thuyt, th th gii ny hnh thnh sau mt v n gi l v n lnbigbang, 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 hpvi kiu tm kim vt ht mi kh nng ny (kiu tm kim vt cn i hi phi kim tra

  • 7/22/2019 Thuat toan minimax.pdf

    5/52

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

    IV. Chin lc tm kim trong tr chi

    Mt chin lc thng c c ngi ln my dng l phn tch th c ch sau mt snc i no ca c hai bn. Sau khi "nhn xa" xem bn c c nhng kh nng bin inh 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 ica c hai bn. Vi my, th c ny c nh gi l tt hn th c kia nh so snh imca th do b lng gi tr li. Chng ta ch c kh nng xt trc mt s hu hn ccnc (v d i kin tng chi c vua c th xt trc 8-10 nc i, ngi thng ch 2-4 nc i). R rng l nu xt cng su th chi cng gii. Nhng khng th thc hiniu ny vi su qu ln c do s nt su c th tr nn ln khng khip vkhng thi gian phn tch. Nu dng mt su hp l th b phn tch c thhon 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 phngphp 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 mtu th (c gi l ngi chi cc i - maximizer), v l m khi p dng cho u thbn kia (c gi l ngi chi cc tiu - minimizer). Qu trnh tnh ton cho im th

    http://www.nchess.com/book1/c1.html#a#ahttp://www.nchess.com/book1/c1.html#a#a
  • 7/22/2019 Thuat toan minimax.pdf

    6/52

    c c gi l lng gi tnh (static evaluation). Hm thc hin vic tnh ton c gil mt b lng gi tnh, v gi tr nhn c gi l im lng gi tnh. C hai u thu c gng i nh th no t c im tuyt i ln nht. Ngi chi cc i stm 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 hayim dng ca i th nh i (hnh 1.4).

    V d mt phn cy tr chi trong hnh 1.5.

  • 7/22/2019 Thuat toan minimax.pdf

    7/52

    Ngi chi cc i hi vng chn nc i bn phi t c im 8. Th nhng nu inh 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, ngichi cc i ch c c 1 im thay v 8. Ngc li, nu ngi chi cc i chn nci bn tri, th trong tnh hung xu nht anh ta vn cn c 2 im, ln hn l chnnc i bn phi. Ni chung, ngi chi cc i s phi tm cch nhn ra cc nc i cai phng tip theo lm cho im gim xung. V tng t nh vy, ngi chi cctiu phi nhn bit c nc i ca ngi chi cc i c gng lm tng im ln. Thtc 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:

  • 7/22/2019 Thuat toan minimax.pdf

    8/52

    Thut ton Minimax

    Nu nh t n gii hn tm kim (n tng di cng ca cy tmkim), 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 tcMinimax 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 tcMinimax ny cho cc con ca n. Ghi nh kt qu ln nht.

    Vit chng trnh cho thut ton Minimax

    By gi, ta th da vo pht biu trn vit chng trnh cho thut ton ny bng ngnng 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 sutm kim depth ( bit phi tm n u), ng thi ta cng phi cho bit th c hin tipos 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 hmny 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 giEval nh gi cht lng ca th cposhin ti (thc hin iu mt ca thut ton). Nh vy bc u hm ny c dng sau:

    function Minimax (pos, depth): integer;begin

    ifdepth = 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 conpos' l cc th c c to ra tpos bng cch i mt nc i hp l mno . Do ta phi c cc lnh thc hin i qun n cc th c mi. bit t thcpos c th i c nhng nc no, ta dng mt th tc Gen c tham s l th c cha

  • 7/22/2019 Thuat toan minimax.pdf

    9/52

    pos. Th tc ny s ct cc th c conpos' vo b nh (dng danh sch). Vic tiptheo l ta ly tng th c ra v p dng tip th tc Minimax cho n tnh imvalue ca n.

    Vy hm Minimax by gi c dng:

    function Minimax (pos, depth): integer;begin

    ifdepth = 0 thenMinimax := Eval (pos) { Tnh gi tr th c pos }

    else beginGen (pos); { Sinh ra mi nc i t th c pos }

    while cn ly c mt nc i m dobegin

    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 qutt nht bestph thuc vo ngi chi ang l ngi chi cc i hay cc tiu. Cuicng thut ton s tr v im tt nht t c. Vy hm ny c pht trin tip thnh:

    function Minimax (pos, depth): integer;

    beginifdepth = 0 thenMinimax := Eval (pos) { Tnh gi tr th c pos }

    else beginGen (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 }

    ifngi chi l ngi cc i thenbegin

    ifbest < value then best := value;endelse begin

    ifbest > value then best := value;end

    end;Minimax := best; { Tr v gi tr tt nht }

  • 7/22/2019 Thuat toan minimax.pdf

    10/52

    end;end;

    Thng thng cho tin (v cng rt gn s thc) ta coi c hai ngi chi (hai bn) ccng 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 choim mt th c c thm du m dng: du m dnh cho ngi chi cc i v du mcho ngi chi cc tiu. Vi ngi chi cc i s mong mun im ny cng dngcng tt, cn ngi chi cc tiu li mong mun im ny cng m cng tt. Do dx l ta s tu theo mc ngi chi m i du gi tr nh gi th cpos. Ch rng,thay i su l chuyn sang i phng nn phi i du. Chng trnh thc hin idu 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 chnnc i tt nht cho h (gp c iu 2 v 3 li vi nhau c). Gi tr best cn ckhi u rt nh m bo khng vt mi gi tr value, tt nht l gi tr -v cng:

    function Minimax (pos, depth): integer;begin

    ifdepth = 0 thenMinimax := Eval (pos) { Tnh gi tr th c pos }

    else beginbest := -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); ifvalue > best then best := value;

    end;Minimax := best;

    end;end;

    Thng thng, bn c c biu din bng cc bin ton cc. Do thay cho truyntham s l mt bn c mi pos vo th thc Minimax th ngi ta bin i lun bin toncc ny nh thc hin nc i "th" (nc i dn n bn c mipos). Sau khi Minimaxthc hin vic tnh ton da vo bn c lu bin ton cc th thut ton s dng mt sth tc loi b nc i ny. Nh vy Minimax b cc tham spos nh sau:

    function Minimax (depth): integer;begin

    ifdepth = 0 then Minimax := Eval { Tnh th c pos trong bin ton cc }

  • 7/22/2019 Thuat toan minimax.pdf

    11/52

    else beginbest := -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;

    ifvalue > 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 gil thut ton Negamax.

    nh gi thut ton Minimax

    Nu h s nhnh trung bnh ca cy l b v ta thc hin tm kim n su dth s ntphi lng gi y cy nh ta bit l bd. y chnh l s o phc tp ca thutton. Nu b = 40, d= 4 (cc con s thng gp trong tr chi c) th s nt phi lnggi l 404 = 2560000 (trn 2 triu ri nt). Cn vi b = 40, d= 5 th s nt phi lnggi 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 thnhmt 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 sinhcc nc i v lng gi rt tn thi gian tnh ton, do vy su ca cy tr chi cngb hn ch nhiu. Ta cn c thm nhng ci tin ci thin tnh hnh.

    VI. Th tc AlphaBeta

    Th tc AlphaBeta l mt ci tin thut ton Minimax nhm ta bt nhnh ca cy trchi, lm gim s lng nt phi sinh v lng gi, do c th tng su ca cy tmkim. 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 nui nc bn tri s c t nht l 2 im d l cc lng gi ca cc nt khc cho ktqu nh th no i na.

  • 7/22/2019 Thuat toan minimax.pdf

    12/52

    By gi, ta li gi s nt tip theo c lng gi v cho kt qu l 1. Nu i vo nhnhny th i phng s m bo lm im ca ngi chi cc i khng th vt quc 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-Beta

    Nu bit iu tht s ti th ng mt thi gian tm hiu n s ti t nu

    tng ny c gi l nguyn tc Alpha-Beta do n dng trong th tc AlphaBeta (tas xt di y). Hai tham s ca th tc ny (theo cc t tn truyn thng) c gi lalpha v beta v dng theo di cc trin vng - chng cho bit cc gi tr nm ngoikhong [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, nguyntc 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 cnphi lm bt c vic g na cho nt ny. Cng vy, nguyn tc ny cng gip chnh sa

  • 7/22/2019 Thuat toan minimax.pdf

    13/52

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

    Thut ton AlphaBeta

    * Nu mc ang xt l nh (gc cy), t gi tr ca alpha l -vcng vbeta l +vcng

    * Nu nh t n gii hn tm kim (n tng di cng ca cy tmkim), tnh gi tr tnh ca th c hin ti ng vi ngi chi . Ghi likt 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 bnghoc ln hn beta.- p dng th tc AlphaBeta vi gi tr alpha v beta hin ti chomt con. Ghi nh li kt qu.- So snh gi tr ghi nh vi gi tr beta, nu gi tr nh hn tht 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 bnghoc ln hn beta.- p dng th tc AlphaBeta vi gi tr alpha v beta hin ti chomt con. Ghi nh li kt qu.- So snh gi tr ghi nh vi gi tr alpha, nu gi tr ln hn tht alpha bng gi tr mi ny.

    Ghi nh li alpha.

    Vit chng trnh cho thut ton AlphaBeta

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

  • 7/22/2019 Thuat toan minimax.pdf

    14/52

    function AlphaBeta(alpha, beta, depth): integer;begin

    ifdepth = 0 thenAlphaBeta := 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

    ifbest > alpha then alpha := best;thc hin nc i m;value := -AlphaBeta(-beta, -alpha, depth-1);b thc hin nc i m;

    ifvalue > 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 dngnh sau:

    AlphaBeta(-INFINITY, +INFINITY, 4);

    Cng tng t nh thut ton Minimax ta gp hai mc 2 v 3 lm mt nh vic idu 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 tonkhng thc hin tip vng lp, c ngha l n khng chu m rng tip nhng nhnh cnli na. Cc nhnh b ct b - v do ta s tit kim c thi gian. Vic ct bny hon ton an ton vi nhng l do ta xt trn. Ta thy rng mi ln hm nyc gi th ch c tham s beta c dng so snh ct b, cn tham s alpha khngc dng. Tuy nhin khi p dng cng thut ton cho cy con th ta hon v hai gi tralpha, 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 ngichi cc i, cn gi tr kia li lun nh hng n ngi chi cc tiu. Chng l ccngng ca h (ngng gia cc nc i c chp nhn v khng chp nhn). Nhngnc i cn quan tm phi nm lt gia hai gi tr ny. Dn dn khong cch gia hai gitr alpha - beta cng ngy cng thu hp v dn n cc nhnh cy c gi tr nm ngoikhong ny nhanh chng b ct b (hnh 1.7).

  • 7/22/2019 Thuat toan minimax.pdf

    15/52

    nh gi thut ton AlphaBeta

    Trong iu kin l tng, thut ton AlphaBeta ch phi xt s nt theo cng thc:

    =

    vidchn

    =vidl

    Vi b = 40 v d= 4 ta c s nt phi xt l 2x402 - 1 = 3199. Nh vy trong iu kin ltng th s nt phi xt nh AlphaBeta (ch khong 3 nghn nt) t hn thut tonMinimax (hn 2,5 triu nt) l 2560000 / 3199 khong 800 ln. Cn vi b = 40 v d= 5ta 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 = 1382ln.

    Di y l bng so snh s nt phi xt gia hai thut ton Minimax v AlphaBeta.

    su

    Minimax AlphaBeta

    S ntS lntng

    S nt S ln tng

    T l s nt

    Minimax /AlphaBeta

    1 40 40 1

    2 1600 40 79 1.9 20

    3 64000 40 1852 23.2 34

    4 2560000 40 3199 1.7 800

    5 102400000 40 74118 23.2 1381

    6 4096000000 40 127999 1.7 32000

    7 163840000000 40 2964770 23.2 55262

  • 7/22/2019 Thuat toan minimax.pdf

    16/52

    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 khitng t dl sang dchn v 23.2 ln khi t dchn sang l - trung bnh ch tngkhong hn 6 ln khi tng d

    S nt ca AlphaBeta tng chm hn rt nhiu ln so vi Minimax. T s ntphi xt gia hai thut ton ny cng cao khi dcng ln.

    Cng thc tnh s nt cho thy s nt phi xt khi dng AlphaBeta t hn nhiu so viMinimax nhng vn l hm s m v vn dn ti bng n t hp. Thut ton AlphaBetahon ton khng chng c bng n t hp m ch lm gim tc bng n. Tuytrong thc t s nt phi xt (lng gi) thng nhiu hn trong iu kin l tng nhngn 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 chinh trong hnh 1.9.

  • 7/22/2019 Thuat toan minimax.pdf

    17/52

    Cy ny c su bng 3 v h s phn nhnh bng 3. Cc th t kt lun (cc con sbn 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 nhnhny m bo rng l kt qu thu c s t nht l bng 8. iu lu ny cbc 2 ghi li.

    3-5 chc chn khng cn c im no cao hn 8, ngi chi cc i phi xt c haith c cn li v thu c cc gi tr 7 v 2. Do n y kt lun chnh xcim 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 vnganh ta cho ngi chi cc i c nhiu im nn c th tm kt lun mc nyl 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 chicc i) ta phi xem xt c hai nc i cn li. Nc i cn li u tin dn n gitr lng gi tnh l 9 - mt gi tr ln hn 8. Nh vy nhnh gia l ti t hn chongi chi cc tiu. n y vic ct b c thc hin - ng hng ngi chicc 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 nhnhgia 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 tnh phn trn. y phi lng gi c ba nt cy v kt lun cui cng c ara l ngi chi cc i i gii lm th ch t c 4 im.

  • 7/22/2019 Thuat toan minimax.pdf

    18/52

    15. Nh vy nh vic kho st nhnh cy bn phi ngi chi cc tiu thy rng nuchn 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 i5 im. 31. Cng tng t nh kt lun 16, y ta kt lun kh quan hn l ngichi 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 3im - mt im s qu km do thut ton khng bun xem xt cc trng hpcn li na. Do tit kim c 6 nt khng cn phi lng gi v cng khngphi 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 5im nh chn i theo nhnh gia.

    VII. Hng ci thin vic ta nhnh ca thut tonAlphaBeta

    Thut ton AlphaBeta ni chung gip chng ta tit kim nhiu thi gian so vi Minimaxm vn m bo kt qu tm kim chnh xc. Tuy nhin lng tit kim ny khng nnh - ph thuc vo s nt m n ct b. Trong trng hp xu nht thut ton khng ctc mt nhnh no v phi xt s nt ng bng Minimax. Ta cn y mnh vic ct bnh 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 thuhp nht. Do nu cng sm gp gi tr tt nht th ca s cng chng thu hp. Nh vyphi lm sao cho cc nt l c sp xp theo trt t t cao xung thp. Trt t nycng tt bao nhiu th thut ton chy cng nhanh by nhiu (cc cng thc v s nt philng gi trong iu kin l tng trn tnh c vi trt t l tt nht). Ta s tr liphn ny trong mt chng ring.

    Tng kt chng 1

    Chng ny trnh by nhng kin thc chung v tr chi c, cc nh ngha v th no lcy 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 tmkim duy nht l ch tm kim n mt su gii hn no v chn nc i dn nmt th c c li nht cho mnh. Do phi tnh c kh nng chng tr ca i phng nnta khng dng c cc thut ton tm kim thng thng. Phi dng mt thut ton tmkim ring cho cy tr chi. l thut ton Minimax v ci tin ca n l AlphaBeta.

  • 7/22/2019 Thuat toan minimax.pdf

    19/52

    Tuy c hai thut ton u khng trnh c bng n t hp nhng AlphaBeta lm chmbng 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 vcmy tnh s, vit chng trnh chi c u tin. Vo lc , Turing phi vit v chychng 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. Cngvo nm , Claude Shannon vch ra mt chin lc cho my tnh chi c tt. Nhngvo nhng nm 1950 tc my tnh rt chm nn khng ai dm tin on liu my tnhc 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 nhnhoi, 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 vonhng nm 60 s c chng trnh chi c c lit vo hng ng kin tng th gii. Vonhng nm cui ca thp k 60, Spassky tr thnh kin tng c th gii v ccchng 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 cnhng 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 cucnh cc gia David Levy, mt kin tng quc t ngi Anh (theo phn loi ca Linon c quc t cc ng cp cao bao gm: Kin tng quc t, i kin tng v V chth gii) v John McCarthy, mt nh nghin cu trong lnh vc tr tu nhn to. Li thchu 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 vnngi thng, mt ho v mt my thng. Levy khng ch chin thng m cn t ti stin nh cc 1000 bng.

    Nu nh mc ch ca cuc nh cc l lm cho nhng nh nghin cu phi ngh ktrc khi tin on n ngy thng li, th ln nh cc ny cho thy: mc d tin onsai trong nhng nm 1958-1968 v 1968-1978, cc chuyn gia chng trnh c li tip tctin 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.

  • 7/22/2019 Thuat toan minimax.pdf

    20/52

    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 250chip v hai b x l trong mt bng mch n, n c kh nng xt 750.000 th c trongmt 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 trmngi chi c mnh nht th gii. Nhng trong trn u din ra vo nm 1989 gia nhV 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: 'trongthp 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 tronglch 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 2n 400 triu nc i mi giy) thng Gary Kasparov trong vn u tin ca trn u 6vn, 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 39nm t lc c chng trnh chi c u tin, Deep Blue chin thng nh ng kim Vch 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 sangchng sau vit chng trnh chi c. Sau quay li chng ny hiu k hn v ccthut ton .

    Copyright 2002, Phm Hng Nguyn

    T VIT CHNG TRNH C TNG

    Tc gi: Phm HngNguyn

    Mc lc Chng 1 Chng 3

    http://www.nchess.com/book1/index.htmlhttp://www.nchess.com/book1/c1.htmlhttp://www.nchess.com/book1/index.htmlhttp://www.nchess.com/book1/c1.html
  • 7/22/2019 Thuat toan minimax.pdf

    21/52

    Chng 2C TNG - PHIN BN U TIN(VERY SIMPLE CHINESE CHESS PROGRAM - VSCCP1.0)

    I. Gii thiu

    Tr chi C Tng (tn phin m Trung Quc XiangQi, tn ting Anh Chinese Chess) lmt minh ho rt tt cho bi ton tm kim trn cy tr chi v p dng thut tonAlphaBeta 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 cth 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 mtchng trnh chi c phi nh th no. Cc chng trnh mu VSCCP (Very SimpleChinese Chess Program - Chng trnh C Tng rt n gin) cng ht sc n gin vc 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 ngngang. Cc qun c chia lm hai bn ng ti cc giao im ca cc ng. Bn c v vtr khi u cc qun c nh hnh 2.1. Cch n gin nht biu din mt bn c trongmy tnh l ta dng mt mng hai chiu, kch thc 9 x 10:

    piece: array[1..10, 1..9] of byte

  • 7/22/2019 Thuat toan minimax.pdf

    22/52

    Mng trn hot ng tt nhng c ci bt tin l ta phi dng ti hai ch s truy cpvo mng (v d v tr qun Pho gc trn bn tri (ct 2, dng 3) l piece[3, 2]). Mt citin 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 cs 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 K hiu Gi trTt (Cht) PAWN 1S BISHOP 2Tng ELEPHANT 3

    M KNIGHT 4Pho CANNON 5Xe ROOK 6Tng KING 7Trng EMPTY 0

  • 7/22/2019 Thuat toan minimax.pdf

    23/52

    Ngoi mc ch gn mi qun c mt m s phn bit, m ny cn gip ta c lngs 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 boconst (trong Pascal) nh di, trong BOARD_SIZE (kch thc bn c = 90) l mthng 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 thci tin thay cho kiu byte ca mng piece l mt bn ghi nhm lu thm cc thng tinny. 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 K hiu Gi tren DARK 1Trng LIGHT 2

    Trng EMPTY 0Ta 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 trLIGHT v DARK. Mt bin ton cc khc xside s c sn gi tr ngc vi side tintnh ton (v d nu side = LIGHT th xside = DARK). Khi ti phin i phng i, ta

  • 7/22/2019 Thuat toan minimax.pdf

    24/52

    cn o ngc gi tr trong c side v xside bng cc lnh nh sau (ch lLIGHT+DARK = 3):

    side := xside; xside := 3 - xside;

    Ngoi ra, ta cn khai bo bin computerside cng ch c mt trong hai gi tr LIGHT vDARK 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 chngtrnh 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 ubnh 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 cchm 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 sc mu khc nhau. Do qun Tng v Tng c cng ch ci u T nn trnh nhmln ta dng ch V (Voi) biu din qun Tng. Tuy qun Tt v Tng cng c cng chci 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, S-S, 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 cbng 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 thngNORMAL (s c nn en) hay mu khc SELECT (s c nn xanh sm) th hin qunc 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);

  • 7/22/2019 Thuat toan minimax.pdf

    25/52

    2. Sinh nc i

    Mt trong nhng vic quan trng nht my tnh c th chi c c l phi ch cho nbit mi nc i c th i c t mt th c. My s tnh ton chn nc i c linht 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 thichng trnh c th b trng ti x thua lun. Do s lng nc i sinh ra ln, luti 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. Myphi sinh c t nhng nc i rt hay cho n nhng nc i rt ng ngn (nh yTng vo v tr khng ch ca i phng). Ta hnh dung ngay th tc sinh nc i Gens c y nhng vng lp for, cc cu lnh kim tra if v r nhnh case, trong cc phptnh kim tra gii hn chim mt phn ng k. Th tc ny lun sinh nc cho bn angti lt chi cn c vo ni dung ca bin side. y l mt trong nhng th tc phc tpv 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.

    typemove = record { nh ngha cu trc nc i }

  • 7/22/2019 Thuat toan minimax.pdf

    26/52

    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 nci sang tri mt cho n. Nc i sang tri mt c chuyn thnh s 83 l mt v trcng hng vi xut pht nn c chp nhn. Mt nc i khc cn phi xem xt lsang 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 traxem n c cng hng vi xut pht khng. Vic kim tra thc hin bng cch chia cho9 (kch thc ca mt dng) v ly phn nguyn (trc li phi chuyn th t vgc l 0 bng cch tr i 1). Ta thy ((83-1) div 9) = ((84-1) div 9) nn 83 c chpnhn; trong khi do ((81-1) div 9) ((84-1) div 9) nn kt lun l nc i n 81khng hp l (hnh 2.5).

  • 7/22/2019 Thuat toan minimax.pdf

    27/52

    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 qunc .

    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) dobegin 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 chiung 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 quncof

    Xe: begin while Xt ln lt tt c cc t bn phi Xe cho n l tri bn cdo 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 cdo...

    while Xt ln lt tt c cc t bn trn Xe cho n l trn bn cdo...

    while Xt ln lt tt c cc t bn di Xe cho n l di bn cdo...

    end; { Xong qun Xe }

    Pho:...

    Phng php ny c nhc im l chng trnh phi vit phc tp, cng knh, kh tmli nhng kh nhanh.

  • 7/22/2019 Thuat toan minimax.pdf

    28/52

    Trong chng trnh mu VSCCP, chng ti gii thiu mt k thut khc c tn gi l "hpth" (mail box - do cc bng ca n c dng cc hp phn th). Mc ch chnh ca kthut ny l nhm gim bt cc php kim tra vt gii hn bn c v lm n ginchng trnh. Mu cht l thay cho bn c c kch thc bnh thng 9x10 = 90, ta dngmt 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 vtbin. Cc nc i trn bn c 9x10 c chuyn tng ng sang bn c ny. Nu mtnc i c sinh ra li ri vo mt trong hai ng bao th c ngha n ri ra ngoibn c ri, phi b i v ngng sinh nc v pha . S d c n hai ng bin (chkhng 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 bnhthng.

    V d, nu v tr qun Xe nm s 84 (trong mng piece) nh hnh 2.5, th khi i sangbn c m rng s thnh v tr mailbox90[84] = 148. C ngha l n ng vi th 148ca mng mailbox182. By gi ta s sinh th mt nc i sang tri mt cho qun Xeny. Vic sinh v kim tra s c thc hin trong bn c m rng, nc i mi l s148 - 1 = 147. Do mailbox182[147] = 83 -1 nn nc i ny c chp nhn. S 83 chobit kt qu sang tri mt l v tr 83 trong bn c bnh thng. Tuy nhin, nc i sangtri ba , c s 148 - 3 = 145 v mailbox182[145] = -1 cho bit l mt nc i khnghp 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 cngvi 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 +13hoc -13 (ch , vic sinh nc v kim tra hp l u da vo mng mailbox182 nn gitr 13 l kch thc mt dng ca mng ny). sinh cc nc i cho ta phi cng trvi mt hng s khc. Ta nn lu cc hng s ny vo mng offset c 2 chiu. Mt chiuda vo loi qun c nn ch s c nh t 1 n 7. Chiu cn li l s hng i ti a

  • 7/22/2019 Thuat toan minimax.pdf

    29/52

    ca mt qun c. Qun c c nhiu hng nht l qun M c ti 8 hng nn chiu nyc khai bo ch s t 1 n 8. Cc qun c c s hng t hn s c in 0 vo phntha. Ch l nc i qun Tt ca hai bn khc nhau hng tin. tit kim ta ch lunc 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 ccnc vt qu bin. Ta cn phi kim tra mt s gii hn khc. V d nh Tng v Skhng th i ra ngoi cung, Tng ch c php 7 im c nh pha bn mnh, Ttch c php tung honh trn t i phng, cn pha bn mnh cng b gii hn ngtngho mt s ... thc hin nhng php kim tra ny, ta dng mt mng l legalmoveng vi tng trn bn c s cung cp cc thng tin ny. kim tra mt qun c cc 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 qunc c php n y.

    V d, s 3 c gi tr legalmove[3] = 5 (chuyn thnh s nh phn l 00000101) cho bitcc 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 qunca qun Pho nh mt trng hp c bit. Nh vy, tng th sinh cc nc i cho mtqun 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 } ifoffset[p,j] = 0 then break;

    x:=mailbox90[i]; { Chuyn sang bn c m rng} ifp in [ROOK, CANNON] then n := 9 else n := 1; for t:=1 to n do { S nc c th i theo mt hng} begin

  • 7/22/2019 Thuat toan minimax.pdf

    30/52

    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 } ifside = DARKthen 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 trac thc hin nh hm kingface. Hm s tr li gi tr true nu nc va i gy h mtTng. Hm ny c th c t trong th tc sinh nc Gen. Tuy nhin n gin hn, tat 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 c

    nh gi mt th c l mt trong nhng nhim v quyt nh chng trnh chi c cabn 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 thc vi nhau v bit chn nc i tt nht. y l mt nhim v rt kh khn v phc tpdo khng tn ti mt thut ton tng qut v thng nht no tnh im c. im camt 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 thca tng qun c cng nh c cc din trn u. V d, mt cp M giao chn, c th stcnh tin qun v ta lng phng th thng c gi hn hai M ng ri. Nhng cng clc hai M ng ri li tt hn hai M giao chn khi M ny li cn M kia trong mt thtrn no . Ta cng bit rng, "lc nc hai Xe nh b ph, gp thi mt Tt cngthnh 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 cth 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 snhc 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 thxu i vi h v ngc li). iu ny tuy khng tht ng lm, nhng n gipcho thut ton tm kim ca ta lm vic tt v trong thc t cng kh gn vi stht.

  • 7/22/2019 Thuat toan minimax.pdf

    31/52

    Trong chng ny chng ta ch ci t phng php n gin nhng c bn nht: lnggi da trn c s gi tr ca tng qun c. Cch tnh ny s ly tng gi tr cc qun chin c ca bn mnh tr i tng gi tr cc qun c hin c ca i phng. Do , mtth c ny hn th c kia ch n cn nhiu qun bn mnh hn, nhiu qun gi tr caohn 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 theomt chin lc chung no ht (v nh). N cn to cm gic nh c "v", ngha l chnhm nhm s h ca i phng l "n" ngay m khng cn bit n hu qu (iu nykhng hn ng, l do s trnh by di). Tuy nhin phng php tnh im ny c nhngu 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 thigian 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 gpmt t l nh trong tng s im ca mt th c. Vic ch nhm "v" qun ca iphng nhng sau khi suy ngh su nhiu nc cng tr thnh "cao c" riy. Ni cho cng, mc ch chnh ca chng ta cng l "v" bng c qun cgi 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 ccqun c. Sau y l im tng qun m mi ngi thng chp nhn:

    Qun c K hiu imTt PAWN 1 (2 nu qua sng)S BISHOP 2Tng ELEPHANT 2M KNIGHT 4Pho CANNON 4.5Xe ROOK 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 cdi): 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 imnh vy khng nhng vn gi nguyn c tng quan v trnh dng s thc (tnhchm) m ta cn c mt khong cch hp l gia cc im sau ny d dng thmnhng im b xung "thng" hoc "pht", tc l nhng im cn c vo nhng yu t

  • 7/22/2019 Thuat toan minimax.pdf

    32/52

    khc (v d cng l Pho nhng lc ch c 40 im do v tr "b", lc khc li c thn 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 thc 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 tngca 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

    ifcolor[i] = side then s := s + piecevalue[piece[i]] elseifcolor[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 ccth k trc. T lu, lng c c cu nhn nh sc mnh ca cc qun ch lc l "Xe10, Pho 7, M 3" hoc nh gi Xe l qun ch lc mnh nht bng cu "Nht Xa stvn" hay nh gi mt Tt qua h, sc mnh bng na con Xe (nht Tt h, bn Xachi lc). Th nhng s nh gi nhn nh ny v sc mnh ca cc qun khng chnhxc v cng khng y . Do khi nim gi tr ca cc qun cn c xc nh r vhon 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 thigian nht v c ngha n thng thua nhiu nht. Do cc nh gi qun c thng lcho giai on ny.

    Chng ta bit mi loi qun c hay mi binh chng c c im, tnh nng v tc dngkhc nhau nn sc mnh ca chng cng khc nhau, gi tr ca chng cng khng gingnhau. Ngay bn thn mi qun c cng khng phi lc no sc mnh cng gi nguynnh c. Khi ng v tr tt n pht huy tnh nng tc dng ti a khc hn vi khi nng v tr xu, khng th pht huy tnh nng tc dng c, hay ch pht huy mc rthn ch. Vy iu trc tin chng ta phi thy mi qun c c hai gi tr: gi tr vn cv gi tr bin ng. Gi tr vn c thng c gi l gi tr c bn (gi tr tnh), cn gi

  • 7/22/2019 Thuat toan minimax.pdf

    33/52

    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 cacc qun nh sau:

    Nu ly Tt cha qua sng lm chun xc nh gi tr th n l qun km nng lcnht trn bn c. Khi cha qua sng n ch kim sot hay khng ch mi mt im trcmt n nn tm cho n c gi tr bng 1. Khi Tt qua sng, n khng ch n 2 hay 3im trc mt v bn cnh (Tt bin ch khng ch c 2). By gi n mang gi trtng i, phi thy n mnh hn lc cha qua sng nn gi tr lc ny ca n phi bng2.

    i vi S, Tng l loi binh chng phng ng, c nhim v chnh l bo v an ton choTng, 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 Shoc 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 thTng 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 vtc hai tuyn ng ngang hay dc. So ra th M cng mnh y nhng tc chin tmc ly ngn m thi. Nu so vi hai Tt qua sng cp k nhau th nng lc ca Mkhng hn bao nhiu, do nh gi tr c bn ca M 4.5 l va. Nn nh hai Tt cpk 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 tia ch 8 im nhng n cn khng ch c c ng ngang. Mt khc Pho l qun ctnh 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 phithy 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 lid b cn tr, cn Pho th nhanh nhn hn, d pht huy nng lc hn nn gi tr c bnca 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 tia n 17 im. Nu em Xe i ly mt Pho v mt M ca i phng th thy cphn thit thi mt cht, cn i vi hai Pho th c th coi l cn bng. Do gi tr cbn ca Xe l 10.

    Cn Tng, bn thn n khng c sc mnh g nhiu d i khi n cng lm c nhimv tr gip cho cc qun phe n tn cng c kt qu. Th nhng gi tr c bn ca n thv cng to ln, khng mt qun no so snh c. Tt c cc qun u c th i, c thhi sinh nhng ring qun Tng khng th nh i m cng khng th hi sinh, v mtTng l thua c. Do cng khng nn nh gi tr c bn ca Tng v nh cngchng c ngha g.

  • 7/22/2019 Thuat toan minimax.pdf

    34/52

    (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" mtnc ri li tnh tip. Sau n s phc hi li nc i ny. Do qu trnh th - phc hidin ra rt nhanh v khng hin ra mn hnh nn my c th th hng chc triu ln mikhi n lt. Vic i th c thc hin nh gi hm Makemove. Vic khi phc nc iny nh gi th tc UnMakemove. Nh vy, chng trnh thng xuyn thc hin cccu lnh dng nh sau:

    while tt c cc nc i c th c t mt th cdo beginMakemove(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 snc na. C nh vy cc hm Makemove v UnMakemove c th c gi lng nhaurt su.

    Khi i th, hm Makemove phi lu li cc thng tin cn thit cho vic khi phc li sauny. Cch n gin nht - lu li c bn c, khng dng c do cc thng tin phi luqu 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 dngmt mng hist_dat cc bn ghi cha thng tin v con tr hdp c t chc nh mtngn 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 hmny cng phi thay i gi tr cc bin ton cc v bn i v i th side v xside (victhay i ny l rt cn thit hm Gen sinh nc i cho ng bn ti lt). N cngtng 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 hmMakemove.

    Mt vn ny sinh y l nu mt qun Tng b bt th c cn phi i "th" nakhng. Nu mt mt Tng, vn c s kt thc ngay lp tc, do khng cn phi i thtip v nhnh cy tr chi b ct ti y d vn cha t n su tm kim ti a. Cnnu my i th tip, my s coi Tng nh mt qun bnh thng (d c gi tr rt

  • 7/22/2019 Thuat toan minimax.pdf

    35/52

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

    x l nhng trng hp ny, ta cn chuyn Makemove thnh mt hm boolean, tr ligi tr true nu nc i th ny li n c Tng i phng. Nu n c, hin nhinim 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:

  • 7/22/2019 Thuat toan minimax.pdf

    36/52

    while tt c cc nc i c th c t mt th cdo begin ifMakemove(mt_nc_i) then { i th mt nc. Hm tr v gi tr true nu nc 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 binny v trong trng hp Tng (bn my tnh) sp b bt d i bt c nc no th minhnh cy u tr v im -1000. Do my s chn nhnh u tin i. Nc i nyc th khng hay do chp nhn thua qu sm nh minh ho trn hnh 2.10. My nn chnnc thua lu nht hi vng i phng i "nhm" (cn nc cn tt) v ng tinh thnchin u hn.

    5. Tm kim AlphaBeta

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

  • 7/22/2019 Thuat toan minimax.pdf

    37/52

    function AlphaBeta(alpha, beta: integer; depth: byte): integer;var i, best, value: integer;begin ifdepth = 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 ifbest > alpha then alpha := best;

    ifMakeMove(gen_dat[i].m) then value := 1000-ply else value := -AlphaBeta(-beta, -alpha, depth-1);

    UnMakemove;

    ifvalue > best then beginbest := 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 ccnewmove. 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 phmmi tn iu khin con tr mn hnh chy n qun c thch hp, bm phm Space hocEnter ch mnh s i qun ny, chuyn con tr n ch mi v vn bm phm Spacehoc Enter ch l ch n. Ngi chi c th ngng chi gia chng bng cchbm phm ESC. Hm x l iu khin ca ngi chi GetHumanMove phi lm nhim

  • 7/22/2019 Thuat toan minimax.pdf

    38/52

    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 ikhng 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: hmGen. u tin, ta gi n sinh ra tt c nhng nc i c th c t th c hin ti vibn i l ngi - chnh l cc nc i hp l. Mi khi ngi chi chn mt nc, mys kim tra xem n c trong danh sch cc nc i hp l khng. Nu c, my s chpnhn nc i v thot khi hm GetHumanMove. Nu khng n s i ngi chiphi 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 beginMoveTo(x, y);ch := ReadKey;

    case ch of#13, ' ': begin { nh du/chn mt nc i }

    t := x + (y-1)*SIZE_X; ifselecting=0 then begin { Ngi chi nh du } ifcolor[t]=side then begin

    selecting:=1; from := t; DrawCell(t,SELECT); end; end else begin { Ngi chi ch ra nc i n } ift from then DrawCell(from, NORMAL); ifcolor[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)thenexit;

    { Nu nc khng hp l, hin li qun xut pht, ngi chi chn nci khc }

  • 7/22/2019 Thuat toan minimax.pdf

    39/52

    DrawCell(from, SELECT); end; end; end;

    #27: { X l cc phm khc y }

    ...

    7. Cp nht mt nc i

    Sau 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 hinhnh nhng thay i. Vic ny c thc hin nh gi hm UpdateNewMove. N c khnhiu ch ging nh hm Makemove nhng n gin hn. Tham s quan trng nht mn 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 iphng) v tr v gi tr true nu c mt bn thng. Vng lp chnh s cn c vo gi trchn l ny ngng chi.

    8. Vng lp chnh x l tr chi

    Sau khi c cc hm v th tc cn thit, n lc ta lin kt chng li thnh mt trchi 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. Tutheo bn ti lt n s gi hm x l thch hp cho ngi hoc my. Sau khi nhn kt qun lo cp nht cc s liu cn thit, chuyn i phng thnh ngi n lt chi.

    repeat ifside=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 bitthm 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 cngnh nhiu s liu khc. Vic quan st cc s liu ny cn gip ta bit cc ci tin, sa iv 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

  • 7/22/2019 Thuat toan minimax.pdf

    40/52

    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 quantrng, 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 cchchia tng s nt lng gi cho thi gian tiu tn. Tt nhin thi gian tiu tn ny ngoithi gian tiu cho hm lng gi cn phi chi cho nhiu th khc nh chy cc lnh cahm 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 nyri chia cho s ln gi hm Gen (o bng bin gencount). Cng chi lu, cc d liu oc 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 xemxt 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 chthm, 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;...Varevalcount: 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);

  • 7/22/2019 Thuat toan minimax.pdf

    41/52

    ...

    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). Cnthn 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 trcti 4 nc i) n c kh nng nh bi nhng ngi chi c trnh trung bnh v chiu. 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 cchy 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 trnhai triu ri nt). chnh l s nt ta phi xt nu dng phng php tm kimMinimax. Vi tc trung bnh xt c 55985 nt mi giy th thi gian xt htbng phng php ny s mt khong 2560000/55985 46 giy. y, ta ang dngphng php tm kim AlphaBeta, s nt phi xt ch cn 150480, ngha l t hn 17 lnv tng thi gian phi b ra ch 2.63 giy thay cho 46 giy. Nc i M vo gc khngc hay lm - nhng khng sao, y mi ch l phin bn u tin v su tm kimcn hn ch.

  • 7/22/2019 Thuat toan minimax.pdf

    42/52

    su

    S ntlng gi

    Thigian

    (giy)

    H sphnnhnh

    im Nci

    S ln tngs nt lng

    gi

    1 44 0.00 44.00 40 B7B0 -2 877 0.00 43.78 -5 B7B0 19.9

    3 24411 0.38 41.73 35 B7B0 27.8

    4 150480 2.63 41.75 -5 B9A7 6.2

    5 5574794 90.73 40.40 10 B7C7 37.0

    6 62929742 1031.32 40.15 -5 B7C7 11.3

    7 723007130 13355.24 39.86 10 B7C7 11.5

    Hnh 2.11

    Nu bn cha h thc hin mt ci tin no m ch nhp nguyn vn chng trnh mu tPh lc A v dch chy th cc gi tr v su, s nt lng gi, h s phn nhnh, imt c, my tnh i (tr nhng thng s lin quan n thi gian do tu thuc loi mybn c) phi y ht nh hnh 2.11. Nu c iu g khc c ngha l c sai st trong khinhp 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 kimbng cch sa khai bo hng s MAX_PLY t 4 ln 5 hoc 6. ng ham tng nhiu. Dobng 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. Trnmy tnh ca ti, thi gian xt nc u tin tng t 2.63 ti 88 giy (tng 33 ln). Snt 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, thigian my "ngh" nc u tin mt ti 1031 giy (hn 17 pht, gn gp 12 ln). Cns nt phi lng gi l 62929742 (gp 11 ln). Bn c th thy cc con s cng tng rtnhiu nhng d sao ch tng c 11 ln. H s phn nhnh c thng k qua s lngnhiu 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 utin mt n... 3.7 gi (trong khi qui nh tng cng tt c cc nc ca mt u th chc 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 chcn n su 11, cc my tnh c Pentium 166 MHZ s mt n... 4 nm ngh nci u tin (cn n su 14 th mt... 4223 nm).

  • 7/22/2019 Thuat toan minimax.pdf

    43/52

    Ta hy th c m nu c c chic my tnh mnh v chuyn dng (cho c) nh DeepBlue th tnh c n u. Loi my ln u tin thng c Kasparov (nm 1997) ckh 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 ctrong 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 citin c bit).

    n y ta cng c th thy, cc chng trnh c thuc loi tt nht chy trn cc mytnh thng thng (loi PC v khng gn cc mch chuyn dng) cng ch tm kim cy n su t 5 n 8 m thi (vi gii hn thi gian thi u bnh thng). D vycc c gng ci tin b ra cng phi rt nhiu v rt lu mi t c n cc su nhvy (bn s c nghin cu mt vi ci tin nhm nng su trong thi gian chi hpl).

    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 hmkhc v thi gian o li bao gm tt c mi th nn cc con s b nh hng nhiu. Tuynhin, 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 lcA.

    Tng kt chng 2

    Chng ny i su vo cch vit mt chng trnh c Tng n gin. Nhng im quantrng 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 chngtrnh mu rt n gin nhng cng rt hiu qu. Th tc Gen l lng nhng, phc tp vd sai nht.

    Thut ton AlphaBeta tuy ging nh cp n trong chng 1 nhng n chngny bn cn phi hiu n tht s. Bn cng cn nm vng cch ly s liu cng nh hiucc s liu ny tip tc theo di cc ci tin chng trnh trong cc chng sau.

    GI PHT TRIN

    1. 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 cchlm ny.

  • 7/22/2019 Thuat toan minimax.pdf

    44/52

    2. Mt byte l qu lu thng tin v qun c v bn chi. Ni cch khc, mngcolor khng tht cn thit. Bn hy sa li chng trnh sao cho vn gia nguynkhai 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 liphi 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, 4-

    4, 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 nci 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 lb 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 inc no bng cch ch ra cc nc i chng c tt nht. Bn nn tn dng nhngkt 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 mtqun, 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 nhA1A6 ngha l qun c v tr A1 s chuyn n v tr A6. Cch ny x l thtn gin. Tuy vy, y khng phi l cch ghi nc i thng dng trong "lngc". Nu bn a bn ghi mt vn c nh th cho mt ngi chi c bnh thngth h khng hiu. Ta cn ghi mt vn c theo cc qui nh ghi chp bin bn vnu (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 .

  • 7/22/2019 Thuat toan minimax.pdf

    45/52

    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 vittt: 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 viM, Tng. V d: X2.6 c ngha Xe ct 2 tin 6 . Cn M 2.3 c ngha l qun Mang ct 2 tin sang ct 3).

    +Thoi (lui): (/) gch cho. Ngc vi tn. V d M7/8 ngha l M ct 7 thoi lui sangct 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 uXe tun h i bnh phong M c in) c ghi nh sau:1. P2-5 M8.72. M2.3 C3.13. X1-2 X9-84. X2.4 M2.3

  • 7/22/2019 Thuat toan minimax.pdf

    46/52

    Bi cVI NT V NGUN GC C TNG

    C Tng ra i u? thi i no? C lin quan g n c Vua? l nhng cuhi m ngi hm m rt mun tm hiu. Ngun gc c Tng l vn rt th v, hinnay vn cn ang tranh lun v tip tc c tm ti, kho cu. Cc nh nghin cu bra nhiu cng sc tm ra cu tr li. Tuy vy cho ti nay, c mt iu phn ngchuyn gia tha nhn l: C Tng xut x t Trung Quc, trong khi c Vua li c ngungc t mt loi c c ca n (xut hin vo khong th k th 6, c truyn b sangIran ri sang chu u v pht trin thnh c Vua nh ngy nay). Hai loi c ny cngun 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 chintrng 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 hnhthnh hai loi c Tng ca phng ng v c Vua ca phng Ty cng c nhngim ging nhau.

    C Tng theo Hn vn gi l Tng k. Tng c ngha l hnh tng, tng trng chkhng phi l qun voi (Tng) trn bn c. Theo cc vn kin lch s v cc vn vtc pht hin th c Tng xut hin t thi Chin Quc (t nm 403 n 221 trccng nguyn) m tin thn l "Lc bc k", mt loi c rt thnh hnh thi k . Nung nh vy th c Tng c trn 2000 nm lch s. Nhng c th khng nh rngc Tng lc mi c m hnh s khai ch cha phi loi c Tng m chng ta chingy 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 munnht trn bn c Tng bi cho ti lc con ngi mi tm ra v kh "Pho" s dngtrong chin tranh - l cc loi my mc th s dng bn cc vin to. Trong mtthi 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 vib "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 haimu trng en, ging ht bn c Vua hin nay. Loi bn c ny c li trn ccbc tranh dt "Cm, K, Thi, Ho" thi ng. Ti Uyn ng tr, Vnh Xng, tnhCam Tc (Trung Quc) ngi ta cng pht hin dng bn c ny trn cc vt dng bngs c i vi 64 . Nhiu kin cho rng loi bn c ny rt hp vi cc con s m nhiuhc thuyt thuc nn vn minh Trung hoa thng cp n nh "Thi Cc, LngNghi, 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 us dng loi bn c 64 cng mu. Nh vy lch s c Tng, c Vua ra sao? Cho tinay cc nh nghin cu cha c ng lun im. Nhng c mt iu c th gi l chung:

  • 7/22/2019 Thuat toan minimax.pdf

    47/52

    C Tng hin i c hon chnh vo i Tng. Cc quy nh v bn c, qun c rthp vi c ch qun s thi : Tng soi trong dinh ch huy, c v s tc trc, binhcht c 5 qun ng vi lut "ng nhn vi ng" (nm ngi mt i ng). iu ny cghi 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 NguynTnh thi k cui i Tng (cch y hn 700 nm) trong khi tc phm u tin v cVua c xut bn ti Ty Ban Nha vo nm 1495.

    CU CHUYN V HNH CC QUN C TNG

    Ngi chu u (v c nhiu ngi chu ) hc chi c Tng rt kh khn do khngnh ni mt ch ca qun c. n thun ch l cc ch Hn, khng c hnh tng rrng, c th nh c Vua. Cc ch tng hnh ny trng kh lng nhng rc ri (ti chcbn 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 dngmi nhng qun c ch truyn thng cho ti tn hm nay? Thc ra, nhiu lnngi ta mun i v th i. My nm gn y mt s gii u ngi ta cng bcc 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) vthm ch c ni sn xut cc qun c theo kiu c Vua ci bin ri. Th nhng "u lihon y": cc gii c Tng trong tng quc gia cng nh cc gii th gii ton chibng 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 nhnmt s ci tin hoc ci cch. Cng c th i vi ngi ng cch suy ngh c phnsu sc hn: ci cch th ni dung l chnh ch khng phi l hnh thc. Nu ch cicch 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, dlm, 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 cci g mang du n ca ring mnh, khng mun c s lai cng bt chc t bnngoi. 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

  • 7/22/2019 Thuat toan minimax.pdf

    48/52

    T xin tip tc ch ny nhBi 1Cy tm kim l mt gii thut chnh trong cc game c. Chng ta tin hnh tm kim tt c ccnc i c th c ca game, v a ln mt cy. L ca cy l nc i cui cng chng ta cth kim sot c tnh t thi im hin ti. tm ra cc nc i tt nht, chng ta tin hnhtm 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 Maxv Min. Gi tr ca game l dng dnh cho Max, m dnh cho Min, tr tuyt i cc gi tr nych mc thun li.Max lun tm mi cch lm tng mc gi tr ca gameMin lun tm mi cch lm gim mc gi tr ca gameGi c hai u th u chi rt hon ho, ngha l khng h mc sai lm trong qua trnh chiChng ta hy xt tnh hung sau:

    Max Move Min Move EvaluationA C 12A D -2B C 5B D 6

    Max gi s rng Min chi rt hon ho, do anh ta bit rng, nu anh ta i nc A, i th caanh 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 thutton 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.

  • 7/22/2019 Thuat toan minimax.pdf

    49/52

    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 ttnht 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 khngbao gi phm sai lm, ngha l Min s khng bao gi i theo A-C. Vy, khng cn thit phi tmkim A-C, hay bt c nhnh no xut pht t A, v Max buc phi chn B. Nh vy, mi khichng 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, viAlphaBeta, chng ta phi a ra sch lc tm kim sao cho gim c nhiunht cc nhanh con. Nu trong trng hp ti nht, gi tr ca tr chi tng dn, ngha l ccnc 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 hpvi cc gii thut .Biu din bn c: C 2 cch biu din bn cCch thng thng: dng mt mng biu din bn c v cc qun c tng ng. Chng hnvi c vua, dng mng 8x8, cha cc s nguyn tng ng vi cc qun c. Vi cch ny, mtk thut hay dng nht, l phn t lnh canh: bn c 8x8 c bao ph thm 2 vng ngoicng thnh 12x12 trnh trng hp kim tra xem mt nc i c nm trong bn c haykhng (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 qunc hay khng. V vy, trng thi bn c (vua) c biu din bi 12 mng bit tng ng vi 12loi qun c: vua trng-en, hu trng-en, tng trng-en, m trng-en, xe trng-en, tttrng-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 vuaen, 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 as 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.

  • 7/22/2019 Thuat toan minimax.pdf

    50/52

    Nu kt qu khc 0, th hu trng ang chiu vua en. Ton b qu trnh trn ch mt khong 3-4chu k my.Bng hon vTrong c, c nhiu cch i t c cng mt trng thi. Chng hn, khng ph thuc vicbn 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. Viclu 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 lusn 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, ktqu tm kim c lu vo bng hon v. Vi mi u vo mi, chng ta s tm trn bng hon vtrc. Nu thy, s s dng kt qu trong bng, v vut qua nt tm kim ny.Hm bmMt 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 cl trngThc hin tng t nh trn vi mt bng ngu nhin khc to kho. Nh vy mi trang thica bn c c biu din bi 2 s. Hai trng thi ca bn c l ging nhau nu c hai s trn lnh 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 MariaTheresia. 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 nhmt 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 vitbi 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 thchi 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" cac, 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 vginh rt nhiu cng sc hc c nhng ng vn ch l mt ngi chi tng i yu. Sau chin tranh, ng vit nhng lnhhng 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 ngthc 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 Nc66.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 Bg617.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...Ne623.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 ccchng trnh theo loi "cc sc" (brute force) hay "la chn" mc d tt c cc chng trnh mnh u t nhiu thuc v loi "ccsc".

    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. Mcch 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 dychuyn 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 vicny nhanh hn. Nm 1950, mt chic my khng l c goi l MANIAC I c ch to. N c hng nghn bng chn khng vcng tc v c th thc hin 10000 lnh trong mt giy. N cng c th c lp trnh.

  • 7/22/2019 Thuat toan minimax.pdf

    51/52

    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 utin 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 trnhny 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 cn 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 ngichi 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 tuntrc. 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 agood 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 Rxa515.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 Nc522.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. Nubn 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 nci 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 kodi 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. Nhngcon 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 cvi 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 hay90000 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 kimtrc 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 vSimon) 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 ncth 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 takhng 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 iu 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 (CDCCyber 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 5ln 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 BelleKen 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, sdng 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 tnhvo 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 tronghng 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 nkhi 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 caKen Thompson. Berliner, tng l phng vin bo ch gii v ch c vua th gii, ch to mt chic my tnh c phn cng cbit 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 tnhkhc, 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 chipc 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 Unixv 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 khnng chi c.

  • 7/22/2019 Thuat toan minimax.pdf

    52/52

    Thompson chi Belle vi chnh n vi mt bn c tnh ton su hn. Trung bnh tnh trc c thm mt ply ngang bng vikhong 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 cth 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 cth 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 trongnhm 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 blitzc 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 thcv 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 khichi 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 kv 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 lmhoc 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 khaicuc, 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 nghincu 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 ghili 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 Vuavi 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 ihai ), 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 btbuc 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 cucno, 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 haychiu 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 caThompson 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 nsc 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 Huv 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 ltic-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 6qun, 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 cngkhng 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 nghphn 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 lhai 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 mytnh 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, trckhi 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 :)