Хорошее использование рекурсии в шахматном программировании? [закрытый]

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

6 ответов


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

пример:

http://www.devshed.com/c/a/Practices/Solving-Problems-with-Recursion/6/


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

вы должны вызвать ту же функцию для черного игрока, обменивая роли на черных и белых, таким образом оценивая "опасность" хода противника.

затем снова для белых и т. д.

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


Depth-first search является основным кандидатом на рекурсию. поэтому, если вы программируете ИИ для домашнего задания, то алгоритм lookhead ИИ, чтобы попытаться выяснить лучший следующий шаг, был бы хорошим кандидатом.

будьте осторожны - вы можете запустить из памяти быстро. Вы, вероятно, хотите ограничить количество ходов глубоко ИИ может смотреть.


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

Если вы обнаружите рекурсию, просто приведите вас к месту, где вы были, просто сломайте этот вызов. Это известно как откат


не шахматы, а классическая головоломка с шахматными фигурами:http://en.wikipedia.org/wiki/Eight_queens_puzzle


вы думаете о откат