Как правильно хранить дерево игры? Минимакс
собираюсь написать ИИ для шашек на основе минимакс алгоритма, но у меня возникает вопрос, нельзя, ли избежать хранения всего дерева игры. Насколько я понял, в каждой вершине дерева должна находится текущая позиция, из которой выходят ветки, показывающие новые позиции после совершения доступных ходов. Так как алгоритм вызывается рекурсивно, то все позиции, созданные в этом узле будут хранится до выхода из рекурсии. А это влечет за собой экспоненциальные затраты памяти. Нельзя ли как-то этого избежать?
function minimax(position, depth, maximizingPlayer)
if depth == 0 or game over in position
return static evaluation of position
if maximizingPlayer
maxEval = -infinity
for each child of position
eval = minimax(child, depth - 1, false)
maxEval = max(maxEval, eval)
return maxEval
else
minEval = +infinity
for each child of position
eval = minimax(child, depth - 1, true)
minEval = min(minEval, eval)
return minEval