2020-05-01から1ヶ月間の記事一覧

置換表と評価関数の小型化

edaxの置換表は1エントリ192バイト 24バイト(192bit)で、パラメータh(ただし )を受け取って、2.25 個のエントリをメモリに確保します。(2.25 2.0625と中途半端な値なのは、3種類のテーブルを使い分けているためです)デフォルトはh=21です。最小値のh=10…

分岐はないほうがいい?

前回はedaxというオセロソフトのboard_score_1関数を分岐不要に書き換える話をしました。cmov命令がそれに使えるのがポイントでした。私はcmov命令の存在を最近知ったのですが、記事を投稿したあとで"cmov"でググったら達人の間では昔から当たり前だったみた…

分岐はないほうがいい

edaxというオセロソフトでは、探索処理の中でも最後の1手を打つ部分を計算する関数を個別に用意しています。board_score_1という関数です。edax-reversi/endgame.c at master · abulmo/edax-reversi · GitHub inline int board_score_1(const Board *board, …

df-pn亜種でオセロの終盤完全読みを試みた

はじめに一般の詰将棋などの問題設定について説明します。 局面をノードとし、指し手を有向エッジとする木(ゲーム木)があるとします。プレイヤーは「攻め」と「受け」の2人とします。葉ノード(詰将棋の場合は、即詰みor王手をかけられない局面のこと)に…