Java 如何让极小极大算法返回正确的移动?

Java 如何让极小极大算法返回正确的移动?,java,algorithm,artificial-intelligence,alpha-beta-pruning,minmax,Java,Algorithm,Artificial Intelligence,Alpha Beta Pruning,Minmax,我知道以前有人问过这个问题,但我还是被卡住了。我使用了另一个答案中建议的包装器类,但是每次算法找到“更好”的节点时,移动都会被忽略,即使它不是max移动的,而是min移动的 private int alphaBetaSearch(Node currentNode, int depth,int alpha,int beta, boolean maxPlayer){ if (depth == 0){ return bestValue = currentNode.getV

我知道以前有人问过这个问题,但我还是被卡住了。我使用了另一个答案中建议的包装器类,但是每次算法找到“更好”的节点时,移动都会被忽略,即使它不是max移动的,而是min移动的

 private int alphaBetaSearch(Node currentNode, int depth,int alpha,int beta, boolean maxPlayer){

    if (depth == 0){

        return bestValue = currentNode.getValue();
    }

    if(maxPlayer){

        bestValue = Integer.MIN_VALUE;

        for(Node child:currentNode.getChildren()){
            bestValue = Integer.max(bestValue, alphaBetaSearch(child, depth-1, alpha, beta, false));
            currentNode.setValue(bestValue);
            alpha = Integer.max(alpha, bestValue);

            if(beta<= alpha) 
                break;

        }
        return bestValue;
    }

    else{

        bestValue = Integer.MAX_VALUE;

        for(Node child:currentNode.getChildren()){
            bestValue = Integer.min(bestValue, alphaBetaSearch(child, depth-1, alpha, beta, true));
            currentNode.setValue(bestValue);
            beta = Integer.min(beta, bestValue);

            if (beta<=alpha) 
                break;

        }
        return bestValue;
    }

}
private int-alphaBetaSearch(节点currentNode、int-depth、int-alpha、int-beta、boolean-maxPlayer){
如果(深度==0){
返回bestValue=currentNode.getValue();
}
如果(maxPlayer){
bestValue=Integer.MIN\u值;
对于(节点子节点:currentNode.getChildren()){
bestValue=Integer.max(bestValue,alphaBetaSearch(child,depth-1,alpha,beta,false));
currentNode.setValue(最佳值);
alpha=整数.max(alpha,最佳值);

if(betaI不明白。如果您使用奇数深度值调用它,则设置为深度0的移动将针对对方玩家。此外,
.getParent().getParent()也==null
guard看起来有点可疑,就像你只将移动深度设置为正好2,而不管传递的是什么
depth
?嘿@Jeff我知道了。如果你感兴趣,编辑的代码会显示所有的更改。基本上我误解了minimax算法的概念,但是我的节点的结构使parent不知道它的子项。现在根目录可以在子项中随意移动,以找到哪个值最大。通过编辑更正的代码,您可以使问题与您的问题不再匹配。请还原问题中的“错误”代码,然后执行包含更正代码的自答。TIA。