За подробностями, если реплика заинтересовала, позвольте адресовать к давнишним материалам на тему, ссылки в левом сайдбаре (сам, не поверите, очень внимательно читал и перечитывал, пытаясь по прошествии времени вспомнить подробности алгоритма AI, приданного в помощь нейронной сети и являющегося, без ложной скромности, эксклюзивной разработкой автора). В любой момент вы можете найти эту игрушку в моем гитхабе, она носит легко запоминающееся название Tic-Tac-Toe-AI-with-Neural-Network-Resurrections.
Здесь же кратко напомню внешнюю фабулу приложения, написанного в шутку, но всерьез выстраивающего нейронную сеть на основе Ruby-обертки библиотеки FANN, играя в крестики-нолики: после первого запуска программа, абсолютно не умеющая играть в tic-tac-toe - проигрывает рандомно несколько десяткой тысяч партий (определено в настройках, меняйте и экспериментируйте, при желании), что занимает, в зависимости от ресурсов вашего рабочего компьютера, одну-две минуты. В качестве итога будет создан расширенный лог-файл в формате csv, о чем приложение известит соответствующим мессаджем консоли, пригласив к игре.
Fast Artificial Neural Network Library is a free open source neural network library, which implements multilayer artificial neural networks in C with support for both fully connected and sparsely connected networks. Cross-platform execution in both fixed and floating point are supported. It includes a framework for easy handling of training data sets. It is easy to use, versatile, well documented, and fast.
Следующий запуск (также все последующие, пока в директории приложения находится единожды сформированный лог) начнется, как это делают любые компьютерные игрушки - с загрузки данных (здесь все значительно быстрее) в оперативную память, что визуально сопровождено бегущей строкой вашего терминала. В скобках: логика программки исправно отрабатывает в консолях Linux и Windows, но в винде процесс игры способен выглядеть несколько хуже. И вот теперь Artificial Intelligence готов играть с вами: после окончания каждой партии тут же начинается новая, очередность ходов (нейронка умеет играть как первым, так и вторым номером) выбирается случайным образом.
Алгоритм AI был несколько изменен по сравнению с предыдущим релизом, что позволило ощутимо улучшить уровень игры виртуального оппонента. На самом деле, мне практически не удается обыграть своего маленького франкенштейна, который всегда сводит игру как минимум к ничьей, если не всегда к выигрышу. Если вы сумеете выиграть, либо же программка откажется продолжить игру - это явно нештатная ситуация, вам необходимо выйти из приложения (q + Enter), удалить лог и запустить процесс обучения заново.
27.03.2023. Теперь нет необходимости вручную удалять лог. Если Artificial Intelligence проигрывает, все необходимые действия будут совершены автоматически. То же самое происходит, если AI попадает в ловушку, взгляните: любой ход ведет к поражению, стало быть:
Human, choose a position between 1-9: 7
O | X | X
----------
4 | X | 6
----------
O | O | 9
Unacceptable moves: ["4", "6", "9"]
Sorry. TimeOut. AI will rebuild the game log now. Please wait...
The Artificial Intelligence training process works: [*****]
Done. You can start playing.