Засоби Turbo Prolog для створення ЕС
Turbo Prolog застосовується для створення ЕС по наступних причинах:
1. Він володіє вбудованою системою логічного виводу, заснованій на принципі резолюції
2. Володіє засобами роботи із списками і рекурсією
3. Володіє вбудованою базою даних, яка дозволяє працювати із статичними і динамічними знаннями
4. Володіє зручним механізмом формування правив, тобто базою знань
Існує 2а підходи для реалізації ЕС:
|
Метод прямого програмування, коли як машина виводу використовується інтерпретатор Turbo Prolog. При цьому база знань описується за допомогою правил. При такому підході ЕС виходить простіше і працює ефективніше. Логічний вивід заснований на зворотному ланцюжку міркувань і пошуку в глибину. Недоліком є те, що будь-які зміни в базі знань потрібно вносити до програми. |
|
Машину виводу створюють як мета інтерпретатор, програму інтерпретуючу базу знань, представлену і фактами
і правилами. Такі ЕС називаються ЕС на базі логіки. Логічний вивід при такому
підході може бути заснований і на прямій, і на зворотному ланцюжку міркувань,
а пошук здійснюється і завширшки, і в глибину. |
Мета
інтерпретатор вперше був реалізований Колмерое.
Prav(I,A,S,SP), де
I -
ідентифікатор правив; А - ім'я атрибуту, S - значення атрибуту, SP -
список умов в правилі.
Ядро
машини виводу, яке управляється фактами, має наступний вигляд.
dok([],_,_).
dok([I|SP],A,S):- dok(I,A,S).
dok(I,A,S):-prav(I,A,S,[“ запитати”],otv(A,S)).
dok1(_,A,S):-fact(A,S),!.
dok1(I,_,_):-prav(I,A,S,SP),!,dok(SP,A,S),sap(A,S).
Предикат
dok
перебирає всі умови правил dok1 або використовує
відомі факти, або вимагає підтвердження фактів у користувача.
Невизначеність
враховується коефіцієнтом упевненості, які з'ясовуються або у експерта, або у
користувача і є окремим термом.
Крім того для роботи з невизначеністю
використовуються анонімні змінні.
Семантичні мережі і
фрейми в Turbo Prolog
Загальний
спосіб представлення семантичних мереж полягає в наступному: дугам відповідають
безумовні предикати, що мають принаймні по 2 терми, відповідні вузлам, які вони
зв'язують. Правила перетворяться в умовні предикати. Механізм спадкоємства в
семантичних мережах реалізується за допомогою правил.
Наприклад,
твердження
“комп'ютер несправний, якщо несправна деталь”
neisp(X,N):- comp(X,Y),neisp(Y,N).
comp(X,Y):- det(X,Y).
comp(X,Y):- det(X,Z),comp(Z,Y).
Фрейми
здійснюються 2-а способами:
1. slot(frame, A):- 2) frame(slot, A): - ім'я предиката співпадає з ім'ям slot-а, а ім'я frame із значенням параметра
2. ім'я змінної - з ім'ям frame, а параметрами slot-а є їх імена і їх наповнення.
Спадкоємство в Turboprolog задається правилами.
Наприклад,
“персональний комп'ютер успадковує властивості комп'ютера”.
PC(slot, R):-comp(slot, R).
PC(“Призначення ”, Text):-write(Text).