Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Принадлежит( X, [Y | Спис]) :- принадлежит( X, Спис)

Принадлежит(X, [X | Спис]).

ХодыПр).

Поддержка(ГлЦ: ЦП: _, ЦП).

Ход(Ходы2, Поз, Ход, Поз1)).

Ход(Ходы2, Поз, Ход, Поз1).

Выполн_все(_, [ ], _, [ ]).

Bagof(Ход.. Поз1,ход(ХодыПр,Поз,Ход,Поз1),ХПспис), выполн_все(Совет, ХПспис, КорнПоз, ФДеревья).

Выполн(Совет, Поз1, КорнПоз, ФДеревья).

Удовл(ГлЦ, Поз, КорнПоз),!.

Выполн1(Совет, Поз, КорнПоз, ФДер).

 

выполн1(Совет, Поз, КорнПоз, nil):-

главцель(Совет, ГлЦ),

% Головна ціль задовольняється

выполн1(Совет, Поз, КорнПоз, Ход.. ФДеревья):-

чей_ход(Поз, б),!, % Програма грає білими

ходы_игрока(Совет, ХодыИгрока),

% Обмеження на ходи гравця

ход(ХодыИгрока, Поз, Ход, Поз1),

% Хід, що задовольняє обмеженню

выполн1(Совет, Поз, КорнПоз, ФДеревья):-

чей_ход(Поз, ч),!, %Супротивник грає чорними

ходы_противника(Совет, ХодыПр),

 

% Порада виконуєма у всіх спадкоємцях Поз

выполн_все(Совет, [Ход.. Поз | ХПспис], КорнПоз,

[Ход.. ФД | ФДД]):-

выполн(Совет, Поз, КорнПоз, ФД),

выполн_все(Совет, ХПспис, КорнПоз, ФДД).

 

% Інтерпретація головної цілі і консервативної цілі:

% ціль - це І/АБО/Ні комбінація імен предикатів

удовл(Цель1 и Цель2, Поз, КорнПоз):-!,

удовл(Цель1, Поз, КорнПоз),

удовл(Цель2, Поз, КорнПоз).

удовл(Цель1 или Цель2, Поз, КорнПоз):-!,

(удовл(Цель1, Поз, КорнПоз);

удовл(Цель2, Поз, КорнПоз)).

удовл(не Цель, Поз, КорнПоз):-!,

not удовл(Цель, Поз, КорнПоз).

удовл(Пред, Поз, КорнПоз):-

(Усл =.. [Пред, Поз];

% Більшість предикатів не залежить від КорнПоз

Усл =.. [Пред, Поз, КорнПоз]), call(Усл).

 

% Інтерпретація обмежень на ходи

ход(Ходы1 и Ходы2, Поз, Ход, Поз1):-!,

ход(Ходы1, Поз, Ход, Поз1),

ход(Ходы1 затем Ходы2, Поз, Ход, Поз1):-!,

(ход(Ходы1, Поз, Ход, Поз1);

 

% Доступ до компонент елементарної поради

главцель(ГлЦ: _, ГлЦ).

ходы_игрока(ГлЦ: ЦП: ХодыИгрока: _,Ходы Игрока).

ходы_противника(ГлЦ: ЦП: ХодыИгр: ХодыПр:_,

 

Програма складена в припущенні, що вона грає білими, а її супротивник - чорними. Програма запускається процедурою игра(Поз), де Поз - обрана початкова позиція. Якщо в позиції Поз ходить супротивник, то програма приймає його хід, а якщо ні, то - "консультується" з таблицею порад, прикладеною до програми, породжує форсоване дерево й робить свій хід згідно до цього дерева. Так триває до закінчення гри, яке виявляє предикат кінець_гри (наприклад, якщо поставлений мат).

 

Форсоване дерево - це дерево ходів, представлене в програмі наступною структурою:

 

Ход..[ Ответ1..Фдер1, Ответ2.. Фдер2,... ]

 

Тут ".." - інфіксний оператор; Ход - перший хід "гравця"; Ответ1, Ответ2,... - можливі відповіді супротивника; Фдер1, Фдер2,... - форсовані піддерева для кожної із цих відповідей.

6.2. Програма на мові порад для ендшпіля "король і тура проти короля"

Загальна стратегія виграшу в ендшпілі з королем і турою проти самотнього короля чужого гравця в тому, щоб змусити короля перейти на край дошки або, якщо буде потреба, у кут, а потім поставити мат у кілька ходів. Стежачи, щоб ні при яких умовах не виникала патова ситуація або тура не залишалась незахищеною від нападу короля чужого гравця, повторно виконувати наступні дії доти, поки не буде поставлений мат.

1. Шукати спосіб поставити королю чужого гравця мат у два ходи.

2. Якщо зазначене неможливо, то шукати спосіб більш обмежити область на шахівниці, у якій короля чужого гравця втримує тура свого гравця.

3. Якщо зазначене неможливо, то шукати спосіб короля свого гравця просунути ближче до короля чужого гравця.

4. Якщо жодну з наведених елементарних порад 1, 2 або 3 виконати не можна, то шукати спосіб збереження поточних досягнень у рамках елементарних порад 2 і 3 (тобто зробити вичікувальний хід).

5. Якщо жодну з елементарних порад 1, 2, 3 або 4 виконати не можна, то шукати спосіб одержання позиції, у якій тура свого гравця розділяє двох королів або по вертикалі, або по горизонталі.

 

Докладна реалізація цих принципів у вигляді таблиці порад AL0 наведена нижче. Ця таблиця може бути викликана на виконання інтерпретатором AL0 (див. вище). Наприкінці ілюструється зміст деяких із предикатів, використовуваних у цій таблиці, і показаний спосіб застосування самої таблиці.

Рис. 4. Фрагмент шахової партії, отриманий з використанням таблиці порад, що ілюструє застосування стратегії відтиснення короля в кут дошки. У цій послідовності ходів виконувались елементарні поради: сохранить_простр (очікувальний хід, що зберігає "життєвий простір" чорного короля) и потеснить (хід, що скорочує "життєвий простір"). Область, у якій замкнений чорний король, виділена штрихуванням. Після виконання останньої поради потеснить ця область скоротилась з восьми до шести кліток.

 

У таблиці використано наступні предикати:

Предикати цілей

 

мат мат королю супротивника

пат пат королю супротивника

потеря_ладьи король супротивника може побити туру

ладья_под_боем король супротивника може напасти на

туру перш, ніж наш король зможе її

захистити

уменьш_простр зменшився "життєвий простір" короля

супротивника, обмежений турою

раздел тура займає вертикальну чи

горизонтальну лінію, що розділяє королів

ближе_к_клетке наш король наблизився до "критичної

клітки" (див. рис. 9), тобто

манхеттенська відстань до неї зменшена

l_конфиг " L-Конфігурація" (рис. 9)

простр_больше_2 "життєвий простір" короля

супротивника займає більше двох кліток

Предикати, що обмежують ходи

глибина = N хід на глибині N дерева пошуку

разреш будь-який дозволений хід

ход_шах хід, що оголошує шах

ход_ладьей хід турою

нет_хода жоден хід не підходить

сначала_диаг хід королем, переважно по діагоналі

 

Таблиця порад мовою AL0 для ендшпиля "король і тура проти короля" у складі двох правил і шести
елементарних порад.

 

% Правила

<== предыдущая лекция | следующая лекция ==>
Выполн( Совет, Поз, Поз, ФДер) | Иначе_правило если любая_поз то [ потеснить, приблизиться, сохранить_простр, отделить_2, отделить_3]
Поделиться с друзьями:


Дата добавления: 2014-01-04; Просмотров: 284; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.022 сек.