- •Практикум по представлению знаний в информационных системах
- •Оглавление
- •2. Работа со структурами на языке пролог 6
- •2. Работа со структурами на языке пролог
- •3. Операторы и операции языка пролог
- •4. Операции сравнения на языке пролог
- •5. Сопоставление в языке пролог
- •6. Представление списков в языке пролог
- •Литература
2. Работа со структурами на языке пролог
Задача 2.1. Составить программу, проверяющую дату рождения сотрудника фирмы, используя первый или второй уровень понимания ИС.
Решение.
birthday(pam,date(21,april,1990)).
birthday(bob,date(22,april,1990)).
birthday(tom,date(23,april,1990)).
birthday(mary,date(24,april,1990)).
getday(X,Y,L,M) :- birthday(X,date(Y,L,M)).
?- getday(X,21,april,1990)?
Ответ системы Пролог:
X=pam.
?- getday(mary,X,Y,Z).
Ответ системы Пролог:
X=24.
Y=april.
Z=1990.
Задача 2.2. Создать объект прямоугольник.
Решение.
point(p1,coord(0,0)).
point(p2,coord(22,22)).
point(p3,coord(0,22)).
point(p4,coord(22,0)).
point(p5,coord(32,22)).
point(p6,coord(32,0)).
point(p7,coord(22,2)).
point(p8,coord(2,22)).
/* квадрат длины отрезка */
leng(X1,Y1,X2,Y2,Z):- Z is(X1-X2)*(X1-X2)+(Y1-Y2)*(Y1-Y2).
/* у прямоугольника равны диагонали и равны противоположные стороны*/
rectangle (P1,P2,P3,P4,Z1,Z2,Z3,Z4) :- point(P1,coord(X1,Y1)),point(P2,coord(X2,Y2)),
point(P3,coord(X3,Y3)),point(P4,coord(X4,Y4)), P1 \= P2, P1 \= P3, P1 \= P4, P2 \= P3, P2 \= P4, P3 \= P4,
leng(X1,Y1,X3,Y3,Z1),leng(X2,Y2,X4,Y4,Z2),Z1=Z2, leng(X1,Y1,X2,Y2,Z3),leng(X3,Y3,X4,Y4,Z4),Z3=Z4.
?- rectangle (X,Y,Z,P,K,_,_,_,_).
Ответ системы Пролог:
X=P1.
Y=P2.
Z=P3.
K=P4.
X=P1.
Y=P3.
Z=P5.
K=P6.
…
Задача 2.3. Составить базу данных, правила (программу) на языке ПРОЛОГ
для поиска ответа на вопрос:
? – квадрат(Z1,Z2,Z3,Z4).
Решение. Будем использовать предыдущую БД, поменяв последнее правило, получим:
/* у квадрата равны диагонали и равны смежные стороны*/
sqr(P1,P2,P3,P4,Z1,Z2,Z3,Z4) :- point(P1,coord(X1,Y1)),point(P2,coord(X2,Y2)),
point(P3,coord(X3,Y3)),point(P4,coord(X4,Y4)), P1 \= P2, P1 \= P3, P1 \= P4, P2 \= P3, P2 \= P4, P3 \= P4, leng(X1,Y1,X3,Y3,Z1),leng(X2,Y2,X4,Y4,Z2),Z1=Z2, leng(X1,Y1,X2,Y2,Z3),leng(X3,Y3,X4,Y4,Z4),Z3=Z4.
?- sqr(X,Y,Z,P,K,_,_,_,_).
Ответ системы Пролог:
X=P1,
Y=P2,
Z=P3,
K=P4,
Z1=Z2,Z2=484,
Z3=Z4,Z4=968;
X=P1,
Y=P2,
Z=P4,
K=P3,
Z1=Z2,Z2=484,
Z3=Z4,Z4=968;
и тд.
Задача 2. 4. Составить базу данных, правила (программу) на языке ПРОЛОГ
для поиска ответа на вопрос:
? – прямоугольный_треугольник(Z1,Z2,Z3).
Решение. Воспользуемся БД предыдущего примера, вставив правило, определяющее прямоугольный треугольник.
/* у прямоугольного треугольника сумма квадратов сторон равна квадрату гипотенузы*/
right_triangle(X1,Y1,X2,Y2,X3,Y3) :- point(P1,coord(X1,Y1)), point(P2,coord(X2,Y2)), point(P3,coord(X3,Y3)), P1 \= P2, P1 \= P3, P2 \= P3, leng(X1,Y1,X2,Y2,Z1), leng(X1,Y1,X3,Y3,Z2), P is Z1+Z2 , leng(X3,Y3,X2,Y2,Z3), P=Z3.
?- right_ triangle (X1,Y1,X2,Y2,X3,Y3).
Ответ системы Пролог:
X1=Y1,Y1=X2,X2=0,Y2=X3,X3=22,Y3=0.
Задача 2.5. Составить программу на языке ПРОЛОГ для
поиска ответа на вопрос:
? – отрезок(X1,Y1,X2,Y2).
Решение.
point(p1,coord(0,0)).
point(p2,coord(22,22)).
point(p3,coord(0,22)).
point(p4,coord(22,0)).
point(p5,coord(32,22)).
point(p6,coord(0,22)).
point(p7,coord(32,0)).
point(p8,coord(22,2)).
point(p9,coord(2,22)).
segment(X1,Y1,X2,Y2):-point(P1,coord(X1,Y1)),point(P2,coord(X2,Y2)),P1 \= P2.
Ответ системы Пролог:
X1=Y1,Y1=0,
X2=Y2,Y1=22.
Задача 2.6. Составить программу на языке ПРОЛОГ для поиска ответа на
вопрос:
? – прямая(Z,R).
Решение.
point(5,6).
point(5,8).
point(4,2).
point(5,1).
point(3,8).
koeff(5).
koeff(8).
len(15).
removal(0). /* смещение */
removal(1).
/* прямая задается по точке, по коэффициенту и по смещению:
y(x)=k*x+b */
line(K, B,X, Y) :- koeff(K), removal(B), point(X,Y).
?-line(5, 0,5, 6).
Ответ системы Пролог:
Yes.
