Форум программистов, компьютерный форум, киберфорум
ИИ, нейросети, LLM, ML, Data Science, ИИ-агенты
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
0 / 0 / 0
Регистрация: 22.02.2016
Сообщений: 57

Tic tac toe, принятие решения

14.09.2016, 16:15. Показов 2300. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Совсем недавно начал изучение ИНН, и на примере игры в X0, встал вопрос.
Как нейронная сеть должна принимать решение о ходе?
Должна ли она анализировать каждый возможный ход (каждую свободную ячейку) и выдавать вероятность победы для каждой ячейки?
Либо на выходе нейросети должен быть индекс ячейки?

Если не сложно, объясните, как должна работать нейросеть с игрой X0 (поле 10 на 10).
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.09.2016, 16:15
Ответы с готовыми решениями:

Tic tac toe, топология сети, метод обучения
Привет. Нет времени изучать все топологии сетей, так что прошу подсказки. Какая топология сети подойдет для игры крестики нолики...

Tic tac toe
Добрый день, уважаемые комрады! Можете помочь найти промах в коде, чтобы при победе игрока выводился следующий текст "Игрок...

Tic-Tac-Toe
в задании сказано сделать игру с применением MVC и AI сделать как класс singleton подскажите пожалуйста, как в java делаются классы MVC? ...

13
698 / 572 / 75
Регистрация: 20.09.2014
Сообщений: 3,704
14.09.2016, 16:52
Абстрагируясь от конкретного метода (ИНС), чисто по теории принятия решения: в чем заключается решение на каждом ходе? Выбор из какого множества вариантов решения?
0
0 / 0 / 0
Регистрация: 22.02.2016
Сообщений: 57
14.09.2016, 17:02  [ТС]
Цитата Сообщение от Mikhaylo Посмотреть сообщение
в чем заключается решение на каждом ходе?
полагаю, оценить каждый ход и выбрать наиболее благоприятный... или как?
0
698 / 572 / 75
Регистрация: 20.09.2014
Сообщений: 3,704
14.09.2016, 17:46
10х10 - это значит 100 вариантов решения, с каждым шагом уменьшается вплоть до одного решения. Всего шагов 50, максимум. Допустим мы сделали уже каким-то образом 25 ходов, спрашивается: надо ли решения прорабатывать на всю игру сразу или "жить одним днем"? Ответ: если ты умеешь находить оптимальные стратегии на всю игру, то сделаешь оптимальный 26-й ход, затем после хода противника у тебя будет иметься больше информации о ходе игры, чем на предыдущем ходе, следовательно, на 27-м ходе стратегия может обновиться и стать оптимальнее по отношению к новой игровой ситуации. Значит надо "жить одним днем", строить игру по стратегии вредно.

Добавлено через 8 минут
Теперь о благоприятности ходов. Я могу точно сказать, что ход, который выигрывает игру, является благоприятным. Даже трудно сообразить, какой ход неблагоприятный.. наверное тот, после которого у соперника нет других ходов, кроме выигрышных. Все остальные ходы имеют неоцениваемую благоприятность, так как все зависит от соперника. Можно ввести искусственные критерии благоприятности, но хотелось бы это делать как-то объективно, а не наобум. Трудно...

Добавлено через 7 минут
Ну да. Допустим ИНС обучается на чужих партиях. Благоприятными являются ходы у игрока, который выиграл; неблагоприятные - у проигравшего. Можно учиться на базе собственных игр, но выводы делать после окончания партии.

Добавлено через 9 минут
На вход нейронной сети подаются игровые ситуации - массив из нулей, крестиков и пустых ячеек. 100 входов. Каждую игровую ситуацию можно поворачивать на углы 90, 180, 270 градусов, чтобы увеличить объем обучающей выборки в 4 раза. На выходе - один из 100 вариантов решения. Я только не знаю, как быть с занятыми ячейками.. ведь из 100 вариантов часть решений запрещены. Может быть на выходе должен быть просто порядковый номер пустой ячейки?
1
0 / 0 / 0
Регистрация: 22.02.2016
Сообщений: 57
15.09.2016, 01:30  [ТС]
я походу понял. для поля 10х10 будет всего 100 входных нейронов, у каждого 100 входов. Каждый нейрон соответствует позиции на доске (от 1 до 100), а входной вектор содержит значения {-1; 0; 1} (какое значение за что отвечает пока не разбирался, все зависит от функции нейрона и корректировки весов). На выходе у нейрона будет вероятность корректного хода, от 0 до 1.
В итоге, проходим все нейроны, и ставим крестик в позиции, нейрон которой выдал максимальный результат.

Так я это представляю. Буду рад любым комментариям, поправкам итд.

Получается персептрон из 1 слоя, правильно?
Есть ли смысл делать многослойный персептрон, и, если, да, какие задачи должен выполнять скрытый слой? (полагаю 1 скрытого слоя будет за глаза).
А то получается как то не интересно, всего 1 слой из 100 нейронов...
0
698 / 572 / 75
Регистрация: 20.09.2014
Сообщений: 3,704
15.09.2016, 05:16
В отличие от задачи распознавания изображения здесь нейронная сеть должна быть внимательной к каждому "пикселю": чуть не там стоит нолик и все, ты проиграл!..
0
0 / 0 / 0
Регистрация: 22.02.2016
Сообщений: 57
15.09.2016, 07:38  [ТС]
ну так для этого и существует обучение.
ток пока не понятно как обучать. на строго детерминированых наборах можно предсказать верно ли сделан каждый ход, но как узнать сделан ли правильно ход при обучении на себе-же (игра ИНН против ИНН или против алгоритма)? Единственным маркером будет результат игры..
Не знаю насколько корректно будет корректировать каждый звдействованый в игре нейрон по итогам игры, вместо немедленной корректировки, когда корректность каждого хода известна за ранее.
0
 Аватар для TimKruz
142 / 40 / 14
Регистрация: 16.06.2016
Сообщений: 239
15.09.2016, 14:14
Цитата Сообщение от Mikhaylo Посмотреть сообщение
Все остальные ходы имеют неоцениваемую благоприятность, так как все зависит от соперника.
Очевидно же, что соперник скорее всего не идиот и даже из огромного множества выберет тот вариант, который приведёт к его скорейшему выигрышу. А любой наш ход может ускорить или замедлить выигрыш противника - соответственно, и благоприятность каждого хода оценить возможно. Например, выигрыш при xxxxx, имеем oxxx, следовательно ход oxxxo будет более благоприятным, чем ooxxx, потому что, хотя он и не ведёт к выигрышу, он отдаляет от выигрыша нашего противника. Потому что если мы пойдём ooxxx, следующий ход противник, не будучи идиотом, пойдёт ooxxxx и приблизится к выигрышу.

Цитата Сообщение от Mikhaylo Посмотреть сообщение
Я только не знаю, как быть с занятыми ячейками.. ведь из 100 вариантов часть решений запрещены. Может быть на выходе должен быть просто порядковый номер пустой ячейки?
Мы подаём в нейросеть не только ситуации, но и решения ситуаций. А так как все решения находятся в пустых ячейках, то и нейросеть будет всегда ходить только в пустые ячейки... Впрочем, я слабо представляю себе работу ИНС...

Цитата Сообщение от Bio man Посмотреть сообщение
{-1; 0; 1} (какое значение за что отвечает пока не разбирался, все зависит от функции нейрона и корректировки весов)
А что тут разбираться? -1 = x, 0 = пусто, 1 = o.

Вот только лучше сначала сделать сеть, которая выработает правильную стратегию в игре на стандартном поле 3x3 (как я помню, беспроигрышная стратегия только одна), это будет говорить о том, что модель сети правильная. Потом можно расширить поле до 4x4, и так далее. Беря поле сразу 10x10 есть высокий шанс запутаться, правильно ли работает модель.
1
698 / 572 / 75
Регистрация: 20.09.2014
Сообщений: 3,704
15.09.2016, 19:56
Цитата Сообщение от TimKruz Посмотреть сообщение
А любой наш ход может ускорить или замедлить выигрыш противника - соответственно, и благоприятность каждого хода оценить возможно.
Здесь ошибка в рассуждениях. Многие игры позволяют блефануть, то есть сделать вид, что ты почти выиграл, ан-нет!
Все критерии благоприятности будут искусственные: не понятно, являются ли десять последовательностей xxx лучше, чем одна xxxx. Или кому-то может показаться, что пять xxxx лучше, чем сорок xxx, хотя на самом деле все зависит от конфигурации (игровой расклад 10х10).
0
 Аватар для TimKruz
142 / 40 / 14
Регистрация: 16.06.2016
Сообщений: 239
16.09.2016, 20:18
Цитата Сообщение от Mikhaylo Посмотреть сообщение
Многие игры позволяют блефануть
Крестики-нолики настолько просты, что исключают такой вариант развития игры.

Цитата Сообщение от Mikhaylo Посмотреть сообщение
Все критерии благоприятности будут искусственные: не понятно, являются ли десять последовательностей xxx лучше, чем одна xxxx. Или кому-то может показаться, что пять xxxx лучше, чем сорок xxx, хотя на самом деле все зависит от конфигурации (игровой расклад 10х10).
Одна xxxx на ходе крестиков - это уже выигрыш (xxxxx), одна oxxxx на ходе ноликов - это однозначно oxxxxo, чтобы предотвратить выигрыш крестиков, вне зависимости от количества xxx.

Так что в крестиках-ноликах 10x10 возможна только одна стратегия: закрывать чужие последовательности, пока они не стали четвёрками (oxxxx или xoooo) иначе сразу проигрыш, ну и по пути пытаться собрать свою четвёрку... Блефовать тупо некогда.
0
698 / 572 / 75
Регистрация: 20.09.2014
Сообщений: 3,704
16.09.2016, 20:20
Предложенная тобой стратегия не закрывает всю игру. Что делать в начале игры, чтобы противник не сделал "вилку"?
0
 Аватар для TimKruz
142 / 40 / 14
Регистрация: 16.06.2016
Сообщений: 239
16.09.2016, 20:26
Вообще, не знаю, какая стратегия лучшая в 10 на 10 и возможно ли вообще выиграть, или будет постоянно ничья, или будет всегда побеждать тот, кто ходит первым... А ведь ещё бывают крестики-нолики в кубе (3x3x3, 10x10x10)...

Вот что нашёл про стратегии:
http://www.iqfun.ru/articles/t... rman.shtml
http://www.dokwork.ru/2012/11/tictactoe.html
Думаю, пригодится.

Добавлено через 32 секунды
Цитата Сообщение от Mikhaylo Посмотреть сообщение
Что делать в начале игры, чтобы противник не сделал "вилку"?
Лучший ход в крестиках-ноликах - в центр поля, это вроде бы вообще без вариантов...
0
Модератор
Эксперт функциональных языков программирования
3134 / 2281 / 469
Регистрация: 26.03.2015
Сообщений: 8,878
16.09.2016, 23:11
имхо в крестиках-ноликах 10 на 10, кто первым начинает, тот выигрывает
по крайней мере, я играл в рендзю, и там есть специальные ограничения на второй ход, чтобы выравнять шансы
1
698 / 572 / 75
Регистрация: 20.09.2014
Сообщений: 3,704
17.09.2016, 05:46
Цитата Сообщение от TimKruz Посмотреть сообщение
Лучший ход в крестиках-ноликах - в центр поля, это вроде бы вообще без вариантов...
Вы не поняли. Под началом игры я понимаю не только самый первый ход, а время, когда еще не появились тройки xxx и четверки xxxx.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.09.2016, 05:46
Помогаю со студенческими работами здесь

Tic Tac Toe (Крестики-нолики)
Ребятки! Помогите с заданием! Я не совсем понимаю, что вообще нужно сделать. Насколько я понял не нужно писать ии, а нужно сделать так,...

MiniMax Tic tac toe 10x10
Изучаю минимакс алгоритм и пытаюсь понять следующее. В поле 10х10 мало 3 оценок (-10 выйграл противник, 0 ничья, +10 выйграл игрок), ведь...

Tic-tac-toe на С++ (крестики нолики)
Доброго времени суток уважаемые коллеги - программисты. Я начинающий программист. В С++ только недавно. Можно сказать, что это приложение...

Крестики-нолики (tic-tac-toe) двумерный массив
Требуется помощь в создании простой игры - крестики нолики (tic-tac-toe) с помощью двумерного массива. Если возможно, код сделать сжато...

Принятие решения по критериям Спирмена и Кендалла
Здравствуйте. В результате использования непараметрических критериев Спирмена и Кендалла для анализа корреляции двух переменных...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru