シャンチー(中国象棋)の排局172局を全探索で検証する
要点
- 『適情雅趣』(1570)、『渊深海阔』(1808)、『烂柯神机』から連続王手詰め(連將殺)の排局172局を全探索ソルバーにかけ、印刷された解が唯一かどうかを調べた。45局は完全作だった。
- 完全に破綻した排局はない。どれも書の言う側が勝つ。欠陥はすべて唯一性に関わるもので、別の初手(プロブレム用語でいう余詰)、途中の別の勝ち筋、印刷より速い詰みである。
- 九局の棋譜は入力された通りでは成立しない。書が示さない受けを指すと、紅は連続王手で詰ませられなくなる。誤りが原書にあるのか写しにあるのかは未解決だが、第217局では黒の車一枚がその原因になっている。
- 検証は正しい結果にたどり着くまでに三度間違えた。探索する手番を取り違え、排局をチェス・プロブレムの規則で判定し、誤記の棋譜を欠陥のある排局と読んだ。
問題
シャンチーの古典的な排局には、印刷された解と結論が付いている。たいていは紅先勝、つまり紅が先に指して勝つ。書が教えてくれないのは、その解が唯一かどうかであり、排局の良し悪しはまさにそこで決まる。同じく勝てる別の初手は欠陥である。変化の木に埋もれた別の勝ち筋も欠陥である。印刷より二手速い詰みも欠陥である。
エンジンはそのどれにも答えられない。紅が勝勢だと報告するだけで、それは最初から疑いようがない。唯一性はあらゆる合法手についての主張であり、必要なのは評価値ではなく証明である。
ソルバー
サイトの対局で使っているのと同じルールの上で全探索の AND/OR 探索を行うので、検証での指し手の合法性は、対局でプレイヤーが受けるものと同じになる。将帥対面、象眼の塞がり、馬脚を塞ぐ手、困斃は負け。
連続王手詰めの排局で「完全作」とは、三つのことが同時に成り立つことを意味する。書の初手が、記された手数で詰ませる唯一の手であること。変化の木のどこにも紅の別の勝ち筋がないこと。印刷より速い詰みがないこと。探索はこの三つをすべて証明するか、さもなければその問題に欠陥がある。
短い問題は数秒で終わる。九手から十三手の解なら全探索できる大きさだが、それを超えると木はこの方法では探索できなくなる。検証が2,388局ではなく172局なのはそのためである。
結果
| 局数 | |
|---|---|
| 検証した排局 | 172 |
| 完全作:初手が唯一、余詰なし、より速い詰みなし | 45 |
| 途中の別の勝ち筋(余詰)あり | 58 |
| 別の初手あり | 13 |
| 印刷より速い詰みあり | 9 |
| 勝てるが印刷より長い | 21 |
| 不成立、そもそも勝てない | 0 |
一局が複数の欠陥を持つことがあるので、各行の合計は一致しない。要点は最後の行で、古書はよく持ちこたえている。欠陥があるとすれば唯一性であり、それはこれらの排局の大半より何世紀も後に生まれた審査基準である。「より長い」21局は、書が自らの手数を誤っているということだ。印刷された手順が一度も相手にしない受けが黒にあり、紅はそれでも詰ませるが、書が言うより遅くなる。
各種類から一例ずつ。書の手順を本譜とし、欠陥はそれが起きる手の分岐として示す。
途中の別解。 『適情雅趣』(1570)の群鼠争穴。紅の六手目に書は He6+ を指すが、Hc6+ でも同じ速さで詰む。
別の初手。 同じ書の妙振兵铃。Rh10+ で始めて六手で詰む。Pd10+ でも同じである。
より速い詰み。 これも『適情雅趣』の争舟走渡。書は七手詰めとしているが、Pxe9+ なら六手で詰む。
これとは別に、34局の棋譜は欠陥ではなく誤記として分類された。入力された盤面が、横に印刷された結論を支えないという意味である。そのうち十局は連続王手詰めを主張し、九局は書自身の手順の中で反証される。最も明快なのは『渊深海阔』(1808)の一局で、棋譜は黒の四手目に士6进5を与えるが、代わりに车5退8と指すと、紅には合法な王手が一つもなくなる。
間違えた三つの検証
手番。 最初の寬緊殺(王手以外の手を含む排局)の検証は、初手の後の局面を、紅が二回続けて指すかのように探索していた。190局が完全作だと報告し、私は午後いっぱいそれを信じたが、その数字には意味がなかった。間違った側から始めた協力探索や対抗探索は、別の問いに完璧に答えてしまう。
題意。 私はすべての排局を n 手詰めとして扱っていた。寬緊殺の排局はそうは主張しない。主張するのは紅先勝、紅が先に指して勝つということであり、この題意に対しては別の初手も欠陥ではなく、より速い詰みも欠陥ではない。数えた欠陥の半分は欠陥ではなかった。それを確かめるソルバーと一緒に、チェス・プロブレムの慣習まで持ち込んでいたからだ。
この二つはどちらも寬緊殺の検証で起きたもので、その検証は棚上げにした。寬緊殺は二十手を超え、九手の問題を片付ける全探索はそこでは終わらない。上の172局はすべて連続王手詰めで、手数そのものが書の主張の一部になっている。
エンジンによる事前確認なしの厳密探索。 強制詰みを見つけられない全探索は、排局が壊れている場合と棋譜が誤記されている場合とで見分けがつかず、私はそのうち八局を不成立と読んだ。五局は問題なかった。紅は勝つが、印刷された手順より遅い。三局は誤記の棋譜だった。ルート局面でエンジン評価を一回行えば、二つの場合は数秒で区別できるので、今ではエンジンによる確認を最初に行う。エンジンを必要としないことこそが要点の探索なのに、である。
四つ目もあった。別の系統だが、同じ間違いである。私の協力詰め(ヘルプメイト)作成プログラムは、問題を詰みで判定していた。シャンチーでは合法手のない将も負けになるので、困斃で終わる手順は第二の解になる。完全作として公開した186問のうち22問に、作成プログラムには見えない手順があった。そのうち一問には十通りもあった。
代償と成果
バグは四つで、どれも私がよく知っていながらツールに持ち込んでいなかったルールだった。ソルバーは毎回正しかった。間違っていたのは、それに投げた問いのほうだ。
得られたのは、欠陥にラベルの付いたコーパス、印刷手順が成り立たない九局の棋譜、そして駒を特定する修復探索である。第217局では、盤面への154通りの一駒の変更のうち、書の解を復元する四通りはすべて e2 の同じ黒の車に関わるもので、そのマスに兵を置けば印刷手順が成立する。私は盤面と手順を、棋譜を管理している人に中国語で送った。彼の答えは「古谱就有错呀」(古い棋書には誤りがあるものだ)というもので、車が原書の誤りなのか写しの誤りなのかは、まだ決着していない。
全記録は、一手ずつ再生できるスタディにまとめてある。完全作、各種の欠陥、誤記の棋譜三局、そして第217局とそれを崩す一手。『渊深海阔』の刊本をお持ちなら、問題のマスは e2 なので、そこに何が書かれているか教えてほしい。