You are on page 1of 73

I HC QUC GIA H NI

TRNG I HC KHOA HC T NHIN

----------------

NGUYN TH L

GII THUT TM KIM MINIMAX V NG DNG TRONG


CC TR CHI C TNG BNG KHNG

Chuyn ngnh: Bo m ton hc cho my tnh v h thng tnh ton


M s: 60.46.35

LUN VN THC S KHOA HC

NGI HNG DN KHOA HC: TS. NGUYN TH HNG MINH

H Ni - 2009

Mc lc
LI NI U..........................................................................................................3
CHNG 1: TNG QUAN V CC VN TM KIM...............................5
1.1 Bi ton tm kim v khng gian trng thi.................................................................5
1.1.1 Bi ton tm kim...................................................................................................5
1.1.2 Khng gian tm kim.............................................................................................7
1.2 Cc k thut tm kim c bn.....................................................................................10
1.2.1 Tm kim khng c thng tin...............................................................................11
1.2.2 Tm kim c thng tin..........................................................................................14
1.2.3 Tm kim i khng.............................................................................................15

CHNG 2: GII THUT TM KIM MINIMAX.........................................20


2.1 Gii thiu....................................................................................................................20
2.1.1 Tr chi c tng bng khng (Zero-sum-game)..................................................21
2.1.2 nh l Minimax.................................................................................................26
2.2 Gii thut Minimax.....................................................................................................27
2.2.1 tng................................................................................................................27
2.2.2 p dng gii thut Minimax n su lp c nh...........................................31
2.2.3 Th tc Minimax..................................................................................................33
2.2.4 nh gi...............................................................................................................38
2.3 Gii thut ci tin Alpha-beta.....................................................................................38
2.3.1 tng................................................................................................................40
2.3.2 Gii thut..............................................................................................................42
2.3.3 nh gi...............................................................................................................44
2.4 So snh gii thut Minimax v gii thut Alpha-beta................................................47

CHNG 3: NG DNG....................................................................................50
3.1 Phn tch bi ton........................................................................................................50
3.1.1 Tr chi................................................................................................................50
3.1.2 C s l thuyt.....................................................................................................52
3.2 Ci t chng trnh...................................................................................................52
3.2.1 Cu trc chng trnh v mi quan h gia cc lp chnh..................................52
3.2.2 Lp Form1...........................................................................................................54

3.2.3 Lp CBoard..........................................................................................................54
3.2.4 Lp gameAI.........................................................................................................55
3.3 Mt s giao din v kt qu chy chng trnh.........................................................66
KT LUN.......................................................................................................................70
Ti liu tham kho............................................................................................................71

LI NI U
L thuyt tr chi (game theory) thng c coi l mt nhnh ca ton hc
ng dng v kinh t hc ng dng nhm nghin cu v cc tnh hung trong cc
bn tham gia tr chi p dng nhng chin lc ra quyt nh nhm ti u ha kt
qu mnh nhn c. Ban u L thuyt tr chi c pht trin nh mt cng c
nghin cu hnh vi kinh t hc, ngy nay L thuyt ny c s dng trong
nhiu ngnh khoa hc nh Sinh hc, Trit hc, Chnh tr hc c bit L thuyt
tr chi thu ht c s ch ca cc nh Khoa hc my tnh do ng dng ca
n trong Tr tu nhn to v iu khin hc.
Tr tu nhn to vn dng L thuyt tr chi nghin cu v cc tr chi
i khng v thit k chng trnh chi c gia Ngi v My tnh. 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 m phi dng mt thut ton tm
kim ring cho cy tr chi, l thut ton theo chin lc Minimax. y cng l
chin lc hiu qu p dng trong cc tr chi c tng bng khng. Chng ta u
bit, nhiu tnh hung trong thc t c bit l trong lnh vc Kinh t, Chnh tr c
th nhn nhn nh mt tr chi c tng bng khng. Do vic nghin cu chin
lc tm kim nc i cho dng tr chi ny c th mang li nhng ngha thc
tin nht nh.
Ni dung ca lun vn tm hiu v nghin cu v thut ton tm kim i
khng Minimax, cc ci tin ca n v ng dng trong tr chi c tng bng khng.
Ni dung bn lun vn c chia lm 3 chng:
Chng 1 trnh by mt cch tng quan v cc vn tm kim : bi ton tm
kim, biu din vn bng khng gian trng thi v cc k thut tm kim c bn.

Chng 2 trnh by gii thut tm kim Minimax v gii thut ci tin Alphabeta p dng cho cc tr chi vi tng bng khng. Mi gii thut c trnh by
gm cc ni dung: tng, th tc thc hin gii thut v nh gi.
Chng 3 trnh by mt ng dng ca thut ton tm kim Minimax p dng
cho tr chi xp cc qun hu ln bn c c chng ngi vt.
Trong thi gian hc tp v nghin cu hon thnh lun vn ny, tc gi
nhn c s quan tm, hng dn, ng gp ca cc thy c, cc bn b v ngi
thn.
Trc ht, tc gi xin c dnh li cm n chn thnh v lng bit n su
sc nht ti gio vin hng dn ca mnh l Tin s Nguyn Th Hng Minh, ngi
nh hng, gi m nhng tng su sc v hiu qu, tn tnh ch bo gip
tc gi v mi mt c th hon thnh nhim v nghin cu.
Lun vn c thc hin bng nhng kin thc m tc gi c trang b
trong sut 2 nm hc ti Khoa Ton - C - Tin, Trng i Hc Khoa hc t nhin
vi s ging dy nhit tnh ca cc ging vin v s hng say hc tp ca cc hc
vin. Li cm n chn thnh xin c gi ti cc thy, c trong khoa Ton-C-Tin
hc, c bit cc thy c trong b mn Tin hc, cc anh, ch v bn b trong cng
lp cao hc chuyn ngnh Bo m ton hc cho my tnh v h thng tnh ton
kha 2007-2009.
Li cm n cui cng xin c dnh cho gia nh v nhng bn b thn
thit, nhng ngi dnh s quan tm v ng vin ht mc tc gi hon thnh
tt bn lun vn ny.
H ni, thng 10 nm 2009

CHNG 1: TNG QUAN V CC VN TM KIM


1.1 Bi ton tm kim v khng gian trng thi
1.1.1 Bi ton tm kim
Tm kim lun l thao tc nn mng cho rt nhiu tc v tnh ton. Cc bi
ton tm kim bao gm vic tm cch tt nht thu c thng tin cn cho mt
quyt nh. Mi bi ton bt k u cha trong mt bi ton con tm kim theo
mt chiu hng no , cc tnh hung tn ti vic tm kim cn phi x l
l: kim tra cc ti khon, thanh tra v iu khin cht lng
Mt cch tng qut, tm kim c th hiu l tm mt hoc mt s i tng
tha mn nhng i hi no trong tp hp rng ln cc i tng.
Chng ta c th k ra rt nhiu vn m vic gii quyt n c quy v vn
tm kim. Trong cc tr chi, chng hn c vua, c caro vn tm kim c
th hin ch trong s rt nhiu nc i c php thc hin, ta phi tm ra cc
nc i dn ti tnh th c u th thng. Chng minh nh l cng c th xem nh
vn tm kim.
C nhiu pht biu bi ton tm kim khc nhau. Trong phn ny chng ta
xem xt mt s pht biu ca bi ton tm kim nh sau:
Trong l thuyt tnh ton, mt bi ton tm kim l mt loi bi ton tnh
ton c biu din bi mt quan h nh phn. Nu R l mt quan h nh phn sao
cho field(R) + v T l mt my Turing, th T tnh f nu:
-

Nu mi x c mt s gi tr y m R(x,y) th T truy nhp vo vi u ra z m

R(x,z) ( c th c nhiu y, v T ch cn mt trong s chng)


-

Nu vi gi tr x m khng c gi tr y tha mn R(x,y) th T loi b x.

Ch rng th ca hm b phn l mt quan h nh phn, v nu T tnh mt hm


b phn th hu ht mi gi tr c th cho u ra.

Mt quan h R c th c biu din nh mt bi ton tm kim, v mt my Turing


tnh R cn c gi gii quyt n. Mi bi ton tm kim u tng ng vi bi
ton quyt nh, c th l:
L(R) = { x | yR(x,y)}.
Tm kim ngha l tm mt hay nhiu mu thng tin c lu tr. Thng
thng, thng tin c chia thnh cc mu tin (record), mi mu tin u c mt
KHA (key) dng cho vic tm kim. Ta s lun c mt kho cho trc ging nh
kho ca cc mu tin m ta cn tm. Mi mu tin c tm thy s cha ton b
thng tin cung cp cho mt qu trnh x l no . Vic tm kim c p dng
rt a dng v rng ri.
V d: Mt Ngn hng nm gi tt c thng tin ca rt nhiu ti khon khch
hng v cn tm kim kim tra cc bin ng. Mt hng Bo him hay mt h
thng tr gip bn v xe, v my bay.Vic tm kim thng tin p ng vic sp
t gh v cc yu cu tng t nh vy l thc s cn thit.
Mt pht biu Bi ton tm kim thng c s dng nht l: Cho mt bng
gm n bn ghi R1, R2, ., Rn. Mi bn ghi Ri (1 i n) tng ng vi 1 kha ki.
Hy tm bn ghi c gi tr kha tng ng bng X cho trc. X c gi l kha tm
kim hay i tr tm kim. Cng vic tm kim s hon thnh khi c mt trong hai
tnh hung sau y xy ra.
1. Tm c bn ghi c gi tr kha tng ng bng X, lc ta ni: php tm kim
c tha (Successful).
2. Khng tm c bn ghi no c kha bng X c: php tm kim khng tha.
(unsuccessful).
Thut ng thng c dng trong vic m t cu trc d liu ca vic tm kim l
T IN v BNG K HIU. Mt v d in hnh nh ta mun xy dng h
thng tra t in Ting Anh chng hn. y, kho l t v mu tin l din gii
cho t , mi mu tin cha nh ngha, cch pht m v cc thng tin khc. BNG

K HIU chnh l t in cho chng trnh v cc mu tin cha thng tin m t i


tng c t tn.
Mt cch tng qut, bi ton tm kim c th c pht biu da vo khng gian
trng thi vi b 4 (S, To, Op, TG) hoc b 5: (S, T0, Op, TG,, Pcost).
Trong : S l tp cc trng thi, T0 l trng thi ban u, Op l tp cc ton t hay
tp cc php chuyn trng thi m c th chuyn mt trng thi ny sang trng thi
khc, TG l trng thi ch. Pcost l chi ph ng i. Mc ch ca bi ton l tm
ra cch chuyn t trng thi ban u sang trng thi ch, nu theo b 5 c thm
Pcost th bi ton cn tm nghim tt nht ngha l tm cch chuyn t trng thi ban
u n trng thi ch vi chi ph nh nht (hoc ln nht).
Pht biu chi tit hn ca cch biu din ny chng ta s xt trong mc khng gian
tm kim di y.

1.1.2 Khng gian tm kim


1.1.2.1 Khng gian tm kim
Khi mun gii quyt mt vn no bng tm kim, trc ht ta phi xc
nh khng gian tm kim. Khng gian tm kim bao gm tt c cc i tng m ta
cn quan tm tm ra trong i tng yu cu. c th l khng gian lin tc,
chng hn khng gian cc vct thc n chiu; hoc cng c th l khng gian cc
i tng ri rc nh tp cc nt ca th hay tp cc li gii ca bi ton [7].
Mt cch chung nht, nhiu bi ton phc tp u c dng "tm ng i
trong th" hay ni mt cch hnh thc hn l "xut pht t mt nh ca mt
th, tm ng i hiu qu nht n mt nh no ". Mt pht biu khc thng
gp ca dng bi ton ny l :
Cho trc hai trng thi T0 v TG hy xy dng chui trng thi T0, T1, T2, ..., Tn-1, Tn
= TG sao cho :

1 Pcost(Ti 1 , Ti )
n

tha mn mt iu kin cho trc (thng l nh nht).

Trong , Ti thuc tp hp S (gi l khng gian trng thi state space) bao
gm tt c cc trng thi c th c ca bi ton v Pcost(Ti-1,Ti) l chi ph bin
i t trng thi Ti-1 sang trng thi Ti. Tuy nhin, t mt trng thi Ti-1 ta c nhiu
cch bin i sang trng thi Ti. Khi ni n mt bin i c th t Ti-1 sang Ti ta
s dng thut ng hng i (vi ng ni v s la chn).

TG
T0

Hnh 1.1: M hnh chung ca cc vn -bi ton phi gii quyt bng phng
php tm kim li gii. Khng gian tm kim l mt tp hp trng thi - tp cc nt
ca th. Chi ph cn thit chuyn t trng thi ny sang trng thi khc c
biu din di dng cc con s nm trn cung ni gia hai nt tng trng cho hai
trng thi.
1.1.2.2 Biu din vn trong khng gian trng thi
Ta s xt vic biu din mt vn trong khng gian trng thi sao cho vic
gii quyt vn c quy v vic tm kim trong khng gian trng thi. Mt phm
vi rng ln cc vn , c bit cc cu , cc tr chi, c th m t bng cch s
dng khi nim trng thi v php chuyn trng thi hay l php chuyn (php bin
i trng thi).
V d: Trong tr chi c vua, mi cch b tr cc qun trn bn c l mt
trng thi. Trng thi ban u l s sp xp cc qun lc u cuc chi. Mi nc i

hp l l mt php chuyn trng thi, n bin i mt trng thi trn bn c thnh


mt trng thi khc.
Nh vy mun biu din mt vn trong khng gian trng thi, ta cn xc
nh cc yu t sau:
- Trng thi ban u
- Tp hp cc php chuyn trng thi. Trong mi ton t hay php chuyn m t
mt hnh ng hoc mt php bin i c th a mt trng thi ti mt trng thi
khc.
Tp hp tt c cc trng thi c th t ti t trng thi ban u bng cch p
dng mt dy php chuyn trng thi, lp thnh khng gian trng thi ca bi ton.
Ta s k hiu khng gian trng thi l S, trng thi ban u l T0 (T0 S). Mi
php chuyn R c th xem nh mt nh x R: S S. Ni chung R l mt nh x
khng xc nh khp ni trn S.
- Mt tp hp TG cc trng thi kt thc (trng thi ch). TG l tp con ca khng
gian S. Trong nhiu vn (chng hn cc loi c) c th c nhiu trng thi ch
v ta khng th xc nh trc c cc trng thi ch. Ni chung trong phn ln
cc vn hay, ta ch c th m t cc trng thi tha mn mt s iu kin no .
Khi biu din mt vn thng qua cc trng thi v cc php chuyn, th
vic tm nghim ca bi ton c quy v vic tm ng i t trng thi ban u
ti trng thi ch. (Mt ng i trong khng gian trng thi l mt dy php
chuyn dn mt trng thi ti mt trng thi khc).
Chng ta c th biu din khng gian trng thi bng th nh hng,
trong mi nh th tng ng vi mt trng thi. Nu c php chuyn R bin
i trng thi u thnh trng thi v, th c cung gn nhn R i t nh u ti nh v.
Khi mt ng i trong khng gian trng thi s l mt ng i trong th.
Sau y chng ta s xem xt mt v d v khng gian trng thi c xy dng cho
bi ton 8 s.

V d : Bi ton 8 s. Cho bng 3x3 v tm qun mang s hiu t 1 n 8, cn li


mt trng. Mi qun cnh trng c th c chuyn dch ti trng . Yu
cu ca bi ton l tm ra mt dy cc chuyn dch bin i trng thi ban u
ca bng (hnh bn tri) thnh mt trng thi xc nh no , chng hn trng thi
trong hnh bn phi. Xem hnh minh ha di y:
28316475

12384765

Hnh 1.2: Trng thi ban u v trng thi kt thc ca bi ton 8 s.


Trong bi ton ny, trng thi ban u l trng thi bn tri hnh, cn trng
thi kt thc bn phi hnh. Tng ng vi cc quy tc chuyn dch cc qun, ta
c bn php chuyn: up (y qun ln

), down (y qun xung

), left (y

qun sang tri ), right (y qun sang phi ). R rng l, cc php chuyn ny
ch l cc php chuyn b phn; chng hn, t trng thi ban u (hnh bn tri), ta
ch c th p dng cc php chuyn down, left, right.
Trong v d trn vic tm ra mt biu din thch hp m t cc trng thi
ca vn l kh d dng v t nhin. Song trong nhiu vn vic tm hiu c
biu din thch hp trong cc trng thi ca vn l hon ton khng n gin.
Vic tm ra dng biu din tt cho cc trng thi ng vai tr ht sc quan trng
trong qu trnh gii quyt mt vn . C th ni rng, nu ta tm c dng biu
din tt cho cc trng thi ca vn , th vn hu nh c gii quyt.

1.2 Cc k thut tm kim c bn


C nhiu k thut tm kim khc nhau gii quyt cc bi ton tm kim.
Tuy nhin vi mi bi ton ty theo c im, cch t chc d liu m ta c th la
chn v p dng k thut ph hp v hiu qu.
Chng ta s tm hiu v mt s k thut tm kim c bn trong cc mc tip
theo, bao gm: Tm kim khng c thng tin, tm kim c thng tin v tm kim i

10

khng. Trong , tp trung vo k thut tm kim i khng lm c s cho pht


trin chng 2 ca lun vn ny.

1.2.1 Tm kim khng c thng tin


Mt gii thut tm kim khng c thng tin l gii thut khng tnh n bn
cht c th ca bi ton. Khi , cc gii thut dng ny c th c ci t tng
qut, v cng mt ci t c th c s dng trong mt din rng cc bi ton (do
s dng tru tng ha). Nhc im ca cc gii thut ny l phn ln cc khng
gian tm kim c kch thc cc k ln, v mt qu trnh tm kim (c bit tm
kim theo cy) s cn mt khong thi gian ng k cho cc v d nh. Sau y ta
s gii thiu mt s dng tm kim khng c thng tin tiu biu ng vi cc cch t
chc d liu.

1.2.1.1 Tm kim trn danh sch


Cc gii thut tm kim trn danh sch l loi gii thut tm kim c bn
nht. Mc ch l tm trong mt tp hp mt phn t cha mt kha no . Cc
gii thut tm kim tiu biu nht trn danh sch l: Tm kim tun t (hay tm kim
tuyn tnh), tm kim nh phn.
Tm kim tun t kim tra tng phn t trong danh sch theo th t ca
danh sch . N c thi gian chy kh ln: O(n), trong n l s phn t trong
danh sch, nhng c th s dng cho mt danh sch bt k m khng cn tin x l.
Tm kim nh phn l mt thut ton cao cp hn so vi thut ton tm kim
tun t vi thi gian chy l O(log n). i vi cc danh sch ln, thut ton ny tt
hn hn tm kim tuyn tnh nhng n i hi danh sch phi c sp xp t trc
v i hi kh nng truy cp ngu nhin. Thut ton tm kim ni suy tt hn so vi
thut ton tm kim nh phn i vi danh sch rt ln v vi phn b gn u.
Ngoi ra bng bm (hash table) cng c dng cho tm kim trn danh
sch. N i hi thi gian hng s trong trng hp trung bnh, nhng li cn nhiu
chi ph v khng gian b nh v thi gian chy O(n) cho trng hp xu nht. Mt

11

phng php tm kim khc da trn cc cu trc d liu chuyn bit s dng cy
tm kim nh phn cn bng (self-balancing binary search tree) v i hi thi gian
chy O(log n). Cc gii thut loi ny c th coi l m rng ca t tng chnh v
tm kim nh phn cho php chn v xa nhanh.

1.2.1.2 Tm kim trn cy


Tm kim trn cy l trung tm ca cc k thut tm kim. Cc thut ton ny
tm kim trn cc cy gm cc nt, cy ny c th l cy tng minh hoc c xy
dng dn trong qu trnh tm kim.
Nguyn l c bn l: mt nt c ly ra t mt cu trc d liu, cc nt con
ca n c xem xt v b sung vo cu trc d liu . Bng cch thao tc trn
cu trc d liu ny, cy tm kim c duyt theo cc th t khc nhau, chng hn
theo tng mc ( tm kim theo chiu rng) hoc i ti mt nt l trc ri quay lui
(tm kim theo chiu su).
Tm kim theo chiu rng
Tm kim chiu rng mang hnh nh ca vt du loang. T trng thi ban
u, ta xy dng tp hp S bao gm cc trng thi k tip (m t trng thi ban u
c th bin i thnh). Sau , ng vi mi trng thi Tk trong tp S, ta xy dng tp
Sk bao gm cc trng thi k tip ca Tk ri ln lt b sung cc Sk vo S. Qu trnh
ny c lp li cho n lc S c cha trng thi kt thc hoc S khng thay i sau
khi b sung tt c Sk.
Tm kim theo chiu su
Trong tm kim theo chiu su, ti trng thi (nh) hin hnh, ta chn mt
trng thi k tip (trong tp cc trng thi c th bin i thnh t trng thi hin
hnh) lm trng thi hin hnh cho n lc trng thi hin hnh l trng thi ch.
Trong trng hp ti trng thi hin hnh, ta khng th bin i thnh trng thi k
tip th ta s quay lui (back-tracking) li trng thi trc trng thi hin hnh (trng
thi bin i thnh trng thi hin hnh) chn ng khc. Nu trng thi trc

12

ny m cng khng th bin i c na th ta quay lui li trng thi trc na v


c th. Nu quay lui n trng thi khi u m vn tht bi th kt lun l khng
c li gii.
Tm kim chiu su v tm kim chiu rng u l cc phng php tm kim
c h thng v chc chn tm ra li gii. Tuy nhin, do bn cht l vt cn nn vi
nhng bi ton c khng gian ln th ta khng th dng hai chin lc ny c.
Hn na, hai chin lc ny u c tnh cht "m qung" v chng khng ch n
nhng thng tin (tri thc) trng thi hin thi v thng tin v ch cn t ti cng
mi quan h gia chng. Cc tri thc ny v cng quan trng v rt c ngha
thit k cc gii thut hiu qu hn. Do hai chin lc trn c ci tin thnh
mt s thut ton tm kim mi trn cy bao gm: tm kim lp su dn, tm kim
chiu su gii hn, tm kim hai chiu v tm kim chi ph u [7].

1.2.1.3 Tm kim trn th


Nhiu dng bi ton tm kim c th trn th nh: Tm ng i ngn
nht, tm cy bao trm nh nht, tm bao ng bc cu,Tuy nhin ng vi mi
dng bi ton c mt s gii thut tm kim thch hp gii quyt. Chng hn

thut ton Dijkstra, thut ton Kruskal, gii thut lng ging gn nht v gii
thut Prim [3]. Cc thut ton ny c th c coi l cc m rng ca cc thut
ton tm kim trn cy: tm kim theo chiu su, tm kim theo chiu rng.
Thut ton Dijkstra l mt thut ton gii quyt bi ton ng i ngn nht
ngun n trong mt th c hng khng c cnh mang trng s m. Thut ton
ny c th tnh ton tt c cc ng i ngn nht t mt nh xut pht cho trc s
ti mi nh khc m khng lm tng thi gian chy.
Thut ton Kruskal l thut ton xy dng cy bao trm ngn nht bng cch chn
thm dn cc cung vo cy.

13

Thut ton Prim: l thut ton nhm xy dng cy bao trm ngn nht. T tng
ca thut gii Prim l chn a dn vo cy T cc nh k tt nht trong s cc
nh cn li. Thi gian thc hin gii thut Prim l O(n2).

1.2.2 Tm kim c thng tin


Cc k thut tm kim khng c thng tin trong mt s trng hp rt km
hiu qu v thm ch khng p dng c. tng tc ca cc qu trnh tm
kim ta c th dng cc gii thut tm kim c thng tin. Trong mc ny chng ta s
h thng mt s chin lc tm kim c thng tin hay cn gi l chin lc tm
kim heuristic (tm kim kinh nghim), l cc phng php s dng hm nh
gi hng dn s tm kim.
Trong nhiu vn , ta c th s dng kinh nghim, tri thc ca chng ta v
vn nh gi cc trng thi ca vn . Vi mi trng thi u ta xc nh mt
gi tr s h(u), s ny nh gi s gn ch ca trng thi u. Hm h(u) c gi l
hm nh gi. Trong tm kim c thng tin ngi ta s dng hm nh gi ny nh
mt nh gi heuristic c th cho bi ton cn gii quyt vi vai tr hng dn cho
qu trnh tm kim. Mt cch nh gi heuristic tt s lm cho qu trnh tm kim c
thng tin hot ng hiu qu hn hn mt phng php tm kim khng c thng
tin bt k. Trong qu trnh tm kim, ti mi bc ta s chn trng thi pht trin
l trng thi c gi tr hm nh gi l nh nht, trng thi ny c xem l trng
thi c nhiu ha hn nht hng ti ch.
Cc k thut tm kim s dng hm nh gi hng dn s tm kim c
gi chung l cc k thut tm kim c thng tin hay tm kim kinh nghim (tm
kim heuristic). Cc giai on c bn gii quyt vn bng tm kim heuristic
nh sau:
-

Tm biu din thch hp m t cc trng thi v cc ton t hay php chuyn


ca vn

Xy dng hm nh gi

14

Thit k chin lc chn trng thi pht trin mi bc.

Hai chin lc tm kim c thng tin quan trng l tm kim tt nht - u tin
(best-first-search) v tm kim leo i (hill-climbing search).
Tm kim tt nht u tin: l tm kim theo chiu rng c hng dn
bi hm nh gi. Nhng n khc tm kim theo chiu rng ch, trong tm kim
theo chiu rng ta ln lt pht trin tt c cc nh mc hin ti sinh cc nh
mc tip theo, cn trong tm kim tt nht - u tin ta chn nh pht trin l
nh tt nht c xc nh bi hm nh gi (tc l nh c gi tr hm nh gi l
nh nht), nh ny c th mc hin ti hoc cc mc trn.
Thut ton tm kim leo i: thc cht l thut ton tm kim theo chiu
su c hng dn bi hm nh gi. Song khc vi tm kim theo chiu su, khi
ta pht trin mt nh u th bc tip theo, ta chn trong s cc nh con ca u nh
c nhiu ha hn nht pht trin, nh ny cng c xc nh bi hm nh gi.

1.2.3 Tm kim i khng


Tm kim i khng cn gi l tm kim c i th l chin lc tm kim
c p dng tm ra nc i cho ngi chi trong cc tr chi i khng. Chi
c c th xem nh vn tm kim trong khng gian trng thi. Sau y chng ta s
xem th no tr chi i khng v chin lc tm kim no s c p dng.

1.2.3.1 Tr chi i khng


Trong cc tr chi u tr nh cc tr chi c Vua, c Tng, c vy, c caro
(go-moku), c mt cy tr chi bao gm tt c cc nc i c th ca c hai u th
v cc cu hnh bn c l kt qu ca cc nc i . Ta c th tm kim trn cy
ny c c mt chin lc chi hiu qu. Cc tr chi 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. Trong tr chi ny phi tnh n mi nc i m i th ca ta c
th s dng.

15

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 cc tr chi ny hay c gi l cc loi c, i khi cn c gi l
cc tr chi Minimax (da trn tn ca thut ton tm kim c bn p dng cho
chng). Thut ton p dng cho dng bi ton ny l thut ton tm kim Minimax
ta s trnh by chi tit trong chng 2.

1.2.3.2 Cy tr chi
Cc 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.3) v ta s tin hnh tm kim trn cy tm c nc i tt nht.
Cy tr chi c cc nt 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 . Tuy nhin, cc nc i ny din ra theo cp do hai
u th ln lt tin hnh. su ca cy tr chi l s tng ca cy. Thut ng
nc i c thng nht l mt ln i ca mt u th hoc mt ln i phn ng
li ca i th bn kia. Ch iu ny 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.
Trng thi bn c gc (ply=0)
Lt ta i
Trng thi bn c mi (ply=1)
Lt i phng i
Trng thi bn c mi (ply=2)

Hnh 1.3: Cy tr chi

16

Tm li: Cy tr chi dng cc nt th hin trng thi ca tr chi. Cy ny l


mt dng ca cy ng ngha, c cc nhnh ng vi vic chuyn cu hnh sau mt
nc i. C th xem hai nhnh xut pht t mt nt l hai quyt nh ca hai u
th [5].
Gi p l s mc ca cy th su ca cy l d= p-1. Mi la chn hay bc
chuyn l mt nc i.

1.2.3.3. Vt cn
Dng 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, v
khng cn u nhng b quyt huyn o thn k v bn c s chng khc g bn
tnh. Rt tic rng, cch lm ny li khng th thc hin c do c hin tng
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 16 100 hay xp x 10120
- mt con s qu ln.
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.

17

1
b
d

b*b=b2

Th
i
gi
an

bd

Hnh 1.4: Cy tm kim v s bng n t hp


Hm m

1.2.3.4 Chin lc tm kim trong tr chi


Trong L thuyt tr chi nghin cu cc tnh hung chin thut trong
cc i th la chn cc hnh ng khc nhau c gng lm ti a kt qu nhn
S nh

c. Ni cch khc, L thuyt tr chi nghin cu cch la chn hnh vi ti u khi


chi ph v li ch ca mi la chn l khng c nh m ph thuc vo la chn ca
cc c nhn khc.

Mt 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 c 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

18

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 hin iu ny vi su qu ln
c, do s nt su c th tr nn rt ln 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.
nghin cu chin lc c th c p dng trong cc tr chi i khng
chng ta s tm hiu trong chng 2.

19

CHNG 2: GII THUT TM KIM MINIMAX


2.1 Gii thiu
Thut ton Minimax l thut ton tm kim chuyn dng tr v chui
nc i ti u cho mt ngi chi trong tr chi c tng bng khng [8]. Minimax
(cn gi l minmax) l mt phng php trong l thuyt quyt nh c mc ch l
ti thiu ha (minimize) tn tht vn c d tnh c th l ti a (maximize). C
th hiu ngc li l, n nhm ti a ha li ch vn c d tnh l ti thiu
(maximin). Thut ton ny cng c m rng cho nhiu tr chi phc tp hn v
gip a ra cc quyt nh chung khi c s hin din ca s khng chc chn.
Mt phin bn ca gii thut p dng cho cc tr chi nh tic-tac-toe, khi m
mi ngi chi c th thng, thua, hoc ha. Nu ngi chi A c th thng trong
mt nc i, th "nc i tt nht" chnh l nc i dn n kt qu thng .
Nu ngi B bit rng c mt nc i m dn n tnh hung ngi A c th thng
ngay nc i tip theo, trong khi nc i khc th s dn n tnh hung m ngi
chi A ch c th tt nht l ha th nc i tt nht ca ngi B chnh l nc i
sau.
Ta s nm r, th no l mt nc i "tt nht". Gii thut Minimax gip tm
ra nc i tt nht, bng cch i ngc t cui tr chi tr v u. Ti mi bc, n
s c nh rng ngi A ang c gng ti a ha c hi thng ca A khi n phin
anh ta, cn nc i k tip th ngi chi B c gng ti thiu ha c hi thng
ca ngi A (ngha l ti a ha c hi thng ca B).
L thuyt tr chi coi tr chi l s kt hp hoc trao i gia hai hay nhiu
i th mi i th c gng la chn ti u hnh ng (hay nc i) ca mnh
nhm t c li ch ti a. Trong l thuyt tr chi c mt cch phn loi cc tr
chi thnh hai loi: tr chi c tng bng khng v tr chi c tng khc khng.
Trong nhng tr chi c tng khc khng, li ch thu c ca ngi chi
ny khng nht thit dn ti s mt mt ca ngi chi kia. Cc tnh hung ny tn

20

ti vi iu kin tng kt qu (m ngi thng c hng) khng b gii hn hay


c nh. V bn cht y l trng hp kin to kt qu thay v chia s kt qu gia
cc i th. Chng hn nh khi nghe ho nhc, ngi ta khng phi thch mt bn
ho tu v ngi khc khng thch nghe. Vic ai khng thch nghe chng c nh
hng g ti s thch ca bn trong iu kin bn khng phi nghe li bnh lun ca
ngi .
Trong lun vn ny tr chi c tng bng khng, c th l tr chi c tng
bng khng vi hai ngi chi s c quan tm nghin cu k hn.

2.1.1 Tr chi c tng bng khng (Zero-sum-game)


Tr chi c tng bng khng l tr chi c tng gi tr kt qu (m ngi
thng c hng) l c nh. Bt c bn no thng (+1) cng lm cho bn kia thua
cuc (-1), tng ng vi tnh hung ganh ua thun tu, cui cng dn ti tng (+11) = 0.
C vua l mt tr chi c tng bng khng bi khng th c trng hp c
hai bn u thng hoc u thua. Nu mt bn thng th bn kia nht nh l thua v
ngc li [8]. Th thao l nhng v d in hnh nht ca tr chi c tng bng
khng. Nh v ch ch c th t c vinh quang khi ton b cc i th khc u
thua cuc. Trong mt gii bng tng s trn thng lun bng tng s trn thua
cng l bi ci tnh cht tng bng khng y [11].
Vic u t kinh doanh chng khon cng chnh l mt tr chi c tng bng
khng, bi v , s tin thua l ca nh u t ny s l tin li ca nh u t
khc. Nh u t c th mt trng hoc thng ln, li nhun m anh ta thu c c
th i bng c gia ti, i khi mng sng ca nhng nh u t ti chnh khc.
M hnh ton hc ca tr chi c tng bng khng vi hai ngi chi [11][10].
C hai ngi chi, P1 v P2. P1 c mt tp m chin lc thun ty A={a1, a2,, am},
P2 c mt tp n chin lc thun ty B={b1, b2, , bn}.

21

1. Mi ngi chi s c li vi mi cp (ai, bj) ca chin lc. Li nhun ca P1


k hiu l U1(ai , bj) v li nhun ca P2 k hiu l U2(ai, bj). V y l tr chi c
tng bng khng nn U1(ai, bj)= -U2(ai, bj) vi mi i v j. n gin ta k hiu li
nhun ca tr chi l M(ai, bj)= abs(U1(ai, bj)).
Li nhun thu c khi dng chin lc hn hp
2. Mi ngi chi c th dng chin thut hn hp bng vic to ra mt hm mt
v vic chi mi chin lc thun ty vi mt xc sut c nh. K hiu pi l xc
sut m ngi chi 1 s chi ai v q j l xc sut m ngi chi 2 chn bj. V p v q
l xc sut nn chng phi tha mn:
(a) i pi 0, j q j 0.
(b)

m
n
i1 pi 1, j 1 q j 1.

Mt chin thut hn hp dng mt hm mt c th c k hiu l p=


( p1 , p2 ,..., pm ) pi= Pr(ai) l xc sut m ai c chi, tng t, vi ngi

chi 2 hm mt q= ( q1 , q2 ,..., qn ) q j = Pr(bj) l xc sut m bj c chi.


Vi mi cp chin thut ngu nhin ( p, q ) li nhun (kt cc) M ( p, q) c nh
ngha l:
m

M ( p , q ) pi M ( ai , b j ) q j
i 1 j 1

Ta k hiu li nhun do ngi chi 1 dng chin lc thun ty ai v ngi chi 2


dng chin lc hn hp q l:
n

M (ai , q ) M (ai , b j )q j .
j 1

Tng t ta cng c cng thc ca M(p, bj)


m

M(p, bj)= M (ai , b j ) pi


i 1

y chin lc thun ty v chin lc hn hp c hiu nh sau:

22

- Chin lc thun tu (Pure Strategy): L chin lc da trn phn on cc chin


lc ca i th.
- Chin lc hn hp (Mixed Strategy): L chin lc khi khng d on c
chin lc ca i th.

S m bo cc i (Maximum Security)
3. Ta dng P v Q k hiu ln lt l tp tt c cc chin lc hn hp sn c
ca ngi chi 1 v ngi chi 2.
4. Mc ch ca ngi chi 1 l chn mt chin lc ngu nhin p t P sao cho
cc i M(p,q). Cng thi im , mc ch ca ngi chi 2 l chn mt chin
lc ngu nhin q t Q sao cho cc i li ch ca n, ngha l lm cc tiu M(p, q).
Cc lut chi yu cu mi ngi chi chn chin lc ca mnh mt cch hon ho
b qua s la chn ca i th.
5. Mi chin lc hn hp p thuc P, mc m bo ca ngi chi 1 c nh
ngha l:
M ( p, q ) .
v1(p)= min
q
n

Bi v M ( p, q ) M ( p, b j ) q j l tng trng s ca n li ch M(p,bj), gi tr M( p,q)


j 1

ny t cc tiu khi tt c cc gi tr M(p,bj) c gn bng gi tr nh nht ca


chng, ta k hiu gi tr nh nht ny l v1(p) v c xc nh nh sau:
v1(p)= min[M(p, b1), M(p, b2),, M(p,bn)].
C th coi v1(p) l li nhun ca ngi chi 1 s nhn c nu ngi chi 2
bit ngi chi 1 s chn chin lc p. (Bi v nu ngi chi 2 bit iu ny th s
chn chin lc tt hn p li). Ta c th nh ngha v2(q) cho ngi chi 2 mt
cch tng t. (Nhng dng cc i thay v cc tiu).
v2(p)= max[M(a1, q), M(a2, q),, M(am , q)].

23

- Theo gi thit, ngi chi 1 mun cc i mc m bo ca n, v vy ngi


chi 1 phi chn mt chin lc p* sao cho:
v1(p*) v1(p) p P.
K hiu v1 l mc m bo cc i th
v1 ( p ) v1 ( p )
v1(p*)= v1= max
p

(1)

Vi tt c cc chin lc hn hp, ta bit rng:


*
*
v1= mqin M ( p , q) M ( p , q) q Q).

(2)

Bt ng thc (1) c ngha l chin lc m cho li nhun v1 l chin lc mnh


hn tt c cc chin lc khc. Bt ng thc (2) ngha l v1 l gi tr thp nht (li
nhun cc tiu) m ngi chi 1 c th nhn c khi chi chin lc p*, nu ngi
chi 2 khng chn chin lc khn ngoan th ngi chi 1 s nhn c li ln hn
v1. Nu ngi chi 1 khng chi chin lc p* th ngi chi 1 c th nhn c li
nhun thp hn v1. Chin lc p* c gi l chin lc Maximin.
S tn tht cc tiu
6. Bi v tr chi c tng bng khng, nn khi ngi chi 2 cc i mc m
bo ca n th li nhun ca ngi chi 1 s t cc tiu. Nu ngi chi 2 dng
chin lc q th ngi chi 1 khng th nhn c mt gi tr ln hn.
M ( p, q ).
v2(q)= max
p

Gi tr v2 i lc c gi l tn tht. Ngi chi 1 c gng cc i mc m


bo, ngi chi 2 c gng cc tiu tn tht. V vy ngi chi 2 mun cc tiu tn
tht ca n, th ngi chi 2 phi chn mt chin lc q* sao cho:
v2= v2(q*) v2(q) q Q.
(3)
Lp li phn tch m ta lm vi ngi chi 1 nhng vi ngi chi 2 ta c:

24

v2 M(p,q*) p P.
(4)
Chin lc q* c gi l chin lc Minimax.
Mi quan h gia gi tr cc i v gi tr cc tiu
- Nu ngi chi 1 dng chin lc Maximin, n m bo li ch ti thiu l v1 .
v1(p) v1 M(p*,q) q Q
Tng t, nu ngi chi 2 dng chin lc Minimax, n m bo tn tht khng
ln hn v2, ngha l tng ng vi vic m bo ngi chi 1 c th nhn c
li nhun khng ln hn v2.
M(p, q*) v2 v2(p*) p P
V vy:
M(p, q*) v2 p P
M(p*,q*) v2
v 1 M(p*,q) q Q
v1 M(p*,q*)

v1 v2

(5)

Gi tr cn bng (Equilibrium Value)


Trc ht chng ta cn xem li mt s khi nim c bn v cn bng trong L
thuyt tr chi:
- Cn bng (Equilibrium): L mt kt qu (outcome) m trong cc bn
tham gia cuc chi khng mun thay i.
- Cn bng Nash: l mt khi nim trong L thuyt tr chi, c John Nash
a ra vi m hnh tr chi vi n i th. Cn bng Nash xc nh mt chin lc
ti u cho cc tr chi khi cha c iu kin ti u no c xc nh trc . Ni
dung c bn ca khi nim cn bng Nash l: Nu tn ti mt tp hp cc chin

25

lc cho mt tr chi vi c tnh l khng mt i th no c th hng li bng


cch thay i chin lc hin ti ca mnh khi cc i th khc khng thay i, tp
hp cc chin lc v phn thu nhn tng ng to nn cn bng Nash. Ni cch
khc, cn bng Nash t c nu nh thay i mt cch n phng ca bt c ai
trong s cc i th cng s lm cho chnh ngi thu li t hn mc c c vi
chin lc hin ti. Khi nim ny p dng cho nhng tr chi gm t hai i th
tr ln v Nash ch ra rng tt c cc khi nim khc nhau v gii php trong cc
tr chi c a ra trc u c cn bng Nash.
V mi quan h gia gi tr cc i v gi tr cc tiu c thit lp,
chng ta c th nh ngha mt gi tr cn bng ca tr chi.
Mt cp chin lc (p,q) c gi l cn bng nu p tng xng tt vi q
v ngc li q tng xng tt vi p , ngha l:
M( p,q) M( p,q) M( p,q).
2.1.2 nh l Minimax
nh l:
Vi tr chi c tng bng khng v c hai ngi chi, mt trong 3 iu kin sau
y s dn n 2 iu kin cn li.
1. Tn ti mt cp cn bng.
2.

min M ( p, q) min max M ( p, q) v


v1 max
q
p
q

3. Tn ti mt s thc v, mt chin lc hn hp p* v mt chin lc hn hp


q* sao cho:
*
(a) i M (ai , b j ) pi v

(b)

j M (ai , b j ) q j v

26

vi j= 1, 2,, n
vi i= 1, 2,, m

iu kin (3a) ni rng tn tht trung bnh cho ngi chi 2 dng chin lc thun
ty bt k no khng nh hn v. Tng t iu kin (3b) ni tn tht trung bnh ca
ngi chi 1 dng chin thut thun ty bt k th khng ln hn v.
Trong nh l Minimax, von Neumann (1928) chng minh s tn ti tng qut ca
cc nghim Minimax trong cc chin lc ngu nhin ha cho cc tr chi hu hn
bc, hai ngi chi v tng bng khng. Vi cc tr chi ny, nh l Minimax
tng ng v mt l-gc vi s tn ti ca cn bng Nash.
nh l Minimax cn c pht biu nh sau:
Vi mi tr chi c tng bng khng vi hai ngi chi th lun tn ti mt chin
lc cn bng.
Phn chng minh nh l ny c th xem trong ti liu tham kho s [10].
T c im ca tr chi c tng bng khng vi hai ngi chi (Zero-sum-game)
v t nh l Minimax nn thut ton Minimax thch hp vi loi tr chi ny. V
m bo khi thut ton ng dng cho cc tr chi ny s chc chn c li gii.

2.2 Gii thut Minimax


Xt mt tr chi i khng trong hai ngi thay phin nhau i nc ca
mnh nh c vua, c tng, c car,... Tr chi c mt trng thi bt u v mi
nc i s bin i trng thi hin hnh thnh mt trng thi mi. Tr chi s kt
thc theo mt quy nh no , theo th cuc chi s dn n mt trng thi phn
nh c mt ngi thng cuc hoc mt trng thi m c hai u th khng th pht
trin c nc i ca mnh, ta gi n l trng thi ha c. Ta tm cch phn tch
xem t mt trng thi no s dn n u th no s thng vi iu kin c hai
u th u c trnh nh nhau.

2.2.1 tng
Hai i th trong mt tr chi c gi l MIN v MAX. MAX i din cho
i th quyt ginh thng li hay c gng ti a ha u th ca mnh. Ngc li

27

MIN l i th c gng ti thiu ha im s ca MAX. Ta gi thit MIN cng


dng cng nhng thng tin nh MAX.
Mt tr chi nh vy c th c biu din bi mt cy tr chi. Mi mt
nt ca cy biu din cho mt trng thi. Nt gc biu din cho trng thi bt u
ca cuc chi. Mi nt l biu din cho mt trng thi kt thc ca tr chi (trng
thi thng, thua hoc ha). Nu trng thi x c biu din bi nt n th cc con ca
n biu din cho tt c cc trng thi kt qu ca cc nc i c th xut pht t
trng thi x. Do hai u th lun phin nhau i nc ca mnh nn cc mc (lp)
trn cy tr chi cng lun phin nhau l MAX v MIN. Cy tr chi v th cn c
tn l cy MIN-MAX. Trn cy tr chi cc nt ng vi trng thi m t ngi
chi MAX chn nc i s thuc lp MAX, cc nt ng vi trng thi m t
ngi chi MIN chn nc i s thuc lp MIN. Chin lc minimax th hin qua
quy tc nh tr cho cc nt trn cy tr chi nh sau:
- Nu nt l nt l gn cho nt mt gi tr phn nh trng thi thng thua
hay ha ca cc u th.
- S dng gi tr ca cc nt l xc nh gi tr ca cc nt cc mc trn
trong cy tr chi theo quy tc:
+ Nt thuc lp MAX th gn cho n gi tr ln nht ca cc nt con ca nt .
+ Nt thuc lp MIN th gn cho n gi tr nh nht ca cc nt con ca nt .
Gi tr c gn cho tng trng thi theo quy tc trn ch r gi tr ca trng thi
tt nht m mi i th c th hy vng t c. Ngi chi s s dng cc gi tr
ny la chn cc nc i cho mnh. i vi ngi chi MAX khi n lt i,
ngi chi ny s chn nc i ng vi trng thi c gi tr cao nht trong cc trng
thi con, cn vi ngi chi MIN khi n lt s chn nc i ng vi trng thi c
gi tr nh nht trong cc trng thi con.
V d 1: Xt tr chi car c 9 (Tic tac toe). Hai ngi MAX v MIN thay phin
nhau i X hoc O (MAX i X, MIN i O). Ngi no i c 3 thng hng

28

(ngang, dc, xin) th thng cuc. Nu ht i m cha phn thng bi th hai


u th ha nhau. Mt phn ca tr chi ny c biu din bi cy sau:
MAX i X

1
X

MAX i X

X
X

-1

1
MIN i O

X
O

X
X

X
X

O
X

X
O

X
X
O

O
X
X

0
MIN i O

-1

0
MAX i X

X
X
O

X
O
O

O
X
X

X
O
O

X
O
O

X
X
X

X
O
O

Hnh 2.1. Mt phn cy tr chi trong tr chi tic-tac-toe.


Trong cy tr chi trn, cc nt l c t nn v vin khung i d phn
bit vi cc nt khc. Ta c th gn cho mi nt l mt gi tr phn nh trng thi
thng thua hay ha ca cc u th. Chng hn ta gn cho nt l cc gi tr nh sau:
1 nu ti ngi i X thng
-1 nu ti ngi i X thua
0 nu hai u th ha nhau
Nh vy t mt trng thi bt k, n lt mnh, ngi i X s chn cho
mnh mt nc i sao cho dn n trng thi c gi tr ln nht (trong trng hp
ny l 1). Ta ni X chn nc i MAX, nt m t X chn nc i ca mnh c

29

gi l nt MAX. Ngi i O n lt mnh s chn mt nc i sao cho dn n


trng thi c gi tr nh nht (trong trng hp ny l -1, khi X s thua v do
O s thng). Ta ni O chn nc i MIN, nt m t O chn nc i ca mnh
c gi l nt MIN. p dng chin lc Minimax cho mt nhnh trong cy tr
chi ca tr chi Tic-tac-toe ta c gi tr (pha trn mi nt) ca cc nt c th
hin trong hnh 2.1.
V d 2: Xt tr chi Nim. chi Nim, mt s token (vt biu hin nh ng xu,
l bi, mnh g) c t trn bn gia hai i th. mi nc i, ngi chi
phi chia ng token thnh hai ng nh c s lng khc nhau. Ngi chi no
n lt m khng chia c l thua cuc. ng vi mt token va phi, khng gian
trng thi ny c th trin khai n cng. Hnh sau biu din khng gian trng thi
ca tr chi c 7 token:

MIN
6-1

5-2

4-3

MAX
5-1-1

4-2-1

3-2-2

3-3-1

MIN

MAX

MIN
MAX

4-1-1-1

3-2-1-1

3-1-1-1-1

2-1-1-1-1-1

2-2-1-1-1

2-2-2-1

Hnh 2.2: Khng gian trng thi ca tr chi Nim.


Khi chi cc tr chi kh c th trin khai ht khng gian trng thi, kh
khn ch yu l phi tnh ton phn ng ca i th. Mt cch x l n gin nht
l gi s i th ca chng ta cng s dng kin thc v khng gian trng thi

30

ging nh chng ta v p dng kin thc kin nh thng cuc. Mc d gi


thit ny c nhng hn ch ca n nhng n cng cho chng ta mt c s hp l
d on hnh vi ca i th. Gii thut Minimax s tm kim khng gian ca tr
chi ny theo gi thit . p dng chin lc Minimax, chng ta nh du lun
phin tng mc trong khng gian tm kim ph hp vi i th c nc i mc
. Trong v d trn, MIN c quyn i trc, tng nt l c gn gi tr 1 hay 0
ty theo kt qu l thng cuc i vi MAX hay MIN. Kt qu ca vic p dng
Minimax vo th khng gian trng thi i vi tr chi Nim c th hin nh
hnh trn. V tt c cc nc i u tin c th xy ra cho MIN s dn n cc nt
c gi tr 1 nn i th MAX lun c th bt tr chi ginh thng li cho mnh bt
k nc i u tin ca MIN l nh th no (ng i thng li ca MAX c cho
theo mi tn m).
2.2.2 p dng gii thut Minimax n su lp c nh
Khi p dng Minimax cho cc tr chi phc tp, him khi c kh nng m
rng th khng gian trng thi n cc nt l. Thay vo khng gian trng thi
ny ch c th c trin khai n mt s mc xc nh ph thuc tim nng v thi
gian v b nh chng hn. Chin lc ny c gi l tnh trc n nc i (n
move lookahead). V gi tr cc nt trong th con ny khng phi l trng thi kt
thc ca tr chi nn chng khng phn nh gi tr thng cuc hay thua cuc.
Chng ch c th c gn mt gi tr ph hp vi mt hm nh gi heuristic no
. Gi tr c truyn ngc v nt gc khng cung cp thng tin thng cuc hay
thua cuc m ch l gi tr heuristic ca trng thi tt nht c th tip cn sau n nc
i k t nt xut pht. Vic tnh trc ny s lm tng hiu qu ca heuristic v n
c p dng vo mt phm vi ln hn trong khng gian trng thi. Minimax s
hp nht tt c cc gi tr ca cc nt con chu ca mt trng thi thnh mt gi tr
duy nht cho trng thi .
Trong cc cy tr chi c tm kim bng mc hay lp (ply), MAX v MIN
lun phin nhau chn cc nc i. Mi nc i ca mt i th s xc nh mt lp

31

mi trn cy. Cc chng trnh tr chi ni chung u d tnh trc mt su lp


c nh (thng c xc nh bng cc gii hn v khng gian hoc thi gian ca
my tnh). Cc trng thi trn mc c nh gi theo cc heuristic v cc gi tr
ny s c truyn ngc ln bng th tc Minimax, sau thut ton tm kim s
dng cc gi tr va nhn c chn la mt nc trong s cc nc i k tip.
Bng cch ti a ha cho cc cha m MAX v ti thiu ha cho cc cha m MIN,
nhng gi tr ny i li theo th n con ca trng thi hin hnh. Sau trng
thi hin hnh dng chng tin hnh la chn trong cc con ca n [8].
3

MAX

3
3

MIN

MAX

MIN

Hnh 2.3: Minimax i vi khng gian trng thi gi


Nt MAX

Nc i ca MAX

-1

X
-2

XO

XO

XO

XO

6-5=1 5-5=0 6-5= 1 5-5=0


OX
5-6= -1

XO

OX

5 - 4= 1

4-5= -1

OX
6-6= 0

OX

XO

5-6= -1 6-6= 0

32

XO
4-6= -2

OX
6 - 4= 2

Hnh 2.4: Minimax hai lp c p dng vo nc i m u tr chi Tic-tac-toe.


y s dng mt heuristic phc tp hn, n c o mc tranh chp trong
tr chi. Heuristic chn mt trng thi cn o, tnh tt c cc ng thng m ra
cho MAX, ri tr i tng s cc ng thng m ra cho MIN. Gii thut tm kim
s c gng ti a ha s chnh lch (hiu s) . Nu c mt trng thi bt buc
thng cuc cho MAX, n s c nh gi l + , cn vi trng thi bt buc thng
cuc cho MIN th c nh gi l - .
2.2.3 Th tc Minimax
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 ngi chi
MAX), v l m khi p dng cho u th bn kia (c gi l ngi chi cc tiu
ngi chi MIN). 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 (MAX) 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 (MIN), li ra sc
phn khng li, dn ti im m ca anh ta m hn hay im dng ca i th
nh i (Hnh 2.3).

33

Nc chn i
Cc bn c trung gian, phi bin
i qua chng trong qu trnh
t n cc bn c ch, khng
cn so snh chng.

su
xem xt

ng tm kim- chui nc i dn
n th c tt nht c th t c

Cc bn c ch, ta phi so snh


chng vi nhau cn nhc hn
thit do nc i mang li.

Hnh 2.5:Minh ha chin lc chi c ca ngi ln my.


Cc nt trng l cc th c trung gian phi tri qua n c cc th c ch. Khng
cn phi xt n tt xu ca cc th c trung gian. Cc nt en l cc th c ch v
phi xem xt tt xu so snh chng vi nhau. T s tm ra ng i n th c
tt nht c th c (ch khng l th c tt nht trong s do phi xem xt c cch i
chng tr ca i phng).

T tng ta c th suy ra cc bc ca thut ton Minimax nh sau:


- Nu nh t n gii hn tm kim (n tng di cng ca cy tm kim tc nt
l), 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 (nt MIN), 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 (nt MAX), p dng th tc
Minimax ny cho cc con ca n. Ghi nh kt qu ln nht.
T tng phn tch trn ta c th xy dng th tc Minimax nh sau:

34

Hm Minimax nhn vo mt th c pos v tr v gi tr ca th c .


Nu th c pos tng ng vi nt l trong cy tr chi th tr v gi tr
c gn cho nt l. Ngc li ta cho pos mt gi tr tm value l - hoc ty
thuc pos l nt MAX hay MIN v xt cc th c con ca pos. Sau khi mt con ca
pos c gi tr V th t li value= max(value, V) nu n l nt MAX v value=
min(value,V) nu n l nt MIN. Khi tt c cc con ca n c xt th gi tr tm
value ca pos tr thnh gi tr ca n. (INFINITY th hin cho gi tr v cng) [15].
Ta c gi m cho gii thut Minimax nh sau:
function Minimax(pos): integer;
value, best : integer;
begin
if pos l nt l then return eval(pos)
else
begin
{Khi to gi tr tm cho best }
if pos l nt MAX then
best:= -INFINITY
else best := INFINITY;
{hm genPos sinh ra mi nc i t th c pos}
genPos(pos);
{Xt tt c cc con ca pos, mi ln xc nh c gi tr ca
mt nt con, ta phi t li gi tr tm value. Khi xt ht tt
c cc con th value l gi tr ca n}
while (cn ly c mt nc i m) do
begin
pos := Tnh th c mi nh i m;
value = Minimax(pos);
if pos l nt MAX then
if (value > best) then best := value;
if pos l nt MIN then
if (value < best) then best := value;
end;
Minimax := best;
end;
end;

Xem xt on chng trnh trn ta thy:


- C hai hm mi l hm eval(pos) v hm genPos(pos). Hm eval(pos) thc hin
vic tnh gi tr (lng gi) ca th c pos. Hm genPos(pos) sinh ra tt c cc nc
i c th t th c pos hin ti. Vic xy dng hai hm ny s ph thuc vo tng
tr chi c th.

35

Hm nh gi Eval ng vi mi trng thi (th c) pos ca tr chi vi mt gi tr


s Eval(pos). Gi tr ny l s nh gi li th ca trng thi pos. Trng thi pos
cng thun li cho MAX th Eval(pos) l s dng cng ln, pos cng thut li cho

MIN th eval(pos) l s m cng nh, Eval(pos) 0 i vi trng thi khng li th


cho ai c. Cht lng ca chng trnh chi c ph thuc rt nhiu vo hm nh
gi. Nu hm nh gi cho ta s nh gi khng chnh xc v cc trng thi, n c
th hng ta i ti trng thi c xem l tt, nhng thc t li rt li cho ta. Thit
k mt hm nh tt l mt vic kh. i hi ta phi quan tm n nhiu nhn t.
y c s mu thun gia chnh xc ca hm nh gi v thi gian tnh ca n.
Hm nh gi chnh xc s i hi rt nhiu thi gian tnh ton, m ngi chi li
b gii hn bi thi gian phi a ra nc i.
Trong chng 3 ta s xem xt chi tit hm Eval v hm GenPos.
Nh chng ta bit, khng phi lc no cng n c tn cc nt l. c bit
trong cc tr chi c, b gii hn thi gian suy ngh ca mi i th ng thi s
nt v su ca cy tr chi l rt ln. Chng ta kh c th thc hin tm kim
n su ca cc nt l. V vy, chng ta ch thc hin tm n mt su depth
c nh no . su depth cng ln, hm tm kim cng gn gi tr ti u, cng
c ngha l trnh suy ngh ca my cng cao! Nh vy, hm Minimax by gi
s c li gi: Minimax(pos, depth) trong depth l su tm kim.
Thng thng, cho tin (v cng rt gn thc t) ta coi c hai ngi chi
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 dng 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:

36

value:= -Minimax (pos, depth-1); {Tnh im ca pos}


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. Vy ta pht trin hm Minimax thnh dng sau [15]:
function Minimax (pos, depth): integer;
begin
if (depth = 0) or (pos l nt l) then
Minimax := Eval (pos) { Tnh gi tr th c pos }
else
begin
best := -INFINITY;
genPos(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;

- Trong ci t, 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) or (pos l nt l) then
Minimax := Eval { Tnh gi tr th c pos }
else
begin
best := -INFINITY;
genPos; { 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;

37

Minimax := best;
end;
end;

2.2.4 nh gi
Thut ton Minimax thm ton b cy tr chi bng vic dng chin lc
tm kim theo chiu su. Nn phc tp ca thut ton ny tng ng trc tip vi
kch thc khng gian tm kim bd, trong b l h s phn nhnh ca cy hay
chnh l nc i hp php ti mi im, d l su ti a ca cy. Thut ton s
thm tt c cc nt khng ch l cc nt l v vy s lng cc nt c thm s l
b(bd-1)/(b-1). Nhng hm lng gi s l phng thc chi phi hu ht thi gian v
ch lm vic trn cc nt l, v vy vic thm cc nt khng phi cc nt l c th b
qua [8]. Do phc tp thi gian l O(bd). Bn cht ca thut ton l tm kim
theo chiu su, v vy vic i hi khng gian b nh ca n ch tuyn tnh vi d v
b. V th phc tp khng gian l O(bd) [8][13].
Nu h s nhnh trung bnh ca cy l b = 40, v tm kim n su d = 4
(cc con s thng gp trong tr chi c) th s nt phi lng gi l 40 4 = 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), y l con s tng i ln.
C th tit kim c nhiu thi gian bng vic dng cc thut ton tm kim
thng minh hn nh thut ton Alpha-beta, thut ton ny khng thm tt c cc nt
l m vn cho kt qu ng vi thut ton Minimax [9]. Trong phn tip theo ta s
xt thut ton ci tin ny.

2.3 Gii thut ci tin Alpha-beta


Thut ton Minimax yu cu phi c s phn tch qua hai bc i vi khng
gian tm kim: bc u truyn xung n su ca lp p dng heuristic v bc
sau truyn ngc cc gi tr trn cy. Minimax ln theo tt c cc nhnh trong
khng gian bao gm c nhng nhnh m mt thut ton thng minh hn c th b
qua hay ta bt. Cc nh nghin cu trong lnh vc chi game xy dng mt k

38

thut tm kim gi l ct ta Alpha-beta nhm nng cao hiu qu tm kim trong cc


bi ton tr chi hai i th [9].
B nh gi tnh trong th tc Minimax cn c thc hin i vi tt c cc
nt ti mc cui ca cy tr chi (nt l). Ta c th gim bt s tnh ton tn km
ny bng cch gim s nhnh cy cn to ra v s cc nh gi tnh cn tnh ra. Do
vy mt gii php nh dng trong th tc nhnh v bin l khng tip tc i theo
cc ng khng tt.
Thut ton Alpha-beta l mt ci tin ca 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 [9]. Gi s hnh sau 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.
Mc cc i
Mc cc tiu
Mc cc i
7

Mc cc i

Mc cc tiu

=2

Mc cc i
2

=2
2

=2

Mc cc i
1

Mc cc tiu
Mc cc i

39

Hnh 2.6: Thut ton Alpha-beta ct ta nhnh


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.

2.3.1 tng
tng ca tm kim Alpha-beta rt n gin: Thay v nu nh tm kim
ton b khng gian n mt su lp c nh, tm kim Alpha-beta thc hin theo
kiu tm kim su. C hai gi tr, gi l alpha v beta c to ra trong qu trnh
tm kim:
- Gi tr alpha lin quan vi cc nt MAX v c khuynh hng khng bao gi
gim.
- Ngc li gi tr beta lin quan n cc nt MIN v c khuynh hng khng bao
gi tng.
Gi s c gi tr alpha ca mt nt MAX l 6, MAX khng cn phi xem xt
gi tr truyn ngc no nh hn hoc bng 6 c lin quan vi mt nt MIN no
bn di. Gi tr alpha l gi tr thp nht m MAX c th nhn c sau khi cho
rng MIN cng s nhn gi tr tt nht ca n. Tng t nu MIN c gi tr beta l
6 n cng khng cn xem xt cc nt nm di n c gi tr ln hn hoc bng 6.
bt u thut ton tm kim Alpha-beta, ta i xung ht su lp theo
kiu tm kim su, ng thi p dng nh gi heuristic cho mt trng thi v tt c
cc trng thi anh em ca n. Gi thuyt tt c u l nt MIN. Gi tr ti a ca cc
nt MIN ny s c truyn ngc ln cho nt cha m (l mt nt MAX). Sau
gi tr ny c gn cho ng b ca cc nt MIN nh l mt gi tr beta kt thc tt
nht. Tip theo thut ton ny s i xung cc nt chu khc v kt thc vic tm
kim i vi nt cha m ca chng nu gp bt k mt gi tr no ln hn hoc

40

bng gi tr beta ny. Qu trnh ny gi l ct ta Beta ( cut). Cch lm tng t


cng c thc hin cho vic ct ta Alpha ( cut) i vi cc nt chu ca mt nt
MAX.
Hai lut ct ta da trn cc gi tr alpha v beta l:
1. Qu trnh tm kim c th kt thc bn di mt nt MIN no c gi tr beta

nh hn hoc bng gi tr alpha ca mt nt cha MAX bt k ca n.


2. Qu trnh tm kim c th kt thc bn di mt nt MAX no c gi tr
alpha ln hn hoc bng gi tr beta ca mt nt cha MIN bt k ca n.
Vic ct ta Alpha-beta nh vy th hin quan h gia cc nt lp n v cc nt
lp n+2 v do quan h ton b cc cy con bt ngun lp n+1 u c th loi
khi vic xem xt.
Ch rng gi tr truyn ngc thu c hon ton ging nh kt qu Minimax,
ng thi tit kim c cc bc tm kim mt cch ng k.
Nguyn tc Alpha-beta:
Nu 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
Alpha-beta (ta s xt di y). Hai tham s ca th tc ny c gi l alpha v
beta c 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. C th do c thng tin t
cha, ng nn khng cn phi lm bt c vic g na cho nt ny. Do , nguyn tc
ny cng gip chnh sa hoc xc nh chnh xc gi tr ti nt cha, ng n [5]. 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 Alpha-beta c bt u ti

41

nt gc vi gi tr ca alpha l - v beta l + . Th tc s t gi quy chnh


n vi khong cch gia cc gi tr alpha v beta ngy cng hp hn.

2.3.2 Gii thut


Thut ton Alpha -Beta
-

Nu mc ang xt l nh (gc cy), t gi tr ca alpha l - v beta l + .

Nu nh t n gii hn tm kim (n tng di cng ca cy tm kim, nt


l), 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 (MIN), thc hin cc cng


vic sau cho n khi tt c cc con ca n c xt vi th tc Alpha-beta
hoc cho n khi alpha l bng hoc ln hn beta.
o p dng th tc Alpha-beta vi gi tr alpha v beta hin ti cho mt con.
Ghi nh li kt qu.
o 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 (thu hp khong [alpha, beta] bng
cch gim gi tr beta).

Nu nh mc ang xt l ca ngi chi cc i (MAX), thc hin cc cng


vic sau cho n khi tt c cc con ca n c xt vi th tc Alpha-beta
hoc cho n khi alpha l bng hoc ln hn beta.
o p dng th tc Alpha-beta vi gi tr alpha v beta hin ti cho mt con.
Ghi nh li kt qu.
o 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 (thu hp khong [alpha, beta] bng
cch tng gi tr alpha).

42

MAX

MIN

MAX
MIN
2

Hnh 2.7 Minh ha gii thut Alpha-beta

A c =3 ( Gi tr nt A s khng ln hn 3). B b ct ta , v 5>3. C c =3


( Gi tr nt C s khng nh hn 3). D b ct ta , v 0<3. E b ct ta , v 2<3.
Gi tr nt C l 3.
T tng trn ta s xy dng hm AlphaBeta bng ngn ng ta Pascal.
Hm ny s c dng khai bo nh di y, 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 [15][16].
function AlphaBeta(alpha, beta, depth): integer;
begin
if (depth = 0) or (pos l nt l) 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;

43

AlphaBeta := best;
end;
end;

V d 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);
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 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 v beta cng ngy
cng thu hp v dn n cc nhnh cy c gi tr nm ngoi khong ny nhanh
chng b ct b:
min ti t
(ct b)

min ti t
(ct b)

Min xem xt

alpha
a

beta

Hnh 2.8: alpha, beta ging nh hai li dao dng ct b lp v dy. Hai li
dao ny s c thu hp dn dn. Lng ct b ph thuc vo tc thu hp, thu
hp cng nhanh ct b cng nhiu.

44

2.3.3 nh gi
Hiu qu ca vic ct nhnh Alpha-beta ph thuc nhiu vo th t cc nc
i k tip c thc hin. Nu cc nc i k tip c thc hin c th t ngu
nhin th tng s nt c thc hin s khong O(b 3d/4) [8]. Trong b l rng
ca cy (h s phn nhnh trung bnh ca cc con), d l su ca cy.
Trong iu kin l tng, thut ton Alpha-beta ch phi xt s nt theo cng
thc:

2-1

vi d chn

+-1 vi d l
Nh vy, trong trng hp tt nht thut ton Alpha-beta ch cn thc hin
khong O(bd/2) nt chn ra nc i tt nht, thay v O(bd). H s phn nhnh hiu
qu tr thnh

thay v b nh trong thut ton Minimax [8][14].

Thut ton Alpha-beta 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 thut
ton 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).
V d: Ta s xt xem thut ton Alpha-beta hot ng nh th no i vi cy tr
chi sau:

45

4 16

5 31
= 5 39
8 6
= 4 15

=8

2
5

5 23
= 5 30

1 18

2 10
20
4 12 3
= 4 14 = 522

Kt qu tm kim nc i

3 25
9 27

1 33
2 35

3 38

29 =3 37

8 7 2 9 1 6 2 4 1 1 3 5 3 9 2 6 5 2 1 2 3 9 7 2 16 6 4
1 3 4 7
9 11 13 17 19 21 24 26
28
32 34 36

Hnh 2.9: Mt cy tr chi c su 3 v h s nhnh 3 . S trong cc hnh ch


nht cho bit th t a ra cc kt lun. Ch rng ch c tt c l 16 nh gi
tnh c thc hin (cc nt en) ch khng phi l 27 nh khi khng dng thut
ton Alpha-beta. Nhnh i tt nht cho ngi chi ca i l nhnh gia.
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.

46

[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> 8. Nh vy nhnh gia l ti t hn cho ngi chi
cc tiu. n y vic ct b c thc hin do ngi chi cc i khng th
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 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.

2.4 So snh gii thut Minimax v gii thut Alpha-beta.


Di y l bng so snh s nt phi xt gia hai gii thut Minimax v Alpha-beta.

47

su
1
2
3
4
5
6
7
8

Minimax

AlphaBeta

S nt

S ln tng

S nt

40
1600
64000
2560000
102400000
4096000000
163840000000
6553600000000

40
40
40
40
40
40
40

40
79
1852
3199
74118
127999
2964770
5120000

T l s nt

S ln tng

1
1.9
23.2
1.7
23.2
1.7
23.2
1.7

Minimax/Alpha-beta

20
34
800
1381
32000
55262
1280000

Vi b = 40 v d = 4 ta c s nt phi xt l 2x40 2 - 1 = 3199. Nh vy trong iu


kin l tng th s nt phi xt nh Alpha-beta (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 40 3 + 40(5/2) - 1 = 64000+10119-1 = 74118. S
nt phi xt nh Alpha-beta t hn thut ton Minimax (hn 102 triu nt) l
102400000/74118 = 1382 ln.
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 Alpha-beta 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 Alpha-beta tng chm hn rt nhiu ln so vi Minimax. T s nt phi
xt gia hai gii thut ny cng cao khi d cng ln.
Cng thc tnh s nt cho thy s nt phi xt khi dng Alpha-beta t hn nhiu so
vi Minimax nhng vn l hm s m v vn dn ti bng n t hp. Thut ton
Alpha-beta hon ton khng chng c bng n t hp m ch lm gim tc
bng n t hp. 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 Alpha-beta c th tm n su gp hai ln

48

su tm kim bng Minimax. Hnh sau y l th so snh gia hai thut ton
ny [5].

Hnh 2.10 : Kho st s bng n t hp, Thut ton Alpha-beta ch lm gim s


bng n t hp ch khng chng c n. H s phn nhnh trong cc th trn l
40.
Tm li : Do bng n t hp qu ln ca cy tr chi m c hai ngi chi 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 thut ton Alpha-beta. Tuy c hai thut ton u khng trnh
c bng n t hp nhng thut ton Alpha-beta lm chm bng n t hp hn
nn c dng nhiu trong cc tr chi c.

49

CHNG 3: NG DNG
3.1 Phn tch bi ton
3.1.1 Tr chi
Tr chi N qun hu bt ngun t bi ton rt ni ting l Bi ton 8 con hu:
t ln lt 8 con hu ln bn c quc t (kch thc 8x8) sao cho khng c 2 con
hu no khng ch ln nhau. Do vy, ngi ta c kh nhiu cch nh ngha v tr
chi N qun hu, in hnh l 3 cch sau:
1) Cho bn c quc t c kch thc N x N, 2 ngi chi ln lt t tng qun
hu ln bn c sao cho khng c 2 qun hu no khng ch nhau. Ngi
chi no khng t c qun hu ln bn c na l ngi thua cuc.
2) Cho bn c quc t c kch thc N x N, 2 ngi chi ln lt t tng qun
hu ln bn c sao cho khng c 2 qun hu no khng ch nhau cho n khi
khng t c na. Mi qun hu t ln bn c s khng ch cc nm
trong 8 hng i ca n nu cn cha b khng ch. Ai khng ch c
nhiu hn l ngi thng cuc.
3) Cho bn c quc t kch thc N x N. Ngi i u tin s t a qun hu
ln bn c. Ngi chi th 2 tip tc t b con hu ln bn c (a > b v a + b
N) sao cho khng c 2 qun hu no khng ch ln nhau. Sau ngi
chi th nht s di chuyn cc con hu ca mnh n cc con hu ca i
phng, ngi chi th 2 c nhim v phng th, di chuyn cc con hu ca
mnh i phng khng bt c. Sau k nc i nu ngi chi th nht
n c ht b con hu ca i phng th ngi chi th nht thng, ngc
li ngi chi th 2 thng.
Sau khi cn nhc, cch pht biu tr chi th 2 c chn tin hnh vit
ng dng cho lun vn. Tuy nhin, cho tr chi hp dn hn v cng bng hn
chng ta b sung thm mt s lut chi.

Pht biu tr chi (bi ton) nh sau:


Cho bn c c kch thc N x N (3 N 15), trn c sn m ( hay
c th hiu l chng ngi vt) (0 m (N - 2) 2) nm cc v tr ngu nhin,
cc cn li l trng.
Hai ngi chi ln lt t tng con hu ln bn c sao cho khng c 2
con hu no khng ch ln nhau. Hai con hu khng ch nhau nu chng nm
trn ng i ca nhau v khng c no nm trn ng i y.
Mi con hu t ln bn c s khng ch cc nm trn 8 ng i ca
n nu cn trng, cha b khng ch bi con hu no khc.
Tr chi kt thc khi khng i th no t c qun hu ln bn c
na. Ngi no khng ch c nhiu hn l ngi thng cuc.
Hnh 3.1 di y minh ha hai trng hp: Hai con hu khng khng ch nhau v
hai con hu khng ch nhau:
Hnh 3.1

(a) Hai con Hu khng khng ch nhau

(b) Hai con Hu khng ch nhau

Trong hnh (a) Con Hu xanh v tr (2,3) t trc do n khng ch c 5 ,


con Hu mu vng t sau nn ch khng ch c 3 .

3.1.2 C s l thuyt
Theo nh pht biu tr chi trn, ta c th thy tr chi N qun hu thuc
lp cc tr chi i khng gia hai ngi chi. C th tr chi ny thuc dng tr
chi c tng bng khng vi hai ngi chi (Two players, Zero-sum-game). V th
ta c th p dng thut ton tm kim Minimax v thut ton Alpha-beta trong tr
chi ny.
Mt khc nu vit chng trnh ngi chi vi ngi th ch cn xy dng
cc tp lut chi ngi chi khng phm quy v kt thc khi c ngi thng.
Tuy nhin nh vy li khng ng dng v kim tra c thut ton trong lun vn
ny. V vy chng ta s vit chng trnh cho Ngi chi vi My, trong trng
hp ny ta phi tnh ton nh th no kh nng my tnh thng cao hn ngi.
My tnh c li th l kh nng tnh ton nhanh, kh nng nh tt gp nhiu
ln so vi con ngi, vy my tnh thng th tht d, vn l lm sao my c
th ngh c nh ngi? V c th tnh trc c t nht l 4 n 5 nc.
Vy phi c thut ton my c th qut qua cc phng n i, v chn phng
n cui cng l tt nht sao cho my tnh c th thng. Trong ng dng ny ta chn
thut ton Minimax v thut ton ci tin Alpha-beta (chng 2) ci t cho my
tnh chi.

3.2 Ci t chng trnh


Chng trnh c ci t bng ngn ng C# (.NET Framework 2.0). Ngoi
ra cn s dng thm mt s phm mm nh: PowerCHM, Photoshop v phn mm
to file icon.

3.2.1 Cu trc chng trnh v mi quan h gia cc lp chnh


Chng trnh c thit k theo m hnh Hng i tng(Object-Oriented)
tin cho vic ci tin v sau. Do chng trnh mi c pht trin nn cu trc
cn n gin, ch c 3 lp chnh l cc lp Form1 (tn lp mc nh do C# t cho

form), lp CBoard v lp gameAI. Trong lp gameAI l lp c p dng


thut ton trong chng 2 ca chng ta.
Mi quan h gia 3 lp th hin qua s cc lp trong hnh 3.2 nh sau:
1

Hnh 3.2: S th hin mi lin quan gia 3 lp chnh.


Trong :
- Lp Form1 c thuc tnh mb thuc lp CBoard.
- Lp CBoard c thuc tnh form thuc lp Form1.
- Lp CBoard c thuc tnh machine thuc lp GameAI.
- Lp GameAI c thuc tnh ownBoard thuc lp CBoard.
Cc lp tng tc vi nhau thng qua cc bc sau:
1. Lp Form1 truyn thng tin nhn c t ngi chi cho lp CBoard, lp
CBoard ly c thng tin thng qua thuc tnh form.
2. Lp Cboard x l d liu thu c t lp Form1 v truyn cho lp GameAI,
lp GameAI thu c thng qua thuc tnh ownBoard .
3. Lp GameAI sau khi nhn c thng tin s x l v truyn li cho lp Cboard,
lp Cboard nhn c thng qua thuc tnh machine.

4. Lp Cboard nhn c thng tin t lp GameAI, x l v truyn li cho lp


Form1 thng qua thuc tnh mb. Lp form1 x l li thng tin v iu chnh giao
din ca form.
Sau y chng ta s xem xt cu trc v nhim v ca 3 lp trn.
3.2.2 Lp Form1
Lp ny th hin giao din ca tr chi, lm nhim v giao tip vi ngi
chi. Cc thao tc chnh ca lp ny l:
-

Nhn thng tin khi to mt vn chi t ngi s dng nh: kch thc bn
c, trnh ca my, s (hay vt cn) s dng, ai l ngi i trc
cung cp thng tin cho lp CBoard khi to mt vn chi mi.

Ghi nhn thng tin v nc i ca ngi chi mi khi ngi chi nhp chut
ln mt trng ri truyn cho lp CBoard x l.

Cp nht nc i ca ngi v my ln mn hnh.

Hin th cc thng tin v trn u nh im ca cc i th, cc nc i,


ai l ngi ang i

Th hin 1 s hiu ng khi ngi dng di chuyn chut trn bn c tin


cho ngi chi suy ngh, nh gi.

Ngoi ra cn thc hin xut cc kt qu ca cc vn chi ra mt file Excel


tin theo di li sau nhiu vn chi.

Trong mc 3.3 chng ta s thy c cc thnh phn c th ca lp Form1.


3.2.3 Lp CBoard
Lp CBoard ng vai tr nh mt bn c trong thc t. Lp ny cha cc
thng tin v bn c:
-

Mt mng 2 chiu lu tr trng thi tng ca bn c.

Kch thc bn c, ngi i trc, s trn bn c, thi gian v trnh


suy ngh ca my, im ca 2 i th.

Lu tr thng tin v nc i hin ti: ai ang i, l nc i th my

Cc phng thc chnh ca lp Cboard nh sau:

Khi to mt vn chi mi.

Kim tra mt nc i c hp l hay khng?

Ghi nhn mt nc i.

Thc hin nc i ca ngi chi.

Yu cu my thc hin nc i.

3.2.4 Lp gameAI
C th ni lp gameAI l lp trung tm ca cc chng trnh tr chi i
khng. Lp ny cha cc phng thc phc v cho vic quyt nh i mt nc ca
my. Sau y chng ta s xem xt chi tit cc thuc tnh v phng thc ca lp
ny.

Hnh 3.3: Cu trc lp gameAI


Trong lp gameAI c cc thuc tnh ng ch l:
-

Mng 2 chiu board[,] cha trng thi ca bn c hin ti.


o board[i, j] = -100 nu l .
o board[i, j] = -x tc l (i, j) cha con hu c t nc th x.

o board[i, j] = x nu (i, j) b khng ch bi con hu t nc th x.


-

Mng listCell[] cha danh sch cc s b khng ch nu ta t con hu


mt no

2 mng dx, dy th hin 8 hng i c th ca qun hu.

ownBoard l mt th hin( i tng) ca lp cBoard, cha bn c chng ta


ang chi v cc thng tin v n nh kch c, trnh my v.v..

ownedCell: ghi nhn s b khng ch trn bn c

totalCell: tng s trng trn bn c lc u = tng s s .

startTime: ghi nhn thi gian bt u suy ngh ca my.

resX, resY: ghi li nc i my s i.

bestValue ghi nhn gi tr tt nht nu thc hin nc i (resX, resY).


Cc phng thc ca lp gameAI

Lp ch c mt phng thc c thuc tnh public l phng thc


requestMove(). Phng thc ny c u vo l mt trng thi ca bn c, tr
li gi tr (resX, resY) l m my s t qun hu. tm kim c nc
i tt nht, phng thc requestMove s dng cc phng thc h tr l:

AlphaBeta: thc hin tm kim theo thut ton Alpha-beta.

Minimax: thc hin tm kim theo thut ton Minimax.

Hm eval: lng gi th c hin ti.

Phng thc heuristicGenerateMove: sinh heuristic cc nc i c th.

Phng thc doMove: th thc hin mt nc i c sinh bi phng thc


heuristicGenerateMove.

- Phng thc remove: b thc hin nc i th (nh ni trong thut ton


chng 2).
Sau y chng ta s xem xt cc phng thc ca lp gameAI mt cch chi tit.

Phng thc Minimax


Function Minimax(depth): integer;
Begin
If ( qu thi gian suy ngh) then
return INFINITY; {dng khng duyt na}
if (depth=0) or (khng th i c nc no na) then
return eval(depth); {lng gi ngay th c hin ti v kt
thc}
best = -INFINITY;
pMove = heuristicGenerateMove; {sinh cc nc i c th}
while (cn ly c nc i m trong pMove)do
begin
Thc hin nc i m;
value = -Minimax(depth - 1);
B thc hin nc i m;
if (value > best) then
begin
best := value;
if (y l nc i u tin ca my) then
cp nht nc i resX, resY;
end;
end;
return best;
End;

Phng thc Alphabeta


Function AlphaBeta(Alpha, beta, depth): integer;
Begin
If ( qu thi gian suy ngh) then
return INFINITY; {dng khng duyt na}
if (depth=0) or (khng th i c nc no na) then
return eval(depth); {lng gi ngay th c hin ti v kt
thc}
best = -INFINITY;
pMove = heuristicGenerateMove; {sinh cc nc i c th}
while (cn ly c nc i m trong pMove) 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
begin
best := value;
if (y l nc i u tin ca my) then
cp nht nc i resX, resY;
end;
end;
return best;
End;

Phng thc sinh nc i heuristicGenerateMove


Trong chng 2 khi nh gi thut ton Alpha-beta ta nhn xt: thut ton
hot ng cng hiu qu khi s thu hp ca s Alpha v Beta cng nhanh. 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.
Tuy vy, do gii hn v thi gian tnh ton v s bng n t hp, ta khng
th lit k ht cc nt l sp xp c. Do , ta ch p dng cch sinh cc nc
i theo mt tiu chun m ta cho l tt, ph hp vi c im tr chi ang xt nh
sau:
-

Ta thy, nu khng c th nc i u tin vo trung tm bao gi cng


chim c nhiu trng nht. Do , ta s u tin xt cc theo th t t
trung tm ta ra cc xung quanh (tt nhin l tr !)

Mt cch cm tnh, ta c th nhn thy i vo cc c s trng trong 8


xung quanh n ln th c v c li hn.
Nh vy ta c th sinh cc nc i sp ti theo hng heuristic nh sau: tm

tt c cc cn trng. vi mi , m s trng xung quanh n, cho tt c vo mt


danh sch. Tin hnh sp xp danh sch theo th t gim dn ca s trng xung
quanh. Nu hai c cng s trng xung quanh th u tin gn trung tm hn.
Gii thut c ci t nh sau:
Procedure generateHeuristicMove(var pMove);
begin
for i := 1 to boardSize do
for j := 1 to boardSize do
if board[i, j] = 0 then {nu (i, j) cn l trng}
begin
k := s trng xung quanh (i, j);
t b 3(i, j, k) vo mng pMove;
end;
sp xp mng pMove theo tiu ch trn;
End;

Hm m s trng xung quanh (i, j) c thc hin n gin, ch cn


kim tra 8 xung quanh n. Lu trng hp (i, j) bin ca bn c, ta phi s
dng k thut lnh canh: t bn ngoi bin ca bn c l cc trnh trng
hp trn mng.
Phng thc lng gi eval
Do c im ca tr chi, hm lng gi c thc hin nh sau: Ta ch vic
tnh hiu s gia s ngi chi chim gi v s my chim gi. Tham s depth
c a vo bit c i th no gi hm lng gi ny.
Function eval(depth): integer;
begin
for i := 1 to boardSize do
for j := 1 to boardSize do

if (i,j) b ngi chi chim then


tng s ngi chim ln 1
else
if (i,j) b my chim then
tng s my chim ln 1;
if (depth mod 2 = 0) {nu ngi chi gi hm lng gi}
return (s my chim s ngi chim)
else return (s ngi chim s my chim);
End;

Phng thc doMove


Phng thc doMove nhn tham s u vo l (i, j): ch s s i v x l s
th t ca nc i. Phng thc thc hin nh sau: nh du s i l x. T (i,
j) ta i ln lt theo 8 hng c th n khi no ra bin hoc gp . Vi mi
trn ng i, nu cn l trng th nh du mang gi tr x. Trong qu trnh
, cp nht li gi tr s b chim.
Phng thc remove
Phng thc remove c tham s u vo l x: s th t ca nc i. Phng
thc thc hin b nc i c to bi hm doMOVE. Phng thc n gin ch
qut cc trn bn c, nu gi tr tuyt i ca bng x th ta gn li gi tr bng
0, ng thi gim gi tr s b chim i 1.

M ngun lp gameAI:
using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using System.Collections;
namespace n_queens
{
// xay dung lop diem moi dua vao lop point da co
class myPoint
{
public Point pt;
int val;
public myPoint(int x, int y, int startVal)
{
pt = new Point(x, y);

val = startVal;
}
//Tnh khoang cch gia im a v im trung tm
static double distance(myPoint a, double mid)
{
return Math.Sqrt(Math.Pow(a.pt.X - mid, 2)+Math.Pow(a.pt.Y mid, 2));
}
// Phng thc tnh so snh khoang cach giua hai diem voi o trung tam
public static int compare(myPoint a, myPoint b, float mid)
{
if (a.val > b.val) return -1;
else if (a.val < b.val) return 1;
else
{
double d1 = distance(a, mid);
double d2 = distance(b, mid);
if (d1 < d2) return -1;
else if (d1 > d2) return 1;
else return 0;
}
}
}
class CompareInv : IComparer// lop Icomparer co 1 phuong thuc compare
de so sanh 2 doi tuong
{
int middlePoint;
public CompareInv(int middle) //ham tao
{
middlePoint = middle;
}
public int Compare(object obj1, object obj2)//so sanh 2 oi tuong
{
myPoint a, b;
a = (myPoint)obj1;
b = (myPoint)obj2;
return myPoint.compare(a, b, middlePoint);
}

}
class gameAI
{// khai bao oi tuong thuoc lop CBoard
CBoard ownBoard;
/// <summary>
/// mang cha trng thi ca ban co
/// </summary>
int[,] board = new int[17, 17];
//dinh nghia 8 huong
/// <summary>
/// th hin 8 hng i ca qun hu
/// </summary>
int[] dx = { -1, -1, -1, 0, 0, 1, 1, 1 };
/// <summary>
/// </summary>
int[] dy = { -1, 0, 1, -1, 1, -1, 0, 1 };

/// <summary>
/// Thi gian bt u
/// </summary>
long startTime;
/// <summary>
/// Gi tr thut ton tr v
/// </summary>
int resX, resY, bestValue;
/// <summary>
/// S chim
/// </summary>
int ownedCell, totalCell;// so o bi chiem va so o trong ban dau
CompareInv compInv; //doi tuong thuoc lop CompareInv
/// <summary>
/// danh sch cc c th b chim
/// </summary>
Point[] listCell = new Point[17 * 17];
/// <summary>
/// hm to ca lp
/// </summary>
public gameAI(CBoard mb) // ham tao
{
ownBoard = mb;
totalCell = mb.boardSize * mb.boardSize - mb.nStone;
}
/// <summary>
/// Phuong thuc Sinh nc i
/// </summary>
void heuristicGenerateMove(ArrayList pMove)
{
int i, j, k, c;
ArrayList al = new ArrayList();
for (i = 1; i <= ownBoard.boardSize; i++)
for (j = 1; j <= ownBoard.boardSize; j++)
if (board[i, j] == 0)
{
//Dem o trong gan ke voi o [i,j]
c = 0;
for (k = 0; k < 8; k++)
if (board[i + dx[k], j + dy[k]] == 0) c++;
al.Add(new myPoint(i, j, c));
}
al.Sort(compInv);// sap xep cac doi tuong trong danh sch al
foreach (myPoint p in al)
{
pMove.Add(p.pt);
}
}
/// <summary>
/// Thuc hien di chuyen ban co
/// </summary>
/// <param name="start"></param>
/// <param name="ord"></param>
void doMove(Point start, int ord)
{

int u = start.X, v = start.Y;


int i, j;
board[u, v] = -ord;// danh dau o [u,v] da di
ownedCell++;// so o bi chiem
// danh dau cac o bi chiem ngang, doc, cheo
i = u - 1; j = v;
while ((i >= 1) && (board[i, j] > -100))
{
if (board[i, j] == 0) { board[i, j] = ord; ownedCell++; }
i--;
}
i = u + 1; j = v;
while ((i <= ownBoard.boardSize) && (board[i, j] > -100))
{
if (board[i, j] == 0) { board[i, j] = ord; ownedCell++; }
i++;
}
i = u; j = v - 1;
while ((j >= 1) && (board[i, j] > -100))
{
if (board[i, j] == 0) { board[i, j] = ord; ownedCell++; }
j--;
}
i = u; j = v + 1;
while ((j <= ownBoard.boardSize) && (board[i, j] > -100))
{
if (board[i, j] == 0) { board[i, j] = ord; ownedCell++; }
j++;
}
i = u - 1; j = v - 1;
while ((i >= 1) && (j >= 1) && (board[i, j] > -100))
{
if (board[i, j] == 0) { board[i, j] = ord; ownedCell++; }
j--;
i--;
}
i = u + 1; j = v + 1;
while ((i <= ownBoard.boardSize) && (j <= ownBoard.boardSize)
&& (board[i, j] > -100))
{
if (board[i, j] == 0) { board[i, j] = ord; ownedCell++; }
j++;
i++;
}
i = u - 1; j = v + 1;
while ((i >= 1) && (j <= ownBoard.boardSize) && (board[i, j]
> -100))
{
if (board[i, j] == 0) { board[i, j] = ord; ownedCell++; }
j++;
i--;
}
i = u + 1; j = v - 1;
while ((i <= ownBoard.boardSize) && (j >= 1) && (board[i, j]
> -100))
{
if (board[i, j] == 0) { board[i, j] = ord; ownedCell++; }

j--;
i++;

}
/// <summary>
/// Tro lai buoc di chuyen
/// </summary>
/// <param name="pt"></param>
/// <param name="ord"></param>
void remove(Point pt, int ord)
{
for (int i = 1; i <= ownBoard.boardSize; i++)
for (int j = 1; j <= ownBoard.boardSize; j++)
if (Math.Abs(board[i, j]) == ord)
{
board[i, j] = 0;
ownedCell--;
}
}
///
///
///
///
///
int
{

<summary>
Phuong thuc Uoc luong gia tri cua nuoc di
</summary>
<param name="ord"></param>
<returns></returns>
eval(int ord)

int countOdd = 0, countEven = 0;


for (int i = 1; i <= ownBoard.boardSize; i++)
for (int j = 1; j <= ownBoard.boardSize; j++)
if ((board[i, j] != 0) && (board[i, j] > -100) &&
(board[i, j] % 2 == 0))
countEven++;//chan
else if (board[i, j] % 2 != 0)
countOdd++; // le
if (ownBoard.playerMove % 2 == 0)
{
if (ord % 2 == 0)
return countEven - countOdd;
else
return countOdd - countEven;
}
else
{
if (ord % 2 == 0)
return countOdd - countEven;
else
return countEven - countOdd;
}
}
///
///
///
///

<summary>
thu tuc Alpha-beta
</summary>
<param name="Alpha"></param>

///
///
///
int
{

<param name="beta"></param>
<param name="depth"></param>
<returns></returns>
AlphaBeta(int Alpha, int beta, int depth)
// het thoi gian suy nghi
if (DateTime.Now.Ticks - startTime >= ownBoard.limitTime *

10000000)

return -10000;
if ((depth == 0) || (totalCell == ownedCell))
return eval(depth);
else
{
ArrayList pMove = new ArrayList();
Point pt;
int best, value;
best = -10000; //best = -Infinitive
heuristicGenerateMove(pMove);
IEnumerator myEnumerator = pMove.GetEnumerator();
while (myEnumerator.MoveNext() && (best < beta))
{
if (best > Alpha) Alpha = best;
pt = (Point)myEnumerator.Current;
doMove(pt, ownBoard.nMove + ownBoard.machineLevel -

depth + 1);

value = -AlphaBeta(-beta, -Alpha, depth - 1);


remove(pt, ownBoard.nMove + ownBoard.machineLevel -

depth + 1);

if ((Math.Abs(value) != 10000) && (value > best))


{
best = value;
if (depth == ownBoard.machineLevel)
{
resX = pt.X;
resY = pt.Y;
}
}

}
return best;

}
///
///
///
int
{
10000000)

<summary>
Thu tuc Minimax
</summary>
Minimax(int depth)
if (DateTime.Now.Ticks - startTime >= ownBoard.limitTime *
return -10000;
if ((depth == 0) || (totalCell == ownedCell))
return eval(depth);
else
{
ArrayList pMove = new ArrayList();
Point pt;

int best, value;


best = -10000; //best = -Infinitive
heuristicGenerateMove(pMove);
IEnumerator myEnumerator = pMove.GetEnumerator();
while (myEnumerator.MoveNext()) //&& (best < beta))
{
pt = (Point)myEnumerator.Current;
doMove(pt, ownBoard.nMove + ownBoard.machineLevel -

depth + 1);

value = -Minimax(depth - 1);


remove(pt, ownBoard.nMove + ownBoard.machineLevel depth + 1);

if ((Math.Abs(value) != 10000) && (value > best))


{
best = value;
if (depth == ownBoard.machineLevel)
{
resX = pt.X;
resY = pt.Y;
}
}
}
return best;

/// <summary>
/// Yu cu nc i
/// </summary>
public Point requestMove(int[,] mb)
{
board = mb;
compInv = new CompareInv((ownBoard.boardSize + 1) / 2);
ownedCell = ownBoard.playerScore + ownBoard.machineScore;
startTime = DateTime.Now.Ticks;
bestValue = Minimax(ownBoard.machineLevel);//AlphaBeta(10000, 10000, ownBoard.machineLevel);
return new Point(resX, resY);
}
}
}

3.3 Mt s giao din v kt qu chy chng trnh


Mn hnh ban u nh sau:

Hnh 3.4: Mn hnh ban u ca tr chi


Trong c cc ty chn to mt vn chi mi

Hnh 3.5 Cc ty chn ca mt vn chi


Sau khi chn xong cc thng s ngi chi n vo nt Bt u chi chi.
Mn hnh tr chi bt u:

Hnh 3.6: Mn hnh sau bt u chi


Bn c sau 2 nc i:

Hnh 3.7: Bn c sau 2 nc i.


mu xanh l m my chim c sau 1 nc i ca n, my vng l m
ngi chim c sau 1 nc i ca ngi. Cn cc cn li l cha b chim.
Sau 2 nc i kt qu c th hin trong hp trng thi nh sau:

Hnh 3.8: Kt qu sau 2 nc i


Trong th hin s im ca hai i th, n lt ai ang chi v danh sch cc
nc i c th ca 2 i th.

KT LUN
Vi mc tiu ra ca lun vn l tm hiu v nghin cu v thut ton tm
kim i khng Minimax, cc ci tin ca n v ng dng trong tr chi c tng
bng khng, cc kt lun chnh t c ca lun vn c th tm tt nh sau:
nhc li mt cch tng quan v vn tm kim trong c pht
biu bi ton tm kim v gii thiu cc k thut tm kim c bn nh tm kim
khng c thng tin, tm kim c thng tin v tm kim i khng.
Tm hiu v c im ca tr chi c tng bng khng trong lnh vc
L thuyt tr chi. ng thi a ra m hnh ton hc ca tr chi c tng bng
khng v pht biu nh l minimax p dng cho cc tr chi c tng bng khng.
nghin cu gii thut tm kim Minimax v gii thut ci tin ca
n l gii thut Alpha-beta cho cc tr chi c tng bng khng.
Ci t c gii thut cho tr chi c tng bng khng vi hai ngi
chi trong bi ton xp cc qun Hu ln bn c. Kt qu ca vic ci t l chng
trnh tr chi xp cc qun Hu gia ngi v my tnh. Trong thut ton c
ci t cho vic suy ngh ca My tnh.
Mc d c nhiu c gng nhng chc chn rng cc kt qu ci t c
khng trnh khi nhng thiu st v hn ch, hy vng rng trong tng lai vn
ny s c nghin cu su hn v pht trin vi thut ton c ci tin tt hn,
chng hn chng ta c th i vo nghin cu vn song song ha thut ton trn.
Trn c s cc kt qu t c, chng ta c th pht trin nhng nghin
cu tip v thut ton Alpha- Beta song song [16]. Hn na, chng ta c th ngh
n vic trin khai nhng nghin cu v ng dng ca nhng kt qu ny trong cc
lnh vc khc ca x hi, c bit l kinh t.

Ti liu tham kho


Ting Vit
1. Nguyn nh Ha (2004), Cu trc d liu v Thut gii, NXB HQGHN.
2. Xun Li (1998), Cu trc d liu v gii thut, NXB Khoa hc k thut,
H Ni.
3. Nguyn c Ngha - Nguyn T Thnh (1997), Ton ri rc, NXB Gio dc.
4. Nguyn Thanh Thy (2007), Tr tu nhn to: Cc phng php gii quyt vn
v k thut x l tri thc, NXB Khoa hc k thut.
5. Trung Tun (1997), Tr tu nhn to, NXB Gio dc.
6. inh Mnh Tng (2001), Cu trc d liu & Thut ton, NXB Khoa hc k
thut, H ni.
7. inh Mnh Tng (2002), Tr tu nhn to, NXB Khoa hc k thut, H ni.
Ting Anh
8. Jessica Billings (2008), The Minimax Algorithm, CS 330.
9. Jeroen W.T.Carolus (2006), Alpha-beta with Sibling Prediction Pruning in
Chess,

Faculteitder

Natuurwetenschappen,

Wiskundeen

Informatica

Universty of Amsterdam Netherlands.


10. Michael A. Goodrich (2007), Proof of the Minimax Theorem.
11. Heylighen (1993), Zero sum games Principia Cybernetica Web.
12. R. D. Luce and H. Raiffa (1957), Games and Decisions, John Wiley, New York.
13. George Luger (2002), Artificial Intelligence: Structures and Strategies for
Complex Problem Solving, Addison-Wesley Publisher.
14. Stuart J.Russell and Peter Norvig (2003). Artificial Intelligence: A Modern
Approach, Prentice Hall, Second edition, p55-p122.
15. Ken Thompson (2008), Play chess with God, Bell Labs, Arun Pratik.
16. Vladan V. Vuckovic (2007), The method of the chess search algorithms
Parallelization using two-Processor distributed system, p175-p188.

You might also like