Язык логического программирования ПРОЛОГ. Бураков М.В. - 33 стр.

UptoLike

Составители: 

31
вания правил и логического вывода можно получать новые знания. По-
этому ПРОЛОГ-программа может рассматриваться в качестве базы зна-
ний (экспертной системы).
Рассмотрим пример простой экспертной системы, которая решает
задачу определения вида экземпляра пойманной рыбы.
Программа 21
DATABASE
xpositive(symbol, symbol)
xnegative(symbol, symbol)
PREDICATES
expertiza
vopros(symbol, symbol)
fish_is(symbol)
positive(symbol, symbol)
negative(symbol, symbol)
remember(symbol, symbol, symbol)
clear_facts
GOAL
expertiza.
CLAUSES
expertiza:-fish_is(X),!,nl,write(“ваша рыба это “,X,” “),nl, clear_facts.
expertiza:-nl, write(“это неизвестная рыба!”),clear_facts.
vopros(X, Y):-write(“вопрос – “,X, “ “,Y, “? (да/нет)”),readln(R),
remember(X,Y,R).
positive(X,Y):- xpositive(X,Y),!.
positive(X,Y):-not(negative(X,Y)),!,vopros(X,Y).
negative(X,Y):-xnegative(X,Y),!.
remember(X,Y,”да”):-assertz(xpositive(X,Y)).
remember(X,Y,”нет”):-assertz(xnegative(X,Y)),fail.
clear_facts:-retract(xpositive(_,_)),fail.
clear_facts:-retract(xnegative(_,_)),fail.
fish_is(“сом”):- positive(“у рыбы”,”вес >40 кг”).
fish_is(“сом”):- positive(“у рыбы”,”вес <40 кг”),
positive(“у рыбы”,”есть усы”).
fish_is(“щука”):- positive(“у рыбы”,“вес <20 кг”),
positive(“у рыбы”,”длинное узкое тело”).
fish_is(“окунь”):- positive(“у рыбы”,”вес <20 кг”),