3

私はウィキペディアの記事のpseducodeをフォローしましたが、うまくいったと思います。ただし、スコアが返されるため、どのような動きをしたいのかを知りたい場合は、正確には役に立ちません。

最高の動きを得る方法だと思うものを試しましたが、実際にそれ(チェス)と対戦しようとすると、AIは深さレベル3でやや遅れた動きをするのでうまくいかないと思います。

これが私の関数です:

public static function alphaBeta(node, depth, alph, beta, team, tellTheMove:Boolean = false):* {
        var pointer:ChessMove;
        if (depth == 0) {
            return scoreOf(node);
        }
        var childrenOf:Vector.<ChessMove >  = returnPossibleMoves(node,team);
        if (childrenOf.length == 0) {
            return scoreOf(node);
        }
        if (team == 0) {
            for (var i in childrenOf) {
                var that:Number = alphaBeta(childrenOf[i],depth - 1,alph,beta,1);
                if(tellTheMove){
                }
                if (that > alph) {
                    alph = that;
                    if(tellTheMove){
                        pointer = childrenOf[i];
                    }
                }
                if (beta <= alph) {
                    break;
                }
            }
            if(tellTheMove){
                return pointer; //Returns the move that's score last exceeded alpha.
            }
            return alph;
        } else {
            for (var j in childrenOf) {
                var that2:Number = alphaBeta(childrenOf[j],depth - 1,alph,beta,0);
                if (that2 < beta) {
                    beta = that2;
                }
                if (beta <= alph) {
                    break;
                }
            }
            return beta;
        }
    }
4

1 に答える 1

4

深さ 3 は、チェスのような問題ではほとんどありません。この深さでは、パワーのほとんどは最終的な評価関数に依存します。この評価関数は、ボードの価値を効率的に予測できるようにするのは非常に困難です。

より低い深さで効率的に解決できる、より単純なものを試してください。Tic-Tac-Toe は、Min-Max の最初の試みとしては非常に優れたゲームです。これは、最終的な結果がよくわかっているためです。アルゴリズムを正しく取得すれば、それを打ち負かすことはまったくできないはずです。Tic-Tac-Toe を行ってアルゴリズムが緩んでいる場合は、間違いがあることがわかります。

また、場合によっては、Min-Max が最適なプレイをすることもありますが、それでも人間の対戦相手には遅れているように見えます。たとえば、勝つチャンスがない場合、Min-Max はランダムにプレイを開始し、非常にばかげた動きをします。これは、Min-Max が対戦相手も完璧にプレイすることを期待しているためです。これは通常、人間には当てはまりません。この動作を変更し、そのような場合に最小最大再生を「遅らせる」ようにするために、アルゴリズムに実行できるいくつかの簡単な変更があります。

于 2011-10-26T08:05:39.373 に答える