Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Metod_SII.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
171.52 Кб
Скачать

Лабораторна робота №2

Тема: Програмування ігор

Мета роботи: Вживання базових стратегій розв’язання задач для програмування ігор двох осіб з повною інформацією

Методичні вказівки

Предметом розгляду в даній лабораторній роботі є так звані ігри двох осіб з повною інформацією. Прикладами таких ігор можуть бути шахи, шашки, го та ін. У грі приймають участі два гравці, що проводять ходи по черзі. Гравцям повністю доступна поточна ігрова ситуація. Звідси назва даного класу ігор. Гра може бути представлена деревовидним графом. Початкова ситуація гри – корінь дерева, листя дерева – можливі термінальні ситуації гри. Інші вузли дерева відповідають поточним позиціям. Гілки, що виходять з вузла дерева – можливі ходи противника. Дорога на графі від кореневої вершини до деякої термінальної вершини визначає конкретну партію в даній грі. Складність гри характеризується кількістю термінальних вершин. Якщо дерево гри піддається повному перегляду, то така гра не представляє інтересу. Шахи цікаві через свою складність.

Використання Прологу для програмування ігор зручно з наступних міркувань. Дерево гри можна однозначно відображувати на І-АБО-дерево. При цьому АБО-вершини відповідають позиціям одного гравця, а І-вершини – позиціям іншого. Оскільки програма на Пролозі має структуру І-АБО-дерева і Пролог-система підтримує механізм обходу цього дерева, то природно використовувати цей інструмент для моделювання гри.

Оскільки для реальних ігор повний перегляд дерева гри неможливий, то був запропонований принцип неповного перегляду і оцінки перспективності ходу, відомий як мінімаксний принцип. Перегляд дерева ведеться лише на фіксовану глибину, наприклад на п'ять ходів. Для всіх вершин на цій глибині обчислюється деяка кількісна оцінка. Ґрунтуючись на цих оцінках, обчислюються оцінки на більш високому рівні (зворотний хід) і так далі. З даної позиції вибирається хід, що відповідає максимальній оцінці. Цей принцип називається мінімаксним, внаслідок того, що для одного гравця, назвемо його MIN, слід вибирати ходи з мінімальними оцінками, а для іншого, назвемо його MAX – з максимальними. На рис. 1 дана ілюстрація обчислення оцінок при перегляді дерева на два піввідходу.

4b

ход MIN

4d 6e

ход MAX

1 4 5 6

Рис.1

Подальшим розвитком цього принципу є так званий алфа-бета-принцип. Суть його зводиться до наступного. На рис.1 можна відмітити, що для обчислення оцінки у вершині b не обов'язково знати точне значення оцінки у вершині e. Досить знати лише його нижню оцінку. З іншого боку, для обчислення нижньої оцінки можна використовувати значення 5 замість 6. Це не змінить результату обчислення оцінки у вершині b, але не зажадає обчислення оцінки в закрашеній сірим кольором вершині, що істотно скорочує варіанти перебору вершин.

Отримати досить повну уяву по даній темі можна в [3, гл.6] [4, гл.15].

Завдання

  1. Розглянути клас ігор двох осіб з повною інформацією. На прикладі декількох ігор (шахи, шашки, го) дати інтерпретацію наступним поняттям:

    • повна інформація про поточну ігрову позицію;

    • правила гри і можливі ходи;

    • умови закінчення гри і можливі закінчення (виграш, нічия);

    • дерево гри;

    • позиція гри, напівхід, позиція гравця, позиція противника, термінальна позиція;

  2. Для простої гри “хрестики-нулики” на полі 3 на 3 намалювати дерево гри і оцінити складність цієї гри.

  3. Розглянути мінімаксний принцип і алфа-бета-принцип для програмування гри.

  4. Реалізувати ці принципи у вигляді програм на Пролозі в загальному вигляді.

  5. Для гри “хрестики-нулики” вибрати відповідну структуру даних для представлення позиції гри і реалізувати до кінця програму.

  6. Узагальнити отримані результати для гри “хрестики-нулики” на “безконечному полі” з використанням алфа-бета-принципу.

  7. Влаштувати між бригадами турнір і виявити переможця.

Контрольні питання

  1. Чи можна гру в карти (покер, преферанс, бридж і ін.) розглядати як гру з повною інформацією?

  2. Як І-АБО-дерево можна використовувати для представлення дерева гри?

  3. Сформулюйте принцип мінімакса.

  4. У чому полягає суть алфа-бета алгоритму?

  5. Від чого залежить ефективність алфа-бета алгоритму?

  6. Які дороги вдосконалення своєї програми Ви могли б вказати?

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]