山田将棋について(2020 年) 全体像 クラシカルな構造・アルゴリズムとなっています。 データ構造 配列による盤駒表現、駒背番号制、利き数、 飛び利き方向ビットの OR 値、 利いている駒背番号ビットの OR 値、 囲いへ誘導するための落とし穴表、 玉位置からの距離に応じた評価値を納めた表、 pinned と cover の概念、置換表、 8 近傍利き位置を納めた表、8 近傍合法移動先を納めた表、 など アルゴリズム αβ探索、反復深化、局面が静かでない場合の探索延長、 手調整した仮評価による手のオーダリングと前向き枝狩り、 null move pruning、late move reduction、 killer move heuristic、pass move、 YSS 式指し手の反復生成、Crafty 方式の並列探索、 反復深化による詰め将棋ルーチン root ノードでの簡易必死検出、 leaf ノード付近での簡易一手詰み検出、 予測読み、フィッシャークロック対応、 など 評価関数 駒割、玉の安全度、囲い、盤上の利き、駒への当たり、大駒の働き、 そっぽ、金駒へのひもなどの、手調整した評価値の線形和 未採用 多重反復深化、影の利き、SEE、持ち駒の優劣表現、 bitboard、実現確率探索、評価関数評価値の学習、など