Hallo liebe Java-Freunde,
ich sehe mir gerade den NegaMax Algorithmus an.
Mein Problem ist, dass ich irgendwie nicht klar komme.
Der Computer bleibt "dumm".
(MiniMax geht einwandfrei. Die korrekte Evaluierungsfunktion für NegaMax kapiere ich nicht.)
Hier am Beispiel TicTacToe.
Die Evaluierungsfunktion für MiniMax ist einfach. "player" ist entweder 1 oder -1.
ich sehe mir gerade den NegaMax Algorithmus an.
Mein Problem ist, dass ich irgendwie nicht klar komme.
Der Computer bleibt "dumm".
(MiniMax geht einwandfrei. Die korrekte Evaluierungsfunktion für NegaMax kapiere ich nicht.)
Hier am Beispiel TicTacToe.
Die Evaluierungsfunktion für MiniMax ist einfach. "player" ist entweder 1 oder -1.
Java:
// Evaluierungsfunktion für MiniMax. Aber was mache ich bei NegaMax?
int evaluate(int player) {
if ((isWin()))
return -player;
else return 0;
}
// Hier der NegaMax Algorithmus - - hoffentlich ohne Fehler!
int negaMax(int player, int depth, int alpha, int beta) {
if (depth == 0 || isGameOver()) return evaluate(player);
List<Integer> availableMoves = getAvailableMoves();
if (availableMoves.isEmpty()) return 0;
for (int move : availableMoves) {
doMove(move);
int score = -negaMax(-player, depth - 1, -beta, -alpha);
undoMove();
if (score > alpha) {
alpha = score;
if (depth == maxDepth) {
listOfMoves.add(move);
listOfScores.add(score);
}
if (alpha >= beta) break;
}
}
return alpha;
}