alpha-beta剪枝搜索

   // basic Alpha-Beta search;

     move bestmove;


    
int  alphabeta( int  depth,  int  alpha,  int  beta,  bool  isMyTurn)  {

     
if (gameOver || depth == 0{
      
return evaluation();
     }


       generateLegalMoves();

        
// you may  change the search order to make the search faster

     
for (each move m) {
      
do move m;
      score 
= -alphabeta(depth - 1-beta, -alpha, ! isMyTurn );
      
if (score > alpha) {

             alpha 
= score;

             
if(at the Level 1)     

              bestmove 
= m;
      }

      undo move
-m;
      
if (alpha >= beta) {
       
break;
      }

     }

     
return alpha;
    }

Initial call  :  alphabeta(depth,  - infinite,  infinite,  isMyTurn);

不理解上面的代码的话,看看下面的极小极大搜索

极小极大搜索

// 极大搜索

int  Max( int  depth)
{
 
int best = -INFINITY;
 
if (depth == 0)     
   
{
  
return evaluation();
 }

 generateLegalMoves();
 
for (each move m) {
   
{
  
do move m;
  val 
= Min(depth - 1);       // call the Min search
      undo move m;
  
if (val > best)
     
{
   best 
= val;
  }

 }

 
return best;
}

 
int Min(int depth) // Min search
{
 
int best = INFINITY;
 
if (depth <= 0)
   
{
  
return evaluation();
 }

 GenerateLegalMoves();
 
for (each move m) {
  
do move m;
  val 
= Max(depth - 1);    // call the Max search
       undo move m;
  
if (val < best)
     
{
   best 
= val;
  }

 }

 
return best;
}

负极大搜索

极小极大搜索可以统一用负极大搜索代替

int  NegaMax( int  depth)
{
 
int best = -INFINITY;
 
if (depth == 0)
   
{
  
return evaluation();
 }

 GenerateLegalMoves();
   
for (each move m) {
  
do move m; 
  val 
= - NegaMax(depth - 1);
  undo move m;
  
if (val > best)
     
{
   best 
= val;
  }

 }

 
return best;
}

 

width="728" scrolling="no" height="90" frameborder="0" align="middle" marginwidth="0" marginheight="0" src="http://download1.csdn.net/down3/20070601/01184120111.htm">
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值