Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Алгоритмы > Как делать оценку узла дерева минимакса в шашках? |
Автор: 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 |
Огромное спасибо! Все понял ![]() |