Что такое игры с довольно простой эвристикой для оценки позиций?

Я преподаю программирование на малышах, и сейчас представляю некоторые основные концепции искусственного интеллекта. Начнем с того, что мы собираемся реализовать игру tic-tac-toe, которая выполняет поиск по всему игровому дереву и как таковая играет отлично. Как только мы закончим, я хочу применить те же концепции к игре, у которой слишком много позиций для оценки каждого из них, так что нам нужно реализовать эвристику для оценки промежуточных позиций.

Лучшее, что я мог придумать, было Точки и ящики. Преимущество состоит в том, что я могу установить размер доски сколь угодно большим, чтобы остановить его от поиска всего дерева, и я могу сделать очень базовую функцию подсчета числа ящиков за вычетом количества ящиков противников. К сожалению, это означает, что в течение большей части начала игры каждая позиция будет оцениваться равнозначно со счетом 0, потому что она принимает довольно много ходов, прежде чем игроки начнут делать коробки.

Есть ли у кого-нибудь лучшие идеи для игр? (Или лучшая функция подсчета очков для точек и ящиков)?

Ответы

Ответ 1

Другой вариант игры может быть Reversi aka Othello.

Наивная эвристика состоит в том, чтобы просто подсчитать количество плиток, полученных каждым действительным движением, и выбрать наибольшее. Оттуда вы можете влиять на положение борта и свести к минимуму уязвимость противника.

Ответ 2

Одна игра, которую вы можете рассмотреть, Connect Four. Простая игра с простыми правилами, но сложнее, чем Tic-Tac-Toe.

Ответ 3

Шашки позволят вам преподавать несколько методов. Простой поиск, поиск глубин в наилучшем случае с наихудшими решениями, различия между краткосрочными и долгосрочными достижениями и что-то, над чем они могли бы продолжать работать после изучения того, что вы хотите учить.

Лично я считаю, что последний бит является самым критическим - есть естественные точки в развитии ИИ, которые хороши, чтобы остановиться, увидеть, можете ли вы победить его, а затем углубиться в более глубокие механизмы ИИ. Это заставляет вашего студента заинтересоваться, не будучи ужасно расстроенным, и дает им больше возможностей самостоятельно, если они хотят продолжить проект.

Ответ 4

Как насчет Reversi? Он имеет довольно приятное пространство эвристики, основанное на количестве штук, количестве краевых частей и количестве угловых элементов.

Ответ 5

Как насчет Mancala? Только 6 возможных ходов на каждом повороте, и легко вычислить результирующий балл для каждого, но важно учитывать реакцию противника, а игровое дерево становится довольно быстрым.

Ответ 6

Gomoku - это хорошая, простая игра и интересная для написания AI для.

Ответ 7

Rubik Infinity довольно весело, это немного похоже на Connect Four, но тонко отличается. Эволюция позиции довольно проста.

Я сбил Perl script, чтобы сыграть его некоторое время назад, и на самом деле пришлось уменьшить количество движений вперед, которые он смотрел, или он бил меня каждый раз, как правило, с довольно удивительной тактикой.

Ответ 8

Четыре в строке Достаточно сложно, но достаточно легко придумать удобную рабочую функцию оценки, например (расстояние до четырех от моей самой длинной линии - расстояние до четырех от самой длинной линии противника)

Ответ 9

Мне очень нравится Connect Four. Очень легко программировать с использованием алгоритма Minimax. Хорошей функцией оценки может быть:

eval_score = 0
for all possible rows/lines/diagonals of length 4 on the board:
    if (#player_pieces = 0) // possible to connect four here?
        if (#computer_pieces = 4)
            eval_score = 10000
            break for loop
        else
            eval_score = eval_score + #computer_pieces
            (less pieces to go -> higher score)
        end if
    else if (#player_pieces = 4)
        eval_score = -10000
        break for loop
    end if
end for

Чтобы улучшить программу, вы можете добавить:

  • Если компьютер перемещается первым, играйте в среднем столбце (это оказалось оптимальным)
  • Обрезка альфа-бета
  • Перенос заказа
  • Зобристские хэши

Ответ 10

Как насчет того, чтобы начать игру с точками и боксами со случайными строками, которые уже добавлены. Это может привести вас в действие быстро. Просто нужно убедиться, что вы не запускаете игру с помощью любых полей.

Ответ 11

Взгляните на Go.

  • Достаточно просто для малышей на очень маленьких досках.
  • Сложность масштабируется бесконечно.
  • Имеет множество доступных документов, алгоритмов и программ для использования в качестве шкалы или основы.

Обновление: упоминалось реверс, который является упрощенным вариантом Go. Возможно, это лучший выбор.

Ответ 12

Что касается лучшей эвристики для точек и ящиков, я предлагаю посмотреть онлайн-руководство по стратегии для игры. первый результат в Google для стратегии "точек и коробок" весьма полезен.

Зная, как использовать правило цепи, отделяет игрока OK от хорошего. Зная, когда правило цепи будет работать против вас, это то, что отделяет лучших игроков от хороших.