THE じゃんけん

THE じゃんけん
*メンバー*
酒井 史彦(リーダー、アルゴリズム係)
井沢 賢(広報、プレイヤー)
天野 峻介(プログラマー)
謙 優希(パワーポイント係)
小林 勇介(アルゴリズム係)
目次
• コンピューターにとっての勝ち負け
• 戦略の強化1
• 戦略の強化2
• 戦略の強化3
• 問題点
• 最後に
Computerにとっての勝ち負け
Man
グー 0
チョキ 1
パー 2
Computer
グー 0
チョキ 1
パー 2
○
×
○
×
○
×
グー、チョキ、パーをそれぞれ0,1,2で表し、コン
ピュータと人間の手を作ると上の表のようになる
戦略の強化1
• コンピュータと人間が前の手で何を出したか、
そしてどちらが勝ったかのデータを蓄積させ、
どの局面で何を出すのが最も勝つ確率が高
いかを選ぶアルゴリズムをつくりました。
戦略の強化1の戦略テーブル
man
グー
M
チョキ
パー
グー
2
1
4
チョキ
5
2
1
パー
1
3
1
人間が1つ前に出した手をM,いま出した手をmanとす
るときに上の表のような戦略テーブルの
table[M][man]の内容を+1とする。これをじゃんけ
んをする度に行なっていく。例えば上の表のような戦
略テーブルが作られたとすると…
戦略の強化1
• コンピュータはこの表を見ながら、相手は
グーの後にパー、チョキのあとにグー、パー
の後にチョキを出しやすいことがわかる。した
がって相手の前の手がグーなら、今回パーを
出す可能性が高いのだから、コンピュータは
チョキを出せば勝てる可能性が高いことにな
る。
–ただこれではあま
りにも単純なので、
次のような三次元
の戦略テーブルを
考えました。
戦略の強化2の戦略テーブル
•
•
一つ前のコンピュータの手をC、人間の手をM、今出したコンピュータの手を
computerとする。
たとえば、一つ前のコンピュータの手がグー、人間の手がパーで、今コン
ピュータがパーを出して勝った場合table[グー][パー][パー]の内容を+1、
負けた場合は-1、引き分けの場合はパーに勝てるチョキの位置を
table[グー][パー][チョキ]の内容を+1する。
戦略の強化2
• これを繰り返すことで一つ前の局面C,Mに対
し、コンピュータが今回出した手で勝ったか負
けたかのデータが蓄積されていく。従って、コ
ンピュータは1つ前の局面C,Mに対し、最も
勝つ確率の高い手をテーブルから選べばよ
い。
問題点
• 戦略1,2の場合コンピュータは一定のアルゴ
リズムの範囲でしか出せないので、人間がそ
のアルゴリズムに気づいてしまうとコンピュー
タの勝率は下がってしまう。
戦略の強化3
そこでコンピュータのアルゴリズムを複雑にす
れば、人間が瞬時にコンピュータのアルゴリ
ズムを推測できなくなるだろうと考え、強化1,
2を参考にしてコンピュータの二手前と人間
の二手前までを考慮したプログラムを作ろう
としました。
考察
ここで戦略3の問題点として初期段階では統計情報
が不足していることがあげられる。その解決策とし
て、今までに出現していない組み合わせの時は戦
略の強化2を適用し、強化2でも出現していない組
み合わせの時は、強化1を適用すると、コンピュータ
の勝率はあがると考えました。
• 戦略の強化1,2は河西朝雄著 技術評論社
「javaによるはじめてのアルゴリズム入門」を
参考にしました。それを基に強化3のソースプ
ログラムをつくりました。
• 強化1、2をコンパイルして実行することがで
きませんでした‥強化3も強化1,2を参考に
していたため実行できていません。そこで強
化2と同じアルゴリズムを持つプログラムをサ
イトから見つけたので、対戦してみました。
強化2との対戦してみました
• コンピュータのアルゴリズムを知っている人
小林 60戦42勝(70%)
• コンピュータのアルゴリズムを知らない人
Aさん 100戦43勝(43%)
Bさん 100戦52勝(52%)