「手談」のプログラミング手法

「手談」の着手判断は主として静的評価関数によっています。1994年以前のバージョンでは着手判断に「先読み」は含まれていませんでした。1995年に「先読み」の導入を試みましたが強くなったようには見えませんでした。その後若干は強くなってきたようにも見えますが、「先読み」には失望状態です。故に最近開発した「手段」には先読みは含まれていません。それでも、「先読み」があるものに比べて若干弱いかもしれませんが、他のプログラムに対しては先読みのあるものと同程度と思われます。

「手談」の強さは主として静的評価関数の厳密な計算によっています。そのポイントは「ブロック認識」と「ブロックの安全度推定」にあります(数学の群論と用語の区別をするために群ではなくブロックとう言葉を使っています)。

「ブロック認識
「手談」における「ブロック認識」は 陳克訓(Ken Chan) のアイデアと同様に、石の影響とそれを補う連結パターンによっています。

**石の影響
この影響関数は 陳克訓(KenChan) のアイデアとは異なって、一個の白石が与える影響は石の隣は4値、対角は3値、一間と桂馬は2値、それを超えた所は1値とします。黒石はマイナス値の影響があるとします。死石は符号を反転して影響するとします。半死の石や団子石はその値を減らします。

ある一点に対する石の影響は加算型ですが線形加算ではありません。例えば白と黒の石に隣接したあるいは対角点への影響は白石と黒石がいくつあろうが0(ゼロ)です。影響の値が1かー1の場合は、それが白あるいは黒の欠目である場合を除いて0(ゼロ)とします。

また影響の値が2以上の場合はまず白の勢力圏とみなし以下に示すように調整します。同様にー2以下ならばまず黒の勢力圏とみなしそれから同様に調整します。白あるいは黒の勢力圏の影響の値は6ないしー6とします。

影響の値はドットで表します。

調整は次のようなルールで行われます。
・隣接点が0ないし負なら3ドットを超えない。
・隣接点が1ないし2なら5ドットを超えない。
・黒の影響下にある場合も符号を反転して同様に評価する。
・1ないしー1ドットは白ないし黒の欠目を意味する。

**ブロックの形
互いに接している死んでいない白石、あるいは黒の死石ないし1ドットか3ドット以上の空点は白のブロックとみなします。また分離できない形で接している他の白石ブロックも一緒とみなします。黒のブロックも同様。

「ブロック危険度」
ブロックの危険度は数量化をすることができます。通常は中国では気、日本では目、英語圏ではポイントです。ポイントには色々な意味があるので日本流の目(もく)を使うことにします。ブロックの危険度は目数で表すことができます。

ブロック危険度の因子には:1.二目がない、2.自由度が少ないが挙げられます。また危険度を数量化して推定するにはブロックの大きさも考慮しなければなりません。従ってブロック危険度は二眼の有無、自由度、大きさの三つの引数から成り立ちますが具体的には経験的に試行錯誤的に決める必要があります。

**自由度
陳克訓(Ken Chan) は自由度をブロック囲いの隙間空間と説明しています。

ブロック自由度はそれを囲う手数で表すことが出来ます。この手数と自由度との関係は指数関数になります。すなわち囲う手数が一手増えれば、危険度は半減します。

しかしながらブロックを囲う手数を計算するのは簡単ではありません。そこで囲う手数に代わりうるブロックの自由度を考える必要があります。

「手談」では二つの方式が使われています。
第一段階:ブロックに隣接するあるいは対角にある空点の数
第二段階:ブロックからの一間なし桂馬にある空点の数

第二段階の方式の方が視野が広くて良いように考えられます。しかし碁のプログラミングではあいまいな推定の方がそうでないものより良くなることがあるので、ほとんどの場合第一段階の方式が良い結果をもたらすようです。より新しい「手談」のバージョンでは評価をより厳密にしているので第二段階の一層の精密な自由度(発展)が求められています。

第三段階の方式も考えましたが後に誤りのあることが判明しました。それを修正したものがもう一つのプログラムである「亦侶」(Goemate)の最新版に組み込まれています。

「パターンと効率」

「手談」の強さの第二は着手の効率計算にあります。緊急の手や良い手筋にはプラスの効率が与えられ愚形やつまらない手にはマイナスの効率が与えられます。効率がプラスなら1以上の値で、マイナスならば1以下の値で着手評価に掛け算をされます。効率は専らパターン認識で評価されます。しかし「手談」ではパターンデータベースを持たずに手順書だけで行っているので賢くはありません。またパターン認識を追加したり修正したりすることが難しく持っているパターンの数も少しです。

パターンの数の制限は決めていませんが領域は2間の範囲に限られています。