Каковы эффективные способы реализации уровней сложности для ИИ в Tic Tac Toe?

Я разрабатываю простое приложение Tic Tac Toe для Android, которое поддерживает 1 или 2 игроков. Я реализовал режим ИИ для одного игрока, который использует алгоритм минимакс для идеальной игры (победы или ничья). Я хочу, чтобы пользователь мог переключаться между легкими, средними и сложными трудностями. Какими способами я могу добиться этого?

Моей первой мыслью был случайный выбор между случайным ходом или идеальным ходом. Вероятность сделать идеальный ход будет 60% для среднего и 10% для легкого. Любые другие идеи или модификации?

Поскольку вы используете минимакс, как насчет уменьшения глубины алгоритма поиска?

Jan Parzydło 29.05.2019 22:45
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
1
867
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

  1. Ограничьте глубину поиска. Например: если ИИ смотрит только на 1-2 хода вперед, можно использовать стратегию, чтобы поймать его в ловушку в неизбежном проигрышном состоянии, в то время как более глубокое дерево может предсказывать достаточно хорошо, чтобы противостоять любой стратегии и всегда вызывать ничью.
  2. Ослабьте свою функцию оценки. Это немного сложно осмысленно сделать в крестики-нолики, но вы можете что-то придумать. Если ИИ что-то недооценивает или переоценивает, он будет играть хуже.
  3. Добавлять шум. Дайте вашей программе случайный шанс выбрать неоптимальный ход.
  4. Смещение неоптимальных решений. Например, уменьшите вероятность того, что ИИ сделает первый ход с угловой точки.

Вам нужно будет поэкспериментировать, чтобы выяснить, что кажется правильным.

Вариант 3 может быть интересным. По сути, вы можете назначить процент колеса рулетки на основе оптимального или субоптимального значения, а затем вращать колесо. Иногда выбирается неоптимальный ход, хотя обычно это не так, но иногда это может впоследствии привести к удивительному ходу!

Michael Dougan 29.05.2019 23:49

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