Министерство общего и профессионального образования Российской Федерации
Новосибирский Государственный Технический Университет
Кафедра прикладной математики
Лабораторная работа №7
“Выводы по аналогии”
Факультет: ПМИ
Группа: ПМ-91
Студент: Кучеров Д. А.
Преподаватель: Целебровская М. Ю.
НОВОСИБИРСК
2003
2. Задание
§ Реализовать на Прологе базовый механизм Case Based Reasoning (CBR), который способен на основе прецедента, давать ответ на поставленный вопрос.
§ Используя базовый механизм CBR, написать экспертную систему для мира геометрических фигур (варианты приведены ниже).
§ Модифицировать базовый механизм вывода таким образом, чтобы он не зависел от предметной области.
1.
Ответ:
2.
Ответ:
DOMAINS
RULE =
inside_invert;
in_disappear;
out_disappear;
above_invert;
up_disappear;
down_disappear;
after_invert;
left_disappear;
right_disappear.
FIGURE =
nil;
pixel;
triangle;
square;
circle;
inside(FIGURE,FIGURE);
above(FIGURE,FIGURE);
after(FIGURE,FIGURE).
FIGURE_LIST = FIGURE*
PREDICATES
match(FIGURE,FIGURE,RULE)
test_analogy(FIGURE,FIGURE,FIGURE,FIGURE,FIGURE_LIST)
belong(FIGURE,FIGURE_LIST)
CLAUSES
test_analogy(F1,F2,F3,X,Answers) :match(F1,F2,Rule),
match(F3,X,Rule),
belong(X,Answers).
match(inside(F1,F2),inside(F2,F1),inside_invert).
match(inside(F1,F2),inside(nil,F2),out_disappear) :not(F1=nil).
match(inside(F1,F2),inside(F1,nil),in_disappear) :not(F2=nil).
match(above(F1,F2),above(F2,F1),above_invert).
match(above(F1,F2),above(nil,F2),down_disappear) :not(F1=nil).
match(above(F1,F2),above(F1,nil),up_disappear) :not(F2=nil).
match(after(F1,F2),after(F2,F1),after_invert).
match(after(F1,F2),after(nil,F2),left_disappear) :not(F1=nil).
match(after(F1,F2),after(F1,nil),right_disappear) :not(F2=nil).
belong(X,[X|_]):- !.
belong(X,[_|L]) :belong(X,L).
GOAL
Answers =
[inside(triangle,circle),
inside(nil,square),
inside(circle,square),
after(square,circle),
after(triangle,nil)],
% Test 1
A = inside(triangle,square),
B = inside(square,triangle),
C = inside(square,circle),
% Test 2
% A = after(square,triangle),
% B = after(triangle,square),
% C = after(circle,square),
test_analogy(A,B,C,X,Answers),
write("The answer is the ",X,"."),nl.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.