捕獲先読み講座  レベル1  ダメ3捕獲の世界  (2000-09-06)
対局囲碁ソフトに用いられる捕獲探索ルーチンについて解説します。
トップに戻る  捕獲先読み講座に戻る  前へ  次へ

  【シチョウとの違い】

シチョウで取ることを考える場合は対象連のダメが2つでした。その読みは

  ┼┼┼┼┼┼┼
  ┼┼┼7┼┼┼  ダメ2−ダメ1−ダメ2−ダメ1−…
  ┼┼3EG9┼  
  ┼●AC5┼┼  
  ┼●○1┼┼┼  
  ┼┼●┼┼┼┼  
  ┼┼┼┼┼┼┼  

  とユルミのないものでした。

ところがダメ3以上の捕獲ということになりますと、逃げる側に余裕を許した取り
方になります。おなじ「取る」ということでも歴然たる差があります。

  ┼┼┼┼┼┼┼
  ┼┼┼┼┼┼┼  
  ┼┼┼┼○┼┼  
  ┼●┼┼┼┼┼  
  ┼●○┼┼┼┼  
  ┼┼●●┼┼┼  
  ┼┼┼┼┼┼┼  

  追う候補は必ずしもダメを減らす手とは限りませんし、
  逃げる候補もダメを増やす手とは限りません。

  また、うまく追い、うまく逃げる読みでなければ延々と読むことがあるのです。
  これについてはここではおいておきます。

  さらに、シチョウと違って解を保証する読みは難しく、実戦で妥当な回答を返
  すものを目標とするべきだと思われます。

後、
レベルが高くなるまで劫は扱わないことにします。天下利かずとして処理します。

ダメ3以上捕獲の終了条件はシチョウの場合と似たようなことになります。
ダメ4以上にすることが出来ればダメ3捕獲では取られないとなりますが、
逃げ切れる判断は他にもいろいろと考えられます。

  【拡張か併用か】

ダメ3以上捕獲ルーチンを作成したならシチョウルーチンは不用になるのではない
かと考えられますが、

読みにかかるコストを考えますと

   読みの消費時間 = (候補の処理時間 + 局面生成時間) * 局面数

ということが言えます。
そして、

   シチョウの候補の処理時間  <  ダメ3以上捕獲の候補の処理時間

となりますが、シチョウのほうが比較にならないくらい少ない時間で済みます。

そうしますと例えば、ダメ2の連を取る読みでしたら

  まず、シチョウで取れるかどうか調べてみます。
    取れるなら「取れる」と回答できます。
    取れないなら
      ダメ3以上捕獲で取れるかどうか調べれば良いことになります。

  最初からダメ3以上の連を取る読みではシチョウを呼ぶ必要はありませんね。

ダメ1の連が逃げられるかどうかという読みになりますとちょっと複雑になります。

  まず、シチョウで取られないかどうか調べてみます。
    取られてしまうなら「逃げられない」と回答できます。
    取られなくても
      ダメ3以上捕獲で取られないかどうかも調べる必要があります。

  最初からダメ2以上の連を逃げる読みではシチョウを呼ぶ必要はありません。

そして、ダメ4捕獲ならば

    シチョウ−ダメ3−ダメ4

ダメ5捕獲ならば

    シチョウ−ダメ3−ダメ4−ダメ5

と繰り返して読む方法が平均して最も高速に処理できるであろうと考えられます。
これは後のレベルでの話になりますが、深さを深くしながら繰り返して呼ぶ方法
が平均して少ない探索で済むことと似たようなことなのです。

ただし、横形探索で工夫する場合はまた違った方法になるのかもしれません。
ですが、いずれにせよ、まとめて面倒見ようとしたりすると返って遅くなるだけ
のような気がします。   

トップに戻る  捕獲先読み講座に戻る  前へ  次へ