Подключите 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, которые вы можете использовать для улучшения своей функции оценки.

Другие вопросы по тегам