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

鬼神の秘密

オセロの世界チャンピオンが棋譜や考え方などを紹介してくれるらしいブログ。 こっちの参考になればいいなぁ、というのが本心だが、単純に面白そう。 http://blog.goo.ne.jp/becky2002jan

パスの処理

実際に打つ時点に限れば、打つ場所が見つからない場合にはすぐパスを返す。これは打てる箇所が一箇所の場合と同じで、そこから先をどんなに探索しようと結果は同じなので余計な時間を使わない様にすること。それで重要なのは探索中のパスの処理。ここではゲ…

実際に打つ手の探索

上記のままのアルファベータの実装では評価値は返ってくるけど、どの手を指した結果なのかが全く分からない。かといって、実際指し手の情報が必要になるのは再帰呼び出しの一番上のレベル。ということで、面倒だけどそれだけのための関数を作った。ついでに…

アルファベータ探索

理論は抜き。Min-Maxも、純粋な意味でのアルファベータ探索も抜きにして、最初から Negamax + αβ。さっさと実装に。 int αβ(CELL 色, int α, int β, int 残り深さ) { if( 残り深さ == 0 ) return 評価値(); @打てる場所リスト = 打てる場所を列挙する(色); i…

マスの中身の定義

とりあえず、今のところは #define BLACK (1) // 黒石 #define WHITE (-1) // 白石 #define NONE (0) // 空きマス #define WALL (3) // 枠外黒石と白石が±1なのは、裏返す時に単純にマイナスを取ればいいから、という理由ではなく、評価関数を書く場合に、最…