发布时间 : 星期二 文章东北大学人工智能大作业更新完毕开始阅读9df9e750e418964bcf84b9d528ea81c758f52e68
step3.进行极大极小运算(Max-Min运算) Max 按取最大评估值的方向行棋
step4.等待 Min行棋,产生新的 c(o)返回 step1. 3.2五子棋机器博弈问题
varmaxmin = function(board, deep) { var best = MIN;
var points = gen(board, deep); //这个函数的作用是生成待选的列表,就是可以下子的
空位
for(vari=0;i board[p[0]][p[1]] = R.com; //尝试下一个子 var v = min(board, deep-1); //找最大值 //如果跟之前的一个好,则把当前位子加入待选位子 if(v == best) { bestPoints.push(p); } //找到一个更好的分,就把以前存的位子全部清除 if(v > best) { best = v; bestPoints = []; bestPoints.push(p); } board[p[0]][p[1]] = R.empty; //记得把尝试下的子移除 } var result = bestPoints[Math.floor(bestPoints.length * Math.random())]; //在分数最高的几个位置中随机选择一个 return result; } var min = function(board, deep) { var v = evaluate(board); //评价函数,这个函数返回的是对当前局势的估分。 if(deep <= 0 || win(board)) { return v; } var best = MAX; var points = gen(board, deep); for(vari=0;i board[p[0]][p[1]] = R.hum; var v = max(board, deep-1); board[p[0]][p[1]] = R.empty; if(v < best ) { best = v; } } return best ; } var max = function(board, deep) { var v = evaluate(board); if(deep <= 0 || win(board)) { return v; } var best = MIN; var points = gen(board, deep); for(vari=0;i board[p[0]][p[1]] = R.com; var v = min(board, deep-1); board[p[0]][p[1]] = R.empty; if(v > best) { best = v; } } return best; } var min = function(board, deep, alpha, beta) { var v = evaluate(board); total ++; if(deep <= 0 || win(board)) { return v; } var best = MAX; var points = gen(board, deep);