alpha-beta剪枝搜索
来源:互联网 发布:c语言逗号运算符举例 编辑:程序博客网 时间:2024/04/29 16:09
// 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 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;
}
{
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;
}
- alpha-beta剪枝搜索
- 浅谈"对抗搜索"的alpha-beta 剪枝
- 例析Alpha-Beta剪枝
- Alpha-Beta 剪枝算法
- alpha beta 剪枝算法
- alpha-beta剪枝
- Alpha-Beta剪枝算法
- Alpha-beta剪枝算法
- 例析Alpha-Beta剪枝
- Alpha-beta剪枝-井字棋
- 完全极大极小搜索与alpha-beta剪枝
- Alpha-Beta剪枝(Alpha Beta Pruning)
- Alpha-Beta剪枝算法(Alpha Beta Pruning)
- 对抗博弈 alpha-beta剪枝
- Alpha-Beta搜索
- Alpha-Beta搜索
- Alpha-Beta搜索
- [算法] Alpha-Beta搜索
- firefox下的eval与ie下有什么不同
- cewolf学习笔记
- 如何循序渐进向DotNet架构师发展
- Helix Server
- 成为“摇滚巨星”级程序员的十大方法
- alpha-beta剪枝搜索
- java自动拆箱(unboxing)/装箱(autoboxing)
- 十年编程经验凝结 与新人们分享
- Tailrank 网站架构
- SOA是什么玩意?二分钟读懂.
- SOA是什么玩意?再读二分钟.
- 感恩节随笔
- 其他流媒体服务软件
- 架设流媒体服务器