pseudcode для MinMax алгоритма

голоса
3

Я хочу, чтобы получить псевдокод MinMax алгоритма. Я должен сделать 2 функции, DEF maxAgent (GameState, глубина) и minAgent. Есть ли какой-либо орган, который имеет право и легко псевдокод для него.

Задан 29/07/2010 в 05:13
источник пользователем
На других языках...                            


2 ответов

голоса
2

MINMAX алгоритм пытается максимизировать счет для игрока A и свести к минимуму счета для игрока B. Учитывая узел, вы можете найти конечный результат от оптимальной игры, взяв максимум (для A) или мин (для B) партитур для последующие узлы.

Предполагая, что листовые узлы имеют назначенную победителя (1 для A, -1 для B), а все остальные узлы имеют оценку 0. Затем можно вычислить конечный результат выигрыша для А с чем-то вроде

  getMaxScore(node) {
    score = node.score;
    for each child node 
       score = max(score, getMaxScore(node))  
    next

    return score;
  }

Это основной алгоритм. Вы можете укоротить оценка как только счет становится 1, то у вас есть известный выигрыш для А.

Алгоритм является одинаковым для B, getMinScore, только вы используете функцию мин, и если короткое замыкание, обратите внимание на -1.

Ответил 29/07/2010 в 05:43
источник пользователем

голоса
2

Два игрока, А и В, по очереди, чтобы играть.

Нам дана функция подсчета очков п, которая оценивает данную позицию платы, P. Большие значения F (P) лучше для А и хуже B (т.е. F (P) является оценка того, как «хорошо» P для A не делая дальнейший предпросмотр).

Рассмотрим положение доски P.

Если P является узлом листа (т.е. P является выигрышной позицией или мы рассмотрели, как далеко вперед, как мы хотим), то мы возвращаем F (P) как оценка для этого узла.

В противном случае P не является листовым узлом и имеет детей C1, ..., Cn. Мы рекурсивно вычислить оценки для детей, давая S1, ..., Sn.

Если А играет на Р, то оценка для Р макс {S1, ..., Sn}, поскольку A будет всегда играть, чтобы максимизировать свое преимущество.

Если B играет на P, то оценка для Р мин {S1, ..., Sn}, так как B будет всегда играть, чтобы минимизировать преимущество в.

Этого должно быть достаточно, чтобы превратить в код.

После того, как вы сделали это, взгляните на альфа-бета обрезку, которая должна (резко) уменьшить объем поиска, что вам нужно сделать. Альфа-бета отсечение основана на идее о том, что если вывод, что B может играть, чтобы заставить максимальное преимущество A, чтобы быть М, то нет никакого смысла в рассмотрении любого поддерева которого оценка больше М, так как B никогда не допустит такой вариант!

Ответил 29/07/2010 в 07:39
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more