Если робот сыграет сам с собою много-много партий, то сам научится хорошо играть. Вот такую гипотезу мы сформулировали для обучения робота. Допускаем, что есть две различающиеся ситуации: Число комбинаций условно невелико, и за некоторое количество партий можно сыграть все комбинации хотя бы по одному разу или по несколько раз. Число комбинаций условно велико, и маловероятно, что даже за большое количество партий удастся сыграть все комбинации хотя бы по разу или по несколько раз. Примером первой ситуации являются «Крестики-Нолики». При поле 3X3 и двух типах фишек общее число возможных комбинаций равно 3 в 9 степени, то есть 19683 комбинаций.  При этом есть еще и невозможные комбинации. Например, на поле только 7 крестиков, или ряд крестиков и ряд ноликов и так далее. Фактически корректных комбинаций будет в разы меньше. Мы даже не будем оптимизировать с учетом симметричности, а возьмем все как есть и просто переберем. Возможно, что, например, в шахматах ситуация другая и комбинаций уже много.Теоретически, это 33 в 64 степени, то есть 1,53 на 10 в 97 степени.  Это довольно много.   Конечно, могут быть ситуации и глупые, и невозможные, но это все равно очень много.Для такой ситуации уже все комбинации не перебрать, нужно искать закономерности.Оставим шахматы как пример второй ситуации и вернемся к "Крестики-Нолики".Пусть робот сыграет много партий случайным выбором и сам определит «лучшие» ходы как те, при которых процент победных партий наибольший. повторяем заданное число раз:  присваиваем отметку ходящей стороны  цикл "пока есть доступные ходы":    делаем ход:      делаем ход из доступных случайным выбором      формируем кодовое значение комбинации      запоминаем комбинацию в истории текущей партии      делаем проверку на победу        если победа, то:           присваиваем статус "победа"          выходим из цикла "пока есть доступные ходы"      удаляем ход из списка доступных      меняем сторону  если по окончании доступных ходов статуса нет, то "ничья"фиксация:цикл по каждой стороне по каждой комбинации из партии:  если такая комбинация есть, то +1 в количество с соответствующим статусом  если такой комбинации нет, то добавляем комбинацию и ставим 1 в количество с соответствующим статусом   Задаем количество партий, и робот играет сам с собой за обе стороны. Уже со 100 000 партий робот находит 2739 комбинаций для крестиков и это количество не увеличивается с дальнейшим увеличением числа партий. При 1 миллионе партий и при 10 миллионах партий количество комбинаций остается тем же. Будем считать, что это и есть полное число корректных комбинаций. Теоретически, если робот выявил не все уникальные комбинации, то в процессе игры робот столкнется с неизвестной комбинацией и мы это увидим. Для выбора хода определяем возможные комбинации и по каждой возможной комбинации смотрим, в скольких процентах случаев достигается победа. Комбинация с наибольшим процентом и будет «лучшим» ходом. Рассмотрим игру робота за «Крестики». Первый ход для «Крестиков»: Ожидаемо, что лучший первый ход за «Крестики» - в самый центр поля. Дальше смотрим все возможные ходы для «Ноликов» и на каждый из них все возможные ходы для «Крестиков».  Ходы для «Ноликов» смотрим все, а за «Крестики» ходим «лучшими» ходами, то есть на каждый возможны ход «Ноликов» ходим «лучшим» ходов «Крестиков». Возможные ответные ходы за «Нолики» после первого хода "Крестиков" в центр поля: Перебираем все возможные ходы за «Нолики» и ставим «лучший» за «Крестики». История после ответного хода за «Крестики» получается такая:  Для последующих ходов все аналогично. В итоге получаем полный перебор сыгранных партии за «Крестики», в которых перебраны все ходы за «Нолики», и на каждый ход «Ноликов» поставлен «лучший» ход «Крестиков»: Видно, что итог соответствует реальной игре. Если после первого хода «Крестиков» «Нолик» ставится на боковое поле, то при корректной игре «Крестики» гарантированно выигрывают.  Если после первого хода «Крестиков» «Нолик» ставится в угол, то «Нолики» могут вытянуть самое большее на ничью, но не выиграть.  Подробнее по каждым ходам:      Теперь создадим базу «лучших» ходов для «Крестиков». Для этого будем брать каждую комбинацию «Ноликов», определять возможные ходы для «Крестиков» и фиксировать ход, при котором процент выигранных партий наибольший.  Получили базу «лучших» ходов для «Крестиков»: Итак, БИНГО (!) Гипотеза подтверждена: робот, сыграв за несколько секунд 100 000 партий случайным перебором, собрал себе базу всех возможных комбинаций и определил «лучшие» ходы для каждой комбинации. Теперь во время игры робот ничего не обдумывает, а просто вытаскивает из памяти «лучший» ход для текущей ситуации.