読者です 読者をやめる 読者になる 読者になる

詰碁における石がどれだけ生きているかの指標の付け方の提案 ~~前編~~

 詰碁において、万年コウと一手ヨセコウはどちらがよいのか、二段コウは一手ヨセコウとどちらがよいのかなど、結論として何が正しいのかはっきりしない場合があります。それらを解決するための方針を提案したいという記事です。実際にこの記事を利用するには詰碁がある程度解けることが前提になりますが、理屈を理解するだけなら初心者の方でも理解できると思います*1

はじめに

 これから話すのはあくまで詰碁における指標の付け方の例であって、例えその指標では一手ヨセコウが万年コウよりも死に近いと出ていたとしても、対局において本当に一手ヨセコウのほうが死にやすいということにはなりません。よって、実践的な話ではないのでこの記事を読んでも囲碁はあまり強くならないと思います。しかし、面白い考え方だと思うので理解して使ってくれる人、応用してくれる人がいると嬉しいです。
 また、ヨセの計算方法が知ってる人はその考え方と似ているので混乱してしまうかもしれません。しかし、ヨセの計算方法とは似ているものの実際はかなり違うので気を付けてください。
 これから、石がどれだけ生きているかの指標をこれから生き度と呼びます。

指標を付けるための仮定

  1. お互いは目標の石を殺す(or 生かす)ことが目標であり、その他のことは考慮しない。
  2. 自分にとって有利になる手がある場合はそのうち最も良い手を選ぶ。
  3. 自分にとって不利になる手は打たない。
  4. どちらの手番か決まっていないときは次に黒が打つ確率と白が打つ確率は等しいとする。
  5. コウ材は任意の局面において \frac{1}{2}の確率で存在する
  6. 目標の石が生きているとき生き度は1であり、死んでいるとき生き度は0とする。

 この仮定がこの記事の本質です。ここをいじると違う指標ができますし、ここを変えない限り生き度は一意に定まるはずです。
 一つ目はいいと思います。詰碁なので地の損得などは気にせず、目標の石を殺す(or 生かす)ことが目標です。二つ目の仮定はお互い最善手を放った時の結果が生き度になるということであり、生き度を有利な方向に傾ける手があるのに手抜くということはしないという意味です。三つ目の仮定は二つ目の仮定で既に言われていると解釈することもできますが、特にこのことが重要になる場面があるので書いておきました。四つ目の仮定は手番が決まっている状態における生き度を手番がわからない状態における生き度に拡張するために使うための仮定です。五つ目の仮定はコウを取り返すことは \frac{1}{2}の確率でできるということを言っていて、これが重要です。実際の対局ではコウ材が \frac{1}{2}で存在することなどありえませんし*2 \frac{1}{2}という数字も便宜的なもので特に意味はありませんがこれは仮定なので認めてください。もし自分なりにもっと妥当な指標を作りたいと思ったらこの五つ目の指標をうまく変えるといいと思います。六つ目も便宜的な仮定です。全く意味がないことですが、目標の石が生きているときの生き度を114514とかしても問題ないです*3

実際の生き度の計算方法

 初期状態を根にして、そこから黒が打った場合と白が打った場合の状態に辺を伸ばし有向木を書きます*4。後は上記のルールに乗っ取ってグラフの辺にその辺に推移する確率、頂点にその状態での生き度を埋めていき、計算するだけです。ここで重要なのは同じ状態の頂点がでてきたらその頂点での生き度は以前でてきた状態の頂点の生き度と同じだということであり、その頂点から子方向に辺を張る必要はないということです。このことによってグラフの頂点が無限に大きくなるということはなく、有限のサイズになります。グラフが完成したら、親の生き度は(子の生き度×その子に向かう辺の重み)の和で求まることを利用すると連立方程式を解くだけで生き度が求まります。
 ヨセの計算方法を知ってる人はこれを聞いただけでイメージがつかめると思いますが、そうじゃない人はよくわからないと思うので実際に簡単な例でやってみます。

f:id:gasin:20170223200526j:plain
 黒番のとき・・B1に打つのが最適で、そこに打つと生きるのでこの石の生き度は1です。
 白番のとき・・B1に打つのが最適で、そこに打つと死ぬのでこの石の生き度は0です。
 この状態のとき・・以下の図より、この石の生き度は \frac{1}{2}です。
f:id:gasin:20170223202424p:plain
 なお、右下に向かう矢印が黒石を打ったことに対応し、左下に向かう矢印が白石を打ったことに対応します。これはこれからのグラフにおいても同じです。数式をtexじゃなくてペイントで手書きしているのは味を出すためです、読みにくいだけだったらすいません。

f:id:gasin:20170223205714j:plain
 黒番のとき・・B1に打つのが最適で、そのとき生き度は1です。
 白番のとき・・以下の図のyに対応するので生き度は \frac{1}{3}です。
 この状態のとき・・先ほどと同様に黒が打った場合と白が打った場合を足して2で割ればよいので、生き度は \frac{1+\frac{1}{3}}{2} = \frac{2}{3}です。
f:id:gasin:20170223205734p:plain
x・・初期状態、y・・白がコウを抜いた直後、z・・黒がコウを抜いた直後


 長くなりそうなのでいったんここでやめます。
 後編では以下のような万年コウやヨセコウなど複雑な場合の生き度の計算の方法を示します。手順は上記の通りなので意欲のある人は自分でやってみてください。答えも最後に書いておきます。
f:id:gasin:20170223210751j:plainf:id:gasin:20170223210951j:plain
*5
 質問・意見などあればTwitterでもここのコメント欄でも自由にお願いします。

*1:優先順位は自明に超低いですが

*2:コウ材があるかどうかの確率なんて1か0しかありえませんよね

*3:ここでの指標は比較にしか用いないため

*4:勿論確率0の場合は辺を張らなくてよくて、省略します

*5:この状態での生き度は、それぞれ \frac{7}{12},  \frac{2}{3}です。なお、一問目においては死活対象の石が黒石、二問目においては白石となっていることに注意してください