VLM Analyzerで実装している「余詰検出」機能の詳細について解説します。
限珠案における余詰の定義
個別の問題に対して余詰の有無を説明した文章はあるものの明確な余詰の定義は私の知る限り見たことがありません。したがって、個別の事例での解説から余詰の定義は以下であるとしています。
- 作意手順中の攻め方の局面において詰む手が複数ある場合は余詰とする
- ただし、以下の場合は余詰とみなさない。
- 終端手[1]終端手については「正規性による判定の簡素化」を参照ください。が存在する局面で複数の終端手が存在する場合
- 手順前後で同一の終端局面に至る場合
- 盤端を含めて完全対称となる局面において対称点が詰む場合
まず、作意手順以外の防手に対して複数の詰む手があっても余詰とはされていないようです。
例えば「ピタゴラス」(連珠世界1984年4月号)の初手IIに対してHJと防ぐAの変化(こちらが作意と考えられます)は1通りしかありません。KJと防ぐBの変化は2通りの勝ち方がありますが余詰とはされていません。
余詰と見なさない例についても1は逹四ができる箇所が複数あることはよくあるので余詰としないのは自然でしょう。
また、2の手順前後(例:黒A -> 白B -> 黒C -> 白D -> 黒Eで詰む時に黒C -> 白D -> 黒A -> 白B -> 黒Eで詰ます)についても手順を限定することは難しいので余詰としないのが妥当だと思います。
最後の3については「連珠世界 1989年7月号(P.39)」に書かれており
完全対称形の場合、盤端も含めての「完全対称」なら第1手を対称軸上 に置かなければ2つの解が存在するのは自明です。この場合、鏡像解は 同一の解とみなして、余詰とはしないことになっています。
となっています。
作意手順の判定方法
人間であれば問題の構想を汲み取ってなんとなく「作意」を理解することができますが、コンピュータに「作意」を読み取らせるのは難しいのでVLM Analyzerでは以下の方法で余詰を判定しています。
まず「最強坊」について定義します。
次に作意手順を以下であるとして判定しています。
- 攻め方:詰む手
- 受け方:最強坊のうち余詰のない手
「余詰」、「作意手順」の定義にお互いの定義が含まれるため再帰的に判定することになります。詳細はGitHub上のvlm_analyzer_specification.pptxの「余詰検出」の章をご参照ください。
もちろんこの判定方法での作意手順と人が判断する作意手順が異なるケースもあります。
例えば「鍾乳洞」(連珠世界2001年03月号)で初手IHに対してFHと防ぐAの変化(解答発表時にこちらが作意と解説されています)では2通りの勝ち方があるため余詰とされています。しかし、上記の判定方法ではEHと防ぐBの変化では白が四ノビが出来る状況になっているのでJIから四追いで勝つ手順の1通りしかなくこちらの手順を作意手順と判断し余詰無しという判定結果になります。
「作意」という人の主観が入り込む余地のある定義方法だと100%完全な判定方法を作るのは不可能ですが、テストした結果大きな問題はなさそうなので上記の判定方法を実装しています。
限珠案作品集での余詰検出
余詰検出機能のチェックをかねて以下の作品集で余詰チェックを行いました。チェック結果からかなり高い精度で余詰を判定できるようになっていると思います。
- 「夢幻の構想」(龍 鷹 編著)
- 「三手で勝つ詰連珠」(坂田 吾朗 編著)
- 「二手で勝つ」(西村 敏雄 著)
- 「高村政則詰め連珠作品集」(高村 政則 著)
- 「詰め連珠の玉手箱」(坂田 吾朗 編著)
- 「坂田の詰め連珠」(坂田 吾朗 著)
- 「限珠案コンクール」
References
↑1 | 終端手については「正規性による判定の簡素化」を参照ください。 |
---|---|
↑2 | 定義より最強坊が複数存在することもあります。 |
ピンバック: 限珠案の余詰チェック結果(「夢幻の構想」編) | 連珠プログラム(Quinstella, REAL Core)開発ブログ
ピンバック: 限珠案の余詰チェック結果(「限珠案コンクール」編) | 連珠プログラム開発ブログ