プログラミング
探索
連珠
五目並べ
ゲーム木

連珠(五目並べ)プログラムのための覚書

More than 1 year has passed since last update.

概要

 前に書いた『連珠(五目並べ)入門 for プログラマ』にて、ルールを実装する観点から見た連珠(五目並べ)を紹介しました。簡単そうな見た目に反し、結構複雑だと思われた方も多いのではないでしょうか。
 実際連珠はややこしいです。単純に三や四をヒク(意味は後述)よりも、ミセ手・フクミ手・ノリ手・ハメ手を駆使した方が遥かにエキサイティングになります。しかしそこまで知恵を回さずにプレイすると、ただ四三完成を目指す子供遊びになってしまいます。
 そこで、少しでもエキサイティングな対局が出来るように何をするべきか……すなわち実装のコツについてまとめてみました。

ルール実装編

 当たり前のことですが、連珠にはルールが存在します。つまり、黒・白どちらも「五連を目指す(黒は禁手を避ける)」ために石を打つ必要があります。前回の記事では「五連判定→長連判定→直線上の四々判定→三と四を数えて三々or四々判定」とするのが効率よく処理できると書きましたが、実用上は次のようなフローになると思われます。

  • 既に五連・長連が完成していたり、「もうこれ以上指しても引き分けしかない」かどうかをチェックする
  • 自分が五連を揃えられる場合はそのまま揃えて勝つ。ただし黒には長連禁があるので注意
  • 相手が活四を打ったなら即座に防ぐ。そこが禁点だったなら投了せよ
  • 通常の手を探索する。当然、禁手は避ける必要がある

 五や四だと指す手が非常に限られてきますので、先に判定しておくと他が楽になります。実際、「三は考えてから止めよ、四は止めてから考えよ」といった格言があるぐらいですので、この辺りで時間を掛けるのは無駄です。また、先に五と四を判定したことで、白の長連以外は即勝ちが無くなり、今後の布石が考えやすくなるといったメリットもあります。

定石編

 囲碁や将棋などと同じく、連珠にも定石が存在します。ただ、前回の記事でも説明したように、データをかき集めるのは大変ですので、拙作「Shioi」では、伊達五目収録の定石を拝借いたしました。なお、伊達五目の定石データの仕様については作者によって公開されています。

四追い勝ち編

 「四追い勝ち」とは、活四の連続で五連を目指す戦術のことです。黒でも白でも使える連珠の基本戦術ですので、将棋における詰将棋ルーチン・囲碁における詰め碁ルーチン以上に重要だと言えます。そもそも、後述するミセ手・フクミ手の説明には四追い勝ちの説明が欠かせませんので、ルール部分を実装した後は真っ先に取り組むべき箇所でしょう。
 意外にも、ルーチン自体はそこまで難しくありません。これは「自分の活四に対し、敵が防ぐ手は一つしかない」からです。「自分が活四を打った直後に敵が五連以上にする」ことは事前チェックで弾けますので、「敵の防手で敵に活四・棒四(四ノリ手)が生じる」可能性に気をつければ容易に実装できるでしょう。また、探索範囲が狭いので、長手数を読むのも簡単です。なお、黒はたとえ四追い中でも四々含めた禁手を打つことは禁じられていますので、その点も注意が必要です。

追い詰め編

 「追い詰め」とは、追い手の連続で五連を目指す戦術のことです。ここで言う「追い手」は4種類(棒四と活四を分けると5種類)存在します。

名称 説明 備考
同種の石を1個加えると達四になるもの 四には勝てないので注意
四(棒四) 4個の石の連で、同種の石を1個加えると五連になる点が2カ所あるもの 敵に四が生じてないかぎり勝ち確
四(活四) 同種の石を1個加えると五連になるもの 棒四以外には勝つので、ノリ手防ぎなどで活躍する
ミセ手 敵が放置すると、次に四三を作ることができる手 1回も四追いしないフクミ手とも言える
フクミ手 敵が放置すると、次に四追い勝ちできる手 防手が10箇所以上生じることも珍しくない

 ここでミセ手・フクミ手は四追い勝ちルーチンで判定できます(前者は「四三」だけ考慮すると違うが)。ただ、防手が1つに限らないどころか、「自分の(四以外の)追い手に対し、一旦四ノビしてこちらに防がせることで攻めを途切れさせる」といった戦術も取れるのが恐ろしいところです。具体的には、「四三になる場所を四々にしてしまう」「ノリ手(後述)で防いでしまう」などですね。こうなると攻めが失敗してしまいますので、探索が四追い勝ちより遥かに高コストなことは明らかでしょう。裏を返せば、それだけ連珠が黒も白も綱渡りなのです。

通常探索編

 こちらに四追い勝ちも追い詰めも存在しない場合、それ以外の手を打つしかありません。もちろん明後日の場所に打っていては勝利に繋がりませんが、この布石を思考することは非常に難しいです
 中盤が難しいのは将棋も囲碁も同じですが、それらと違って一歩ミスれば即死しかねないため、どう評価していくべきなのかについて様々な研究がされています。モンテカルロ木探索を用いて形勢を推定するソフトもありますが最強とは言えませんしね。実際、最強レベルの連珠ソフトでも人間に遠く及ばないようです