С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/22: Рейтинг темы: голосов - 22, средняя оценка - 4.73
17 / 17 / 8
Регистрация: 18.09.2012
Сообщений: 184

Искусственный интеллект для логической игры

16.01.2014, 23:02. Показов 4300. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Конечно, громко звучит "искусственный интеллект", но в общем надо сделать бота для логической игры.
Вот сама игра.

Для игры в так-тикль используется доска 4х4, на которой расставлены 4 белые фишки и 4 черные фишки так, как показано на рисунке.
Ходы делаются по очереди. Начинают белые. За одни ход можно передвинуть любую из своих фишек на одну клетку по горизонтали или по вертикали, если она оказывается при этом на свободном поле. По диагонали ходить нельзя. Цель игры — выставить тройку своих фишек в ряд по горизонтали, вертикали или диагонали, как в “крестиках-ноликах”. Кто первым сделал это, тот победил.

Сделал игрок против игрока. А вот как игру с ботом сделать пока не знаю. Может кто идейку подкинуть?)
Изображения
 
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.01.2014, 23:02
Ответы с готовыми решениями:

Искусственный интеллект (боты) для игры
с чего стоит начать создание ботов в игре (rpg) ? Нейронные сети или какое-то другое направление ? Посоветуйте какую-нибудь понятную...

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

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

2
17 / 17 / 8
Регистрация: 18.09.2012
Сообщений: 184
16.01.2014, 23:17  [ТС]
Я понимаю, что это не просто, но должны же быть люди на этом форуме, которые хоть немного шарят в этом
0
place status here
 Аватар для gunslinger
3186 / 2220 / 640
Регистрация: 20.07.2013
Сообщений: 6,012
16.01.2014, 23:54
Из кэша гугла:
Кликните здесь для просмотра всего текста
Доброго времени суток!
Правила игры "Так-тикль":
1. Играют двое, один за крестики, другой за нолики.
2. Исходное поле 4х4:

XOXO


OXOX

3. Игроки по очереди делают ход (влево, вправо, вверх, вниз)
4. Выигрывает тот, кто быстрее составит ряд хотябы из трех своих фишек. Считаются ряды по горизонтали, вертикали и диагоналям.

Суть в том, чтобы написать алгоритм выбора оптимального хода компьютером. В журнале "Наука и Жизнь" 1977 №1 есть небольшая статья про игру, там сказано, что при оптимальных ходах обоих участников, игра будет продолжаться бесконечно.
Я перебираю все возможные варианты поля на 7-8 ходов вперед. Если представить себе все это дело в виде дерева, то листы -- это либо поле с выигрышной комбинацией, либо поле, для которого дальнейшие ходы не посчитаны (ограничение глубины рекурсии). Как по такому дереву можно определить оптимальный ход?

Заранее благодарен.
Извините за глупые вопросы.
Sbtrn. Devil Постоялец www 19 мая 2010 21:57 #1
Интуиция подсказывает следующее:

1) для текущего состояния посчитать минимальное расстояние до вражеской победы X (найти листок с вражеской победой с минимальной глубиной, X = его расстояние от текущего состояния) и до нашей победы Y (аналогично),
2) аналогично посчитать X и Y для состояний после нашего хода (соседних),
3) если для текущего состояния X>Y или X не определён (нет листков с вражеской победой), то выбрать ближайший листок с нашей победой и сделать ход по его ветке (ход на приближение к победе),
4) иначе: если для текущего состояния X<=Y или Y не определён (нет листков с нашей победой), то выбрать из соседних состояний то, у которого самый большой X (ход на отдаление от поражения).
5) если же не определён ни X, ни Y, то без разницы, куда ходить.

Если у нас 3), и есть несколько соседних листков с одинаковым Y, выбрать из них тот, у которого максимальный X (при наличии нескольких ходов, равноприближающих к победе, выбираем тот, который больше отдаляет от поражения).
Если у нас 4), и есть несколько соседних листков с одинаковым X, выбрать из них тот, у которого минимальный Y (при наличии нескольких ходов, равноудаляющих от поражения, выбираем тот, который больше приближает к победе).
Если же есть несколько листков с одинаково максимальными X и минимальными Y, выбрать из них любой.
Arturchik Пользователь www 19 мая 2010 23:54 #2
Sbtrn. Devil
Спасибо за ответ.
Одинакого у нас интуиция работает =)
Данный метод дает сбой в такой ситуации ( E - пустые клетки ):

E E X E
E E O E
O X E O
X O X E

ходят крестиками ( третья сверху фишка во втором столбце вправо ):

E E X E
E E O E
O E Х O
X O X E

Ходят они так из соображений, что нолики уберут свою фишку из третьего столбца, что приведет к скорой победе крестиков. Именно так сработает алгоритм, т.к. для крестиков это ближайшая достижимая победа.
Нолики, ( считаем, что они не дураки ) ходят третьей сверху фишкой первого столбца вправо:

E E X E
E E O E
E O Х O
X O X E

И вот крестики в тупике, как бы они не ходили, победа следующим ходом за ноликами.

В ответ на данную тупость можно предложить следующую идею: найдем варианты, когда при любом моем ходе, победа противника наступит по-любому ( меня загнали в угол ) и будем стараться избегать ходов, которые ведут к этим ситуациям. Самая большая тут проблема в том, что ближайшая победа -- весьма неточная оценка, т.к. противник не достаточно туп, чтоб допустить мою эту самую ближайшую победу.

Правка: 19 мая 2010 23:55
Monstradamus Постоялец www 20 мая 2010 4:21 #3
Минимаксный метод и альфа-бета отсечения курить нужно, как я понимаю.
Sbtrn. Devil Постоялец www 20 мая 2010 11:44 #4
Arturchik
> Ходят они так из соображений, что нолики уберут свою фишку из третьего столбца,
> что приведет к скорой победе крестиков. Именно так сработает алгоритм, т.к. для
> крестиков это ближайшая достижимая победа.
> Нолики, ( считаем, что они не дураки ) ходят третьей сверху фишкой первого
> столбца вправо:

> И вот крестики в тупике, как бы они не ходили, победа следующим ходом за
> ноликами.

Но при таком раскладе "расстояние до поражения" и "расстояние до победы" должны быть одинаковыми (по 3), и в действие вступил бы пункт 4) (про отдаление от поражения). Или не?
Arturchik Пользователь www 21 мая 2010 11:56 #5
Sbtrn. Devil
При таком раскладе получается, что ранооцененные ходы:
1. ходить вверх крестиком вторго столбца, третий сверху
2. ходить им же вправо
3. ходить вверх крестиком третьего столбца, четвертый сверху
4. ходить им же вправо

во всех этих вариантах считается, что самая близкая победа наступит после "правильного" (выгодного крестикам) хода ноликов, а у ноликов, во всех вариантах, победа дальше на один ход.
Sbtrn. Devil Постоялец www 21 мая 2010 12:19 #6
Гм. Ну тогда, действительно, остаётся ходить только по веткам, по которым меньше поражений (или столько же, но они дальше), и только при отсутствии поражений в поддереве следующего хода искать ход на победу.
Как ещё вариант, ходить на победу, если ближайшее поражение дальше ближайшей победы не менее, чем на 2-3-4 хода, и веток с поражениями в этом поддереве меньше, чем веток без них - тогда можно будет успеть сориентироваться на следующем ходу.
Arturchik Пользователь www 21 мая 2010 16:20 #7
Может быть, стоит идти не к просто победам, а к победам, как в примере победа ноликов, потому как обычная победа слишком наивная и в этом вся проблема.
Sbtrn. Devil Постоялец www 21 мая 2010 22:39 #8
Если попадётся поддерево, заканчивающееся победами, то, конечно, логично двигаться к нему. Но часто ли оно такое бывает?
Arturchik Пользователь www 22 мая 2010 9:06 #9
нет, такое бывает крайне редко
Sbtrn. Devil Постоялец www 22 мая 2010 12:35 #10
Тогда остаётся ходить на избежание поражения и на победу только в том случае, если она лежит в поддереве, где меньше поражений.
Arturchik Пользователь www 23 мая 2010 23:23 #11
Это все тоже не прокатывает. Ладно, спасибо большое всем за помощь, сделал кое-как через одно место.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.01.2014, 23:54
Помогаю со студенческими работами здесь

искусственный интеллект
Кто может сталкивался с написанием програм связаных с искусственным интеллектом? Особенно с нейронной сетью. Мне нужен пример написания и...

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

Искусственный интеллект для мобов
Доброго времени суток. Мне нужно написать искусственный интеллект для мобов в игре-платформере. Что можете посоветовать? С чего начать? О...

Как создать искусственный интеллект для игры "крестики-нолики"?
Добрый день. Сразу говорю, новичок здесь и такой же не особо опытный в программировании на питоне. Поэтому прошу помощи. В общем идея...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru