Как начать с Гомоку? - PullRequest
       39

Как начать с Гомоку?

3 голосов
/ 13 марта 2010

Я читал о Гомоку , что это может быть реализовано с использованием алгоритмов Minimax и Alpha-Beta Pruning Итак, я прочитал эти алгоритмы и теперь понимаю, как будет решаться игра. Но когда я сел за код, я столкнулся с проблемой, как подойти к нему.

Как в,

  • Как спроектировать функции-прототипы, такие как getNextMove или Max (Move)?
  • Как будет искать следующий ход?
  • До тех пор, пока я не должен применить минимаксный алгоритм.
  • Я знаю, что могу найти код в Интернете, но я хочу сделать это сам.

Может кто-нибудь указать мне правильное направление?

1 Ответ

5 голосов
/ 13 марта 2010

алгоритм минимакса, представленный в учебнике, обычно применяется в простых играх, например Tic-Tac-Tou, где конечные состояния достижимы в течение нескольких ходов между минимальным и максимальным игроками. Однако для Гомоку невозможно достичь всех конечных состояний. Почему мы должны достичь конечных состояний? Нам нужна оценка для движения, то есть, хорошо ли это движение или нет.

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

Предположим, что у вас очень умная функция оценки, тогда вы сможете каждый раз находить оптимальный ход без поиска. Поэтому, прежде чем вы сделаете какую-либо мин-макс, альфа-бета, вы, вероятно, разработаете хорошую функцию оценки. Хорошим примером является исходный код Emacs Gomoku, в котором есть хороший AI-плеер без использования поиска.

Далее вы переходите на мин-макс и альфа-бета.

Кажется, я не ответил на ваши вопросы. На самом деле мне не нужно. Я предполагаю, что вы знаете детали min-max или даже альфа-бета-поиска tic-tac-tao. Разработав функцию оценки, вы получите лучшее представление о гомоку и разработаете алгоритм поиска для него так же, как вы можете сделать это сейчас для tic-tac-tou.

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