7月末までのTODO 

気づいたら6月も半ばで、何もやってない。
やったのはブログ開設くらいで、開発は何もやってない。
このままじゃ二度とゆうちゃんに勝てないかも・・・。
だから、とりあえず7末までのTODOだけでも示しておこう。

  1. 王手千日手回避
  2. 利きから着手を生成するのではなく駒ごとに着手生成
  3. αβ関数の整理
  4. 静止探索中に詰みを発見した時の扱いについて考える

「王手千日手回避」は、ぼくの中で白砂スペシャルと呼んでいるのですが、
白砂将棋戦で見せた奇蹟の手順回避のために作ります。
探索途中で千日手を確認するとすごく遅くなるはずなので、
着手寸前に千日手かどうか確認する、ゆうちゃんの方法で行くことにしよう*1

「利きから着手を生成するのではなく、駒ごとに着手生成」は、「すべての駒に対して利きと飛び利きを作ってそれを利きテーブルに格納」してから、
「利きと飛び利きがあるマスに対して着手を生成する」って方法を取っているんですが、正直無駄が多いので直したいなと・・・。
「飛び利きがあるマスに対して着手を生成する」っていうのも、なんの駒の利きがかかってるか分かってないので、
その方向になんの駒があるか精査して・・・とかアホなことやってたんですが、利き作った時点で本当ならば着手生成できてるんですよねえ。
早くしようとすればできるんですけど、そうすると見た目汚くなるんでそれも嫌なんですが、ある程度は高速化できるはず*2

「αβ関数の整理」は、各種枝刈り手法を入れても強くならないのはαβの設計がテキトーすぎるからだと判断。
そこで一旦きれいに整理して、改修しやすい設計に直しておこうと思います。

「静止探索中に詰みを発見した時の扱いについて考える」は、静止探索中で詰みを発見すると暴走するバグ*3を直したいという件。
おそらくですが、取る手や王を逃げる手しか読まない静止探索中に、制限された手の範囲で詰みを発見すると起こる現象では?と推測中です。
つまり、取らない手を指せば詰まないにも関わらず、取る手しか読めないのでその手の範囲で「詰み」と判定してしまう。
現状「詰み」と判定したら即指すようにしているので即指しちゃうんだけど、実はその手では「取らない手」を指されると詰まない、ってことだと思う。
どーすればいいんだろ。
ていうかこの回避法はすでにありそうな気がする。

これら終わってから新しいことをやろう。
そうしないと、結局適当に物入れて、結果強くなったかよくわからんという残念な経験になりかねないからねえ。

*1:この方法だと、千日手になるギリギリまで結局同じ手を指すとか、千日手回避した瞬間は再探索がかかるので遅くなるって問題もありますが、探索が常に遅くなるより良いということにしよう

*2:ビットボードとかは面倒くさいのでやりません

*3:2chでは「送りバント失敗した!」と可愛がっていただきました