Студопедия

КАТЕГОРИИ:


Архитектура-(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)

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

Выполн_совет(ИмяСовета, Поз, ФорсДер),!.

Поддер(_, _, nil).

Принадлежит(Ход.. Фдер, ФДеревья),!.

Сделать_ход(Поз0, ФДер, Поз1, ФДер1).

Сделать_ход(Поз, ФДер, Поз1, ФДер1)).

Игра(Поз1, ФорсДер1)).

Игра(Поз):- игра(Поз, nil). % Грати, починаючи з Поз

Ор(140, fx, не).

Ор(160, xfy, и).

Ор(180, xfy, или).

Ор(190, xfx, то).

Ор(185, fx, если).

Ор(220, xfy,..).

Ор(200, xfy,:).

Мініатюрний інтерпретатор AL0

Програма на мові AL0 для гри в шаховому ендшпілі

При реалізації ігрової програми на основі AL0 її зручніше розділити на три модулі.

1. Інтерпретатор мови AL0.

2. Таблиця порад мовою AL0.

3. Бібліотека предикатів, використовуваних у таблиці порад (включаючи правила гри).

Ця структура відповідає звичайній структурі систем, заснованих на знаннях.

§ Інтерпретатор AL0 є машиною логічного виводу.

§ Таблиця порад і бібліотека предикатів входять до складу бази знань.

 

Мініатюрний, незалежний від конкретної гри інтерпретатор AL0, реалізований мовою Prolog, наведено нижче.

Основне призначення - використання знань з таблиці порад AL0:

· програма інтерпретує таблицю порад AL0,

· формує форсуючі дерева, а потім застосовує їх у грі.

Основний алгоритм формування форсуючого дерева:

· аналогічний пошуку вглиб у графах AND/OR;

· форсуюче дерево відповідає дереву рішення AND/OR;

· цей процес нагадує також формування дерева доказу в експертній системі.

 

 

% Реалізація мініатюрного інтерпретатора мови AL0

%Ця програма грає, починаючи із заданої позиції та використовуючи знання, представлені мовою рад AL0

 

та з порожнього форсуючого дерева

игра(Поз, ФорсДер):- отобр(Поз),

(конец_игры(Поз), % Кінець гри?

write('Конец игры'), nl,!;

сделать_ход(Поз,ФорсДер,Поз1,ФорсДер1),!,

 

% Гравець ходить згідно до форсуючого дерева

сделать_ход(Поз, Ход.. ФДер1, Поз1, ФДер1):-

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

разрход(Поз, Ход, Поз1),

показать_ход(Ход).

 

% Прийом ходу супротивника

сделать_ход(Поз, ФДер, Поз1, ФДер1):-

чей_ход(Поз, ч), write('Ваш ход:'), read(Ход),

(разрход(Поз, Ход, Поз1),

поддер(ФДер, Ход, ФДер1),!;

% Вниз по форсуючому дереву

write('Неразрешенный ход'), nl,

 

% Якщо поточне форсуюче дерево порожнє, побудувати

нове

сделать_ход(Поз, nil, Поз1, ФДер1):- чей_ход(Поз, б),

восст_глуб(Поз, Поз0),

% Поз0 = Поз з глубиною 0

стратегия(Поз0, ФДер),!,

% Нове форсуюче дерево

 

% Вибрати форсуюче піддерево, відповідне Ход' у

поддер(ФДеревья, Ход, Фдер):-

стратегия(Поз, ФорсДер):-

%Пошук форс. дерева для Поз

Прав: если Условие то СписСов,

% Звертання до таблиці порад

удовл(Условие, Поз, _),!,

% Співставити Поз з попередньою умовою

принадлежит(ИмяСовета, СписСов),

% По черзі спробувати елементарні поради

nl, write('Пробую'), write(ИмяСовета),

выполн_совет(ИмяСовета, Поз, Фдер):-

совет(ИмяСовета, Совет),

% Знайти елементарну пораду

%" выполн " потребує дві позиції для предикатів

порівняння

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

поддержка(Совет, ЦП),

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

% Співставити Поз з ціллю-підтримкой

<== предыдущая лекция | следующая лекция ==>
Зберегти_простір, відокремити] | Принадлежит( X, [Y | Спис]) :- принадлежит( X, Спис)
Поделиться с друзьями:


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


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



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




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