Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Алгоритмы > Как делать оценку узла дерева минимакса в шашках?


Автор: kalexi 8.9.2015, 12:40
Разбираюсь с алгоритмом минимакса на основе игры шашки. Далее изложение моего понимания работы алгоритма со этой задачей:

Для каждого узла дерева мы можем получить оценку: 0 - ничего не произошло, 1 - была съедена шашка противника.

  0
 / \
0   A
   / \
  0   B


Тут если в А и B была съедена шашка, то какой результат должен оказаться в A? Т.е. мы же не можем дать оценку только на основании терминальной позиции B, т.к. в A тоже произошло событие поедания шашки соперника.

Т.е. если у нас от этого узла отходят дочерние и в них тоже есть оценка (т.е. в них тоже была съедена шашка), то какую результирующую выбирать?

Спасибо!

Автор: ksnk 8.9.2015, 13:23
Оценочная функция обязана оценивать всю позицию на карте. Для простоты - разница между количеством своих и чужих шашек.  Неплохо бы в ней учитывать дамки и/или минимальное расстояние от шашек до "последней линии", возможность свободного хода или еще какие тактические навороты... "была съедена шашка"- это не оценочная функция.

По теории - более "правильное" значение оценочной функции получается в наиболее "глубоких" веточках. Так что значение функции в узле - никого не интересует. Значение в узле - максимум значений из всех веточек, для своего полухода и минимум всех веточек для полухода противника.

Если A и B - это два полухода одного хода (ход белых-ход черных), то значение функции "разница между количеством своих и чужих шашек" в точке В осталось 0-м. То есть в узле А получится 0.

Автор: kalexi 8.9.2015, 17:49
Огромное спасибо! Все понял smile  Плюсанул бы но не могу(

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)