Как правильно хранить дерево игры? Минимакс

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

 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

Ответы (0 шт):