КАТЕГОРИИ: Архитектура-(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(ИмяСовета), выполн_совет(ИмяСовета, Поз, Фдер):- совет(ИмяСовета, Совет), % Знайти елементарну пораду %" выполн " потребує дві позиції для предикатів порівняння выполн(Совет, Поз, КорнПоз, ФДер):- поддержка(Совет, ЦП), удовл(ЦП, Поз, КорнПоз), % Співставити Поз з ціллю-підтримкой
Дата добавления: 2014-01-04; Просмотров: 300; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |