
このサイトでは、C言語でのオセロ(リバーシ)のプログラム開発方法を解りやすく説明しています。初級者、初心者でも作れるオセロ実装のコツが満載です。
Alexander Reinefeldが発見した探索方法です。これはNegaMax法を少し改良するだけで実現可能です。MTD(f)法が開発されるまではリバーシプログラムでの高速化が実証されており、多くのリバーシプログラムで利用されていました。
NegaMax法を実装するにあたって、「Null windows search」と言う概念を理解しておく必要があります。
Null windows search の目的は、値を求めることではなく、値の範囲を絞り込むことです
αβ法におけるα(下限値)とβ(上限値)の幅を Window (探索窓)といい、 この幅を Null(Zero) にして行います。
int NegaScout(int a,int b){
/* 葉の場合、評価値を返す */
if(leaf()) return eval();
else{
int t,i,m=b;
for(i=0;i<n && a<b;i++){
t=-child[i]->NegaScout(-m,-a);
if(a<t){
if(t<=m && i) a=-child[i]->NegaScout(-b,-t);
else a=t;
}
/* +1とする */
m=a+1;
}
return a;
}
}
オセロに強くなりたい人は下記を読むことをお勧めします。
オセロ(将棋等)のプログラムを開発したい人・ゲームプログラマーになりたい人は下記は持っていて損はないでしょう。
Copyright ©2024 pl_kyo.(since 2001/11/18)