дерево поиска игр, я должен сначала построить дерево? - PullRequest
3 голосов
/ 22 октября 2010

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

1 Ответ

3 голосов
/ 22 октября 2010

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

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

...