Tic Tac Toe を解決するために利用できるアルゴリズムは何ですか? 特にボードのサイズが 3 * 3 ではなく 4 * 4 以上の場合は? Minimax & alpha-beta pruning で 4 * 4 を試しましたが、PC がハングしているようで、スタック オーバーフローで例外がスローされます。これらのソース コードが JavaScript で書かれているのを見ましたが、どのアルゴリズムを使用しているのかわかりません。 http://js-x.com/page/javascripts__example.html?view=153
質問する
776 次
1 に答える
1
ある程度の深さでカットオフを試みてください...完璧な動きをするのに 4 つか 5 つ以上の深さは必要ないと思います。
(深さのある 3*3 1 次元ボードの Java):
int minimax(int turn, int depth) { // turn(side to move) is 1 or -1
int val = -turn; // worst value for that turn
int result = NULVAL;
if (wins()) return turn; // evaluate board (board is a field)
if (depth == 0) return DRAW;
for (int i = 0; i < 9; i++) {
if (board[i] == EMPTY) {
board[i] = turn; // make move
result = minimax(-turn, depth - 1);
board[i] = EMPTY; // delete move
if (result == turn)
return turn; // sees win
if (result == DRAW)
val = result;
}
}
// if result keeps NULVAL: couldn't make a move (board is full)
if (result == NULVAL) return DRAW;
return val;
}
于 2012-05-23T22:09:19.693 に答える