Назад | Содержание| Вперёд 15. 2. Минимаксный принцип Для игр, пр...

Назад | Содержание| Вперёд

15. 2.    Минимаксный принцип

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

Обратите внимание на то, что мы здесь делаемопределенное различие между "деревом игры"и "деревом поиска". Дерево поиска - этотолько часть дерева игры (его верхняя часть), т. е.та его часть, которая была явным образомпорождена в процессе поиска. Таким образом,терминальные поисковые позиции совсем необязательно должны совпадать с терминальнымипозициями самой игры.

Очень многое зависит от оценочной функции,которая для большинства игр, представляющихинтерес, является приближенной эвристическойоценкой шансов на выигрыш одного из участниковигры. Чем выше оценка, тем больше у него шансоввыиграть и чем ниже оценка, тем больше шансов навыигрыш у его противника. Поскольку один изучастников игры всегда стремится к высокимоценкам, а другой - к низким, мы дадим им именаМАКС и МИН соответственно. МАКС всегда выбираетход с максимальной оценкой; в противоположностьему МИН всегда выбирает ход с минимальнойоценкой. Пользуясь этим принципом (минимакснымпринципом) и зная значения оценок для всех вершин"подножья" дерева поиска, можно определитьоценки всех остальных вершин дерева. На рис. 15.2показано, как это делается. На этом рисунке видно,что уровни позиций с ходом МАКС'а чередуются суровнями позиций с ходом МИН'а. Оценки вершиннижнего уровня определяются при помощиоценочной функции. Оценки всех внутренних вершинможно определить, двигаясь снизу вверх от уровняк уровню, пока мы не достигнем корневой вершины. Врезультате, как видно из рис. 15.2, оценка корняоказывается равной 4, и, соответственно, лучшимходом МАКС'а из позиции  а  -  a-b

. Лучший ответ МИН'а на этот ход  -

b-d

,и т.д. Эту последовательность ходов называюттакже

основным вариантом

.Основной вариант показывает, какова"минимаксно-оптимальная" игра для обоихучастников. Обратите внимание на то, что оценкивсех позиций, входящих в основной вариант,совпадают.

Рис. 15. 2.  Статические(нижний уровень) и минимаксные рабочие

оценки вершин дерева поиска. Выделенные ходыобразуют основной

вариант, т. е. минимаксно-оптимальную игру собеих сторон.

Мы различаем два вида оценок: оценки вершиннижнего уровня

и оценки внутреннихвершин

(рабочие оценки). Первые из нихназываются также

"статическими"

,так как они вычисляются при помощи"статической" оценочной функции, впротивоположность рабочим оценкам, получаемым"динамически" при распространениистатических оценок вверх по дереву.

Правила распространения оценок можносформулировать следующим образом. Будемобозначать статическую оценку позиции  Р  через  v( P),  а ее рабочую оценку -через   V( Р).  Пусть  Р1,  ...,  Рn  -  разрешенныепреемники позиции  Р.  Тогдасоотношения между статическими и рабочимиоценками можно записать так:

        V( Р)  =  v( P)

если  Р  -  терминальная позициядерева поиска (n=0)

        V( Р)  =  max V( Рi)

                          i

если  P  -  позиция с ходом МАКС'а

        V( Р)  =  min V( Рi)

                          i

если  Р  -  позиция с ходом МИН'а

% Минимаксная процедура:минимакс( Поз, ЛучшПоз, Оц)

% Поз - позиция, Оц - ее минимаксная оценка;

% лучший ход из Поз ведет в позицию ЛучшПоз

        минимакс( Поз,ЛучшПоз, Оц) :-

               ходы( Поз, СписПоз),  !,

                                       % СписПоз - список разрешенных ходов

               лучш( СписПоз, ЛучшПоз, Оц);

               стат_оц( Поз, Оц).               % Поз не имеет преемников

        лучш( [Поз], Поз, Оц) :-

               минимакс( Поз, _, Оц),  !.

        лучш( [Поз1 |СписПоз], ЛучшПоз, ЛучшОц) :-

               минимакс( Поз1, _, Оц1),

               лучш( СписПоз, Поз2, Оц2),

               выбор( Поз1, Оц1, Поз2, Оц2, ЛучшПоз, ЛучшОц).

        выбор( Поз0, Оц0, Поз1,Оц1, Поз0, Оц0) :-

               ход_мина( Поз0), Оц > Оц1,  !;

               ход_макса( Поз0), Оц < Оц1,  !.

        выбор( Поз0, Оц0, Поз1,Оц1, Поз1, Оц1).

Рис. 15. 3.  Упрощеннаяреализация минимаксного принципа.

Программа на Прологе, вычисляющая минимакснуюрабочую оценку для некоторой заданной позиции,показана на рис. 15.3. Основное отношение этойпрограммы -

        минимакс( Поз,ЛучшПоз, Оц)

где Оц  -  минимаксная оценкапозиции Поз, а ЛучшПоз -наилучшая позиция-преемник позиции Поз(лучший ход, позволяющий достигнуть оценки Оц).Отношение

        ходы( Поз, СписПоз)

задает разрешенные ходы игры: СписПоз- это список разрешенных позиций-преемниковпозиции Поз. Предполагается, что цель ходыимеет неуспех, если Поз являетсятерминальной поисковой позицией (листом деревапоиска). Отношение

        лучш( СписПоз,ЛучшПоз, ЛучшОц)

выбирает из списка позиций-кандидатов СписПоз"наилучшую" позицию ЛучшПоз. ЛучшОц- оценка позиции ЛучшПоз, аследовательно, и позиции Поз. Под"наилучшей" оценкой мы понимаем либомаксимальную, либо минимальную оценку, взависимости от того, с чьей стороны ожидаетсяход.

Назад | Содержание| Вперёд









Главная | В избранное | Наш E-MAIL | Добавить материал | Нашёл ошибку | Наверх