"Информатика (базовый и углублённый уровень)", Гейн А.Г., Сенокосов А.И.
Оценочная функция помогает программе сравнивать игровые позиции и выбирать ход. Она переводит положение объектов на игровом поле в число: чем выгоднее позиция для выбранного игрока, тем выше её оценка. Стратегия перебирает допустимые действия, анализирует получающиеся позиции и учитывает возможные ответы соперника. Такой подход нужен, когда невозможно заранее полностью просчитать всю игру.
Текст подготовлен нейронной сетью по теме параграфа и не заменяет учебник — важные факты и формулировки сверяйте с ним.
Оценочная функция — правило, которое по текущему состоянию игры вычисляет числовую оценку его выгодности для выбранного игрока. Чем больше число, тем предпочтительнее позиция, если именно так задан смысл функции. Она нужна, чтобы сравнивать варианты хода не только по названию, но и по измеримому критерию.
Игровая позиция — состояние игры, определяемое расположением объектов и другими условиями, важными для выбора хода. Например, это могут быть клетки игрового поля, количество ресурсов и очередь хода. Позиция нужна программе как точное описание ситуации, по которому можно получить дальнейшие действия.
Ход — допустимое действие игрока, переводящее игру из одной позиции в другую. Допустимость означает, что действие не нарушает правила игры. Перечень ходов позволяет стратегии выбрать только реальные варианты, а не произвольные изменения позиции.
Стратегия на основе оценочной функции — способ выбирать ход, сравнивая оценки позиций, к которым приводят возможные ходы. Сначала программа получает список действий, затем оценивает их последствия. Такая стратегия нужна, когда полный расчёт всей партии слишком сложен.
Сначала точно задают правила игры и способ представления позиции. В описании должны быть видны расположение объектов, игрок, которому принадлежит ход, и условия окончания партии. Это необходимо потому, что без однозначной позиции нельзя надёжно определить допустимые действия и проверить, завершилась ли игра.
Оценочную функцию выбирают из цели конкретного игрока. Если нужно сохранить больше ресурсов, приблизиться к победе или ограничить соперника, эти свойства включают в расчёт. Более выгодным позициям присваивают большие значения, а проигрышным и опасным — меньшие, чтобы сравнение действительно помогало выбирать действие.
Для каждого допустимого хода строят новую позицию и вычисляют её оценку. Затем полученные числа сравнивают между собой, например выбирают максимальное значение. Оценивают именно результат действия, потому что положение до хода одинаково для всех рассматриваемых вариантов и не показывает, какой из них лучше.
Одного собственного хода часто недостаточно для разумной стратегии. Для каждого варианта рассматривают возможные ответы соперника и предполагают, что он выберет наиболее невыгодный для нас. Поэтому среди ответов берут худшую оценку, а затем выбирают такой собственный ход, у которого эта худшая оценка выше, чем у альтернатив.
После создания стратегии её проверяют на разных начальных позициях и партиях. Одна функция может хорошо работать в простых ситуациях, но ошибаться там, где важны отдалённые последствия или особая структура поля. Серия испытаний помогает сравнить число побед, поражений и качество промежуточных позиций, а затем изменить саму функцию или глубину анализа.
| Элемент | Что задаётся или вычисляется | Роль при выборе хода |
|---|---|---|
| Позиция | Состояние игры и очередь хода | Исходные данные для анализа |
| Допустимые ходы | Все действия, разрешённые правилами | Набор вариантов для сравнения |
| Результат хода | Новая позиция после действия | Объект непосредственной оценки |
| Оценочная функция | Числовое значение позиции | Критерий выгодности |
| Выбор хода | Лучший вариант или лучший худший исход | Формирование решения стратегии |
| Проверка стратегии | Результаты серии партий и позиций | Оценка качества метода |
Таблицу удобно читать сверху вниз: сначала описывают ситуацию, затем получают варианты и последствия. После этого к позициям применяют оценочную функцию и выбирают действие. Последняя строка показывает, подтверждается ли полезность выбранного правила на практике.
Условие: для заданной позиции нужно перечислить все допустимые ходы, получить позиции после каждого хода и выбрать ход с наибольшей оценкой. Обозначим варианты как A, B и C, а оценки результатов — E(A), E(B) и E(C). Числовые значения должны быть вычислены одной и той же оценочной функцией.
Ответ: выбирается ход, для которого значение оценочной функции максимально. Если два результата равны, применяют дополнительное правило или выбирают любой из равных вариантов.
Условие: в позиции доступны два хода, A и B. Для каждого нужно определить ответы соперника и выбрать ход, при котором худшая для нас оценка лучше. Пусть после A соперник может создать оценки 4 и 1, а после B — оценки 3 и 2.
Ответ: следует выбрать ход B. Он не гарантирует самый высокий возможный результат, но его неблагоприятный исход оценивается выше, чем худший исход хода A.
Условие: нужно сравнить две оценочные функции на нескольких начальных позициях одной игры и выяснить, какая чаще приводит к победе или выгодным положениям. Одной партии недостаточно, поскольку её результат может зависеть от случайного расположения объектов или первого хода.
Ответ: лучше считается функция, которая в серии чаще приводит к победе или к устойчиво более выгодным позициям. Вывод нужно подтверждать повторными испытаниями на разнообразных исходных данных.
Считать, что большая оценка выгодна обоим игрокам. Так происходит, когда забывают, для кого определён знак числа. Проверьте функцию на очевидно выигрышной позиции каждого игрока и убедитесь, что оценки меняют смысл относительно выбранной стороны.
Выбирать ход по оценке позиции до хода. Исходная позиция одинакова для всех вариантов, поэтому такое сравнение ничего не решает. Проверьте, что программа сначала применяет каждый ход, а затем оценивает полученный результат.
Игнорировать ответы соперника. Быстрый выигрыш на первом шаге может исчезнуть после обязательного ответного действия. Проверьте для каждого кандидата хотя бы самые сильные ответы соперника и сравните худшие исходы.
Проверять стратегию только на одной партии. Удачный результат может оказаться случайностью и не отражать качество функции. Запустите серию на разных позициях и сопоставьте статистику побед, поражений и ничьих.
До этой работы нужно уметь формально описывать правила игры, позиции и допустимые действия. В программе понадобятся условные конструкции для проверки правил и циклы для перебора вариантов. Без такого описания оценочная функция не сможет получать одинаково интерпретируемые данные.
Тема связана с алгоритмами перебора вариантов и деревьями игры. Вершины дерева представляют позиции, а ветви — ходы игроков. Эти приёмы применяют в игровых программах и системах принятия решений, где нужно выбирать действие при неполной возможности просчитать будущее.
Что именно оценивает оценочная функция?
Она оценивает игровую позицию, то есть состояние игры после некоторого хода или до него. Число показывает, насколько эта позиция выгодна выбранному игроку по заданному критерию.
Почему оценку нужно связывать с конкретным игроком?
Одна и та же позиция может быть выгодной для одного игрока и невыгодной для другого. Поэтому знак и величина оценки должны иметь смысл относительно того игрока, который выбирает ход.
Как выбрать ход, если у нескольких ходов одинаковая оценка?
Можно выбрать любой из них, если дополнительные условия не заданы. На практике используют дополнительное правило: например, выбирают ход, который оставляет больше вариантов или быстрее приводит к завершению игры.
Зачем учитывать ответ соперника?
Соперник не обязан позволять нам получить выгодный результат и выберет наиболее неприятный для нас ответ. Поэтому сравнивают не только первые последствия хода, но и худшие позиции после возможных ответов.
Как проверить, что выбранная оценочная функция работает хорошо?
Нужно испытать стратегию на разных начальных позициях и провести серию партий. Затем сравнивают число побед, поражений и качество получаемых позиций, а не делают вывод по одной удачной игре.
Лабораторная работа № 29 (к § 60) Построение стратегии на основе оценочной функции