gpt4 book ai didi

c++ - 极小极大算法 : Why make rating negative?

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:21:18 25 4
gpt4 key购买 nike

/* finds the best move for the current player given the state of the game.
* depth parameter and MAX_DEPTH are used to limit the depth of the search for games
* that are too difficult to analyze in full detail (like chess)
* returns best move by storing an int in variable that rating points to.
* we want to make the move that will result in the lowest best move for the position after us(our opponent)
*/
moveT findBestMove(stateT state, int depth, int &rating) {
Vector<moveT> moveList;
generateMoveList(state, moveList);
int nMoves = moveList.size();
if (nMoves == 0) cout << "no move??" << endl;
moveT bestMove;
int minRating = WINNING_POSITION + 1; //guarantees that this will be updated in for loop
for (int i = 0; i < nMoves && minRating != LOSING_POSITION; i++) {
moveT move = moveList[i];
makeMove(state, move);
int curRating = evaluatePosition(state, depth + 1);
if (curRating < minRating) {
bestMove = move;
minRating = curRating;
}
retractMove(state, move);
}
rating = -minRating;
return bestMove;
}

/* evaluates the position by finding the rating of the best move in that position, limited by MAX_DEPTH */
int evaluatePosition(stateT state, int depth) {
int rating;
if (gameIsOver(state) || depth >= MAX_DEPTH) {
return evaluateStaticPosition(state);
}
findBestMove(state, depth, rating);
return rating;
}

这是我的代码,用于实现极小极大算法以与计算机玩完美的井字游戏。该代码有效,还有许多其他辅助函数未在此处显示。我理解算法的本质,但是我很难完全理解 findBestMove() 函数末尾的行:

rating = -minRating;

这就是我的书所说的:包含负号是因为视角发生了变化:位置是从对手的角度评估的,而评级则表示从你自己的角度出发的值(value)看法。让对手处于不利位置的举动对您有利,因此具有正值。但是当我们最初调用该函数时,它是从计算机的角度来看的。我想当我们评估每个位置时,这个函数是从对手的角度调用的,这就是为什么?有人可以让我更深入地了解递归发生的事情,以及为什么评级最终需要为负。一如既往,非常感谢您抽出宝贵时间。

最佳答案

想象两个位置,A 和 B,其中 A 对玩家 a 更好,B 对玩家 b 更好。当玩家 a 评估这些位置时,eval(A) > eval(B),但当玩家 b 执行时,我们希望 eval(A) < eval(B),但实际上不是。如果 b 将 -eval(A) 与 -eval(B) 进行比较,我们将得到所需的结果,原因与您的书中所说的完全相同。

关于c++ - 极小极大算法 : Why make rating negative?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33601177/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com