- •Часть 1 лабораторная работа 1. Задачи на графах.
- •Лабораторная работа №2 стратегии поиска пути на графе
- •1. Стратегия поиска в глубину
- •2. Стратегия поиска в ширину.
- •Стратегии поиска пути на графе
- •3. Эвристический поиск (поиск с предпочтением)
- •Часть 2
- •Лабораторная работа № 3 представление знаний с помощью продукционных систем
- •Лабораторная работа №4 Представление фреймов в Прологе
- •Лабораторная работа №5 Экспертная система, основанная на фреймовом представлении знаний
- •Лабораторная работа №6 Нечеткости в экспертных системах
- •Комбинирование факторов доверия для множественных заключений
Лабораторная работа № 3 представление знаний с помощью продукционных систем
Цель – знакомство с продукционной системой представления знаний.
СИСТЕМА ПРОДУКЦИЙ образуется множеством правил продукций. Эти правила формулируют определенные действия при выполнении некоторых заданных условий. В самом простом виде правила продукций близки по смыслу импликации "если-то", поэтому для правил продукций можно принять обозначение
A B,
где A - условия применимости, а B - заключение или действие, которое имеет место при истинности A.
Рассмотрим пример продукционной экспертной системы, предназначенной для различения животных. Ниже представлен граф И/ИЛИ для правил вывода этой системы.
run:-animal_is(X),!,nl,write($Я думаю, что это $),write(X),nl,clr.
run:- write($Я не знаю такого животного$),nl,clr.
clr:-abolish(bd_positive/2),abolish(bd_negative/2).
ask(X,Y):-write(X),write(Y),write($ ? $),read(Rep),nl,
remember(X,Y,Rep).
remember(X,Y,yes):-asserta((bd_positive(X,Y))).
remember(X,Y,no):-asserta((bd_negative(X,Y))),fail.
positive(X,Y):-bd_positive(X,Y),!.
positive(X,Y):-not(negative(X,Y)),!,ask(X,Y).
negative(X,Y):-bd_negative(X,Y).
animal_is('гепаpд'):-it_is('млекопитающее'),
it_is('хищник'),
positive('имеет ','рыжекоричневый_цвет'),
positive('имеет ','темные_пятна'),!.
animal_is('тигр'):-it_is('млекопитающее'),
it_is('хищник'),
positive('имеет ','рыжекоричневый_цвет'),
positive('имеет ','черные_полосы'),!.
animal_is('жираф'):-it_is('копытное'),
positive('имеет ','длинные_ноги'),
positive('имеет ','длинную_шею'),
positive('имеет ','темные_пятна'),!.
animal_is('зебра'):-it_is('копытное'),
positive('имеет ','черные_полосы'),!.
animal_is('страус'):-it_is('птица'),
positive('не_умеет ','летать'),
positive('имеет ','длинные_ноги'),
positive('имеет ','длинную_шею'),
positive('имеет ','черно-белый_цвет'),!.
animal_is('пингвин'):-it_is('птица'),
positive('не_умеет ','летать'),
positive('умеет ','плавать'),
positive('имеет ','черно-белый_цвет'),!.
animal_is('альбатрос'):-it_is('птица'),it_is('хищник'),!.
animal_is('воробей'):-it_is('птица').
it_is('млекопитающее'):-positive('имеет ','шеpсть');
positive('может ','давать_молоко'),!.
it_is('птица'):-positive('имеет ','перья'),
positive('может ','откладывать_яйца'),
!.
it_is('хищник'):-positive('может ','есть_мясо'),
(positive('имеет ','острые_зубы'),
positive('имеет ','когти'),
positive('имеет ','вперед_смотрящие_глаза'));
(positive('имеет ','мощный_клюв')),!.
it_is('копытное'):-it_is('млекопитающее'),
positive('имеет ','копыта');
it_is('млекопитающее'),
positive('может ','жевать_жвачку'),!.
ЗАДАНИЕ. Запустить приведенную программу и задать несколько вопросов для определения животного. При ответах на вопросы программы следует отвечать yes/no. После ответа необходимо ставить точку.