オセロの先読み探索方法
オセロ思考エンジン内部についてメモ書き。
内部で扱っているデータ構造で以下のようなデータ構造を定義している。
struct ttee{ int color; /* プレイヤー番号(自分:1, 相手:-1)*/ int coo; /* 置く座標 */ int flips[20]; /* 置くことによってひっくり返る座標 */ double eval; /* 評価値 */ int depth; /* 先読みの深さ */ struct ttee *other; /* 他の手 */ };
このデータ構造は、「手」のデータ構造なんだ。いわゆる線形リスト構造。
せっかく線形リスト構造なので、初めは再帰呼び出しによって各「手」の評価、先読みを行うように書いていた。
んで、昨日からカリカリと再帰ではなく、forループによる各「手」の評価先読みをするように書いてみたんだ。
・・・・クローンコードたくさんしたからバグ取り苦労したけど。
しかし、あんまり速度変わらなかった。むしろホンノ少し遅くなってるかも。
メモリの節約にはなるコードかな?