距離  (2001-02-17)
対局囲碁ソフトに用いられるルーチンについて解説します。
トップに戻る  その他講座(未整理)に戻る

距離とはなにか?

これは連結するまでに要する手の数のことです。

           3
         323
       32123  
     321●123  
       32123  
         323
           3

4近傍の経路で距離を算出します。
ここでは距離2を2路とも表現することにします。

ここでいうもっとも基本的な距離は連絡するための手数ではなく、あくまでも、
連結するための手数ということになります。
相手の石を取ることによって距離が2になることもあります。
相手から打たれても連絡できる形は距離を0にするなどの拡張も考えられます。
例えば、1間の隙間には経路がないなどの工夫も考えられます。
拡張された距離は、より高度な概念となりますが、思わぬ落とし穴も作ってしま
うこともあることは考慮すべきことです。

ここでは、基本的な距離を「距離」とし、拡張された距離と区別することにしま
す。対局囲碁ソフトを作り始めの段階では、距離地図を1つ作成して、それを候
補の参考にするといいかもしれません。

既に石が置かれている場所は距離0とし、10路くらいまで計算し、それ以上は
すべて10路とするのが妥当かもしれません。5路ぐらいでは小さすぎるし、1
5路以上とかはそこまで計算しても活用することはない気もします。

計算時間を削減する方法はリスト処理などをすることによってアルゴリズム上、
「高速」にできると考えられますが、盤を順にサーチする単純な方法もコードが
簡単な分、その速さも侮れません。要するに処理時間を短縮したいなら、組んで
みてどちらが速いか計測することです。


例えば、

  ABCDEFGHJ
01┏┯┯┯┯┯┯┯┓  
02┠┼┼┼┼┼┼┼┨  
03┠┼・●・┼・┼┨  
04┠┼┼┼┼┼┼┼┨  
05┠┼・┼・┼・┼┨  
06┠┼●┼┼○┼┼┨  
07┠┼・┼・┼・┼┨  
08┠┼┼┼┼┼┼┼┨  
09┗┷┷┷┷┷┷┷┛  

なら

************ 黒距離地図 ************
  ABCDEFGHJ
01543234567
02432123456
03321●12345
04432123456
05321234567
0621●12○678
07321234567
08432345678
09543456789

************ 白距離地図 ************
  ABCDEFGHJ
01※98765678
02987654567
03876●43456
04765432345
05654321234
0676●21○123
07654321234
08765432345
09876543456

こんなになるという訳です。まさに

    「距離」は玉ねぎ 

なのです。

活用方法はいろいろと有りますが、他の概念ではこの距離を参照したいというこ
とが多数有りますので、思考ルーチンの中で、もっとも早い段階で作成されるこ
とになるでしょう。


ある場所の近辺に石が有るかどうかのチェックは簡単です。

  ABCDEFGHJKLMNOPQRST
01┏┯┯┯┯┯┯┯┯┯┯┯┯┯┯┯┯┯┓  
02┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨  
03┠┼┼┼┼┼┼┼┼●┼┼┼┼┼┼┼┼┨  
04┠┼┼・┼┼┼┼┼・┼┼┼┼┼●┼┼┨  
05┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨  
06┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨  
07┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨  
08┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨  
09┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨  
10┠┼┼○┼┼┼┼┼・┼┼┼┼┼・┼┼┨  

************ 黒距離地図 ************
  ABCDEFGHJKLMNOPQRST
01※※98765432345543456
02※987654321234432345
03987654321●123321234
04※98765432123321●123
05※※98765432344321234
06※※※9876543455432345
07※※※※987654566543456
08※※※※※98765677654567
09※※※※※※9876788765678
10※※※○※※※987899876789

************ 白距離地図 ************
  ABCDEFGHJKLMNOPQRST
01※※※9※※※※※※※※※※※※※※※
02※※989※※※※※※※※※※※※※※
03※98789※※※●※※※※※※※※※
049876789※※※※※※※※●※※※
0587656789※※※※※※※※※※※
06765456789※※※※※※※※※※
076543456789※※※※※※※※※
0854323456789※※※※※※※※
09432123456789※※※※※※※
10321○123456789※※※※※※

左上隅は黒距離/白距離とも6以上です。これは空き隅といっていいでしょう。
どれくらいの距離で空き隅とするかはコンセプト次第かもしれませんが…


  ABCDEFGHJKLMNOPQRST
01┏┯┯┯┯┯┯┯┯┯┯┯┯┯┯┯┯┯┓  
02┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨  
03┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨  
04┠┼┼○┼┼┼┼┼・┼┼┼┼┼●┼┼┨  
05┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨  
06┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨  

************ 黒距離地図 ************
  ABCDEFGHJKLMNOPQRST
01※※※※※※※※※9876543456
02※※※※※※※※98765432345
03※※※※※※※987654321234
04※※※○※※987654321●123
05※※※※※※※987654321234
06※※※※※※※※98765432345

************ 白距離地図 ************
  ABCDEFGHJKLMNOPQRST
016543456789※※※※※※※※※
0254323456789※※※※※※※※
03432123456789※※※※※※※
04321○123456789※※●※※※
05432123456789※※※※※※※
0654323456789※※※※※※※※

これは上辺が空いている状態かと思います。これを空き辺と申しますか…


その他に、双方の距離の大きいところは大場の可能性があるかもしれません。
敵から距離が大きい場合は比較的安全といってもいいかも知れませんし、群
を拡張する手がかりにもなりますが、あてにならないこともあります。
また、双方の距離差には重要な意味があります。

さてさて、どう活用するかですね。


もう一つ、終局時の手動計算に絶対的な活用が可能です。

  ABCDEFGHJ
01┏┯○●●┯┯┯┓  
02┠○┼○●┼┼┼┨  
03┠┼・○●┼・┼┨  
04┠┼┼○●┼┼┼┨  
05┠┼・○●○●┼┨  
06┠┼┼○●○●┼┨  
07┠┼・┼○●○○┨  
08┠┼○┼○●●●┨  
09┗┷┷○●●┷┷┛  

これは

人間が死に石を指定し、それを取り上げてハマとすることで

  ABCDEFGHJ
01┏┯○●●┯┯┯┓  黒のアゲハマ4子
02┠○┼○●┼┼┼┨  
03┠┼・○●┼・┼┨  
04┠┼┼○●┼┼┼┨  
05┠┼・○●┼●┼┨  
06┠┼┼○●┼●┼┨  
07┠┼・┼○●・┼┨  
08┠┼○┼○●●●┨  
09┗┷┷○●●┷┷┛  


************ 黒距離地図 ************
  ABCDEFGHJ
01※※○●●1234
02※○※○●1234
03※※※○●1234
04※※※○●1123
05※※※○●1●12
06※※※○●1●12
07※※※※○●112
08※※○※○●●●1
09※※※○●●112

************ 白距離地図 ************
  ABCDEFGHJ
0121○●●※※※※
021○1○●※※※※
03211○●※※※※
04321○●※※※※
05321○●※●※※
06321○●※●※※
073211○●※※※
0821○1○●●●※
09321○●●※※※

さて、地を計算するルーチンは簡単ですね。
黒1目半勝ちとなります。

ついでに、手動終局の処理にも言及すると、
手入れの置き石やセキなどの駄目指定なども必要です。

トップに戻る  その他講座(未整理)に戻る