Подключите 4 кода с минимальной максимальной найти уникальную проблему
Я ищу способ решить Connect 4, пытаясь теперь с min max с глубиной 6, он не работает и продолжает приводить тот же столбец (первый).
Я довольно отчаянно, поэтому я буду очень рад, если вы найдете ошибки.
public int findBestMove() {
ArrayList<ArrayList<Integer>> myMoves = new ArrayList<ArrayList<Integer>>();
for (int i = 0; i < mWidth; i++) {
if (isColumnAvailable(i)) {
ArrayList<Integer> t = new ArrayList<>();
t.add(i);
t.add(MinMax(6, mBoard, false));
myMoves.add(t);
}
}
int maxMoveScore = -10000;
int bestMove = 0;
for (int i = 0; i < myMoves.size(); i++) {
int score = myMoves.get(i).get(1);
if (score > maxMoveScore) {
maxMoveScore = tryit;
bestMove = myMoves.get(i).get(0);
}
}
return bestMove;
}
private int MinMax(int depth,int[][] board, boolean maximizingPlayer) {
if (depth <= 0)
return 0;
int winner =checkForWin() ;
if (winner == 2)
return depth;
if (winner == 1)
return -depth;
if (isBoardFull()) {
return 0;
}
int bestValue;
if (maximizingPlayer)
bestValue = -1;
else
bestValue = 1;
for (int i = 0; i < mWidth; i++) {
if (!isColumnAvailable(i))
continue;
int v = MinMax(depth - 1, board, !maximizingPlayer);
bestValue = maximizingPlayer ? Math.max(bestValue, v) : Math.min(bestValue, v);
}
return bestValue;
}
2- это номер AI
1- человек-игрок
0- пусто
1 ответ
Connect 4 - решенная игра (спойлер, игрок 1 выигрывает, когда играет идеально). Вы можете прочитать все о том, как это решение было достигнуто в основанном на знаниях подходе Connect-Four. Это довольно увлекательное чтение, потому что они сделали это в то время, когда вычислительные ресурсы были значительно труднее найти.
Основная идея состоит в том, чтобы создать огромную базу данных с позициями известных значений, затем min-max с отсечкой альфа-бета, пока вы не достигнете одной из позиций в базе данных. Создание этой базы данных было сложным из-за вычислительных ресурсов и ресурсов хранения в то время, когда это происходило, но вы, вероятно, могли бы достичь чего-то подобного сегодня с меньшими усилиями.
Хотя это не дает прямого ответа на ваш вопрос, мы надеемся, что этот справочник станет хорошим местом для начала вашего исследования, поскольку он включает в себя анализ многих типичных ситуаций в Connect 4, которые вы можете использовать для улучшения своей функции оценки.