Представление и эвристика игры Connect6 в Прологе
Я хочу представить игру connect6 вики (может быть, предикатный камень (P, X, Y), где P - игрок, X, Y - координаты по хорошему). Также я хочу использовать любую хорошую эвристику, чтобы решить проблему (сделать оппонента). Можете ли вы дать мне подсказку к какой-либо статье об игровом AI в Прологе? Спасибо
2 ответа
Возможно, вы захотите посмотреть деревья игр http://en.wikipedia.org/wiki/Minimax. Чтобы оптимизировать поиск, вы, вероятно, не хотите рассматривать все возможные ходы. Может быть, просто ходы, которые соответствуют существующей фигуре и 6 или менее пробелов от нее.
Тогда вам нужна http://en.wikipedia.org/wiki/Evaluation_function. Возможно, что-то вроде присвоения оценки "насколько я близок к завершению линии" по всем строящимся линиям.
Создание и оптимизация игрового дерева - это скорее механический процесс. Создание функции оценки - забавная часть, которая придаст вашему искусственному противнику уникальный вкус.
Поиск в Google по запросу "Пролог дерева минимаксных игр" оказался интересным: http://staff.science.uva.nl/~arnoud/education/ZSB/2009/
Если вы реализуете Connect6 на конечной плате, то возможным представлением для этой игры будет список списков переменных, изначально не связанных. Вы бы "поместили камень", объединив переменную с одним из атомов black
или же white
, Затем вы можете проверить, является ли позиция P
все еще пусто с var(P)
, Это представление должно быть намного быстрее, чем список stone/3
термины. Это работает, потому что в Connect6 вы никогда не сможете удалить камень.
Я предполагаю, что под эвристикой вы подразумеваете функцию оценки, подходящую для минимаксного, негамаксического или альфа-бета-поиска. Принимая во внимание правила игры, я бы предложил, чтобы для каждого игрока вы подсчитали количество рядов длины пять и забили те 5, забили те ряды длины 4 4 и т. Д. Это дает вам два балла S1 и S2. Вычитание S2 из S1 дает относительное преимущество для игрока 1. Затем найдите способ нормализовать их в диапазоне [-1,1] или оцените ситуацию, когда игра превышает бесконечность минус бесконечность. (Как представить все, что в Прологе, оставлено в качестве упражнения.)