AI
!"
09–1–037–0030#
$%&'()*'+, '-
.*/
280 11 29 24365
:<;>=@?BABCEDGFGHGI<J4K<LNM@OQP4RTSQUWVBX4:G;>=ZYQ[]\Z^_CW`@acbdCNeTf@gihBj_DTF<HTIQJ4KGLTM>OWP
RQABkGl>mQA_nGoTprq4sTtru>VBXivxw]vzy|{}jB~GTC4><gNT >qdTrSQUWV4TZnToGp]x@WVrQ?BAG
g<NXN:W;=@ZO>PTRE@>jc ]A
1053 hBU>V?W<W<
CZ ¡W¢cnQo<p]Ac¤£}QrGg<NX
:G;@=EjB¥T¦jB~?xgrVEjGABC
8 § 8j4¨GbQjª©xSQU
C¬«r?®jB¯i°>]hB±£}q²ªm<¢By|{´³µ{ZQ?qTS
¶ VwTqd·G¸i¹Wu>VZXN:G;@=Ejcº@Pcº@A_»¬¼ZN½E¾WSQU
C¬¿ÁÀjB°GÂWu>V_¯ªjBÃrSdÄTpjB°<¤vx<WV_¯
ŪÆcC*¿zÀªjZ°G¤vx<rV¯ªjZê¢NÇ>¼{
ÉÈ
u¬?x¬Ê®ËGÌixÍ
ÎÈ
vx<Ï{4?x¬Êcj4SQUQVBXdOQPERQA
½4¾ª¡4qdCTÐ>@Ñ>ÊN?u>V@?ÓÒ4Ô>wTw>VZGGG<rVxÕ¢BÖªjZ×>TOQP4R¬?´TGGQQVBX
ØQÙGÚ S>AZCT:Q;@=G^<=QÛGÜdRªxË<ݵvBdX_Ë<ÝjEÞr¢Bß
áà
r<j4qGâiãäQå4ºª=_æ
[6]
SrUWVcXGâiã_ä
åº=æ*?BABCEçG ]_ÂrGQè@éêëP<è]ìcã4xíT >îdï]¼BdðGñGòiªWVóNôTp<æQSQUWVBX Ø<ÙTÚ SrA4â
ãäW庪=_æi_ÂrG4:G;@=
AI
qÏh_jBõ@gcö ¶ Zu@Vcw4CW÷GjBø<ÂNùiúGûWu>VBX
1 ÿ 1 1.1 Ø<ÙTÚ j . . . . 1 1.2 DGFGHGITø QJ4KGLTM>OWP4RQjjcJ4Kj
. . . . 1 1.3 JEK_<<GgTZDGFGHGITø QJ4KGLTM>OWP4RQ¢Z¥Qu>VpGæ
. . . . 1 1.4 j . . . . 2 1.5
Ø<ÙTÚ
jª©
. . . . 2 1.6 MjTÝ . . . . 2
2 !" 2
2.1 :<;>=Njcº>Pº
. . . . 2 2.2
:<;>=NjcJ4K
. . . . 2 2.3 #
²GC%$²jT¯
. . . . 3
3 AI&(')*(+(, 4
3.1 G¯.-rP0/1>P4b
. . . . 4 3.2 23%4 . . . . 5 3.3 âãäW庪=_æ
. . . . 6 3.4 506 Æ . . . . 6 3.5 7 · 6 Æi?´JEK 6 Æ . . . . 6
4 8:9<;.=?>@, 6
5 ABC@&?: AI 6
5.1
Ø<ÙTÚ
j4âã_äQådºª=æj_pD
. . . . 6 5.2
âãäW庪=_æi_ÂrG4:G;@=
AI . . . . 7
6 EFHGJIK 7
7 ELGJMN@&(O(P 8
QR
9
8 SIT(U 10
VW
A
VW
11
1
1.1 []\_^a`cb]d
:<;>=BYNeTfGC.e fGCQ`@abCW[]\Z^hgjiWP]j OWP4RWA_DTF<HTIGø<<JEKGLNM@OQPERNSQUQVBXDGFGH
ITø:<QJ4K<LNM>OWP4R¬?_ABCk0lQj
4m jnoihp@EuGOQPERNSWUQVBX
•
DTFrqq OWP4R@xïÊB^iëtsurP4qDGFrSQUWVBX
•
HTILqq OWP4R<mQ^iëtsvx<WVK^]ëvsu>PTjwxªjZGóWq?yª¢
0C{zEGA|_}}j<^iëtsurPGj~>u pjT.r¢B¥ru>VwxªjZGóWqKrNÒ(j_ Gò HGI¤?gWVOWP4REX
•
øqq ÷Gj4OWP4RQ¢4. QVh^]ëvs(urPTjBrQgZpjT.Gqdø:ES<UWVOWPdR4X
•
Lqq ^]ëP?urPTjTp@kª¢EOQPERQ¢]:WVjWq
à
z4gNNOWP4R4X
•
J4K<LNMHqqJ^]ëvs(urPdqÏ¿ÁÀjG¢dQEdCxzcSrj^]ëvs(urPTjZï]¼d¢
m
EK>
jBLTM]iVWW?}q>
VdOQPER4X
DGFGHTIGø <JEKGLTM>OQPERQAZCQ÷GjBù@mEw¤£*vÓYQu*{ C<OWP4Rck<lª¢4<E4õ_}Óg ÙTÚ
qdïW
G ¶ X
1.2 c¡ ¡¢£¥¤¦c§¨a©]ª¬«]`¯®_°_`¦c§±²³`¯´]µ
DGFGHTIGø <JEKGLTM>OQPERQA^iëtsu>PdqnGoTp¬·¶±¸: <Vh¹¢WÑT¼Bº
5 p 7
·»º½¼Tp
7
·0»
º¿¾À{Á ¶ À{ »Nq4nÂ>wµ£Á¹zQ¼cWrVcXÃÄQtjÅ?Æ>S>AZCd Qy|{UWVirP¡jáOWPNRrAruªVBN@SWj
>qEy>u%ÇTVÈ<CNJEK0¢<AB»¤¼cQ<gGEX:Q;ª=N¢
4
v>AB@QgdGG @q
1053 U CÄ<tjóNô
É
jZùW@Ê:N<WVZXEÒ(ËrSdCE><gcTT >q?Ì>gGiWP]j OWP4RTSWAcJEK_<<rVhÍÏZUQVBXÎÏ
A_DGFjG^]ëvs(urPdqdnToGp]·¶Ï¼Z~GTC
47p>S 5 prqd·wWu@V [7]X<`ªar\BåGPTABDTFjG^iëtsu>Pdqn oGpÏh~vZZ~Q<C:Á ¶ À{ ?_grV
[8]
XNT< @q4yªirPj OrPERGS>AZC<OrPERd²¬ ØQ Ñ
ÑÐ
i{dvZZ~
jdJNKrqEïrG<QrVBXc:Q;@=dS>A<Ò:sÓGq
6 § 6
jB²ijB~Q<CcD<FjQ^¬ëtsu>PEq4nToTpÏ·¶
m
?´C
16¥ 20S(¼Gpjc·w?_grV
[9]X4eGf>S>AZCÒ:sÓª
3 § 4¢<Ô Ð vÓC(Õªj<Ö×Ï
4Ö×i¢<Ø£TvBº h<Ê Ù m
vÚNÊ?Ç»@¢Z¥v4CED<Fij<^¬ëtsu@P4q4nGo<pÏ~vBc~QGC
78p@S¼GpijZ·w?_g>Vrr?qÛ{Üv
<rV
[10]X
1.3 ¦§¡±Ý²ßÞà¬áâã³âäc¡ ¡¢£¥¤¦c§¨a©]ª¬«aå%æaç¥èéê
><gcTT >qdy>TOQPERQ¢B¥*vNJ4KiïÊdW?_AÄÅ ÆrSQAë ìrS<UWVBX@vxw]v´CGJ4K
TgGNOQPERQ¢Z¥µviÓCETj
23
ò<óEôGC(G¯.-rP0/1>P4bdCQâãäWåº=æTCTÒNpG j
506
ÆC(íN²
SWj
7 · 506
Æ]?´J4K
6
Æ<g]Â>cCÑ
øwª¡?ïîWTªVxp]>u>VWW?}qdrW¢NgWVZXc:G;@=E¢
4
v
Að>wÏ£®õ¥}´g ÙTÚ
q4ïQGG ¶ CÃWSWAZ¥NF¡?z ñ?ò% <VWW?_jNgTÏëó1Nº%zcS ¶ <rVcqdCcJEKª¢
A_»Ï¼B<GgT4X¬vw¬vEx>AG^<=GÛNÜ@éEãEÛZq0ôõ@gQjdSWANg¤{ CÃÄ<tªjZóNô
É
jôõ>SQUWV@?x¬Êj4q
ËjöËrSQUWV@? BGQWVBX
1.4 ®¥°`c´]µ
Ø.÷ SªAø>ã0ùGê<P:/d:r;=<¢
4
uV.¬j?0µúû]VdXrpræ ?QvBW¯-ªP:/?1PGb@j<ÆcÂr
Logistello[12]qWUQVZX LogistelloA 1997ü ¢ý?Å<þÿr`Wãù:]ãcj>m ¢B·w*vG
CQ÷Tj
û:ÜvQWVZX¤vxw]vzC
LogistelloAT¯@-WP./1rPEbQjNÆrx°<ÂQu@V4NC.T¯.kªjBp]¶ªdrB~<
¢GAc¥rS ¶ g<EX@÷<j¢<A
Zebra[11]Y Edax[17] g]hNcUrVcX]_µ£
2m jd:Q;ª= AI ¢@ book ?
ªV
#
²<C%$x²jG¯.-WP./_YN¥N¦@-rP0/1rP4b@x°<¤vQWVqdC0$²j
506
Æ]?ïíN²jcJEK
6
Æ>xלּ
Q>VcX¢
Edax AN¨EºW`%ø Z¥>STk@q@¬?_g>¼c<>VcqEC
book °QÂÅWAc·@q0lTqªVª?_
Êj4qEÒ%Ng öËWSWUQV
[2]X
1.5 []\_^a`
â]ãZä>å4ºi=ZæiA!i¢e(fij
AIËQÝjTÞ>¢°WÂäcWrrV4qECd:W;=
AIS>A<Uz
°Q¯cWr<g<NX
e f
AIxËGÝWu>VdÞQ¢EâãäWåº=æªA"Nªg#¬%$&*vG
cj_pj_p<æªA'j4OWP4Rr¢>(<ÂQqw
{d?%)]£Ó@VZXr÷>_S ØGÙGÚ
SrABCQâã_äQådºª=æ]Â>Gd:<;>=
AI xËTÝ*vzC@÷GjBø<ÂNùiúGûWu>VBX
1.6 ©+*-,a` .0/
Ø
MjGݪA k0lQj
|
SWUQVZXz<ñ1
22 ST:G;>=Njcº@Pcº¤?óT¯¢
m
N<ú.û@VBX¸|{31
32 SN:
;@=
AIjZË<Ý¢cÂ@¬£}Q@Vp<æ¢
m
E úû@VZX1
52 ¢E4Ë<Ý*vZE:<;@=
AI ¢ m T?úûNC1 62 ¢
Õ54(¬MGC)6>u>VZX1
72 ¢4
ÙTÚ
jGlTC(üj7õ]98>uEX
2 :<;>=@?BADCFE
2.1 GIHKJ¯`ML_«-L
:Q;@=TA
8 § 8
jN¨GbrjZ²GÏN@T<OrPERª_ïÊÓX ÂOPRQTSU%VXWXYZ\[5]^Æ
2 _ 2
[ `acbedeS
f [g h9ijTk'l5mno5pXqûVrMsutXv
1
bÂO PRQch%8cwXt
xzy({|e}~'T `a[ (ñ 5b\ R[N-U9Vc['g hQ XVst mUW g hQ`a5b ~
cI
W- ['NU9V5R['gcp['NU%V5R[g h9R595p SQXte
¡
~
g h9m¢cb£5ahw'tg hQm ¤We¥¦R[g h%§¨MU ['N-U9V5g[
Rbwe'tX©ªg
QXs(e«mX¤¬cp
}®¯°
S9we't'±
¯R²
³´
~
gR['[µ\['¶eªI·¸³¹RS
'tcºµ['¡
~»5
R\S%5t
2.2 GIHKJI¼-½¾+¿-À
ÁÂÃ
~
60eÄ\ÅXbÆc¢X³´
XÇ
wRt ÈT«V
60ÉzÊpÉ5ËÌ UÍeVhÎÏewe·cS
Ð'Ñ
S±Ò
[IhRT·eS
XÓRÔ
p
teUU(É5ËRÌc[µ
Õ\Ö
b U'm
Wרz[Ù
ÉcËR̵z[ÚµÛ bÜÝ
UV ÕÞ
wßàá5âcãÍÎÏThw[
~ä ÓÔ
p
tRUU¸WYZz[å {æ
h'çIkzsXUm\è[bX5V
~ ÓÔ
éZµ
Xê
Ms(
WãXÍÎÏ
ÓeÔ
Set
6 _ 6['YZ [ÁÂÃ
~
1994ë b
{cìzí
a5[îïð
Feinstein bcñ«'VòƳ5p
W'±ÒTh9T«mX¤WÉ
~
±ó
16ô U9õ5 Szö·5S
X÷eø
k'
a b c d e f g h 1
2 3 4 5 6 7 8
ù
1 úûüý
Vc't
[9]
2.3 þMÿ
ÿ ¼
ÁÂeà ~ ãÍÎÏ ~ kV
WYbrXV ~ [eñcö%
bX5 ~ Wg S U%V U9V
5t ² Y[gb ~ Wõ
gWeõ
gWqõ
g
[13]t"!"#e[Y ZÝzhv
2,3,4b%$ewXt
éZ
&('
b)*5w]YbrXV è+g
-sIkV't,Ý S U%Ve].-
W »
«,/
0c
t
[13] ].-
~2143
ÍeVgRb5cÊVcg[X̨ew6 S%Tö7zh.8 9U W [eVe`aeh Õ;:
k5mc[;<p
t
»
«/
~=
h%>
W
~
·X¹@?'[
=
h,Ak5X"Bg
QnoTh%>z
·5S%pXW [gzh,CD UmTS
bE5;<5p
t]F-
[;<zhv
5,6W
»
«/
[G<Thv
7,8 b
$cw t
a b c d e f g h 1
2 3 4 5 6 7 8
1 2
3
4 5
6
ù
2 H%IKJMLFN%O
a b c d e f g h 1
2 3 4 5 6 7 8
1 3 2
4 5 6
ù
3 PQRIKJTS,N%O
a b c d e f g h 1
2 3 4 5 6 7 8
2 3
4 5
1 6
ù
4 UVRIKJTW,N%O
3 XZY\[ AI ]_^a`cbed_f
gih
p ~
WÁÂÃ
AI
EeXVejk
²
GlRbXVmonR't
3.1 p(q(rsKturwv
gox
}oy,ze}
azS
~
WÁÂeÃX[gzhx
}oy,ze}
a*MU W{éZcp
|
g
5
"B!eb'ÈT«'Ve
S%Tö ilcp
'tigx
};yzc}
aeh%GEw5·S9p}ÁÂÃ
AI [,>i~
ÓcÔ
S5t-U%zUW
Ö
Vg5Ä[zh%c
U'mX¤5bx
}oy,ze}
ab
é Z
eÐ
V mX¤b
~
g;x
}oy,zc}
a ~ Ö
tÝ SUV
Edax[11]W WZebra[12]
0
[ÁÂRÃ
AI
âewt\·?'[
AI
~
YZ b Qcm[£
y}
bcñ«'V zh9Ø
Ð
U9V5cè[p
t,RbèRi[x };y
hFEc VG
²GKíæ®
bcñ«'V
a b c d e f g h 1
2 3 4 5 6 7 8
a b c d e f g h 1
2 3 4 5 6 7 8
1
ù
5 KJ
a b c d e f g h 1
2 3 4 5 6 7 8
a b c d e f g h 1
2 3 4 5 6 7 8
1
2 4 3
ù
6 J
iR[K
a
k'Vc
AI è
âp9Vc't
3.2 u
¡µ
~
¡µThFEe¢áâR[é ZWeÊm
~
µÉ[é ZThF cweil5p
tjk
²
b£^ðcp\è
¤ Ì :
w@¥k'i¢cX[
YZ; i5p
'tYZG p¥
~
WYZ
1`a¢5b,¦Ìeh5¢
é ZTh
![5p 5w'tmK WXYZG
~
YZ\[%¦Ìp§\Xm Íi¨R[é ZTh.§\c·;¥
p
©¥ ö
ª,« I W;}XÁÂÃ
AI
h.>~cwec·;¥ ~,¬ t
ÊXmW éZ[ zh®c% ¡µ ~ WáâR[é Z\[XÌch¯°cwe%áé Z; p¥ WµÉ\['é ZTh9É
ËcÌ© W ÉËcÌ©méZb±®¢áéZG zh.²WG![ h,³eb'áâR[é Z\[ i h.5ÉËeÌé
ZG R[
25b ´Ikt
á5éZi [G @¡'µz[רzbERµ?9Ri G¶i·zb i¢
~
WÉ b¸immYZG ;Wi¹º;»W;
gW;µW¼½ µR è[ kG¢5
[6]t
3.3 ÁÃÂKÄÆÅ@ÇÆÈ É
Ê
%ËÌ Ã,l
[6] ¥ ~ W͵Ih%Em;Î ÏÐ y} 뵄 h%ÒµÔÓ²I«¢Õ;ÖiThFRe'רGlep t áâ ~ ÁÂÃ
AIp ~ Ê iEzki¢rµ?¸¢W×b5Ø
AIÙ >i~ ÙÚ ;Ûi¢c%Gl5p 't
Ê
FË;Ì Ã%l
ÙÜÝ
b¢ ~,Þ
4
h
pmnt
3.4 ßwàá
ÉËcÌ©¥ ~ W ÓeÔ â"5 pjµ
Ù É Ù
ThËcÌW;!
Ù
eµ?>w?Réã
Ù
h.W±-èä i
å
Ih.æoE5wRe·o¥%p
tjk\bÉË̵Ih Õ:
wcbXi K¡'µ
ÙçGè
~é
}
AI ¥c
W
ÉËe̵
Ù
ÕÞ
b,êëGìc¤Gí
Úµ
² b ÕÖ
m W,ëiìâ"5
Ù,î ç 0
Ù,ïð
Æñep
t
3.5 òwóà¾áÃôR½-¾à¾á
ÁÂeà ~¯õ b%Õiö s¸b W³´ Ç 5wÊp
Ù
µ ê s( ø÷iù p %-è,úzkßW³´
Ç weÊpËeÌ c·;¥ ûiü ¥%c't ¯õ p Ù ËeÌ
Ù
Glp¥®¢Æ³ ÉËcÌ©¥(ãÍËcÌ 5 tƳËcÌ
¥ ~ Wc }X®
Ù
¯õ p³´
Ù
ÌchËcÌý 5·o¥¸pƳ
Ù
zh%c\·o¥h%þMö t'ãXÍËcÌ@¥ ~ W
éãcpÿ?
wni¢
Ù
éãËeÌW±-èe@¥'%9e\·;¥%þMö t
Ƴ ÉËeÌ
Ù ª
× Øe¤;í
ê
s¢ ßWjkʢƳËeÌXp³¹F é
W
3ê
-s
¥(ãÍËeÌ,ý
RÖ
¢\ñ
µ
Ù å
³\¹Ú ·;¥
¶e
4 ! #"%$c[ f
Ê
%ËÌ
Ã,l
[6] ¥
~
W͵%E&;Î ÏÐ'
}
뵄
%ÒµÔÓ²I«¢Õ;ÖiFRe'רGl
(
}X®
AI Ù *)R
,+3W-*.
²
á0/
Ù2103 :4
²
*) 0G&¾'
256+Ec ?i¢57
ì8;9
:
Ê;=<
Ù(>
:5?'Ñ
¥«¢ce7ÎKÏÐ'
}
Î Ñ
,²+ö ·"¥
Õ;ÖÎ%@
& é
WiÎKÏÐ
' } Î@Ñ
Ö ² Ö ª,«
@?FB
,±.¢\èAGE Ð'Ñ
Fâ"5
Ù
5=
B
7
5 CEDGF ] XZY\[ AI
g
îï e~
W Ê
%ËÌ
Ã,l,Ee¢H
Ç
eÁÂÃ
AI(ÄI montAI) Java %E¢>G~p7
! Ù » Ô J
÷
R&W;
K®
7H
Ç
eÁÂRÃ
AI(ÄI randomAI) è®>i~7
g
îï >
~2
montAIL ñ randomAIÙNM
}O
<
}QP
.ö0R
A %$*
5.1 SUT6V ¼Á Â©Ä Å ÇÆÈÔɼ,WYX
montAI
EZ¢&Z5
Ê
FËoÌ
Ã%l
Ù
0[=®$
1.áâ Ù éã
Ù
¼½.ë
2.{¼½±®¢
j"Óµ
Ù\
'^]
_`
F² öa
\
']
_`
¥b'Wáâ
Ù
éãc ?uWÔ
K®
H.²T«,¢±
¯
éã Ê
c
W!
Ù
³´.ce·¥
(e·
Ù
¥dW
\
'^]
_`e
ÿ?(³gf!
Ù
¼½
Ù
i¥he(
3.¼½ Ù&i
±-èä
Ù å Z
÷ù
e7
5.2 ÁÃÂKÄÆÅ@ÇÆÈ Ékjlnmoqpr È AI
g0s bW
montAI
&Z¢!
ÙÜÝ
.monNt7
montAIÙiu ¥%t0v O class mont t2 class montAI0b'W 1%$ 2 Ù&wMx P 5 t2 void bestmove(ConsoleBoard board) wMx P b Ê Ë©ÌG Ãl,¶=yzZ ±{A|ëÔìt
wM{x
Pa
t » µ
board Ù{w=M{x P EZo¢áRâ Ù õ ãN}N~z¾?^He
Ó Ô
Uÿ òeWH
ÓzÔ
,±(
vertualGame()wM&x
Pg
±é
\
'^]
_`
µ²ZWuÍ; i
Ù2
9õt2
Ù2 Ù
±è
å
Z
Ù2 0
.)µ
dedicate7gW Board v
O Ù bestmove() %EZ¢Ht7 int vertualGame(ConsoleBoard board nB,Point montPoint) wNMx
P
b(H,-«òW
¯
éTÊ
¹tÎÔÏÐ='iÎ Ñ .² ö
wM&x P
t7
0
P
F>~WÔ
K®
'c
AI(randomAI v
O
)
E ®¢
¯
é Ê
e
Ù
.Ò µÓ² öa
private int trialN =
\
'^]
_`
µ Ù
)*.² öa
1 montAI772g
wMx
P Å û
void bestmove(ConsoleBoard board) ±0Agiëiì int vertualGame(ConsoleBoard board nB,Point montPoint) ÎÔÏÐ='iÎ Ñ
6 E
Ê
Ë@Ì;¡
l|¢ EÆg£z¤
AI Ù
¥
»|Jz¦=,t{§W
\
']
_|`
Ó&¨6
500 Ó¾¥Ôg montAI(500) ¥
*K©0ª«
£¤
AI(¬ I randomAI) ¥ Ù ±gW L=®(¯ montAI(500) ¥ \ ']
N_`
¨
100Ó& montAI(100) ¥ Ù ±*°±²± 100Ó*³
«
²´µ
2,µ 3¶i²0·*¸¹*
2 AIº¼»*a½h¾2¿ÁÀ (ÂÃļŠ100Ä )
Æ Ç*
Æ
0ÈzÉ Ç*ÈÉ
montAI(500) randomAI 83 17
randomAI montAI(500) 14 86
3 AIº¼»*a½h¾2¿ÁÀ (ÂÃļŠ100Ä )
Æ Ç*
Æ
0ÈzÉ Ç*ÈÉ
montAI(500) montAI(100) 73 27
montAI(100) montAI(500) 21 79
µ
2 ®ÊË
Æ 0ÇggÌ
montAI(500)Í 8άÏÐ
È*fFÿztÑ&Ò
Í
¹2±Nt2µ
3 ®{ÊeË\
'^]&Ó _`
ÐÔ
¨
ÍÕ
d(Z&Ö×
Ë
Ègf
ÍØ
+¼ÙtÑ&Ò
Í
¹±Nt70Ú0Û0Ü Ý0ÞYß2àáâã&äå{ Áæ
AIb&ç âK©&è7é
8ά&Ï&Ð L¡ÊËíÁî{Ðïa Íò2ó
f
8Î ÒÁZ÷ Ð b Ë*ø ß ì0ùZ=Ò2b(úûgÙgü·*¸ý t ô
7 ÿþ
ÚÛgÜý ázâÁã&äå{ æ êh¢ ß2à £0¤
AI ê ÝgÞ¡ßàô ÚÛgÜý ÝgÞ¡ßà0 ç © randomAIè
é¡ß ìÈ
8Î¬Ï Ò íîzÐzï è2ðNñ ÑÒ ÍNòó àô{ßß randomAIö=è 8Î ý ! #"
ü
AI Ò$úû*³ Ë Ú
0
ç ©
&%('
Ð$)*Í
++,
Ò.-!/g±
7ô
0 Ç
Ð21 3 Ò ß
ì!
Ë
5476
Ó8:9 ¨ê!;´Ò=<>
ßà
AIý
é
:?A@
B
ý
ázâÁã&äå{ æ
ÐAC
DêE
¦
ñFB
ÍHGJI5K
±
7ô54L6
Ó8:9 ¨êM<>
ñ#B
ý¶NOP
ÍHQ*Õ è Ù
B
ÍHRS
?Á±
$T
Ë(UVW
è
®{Ê
XY
ê
ØZ!W
?2@
Ë
[4M6
Ó8\9
Ô
¨,ê$<>
ß
ì];¶NO!P
Í
K
Ù&ü
® ÷ è*ñF
ÑÒ;
G]I]K
±
ô
à Ë AIÐ
é 4_^*å
ê`Faìb!c
© Ò ß ì
Ð$d[e
?*êfNû
Ñ&Ò+;
1+3Ð 1
«
ý, 2ô
ÚÛgÜ iê Ý0Þñ*è , à
ÊËHjí
ß ìkF?0´ à
jíÐ2lmn
Æo è
Õp!qHrs
è Ù Ê ßàôtuv ê
q a ßà Ñ&Ò
ÐHq&w¯(Ë+xN¯7Õpyz
è${ Ç5(ýÚ0ÛgÜ
Ð
t7|}¡ß ì~ ±F ß2à ÑÒ
Ð2{ÐA É&êÑ
Ð$
ê
Ê ì
z®{Ê
ß
ÏI ñ*ô
8
1) Ï#! ,
á=â2ãäåJ2æ
ê$Nü
à&
ç ©
,0Õ
Y
2014 ¡ Û0Ü
¢
i
,(2015) http://www.info.kindai.ac.jp/ takasi-i/thesis/201411−1−037−0017S Uenothesis.pdf 2) Seal Software:£=¤ c¥ Ð Ó
姦
£7¨
©
,
© (2007).
3) ª§«$¬n :
F®
£=¤
c¥
çF¯
â&°±
(2011) http://uguisu.skr.jp/othello/
4) ² Ú ³´ ,http://www.othello.gr.jp/biginner/s01.html,$°± ,îzµ ,2002
5) Õ¶· ,!!! ç © ÐH¸¹§ºA»Ð %H' è« ü0ì ,Û&Ü ¢ bc © (GI),Vol.2003-GI-011,pp.15-20,
XY
¼ ,(2004). http://id.nii.ac.jp/1001/00058554/
6) ½¾¿+À , Á kH ,ÃÄÅ :Æ
â Ç+È
c!É(Ê#Ë
-
ázâÁãäåæ
Ð
YÌ
Ò ¶Í
-,ÌÎ ò$Ï (2012)
7) Janos Wagner and Istvan Virag Solving renju,ICGA Joumal Vol.24,No.1,pp.30- 35,(2001),http://www.sze.hu/ gtakacs/downlord/wagnervirag 2001.pdf
8) Jonathan Schaeffer, Neil Burch, Yngvi Bjorsson, Akihiro Kishimoto, Martin Muller, Robert Lake, Poul Lu, and Steve Suphen, Checkers is sloved, Science Vol.317,No.5844, pp.1518-1522,(2007).
9) Joel Feinstein, Amenor Wins World 6 Ð 6 Chanpionship!, Forty billionnoted under the tree (July 1993),pp.6-8,British Othello Federation‘s newsletter,(1993).
10) «ÑÒÓ ,[
×0÷MÔ Õ ß!Ö ÷#×
]Ð#Ø&ÙÚÛ ,
ÛgÜ
¢
b!c&Ü
(GI),Vol.2009-GI-22 No.3pp.1-8,
X Y
¼ ,(2009),http://id.nii.ac.jp/1001/00062415
11) Richard Delrme,Othello programing,(2012),http://abulmo.perso.neuf.fr/index.htm 12) Gunnar Andersson,Wzebra,(2006),http://rabagast.se/othello/
13) ݧ«Þß ,àHÚ /
Ê
F
Ñá
Í&â
È
ÐÆ(ã åää
, ²=æ iç (2003).
14) è:ªé«ê]ë , ì5í[î]ï , Ø:ð=Õ[ñ , ò
å\ó
Æ Ó
:Fõô+ö
Ò
SIMD ÷5ø
èù§Ná6â&ã,ä{åúû:ü:ý
ê ü
à§\
ÐþJÿ , ÛÜ J¢ b]cÜ J (GI),Vol.2009-GI-22,No.7,pp.1-8,
XY
J¼ (2009), http://id.nii.ac.jp/1001/00062419
15) ]Áë ,
ß ~
Javab!c&Ü
Ó ]4Hô
9
,
© (2002).
16) Eric C.D. van der Welf,H.Jaap van den Herik,and Jos W.H.M.Uiterwilk,Solving Go on Small Boards, ICGA Journal,Vol.26,No.2,pp.92-107(2003).
17) T.Ishii,MasterReversi,
Ó £ Ò Ð
é
http://homepage2.nifty.com/tishii/mr/gameresult.html,2007.
18) Michael Buro,Logistello,https://skatgame.net/mburo/log.html,1997
19) 5« ,
Fè
q a áâÁãäåJÁæJ]476
Ð
D
,Ø
*Õ
Þ
25
Ì
,(2014), http://www.kochi-tech.ac.jp/library/ron/2013/2013info/1140296.pdf
A
ÚÛgÜý
ÝgÞ¡ßà
Java
ç#Ü"!(c#ê%$k
è%&ñô
import java . util .*;
public class GameState extends Observabl e {
int data [][];
int turn ; int player ; int black ; int white ;
public GameState (){
data = new int [8][8];
data [3][3] = 1;
data [3][4] = -1;
data [4][3] = -1;
data [4][4] = 1;
turn = 0;
player = 1;
black = 2;
white = 2;
}
public boolean put ( int x , int y ){')(+*-,/.)021/35476)*5879/:-;=<
//
if ( data [ x ][ y ] != 0){
return false ; }>@?+A)B2()CD;E<F35476)*5879/:D;E<
//
if ( reverse (x ,y , true )== false ){
return false ; },/G59H
//
data [ x ][ y ] = player ; player *= -1;
turn ++;
countDisc ();
setChange d ();
n o t i f y O b s e r v e r s ();
return true ; }
public boolean reverse ( int x , int y , boolean doReverse ){
int dir [][] = {
{ -1 , -1} , {0 , -1} , {1 , -1} , { -1 , 0} , {1 , 0} , { -1 , 1} , {0 , 1} , {1 , 1}
};
boolean reversed = false ;
for ( int i =0; i <8; i ++){I+JFK2B //
int x0 = x + dir [ i ][0];
int y0 = y + dir [ i ][1];
if ( isOut ( x0 , y0 ) == true ){
continue ; }
int nextState = data [ x0 ][ y0 ];
if ( nextState == player ){
System . out . println (" Next state is player : " + x0 +" ,"+ y0 );
continue ;
} else if ( nextState == 0){
System . out . println (" Next state is null : " + x0 +" ,"+ y0 );
continue ; } else {
System . out . println (" Next state is enemy : " + x0 +" ,"+ y0 );
}I+J7IFLEMONEP7(RQ)SUTWVRXUYOZ/JR[/.)0D\/]^>@?+A)B
//
int j = 2;
while ( true ){
int x1 = x + ( dir [ i ][0]* j );
int y1 = y + ( dir [ i ][1]* j );
if ( isOut ( x1 , y1 ) == true ){
break ; }Y_ZFJR,/.)0=`Oa=MbXc>@?FA)B
//
if ( data [ x1 ][ y1 ]== player ){
System . out . println (" Player cell !: " + x1 +" ,"+ y1 );
if ( doReverse ){
for ( int k =1; k < j ; k ++){
int x2 = x + ( dir [ i ][0]* k );
int y2 = y + ( dir [ i ][1]* k );
data [ x2 ][ y2 ] *= -1;
System . out . println (" reverse : " + x2 +" ,"+ y2 );
} }
reversed = true ; break ;
}d/e7.)0E`OaMbXFf=g
//
if ( data [ x1 ][ y1 ]==0){
break ; }
j ++;
} }
return reversed ; }
public boolean canReverse ( int x , int y ){
return reverse (x , y , false );
}
public boolean isOut ( int x , int y ){
if (x <0 || y <0 || x >=8 || y >=8){
return true ; }
return false ; }
public boolean checkPass (){h)iDA5j)A+kRJ7l)m=n5*_opTWVRX>@?+A)B5(+C215L5q^r)s-t
//
for ( int y =0; y <8; y ++){
for ( int x =0; x <8; x ++){')(+*-,/.)021/35476287q^r)s-tTu;<
//
if ( data [ x ][ y ] != 0){
continue ;
}>W?+A)B5()C)1wvxTWaFyE3RCDXFzE*_{|TWV
//GR}+' false
if ( canReverse ( x , y ) == true ){
return false ;
}
} }
return true ; }
public void countDisc (){
black = 0;
white = 0;
for ( int y =0; y <8; y ++){
for ( int x =0; x <8; x ++){
if ( data [ x ][ y ] == 1){
black ++;
} else if ( data [ x ][ y ] == -1){
white ++;
} }
} }
}
import java . util .*;
public class randomAI {
int color ; // BLACK or WHITE
public randomAI (){
color = -1;
}
int [] decide ( GameState state ){
ArrayList < int [] > array = new ArrayList < int [] >();~F2J2dFK2B5G59F:215L5q^r2sDt
//
for ( int y =0; y <8; y ++){
for ( int x =0; x <8; x ++){')(+*-,/.)021/3RC28RFB
//
if ( state . data [ x ][ y ] != 0)
continue ;9F:512K)B7J=3DCDX+F3/TWV77
//
if ( state . canReverse ( x , y ) == true ){
int pos [] = {x , y };
array . add ( pos );
}
} } +R77)
//
if ( array . size () <= 0){
int pos [] = { -1 , -1};
return pos ; }
Random rnd = new Random ();
int index = rnd . nextInt ( array . size ());
return array . get ( index );
} }
import java . util .*;E-F7/O
//
public class montAI extends Observabl e { class Move extends Observable {
public int eval =0;
public bestmove ()
super (0 ,0);
}
public bestmove ( int x , int y int e ) {
super (x , y );
eval = e ; }
};
class r a n d o m A I P l a y e r implements Player {
private AI randomAi = null ;
public r a n d o m A I P l a y e r () {
randomAi = new randomAI ();
}
public void onTurn ( C o n s o l e B o a r d board ) throws G a m e o v e r E x c e p t i o n
{
randomAi . bestmove ( board );
if ( board . isGameover ()) throws new G a m e o v e r E x c e p t i o n ();
} };O)+
//
private int trialN =100;~FR22+
//
public void bestmove ( C o n s o l e B o a r d board ) {
BookManage r book = new BookManage r ();
Vector < point > movables = new book . find ( board );
if ( movables . Empty ()) {FB2G5'+1
//
board . pass ();
return ; }
if ( movables . size ()=1) {FV)1D)F.R ¡O);^Mb¢)£F8D¤+¥2;E<
//
board . move (( Point ) movables . get (0));
return ;
}=-FR/7.R¦5¤2o2§¨3_'+1D 2©3_ª+A|«uj+A+k5G5¬/:DU®¯Xp +R7
//°5±)(D²2³P7(R/´-µ=1 AI
private int vertualGa m e ( C o n s o l e B o a r d nB , Point montPoint )
{
C o n s o l e B o a r d nBoard = new C o n s o l e B o a r d ();
nBoard = nB ;
System . out . println ();
nBoard . print ();¶5·)¸
//
int evaluation =0;
Player [] player new Player [2];¹R´/M_JFk5A/DL7ºF1
//
int c u r r e n t _ p l a y e r ;
int fast_trun = nBoard . g e t C u r r e n t C o l o r ();
fast_turn = 1;
System . out . println[FJD»)¼ (""+ fast_turn );
player [0] = n e w r a n d o m P l a y e r½ ();
player [1] = n e w r a n d o m P l a y e re ();
if ( fast_trun =1) {
c u r r e n t _ p l a y e r =0;
} else {
c u r r e n t _ p l a y e r =1;
}²5¾EJ7 F¿5J2À)Á7F(7¬/:-¨`OaDÂ2ÃGRFÄ2Å/Æ)Ç= FR7
//
nBoard . move ( montPoint );^ODÈFA7É7Ê
//
c u r r e n t _ p l a y e r = ++ c u r r e n t _ p l a y e r 2 ;f=g)P7(5)A)
//
while ( turn ) {
try {
player [ c u r r e n t _ p l a y e r ]. onTurn ( nBoard );
}
catch ( doExcepti o n n ) {
do {
System . out . println (" do ");
nBoard . do (); nBoard . do ();
} while ( nBoard . g e t M o v a b l e s P o s (). isEmpty ());
contenue ; }
catch ( E x i t E x c e p t i o n n ) {
n . p r i n t S t a c k T r a c e ();
}
catch ( B a m e O v e r E x c e p t i o n n ) {
System . out . printlnf=g ("");
System . out . print ( nBoard . countDisc ( Disc . BLACK ));
System . out . print ( nBoard . countDisc ( Disc . WHITE ));
if ( fast_turn =1){
evalution = nBoard . countDisc ( Disc . WHITE ) nBoard . countDisc ( Disc . BLACK );
}
else {
evalution = nBoard . countDisc ( Disc . BLACK ) nBoard . countDisc ( Disc . WHITE );
}
break ; }
return evalution ; }