html5-img
1 / 39

五目並べの実装

五目並べの実装. B4 グェン トアン ドゥク. 内容. 1. 目的 2. 五目並べのルール 3. Threat と Threat sequence 4. 戦略 5. 探索アルゴリズム 6. 評価関数 - Threat space search(Threat 空間検索) 7. 結果. 1. 目標. 今回の目標. 五目並べプレイヤーを作る 評価関数と alpha-beta 法を使う 特に五目並べのための探索技術である threat space search(threat 空間探索)を実装する

kuniko
Download Presentation

五目並べの実装

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 五目並べの実装 B4 グェン トアン ドゥク

  2. 内容 1. 目的 2. 五目並べのルール 3. ThreatとThreat sequence 4. 戦略 5. 探索アルゴリズム 6. 評価関数 - Threat space search(Threat空間検索) 7. 結果

  3. 1. 目標

  4. 今回の目標 • 五目並べプレイヤーを作る • 評価関数とalpha-beta法を使う • 特に五目並べのための探索技術であるthreat space search(threat空間探索)を実装する • 先に打つなら勝つ、そうでなければ、よく守れるプレイヤーを目指す

  5. 2.五目並べのルール

  6. 五目並べのルール • 15x15ボード上でBLACKとWHITEが升目に自分の色のマークを置く • BLACKは先に行く • 先に5つ連続な目を作れたら勝つ • ボードがいっぱいになっても勝つ人がいなければ、引き分ける

  7. 連珠のルール • 五目並べと似ているが、ボードのサイズは19x19 • 先に打つ方(BLACK)にはたくさん制限がある(Overlineしてはならないなど) • ボードのサイズが大きければ大きいほど先に打つ手(BLACK)は利益があるからである。

  8. 今回実装している五目 • ルールは五目並べのルールと同じ • しかし、ボードのサイズが19x19

  9. 3. ThreatとThreat sequence

  10. Threat • Threat: -相手がすぐ対応しなければならない列 -例: BLACKのマークが3つ連続した列 (WHITEが対応しないと2手後負ける)

  11. Threat の種類 • Threatはそれぞれに名前がついている • 3つ連続した目: three • 3つ連続しない目: break three • 4つ連続した目: four • 5つ連続した目: five

  12. Threatの例

  13. Threat sequence • Threatを連続的に生成する -第一のthreatに相手が対応しなければならないので、引き続いて自分がその次の手でthreatを生成する -相手はどう対応するかにはまず考えない。自分が勝手に打てると仮定する。

  14. Winning Threat sequence • 勝つまで連続したthreat sequence • 例: G H I J K L M 13 12 11 10 9 8 Xのsequence: J11, J9, J10, M10/J8/J12 O O X X X

  15. Potential Winning Threat Sequence • Winning threat sequenceになる可能なthreat sequenceはPotential Winning threat sequence(PWTS)と呼ぶ • そのsequenceに対応するうちに、相手はWinning threat sequenceを生成する場合があるので、PWTSはいつもWTSになるとは限らない • PWTSには、相手はどう対応するかを考えないからである。

  16. WTSにならないPWTSの例 I12, (I9), H12, (F12), H15 (X: I12, H12, H15) E F G H I 15 14 13 12 11 10 9 O X X O

  17. 4. 戦略

  18. 人間の戦略 1. ボードのある部分を見て、Winning threat sequence(WTS)を探す 2.まず、自分の打った手と次の自分の手だけ見る。相手はどう対応するかはまず考えない 3. もし、WTSが見つけたら、相手がどう対応するかを考える

  19. コンピュータの戦略 • 状態空間探索

  20. 5. 探索アルゴリズム

  21. 状態空間探索 • 手を生成しながら、新しい状態を作る -最後まで(10手先)の状態を全部見えない 調べる状態数が大きい過ぎる - 適当な評価関数で、数手先見る • 同じ状態が違う手の順番であり得る(木ではなく、グラフ)ので、transposition tableを使う • α-β枝刈りで効率を上げる.

  22. Threat空間探索 • 評価値を決めるために、threat空間探索をする。 • それにより、winning threat sequenceが見つかれる。

  23. 6.評価関数

  24. 評価関数の重要性 • 完全にゲームの最後まで先に見えないので、評価関数で手を選択しなければならない。 • 評価関数が良ければ良いほど、強い。 • 評価関数が悪ければ、容易に負ける。

  25. 五目並べでの評価関数 • Threat空間探索 • 局面にもとづく評価値 • 評価値は、 - Threat空間探索によって決める - Threat空間探索によって決められない場合は局面の列の形により決める

  26. Threat空間探索 • WTS(winning threat sequence)はthreatsを含んでいる • そこで、全てのthreatsの空間に注目する。Threatspace(threat空間)と呼ぶ • Threat空間での探索をすると、WTSが見つけられる。 • Threatの数はあまり多くないので、調べる状態はあまり多くない。コストが小さい。

  27. Threatの要素の定義 • Gain square: threatの中の攻める人の打つ位置(square) • Cost square: threatの中の守る人の打つ位置 • Rest square: threatを作る可能のある位置(gain squareを除く)

  28. Threatの従属性 • Threat A がthreat Bに従属される(A is dependent on B)とは、Aのあるrest squareがBのgain squareである。 • Threatの従属木(dependency tree): - ノードがthreat - rootノード以外のノードは全て、親ノードにthreat従属される

  29. 衝突する従属木 • 従属木PとQが衝突するとは、 Pにあるthreat AとQのあるthreat Bの間で、 - Aのgain squareがBのcost square または、 - Bのgain squareがAのcost square または、 - Aのcost squareがBのcost square である • 例

  30. 衝突するThreatの性質 • 2つの衝突するthreatは同時に実現できない。 • つまり、dependency treeには、2つの衝突するthreatは存在しない。 • 探索するときに、これを利用するとノード数を減らすことができる。 • しかし、従属するthreatを見つけるために、コストがかかる。

  31. 衝突するThreatの例 • E15とD15が衝突している

  32. Threat空間探索の規則 • Threat Aがthreat Bに独立(従属ではない)であれば、AはBの探索木に現れない。 • Threat空間探索木には、threatをgain squareと方向、種類で表現する。 • その探索木には、攻める人の手だけ現れる(調べるノード数が減る)。PWTSが見つかったら、それがWTSかどうかをチェックする

  33. Threat空間探索の例

  34. Threatの発見 • 打つたびにthreatが生成するかどうかを見る • 生成したら、新しいthreatを作り、threat listに保存 • 既に存在するthreatのtypeが打つ手により変わることがあるので。変わったthreatをthreat listに追加 • それ以外(自分の)threatはそのままthreat list に追加 • 相手のthreatはその打った手によって、killされるかどうかをチェック

  35. PWTSの探索 Threat-sequence-list sq = empty; Pwts-search( board, threat, sequence ) { if( wts-found ) return; if( threat.type == FIVE ){sq.add( sequence ); return;} for each Position in threat.gain_squares { do_move(board, Position); sequence.add( Position ); Pwts-search( board, threat.child, sequence ); restore_board(); sequence.remove( Position ); } }

  36. 評価関数 Intevaluate(board, man-threat-list, machine-threat-list, turn){ If( turn == machine ){ for each threat in machine-threat-list{ sq = Pwts-search( board, threat ); if( sq is WTS ) { return INFINITY; } } } else { //find WTS for man if( sq is WTS ) return MINUS_INFINITY; } returnevaluate-board-state( board, man-threat-list, machine-threat-list, turn ); }

  37. 7. 結果

  38. 実験結果 • 五目並べプレイヤーを作った。 • Threat space searchを行ったが、threatを発見するのがあまりよくなくて、全てのthreat-sequenceを見つけなかった。 • 時々、明らかに勝つ手があるのに打ったない(そのthreatが発見できないため)

More Related