Чтение онлайн

на главную

Жанры

Программирование на языке Пролог для искусственного интеллекта

Братко Иван

Шрифт:

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

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

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

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

% Интерпретация главной цели и цели-поддержки:

% цель - это И / ИЛИ / НЕ комбинация. имен предикатов

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

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

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

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

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

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

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

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

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

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

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

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

 call( Усл).

% Интерпретация ограничений на ходы

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

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

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

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

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

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

% Доступ к компонентам элементарного совета

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

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

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

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

 ХодыПр).

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

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

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

Рис. 15.6. Миниатюрный интерпретатор языка AL0.

Форсированное дерево — это дерево ходов, представленное в программе следующей структурой:

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

Здесь "

..
" — инфиксный оператор;
Ход
 — первый ход "игрока";
Ответ1
,
Ответ2
, … — возможные ответы противника;
Фдер1
,
Фдер2
, … — форсированные поддеревья для каждого из этих ответов.

15.6.2. Программа на языке советов для эндшпиля "король и ладья против короля"

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

Повторять циклически, пока не будет поставлен мат (постоянно проверяя, что не возникла патовая позиция и что нет нападения на незащищенную ладью):

(1) Найти способ поставить королю противника мат в два хода.

(2) Если не удалось, то найти способ уменьшить ту область доски, в которой король противника "заперт" под воздействием ладьи.

(3) Если и это не удалось, то найти способ приблизить своего короля к королю противника.

(4) Если ни один из элементарных советов 1, 2, или 3 не выполним, то найти способ сохранить все имеющиеся к настоящему

моменту "достижения" в смысле (2) и (3) (т.е. сделать выжидающий ход).

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

Описанные выше принципы реализованы во всех деталях в таблице советов на языке AL0, показанной на рис. 15.7. Эта таблица может работать под управлением интерпретатора рис. 15.6. Рис. 15.8 иллюстрирует смысл некоторых из предикатов, использованных в таблице советов, а также показывает, как эта таблица работает.

В таблице используются следующие предикаты:

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

мат
мат королю противника
пат
пат королю противника
потеря_ладьи
король противника может взять ладью
ладья_под_боем
король противника может напасть на ладью прежде, чем наш король сможет ее защитить
уменьш_простр
уменьшилось "жизненное пространство" короля противника, ограничиваемое ладьей
раздел
ладья занимает вертикальную или горизонтальную линию, разделяющую королей
ближе_к_клетке
наш король приблизился к "критической клетке" (см. рис. 15.9), т.е. манхеттеновское расстояние до нее уменьшилось
l_конфиг
"L-конфигурация" (рис. 15.9)
простр_больше_2
"жизненное пространство" короля противника занимает больше двух клеток

Предикаты, ограничивающие ходы

глубина = N
ход на глубине N дерева поиска
разреш
любой разрешенный ход
ход_шах
ход, объявляющий шах
ход_ладьей
ход ладьей
нет_хода
ни один ход не подходит
сначала_диаг
ход королем, преимущественно по диагонали

% Окончание "король и ладья против короля" на языке AL0

% Правила

правило_края:

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

 то [мат_2, потеснить, приблизиться,

сохранить_простр, отделить_2, отделить_3].

иначе_правило

 если любая_поз

 то [ потеснить, приблизиться, сохранить_простр,

отделить_2, отделить_3].

Поделиться:
Популярные книги

Возвращение Безумного Бога 5

Тесленок Кирилл Геннадьевич
5. Возвращение Безумного Бога
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Возвращение Безумного Бога 5

Холодный ветер перемен

Иванов Дмитрий
7. Девяностые
Фантастика:
попаданцы
альтернативная история
6.80
рейтинг книги
Холодный ветер перемен

Кровь, золото и помидоры

Распопов Дмитрий Викторович
4. Венецианский купец
Фантастика:
альтернативная история
5.40
рейтинг книги
Кровь, золото и помидоры

Наследник павшего дома. Том I

Вайс Александр
1. Расколотый мир
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Наследник павшего дома. Том I

Книга 5. Империя на марше

Тамбовский Сергей
5. Империя у края
Фантастика:
альтернативная история
5.00
рейтинг книги
Книга 5. Империя на марше

Генерал Скала и сиротка

Суббота Светлана
1. Генерал Скала и Лидия
Любовные романы:
любовно-фантастические романы
6.40
рейтинг книги
Генерал Скала и сиротка

Мимик нового Мира 14

Северный Лис
13. Мимик!
Фантастика:
юмористическое фэнтези
постапокалипсис
рпг
5.00
рейтинг книги
Мимик нового Мира 14

Стрелок

Астахов Евгений Евгеньевич
5. Сопряжение
Фантастика:
боевая фантастика
постапокалипсис
рпг
5.00
рейтинг книги
Стрелок

Безумный Макс. Поручик Империи

Ланцов Михаил Алексеевич
1. Безумный Макс
Фантастика:
героическая фантастика
альтернативная история
7.64
рейтинг книги
Безумный Макс. Поручик Империи

Сержант. Назад в СССР. Книга 4

Гаусс Максим
4. Второй шанс
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Сержант. Назад в СССР. Книга 4

Третий. Том 2

INDIGO
2. Отпуск
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
Третий. Том 2

Боксер 2: назад в СССР

Гуров Валерий Александрович
2. Боксер
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Боксер 2: назад в СССР

Вопреки судьбе, или В другой мир за счастьем

Цвик Катерина Александровна
Любовные романы:
любовно-фантастические романы
6.46
рейтинг книги
Вопреки судьбе, или В другой мир за счастьем

Кротовский, сколько можно?

Парсиев Дмитрий
5. РОС: Изнанка Империи
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Кротовский, сколько можно?