Как играются и выигрываются игры.

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

Для начала, как выглядит постановка задачи. Постановка задачи для конкретного хода в игре выглядит так:

Какое действие из множества возможных нужно осуществить в текущей ситуации, такое что приведет к выигрышу с максимальной вероятностью?

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

Подобным же образом можно сформулировать постановку для всей игровой партии: Осуществлять последовательно выбор действия из множества возможных на момент выбора, и выбор осуществлять каждый раз такой, который с максимальной вероятностью приведет к выигрышу игры, и выбирать пока не будет достигнут конец игры.

Соответствует ли текущее состояние состоянию окончания игры?

Есть еще кучка уточнений, типа выбирать максимально подходящее действия из известных вариантов на текущий момент, или с возможностью досчитать варианты и с уточнением допустимого времени расчета. Есть еще допущения, по которым учитываются умения соперника, типа ввода его в заблуждение, или что бы он расслабился, или еще чего. Это все множества возможных подразумеваний, которые учитываются человеком при решении задачи выиграть игру.

Но в итоге, задачу выигрыша свели к расчету соответствия действия в текущий момент поставленной задаче. Необходимо и достаточно расчета соответствия, т.е. прогнозирования.

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

Чуть разверну, какие свойства прогнозирования потребуются в расчете.

Синонимы в постановках задачи - это соответствия с соотношением много к одному.

Определения "пока не выполнится", или "пока выполняется" очередной шаг прогноза, одного символа или целого блока.

это обычные квантификаторы в регулярных выражениях. На структурах подобных регулярным выражениям я основываю разбор прошедшей истории.

Это квантифицируемые зависимости. Регулярные выражения имеют оператор квантификатора - перебирать последовательно шаблоны текста, пока не будет выполнено условие, или пока выполняется условие, или как либо по другому.

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