──置換表が溢れた状態で検証する必要があったんですね。
磯崎:
はい。それと、やねうら王の置換表には、先手の局面用のエントリーと、後手の局面用のエントリーとで、記録するところが分けてありまして。だから先手の指し手が後手の指し手に混入することは、本来、無いわけなんです。
──あ! 先後を最初から分けているから、指し手の情報にいちいち先手か後手かなんて記憶する必要がないわけなんですね!?
磯崎:
そうですそうです! 想定していないんです!
──なるほど……いや、ちょっと待ってください。そもそもどうしてやねうら王の置換表は、先後をわけて記憶するようにしてるんですか? わけずに記憶してるソフトもあるんですよね?
磯崎:
分けずに記録すると余分にチェックが必要になるからです。非常に細かい話なので多くの人がここを読み飛ばすと思いますが(笑)、順を追ってご説明しますね。
──よろしくお願いします。ちょっと怖くなってきました(笑)。
磯崎:
まず、置換表上、指し手がどう表現されているかというと、駒を移動させる指し手の場合ですと『移動元の升(の番号)』、『移動先の升』、『成りかどうか』です。
──人間の棋譜だと、駒の種類と、移動先の升と、成りかどうかですね。やねうら王はちょっと違うと。
磯崎:
例えば、先手が23歩成とする場合、この指し手は、【移動元が24+移動先が23+成り】という情報で構成されています。この指し手が先手の指し手であるとわかっている場合、この成りが合法かどうかのチェックを端折れるんです。なぜなら、23の升は先手にとっての敵陣ですから。
──あっ! そうか……。
磯崎:
先手の駒であれば(そこに実際に移動できるかどうかは別として)成れることには間違いないです。これが後手の指し手である可能性が残されている場合、このチェックを端折れないんです。後手ですと24の升にある駒を23に移動させても成れないですしね。