解释一下// 中后期 int max_score = -INF, min_score = INF; int i, j, k; for (i = 0; i < BOARD_SIZE; i++) { for (j = 0; j < BOARD_SIZE; j++) { if (board[i][j] == EMPTY) { board[i][j] = player; int s = evaluate(board, opponent); if (s < min_score) { min_score = s; } board[i][j] = EMPTY; if (min_score <= max_score) { return max_score; } } }
时间: 2023-06-19 14:07:51 浏览: 110
//中后期指的是游戏进行到一定程度,双方都已经下了一些棋子的状态。
这段代码是一个博弈树搜索算法中的估值函数,在搜索过程中,每一层都是一个玩家进行下棋的过程。在此过程中,算法会遍历所有当前棋盘上的空位,尝试在该空位上下当前玩家的棋子,并计算出在该情况下对手可能获得的分数。如果对手获得的分数比当前的最小分数(即当前已知的对手可能获得的最高分数)还要小,那么就更新最小分数。每次计算完当前位置时,需要将该位置重新置为空(即回溯),以便于搜索下一步的情况。
在此过程中,如果当前已知的最小分数已经小于等于当前已知的最大分数,那么就可以直接返回最大分数,因为此时对手已经有可能获得到比最大分数更高的分数,而此时已经没有必要继续搜索了。
阅读全文