Сможете ли вы сделать дерево (игрока) статичным? Или, если вы единственный игрок, вы можете сделать его глобальной переменной для всей программы на стороне игрока, но это зависит от многих вещей, которыми вы не поделились с нами. Я бы по-прежнему предложил вам взглянуть на MCTS: описание Википедии и Здесь приведен пример кода .
С MCTS идея проста: вы вычисляете все свои 900 мс, а затем делаете движение игрока к узлу с самой высокой вероятностью выигрыша. Если вы можете сохранить дерево как глобальную или статическую (или обе:: D) переменную, первое, что вы сделаете в начале следующего хода (или следующего вычисления), - это избавитесь от всех частей предыдущего дерева. , что вы больше не можете получить доступ - потому что вы не в позиции [0][0]
, а в позиции, скажем, [1][3]
... так, чтобы уменьшить размер дерева для вас, что хорошо. Итак, вам нужно заменить исходное дерево новым деревом, которое начинается с узла, на котором вы сейчас находитесь. Хорошо, что вы предварительно вычислили некоторые значения, теперь это зависит от вашей реализации, от того, как вы хотите, чтобы узлы были исследованы и / или обновлены по вероятности. Но по ходу игры программа должна иметь достаточно данных, чтобы гарантировать высокую вероятность выигрыша.
Этот подход исключительно хорош, потому что он не вычисляет вероятности шагов, которые вы не предпримите, когда вы их знаете, вы не собираетесь их выполнять (об этом вы не упомянули в своем подходе, и я нахожу его необходимость, поэтому я и ответил).
Извините за любые ошибки, я уточню / обновлю / исправлю вещи по запросу.
И все, что вы делаете, кажется, соответствует некоторой схеме университетского образования, см., Например, , если это не ваш случай, вы вполне могли бы вдохновить там. Если вам необходимо выполнить некоторые школьные задания, убедитесь, что вы не обсуждаете слишком подробно и / или не обращаетесь за технической помощью.