Пролог лабы / Лаб1
.docxСанкт-Петербургский государственный электротехнический университет «ЛЭТИ»
имени В. И. Ульянова(Ленина)
Открытый факультет
Кафедра Автоматизированных Систем Обработки Информации и Управления
Лабораторная работа №1
по дисциплине: «Проектирование систем искусственного интеллекта»
Выполнил: ст. гр. 0851
Карелина Л.А
Проверил:
Соничев А.В.
Санкт-Петербург
2015
Выполнение программ на Прологе
Цель работы - ознакомление со структурой программ и синтаксисом языка Пролог; построение простейшей интеллектуальной вопросно-ответной системы.
Задание к лабораторной работе
-
Провести тестирование программы CH05EX03.PRO.
-
Дописать текст программы LAB01.PRO (объявить домены и предикаты и задать факты - предикаты male, female, mother, father) таким образом, чтобы удовлетворялись все запросы вида brother(X,Y); sister(X,Y); uncle(X,Y); grandfather(X,Y).
-
Дописать определение отношения grandmother(X,Y) и дополнить базу фактов, таким образом, чтобы удовлетворялся запрос grandmother(X,Y).
Порядок выполнения задания
-
Загрузить Турбо-Пролог.
-
Загрузить текст программы СН05ЕХ03.PRO.
-
Ввести цели
player(X,9);
player(X,10);
player(peter,X);
player(X1,9),player(X2,9).X1 <> Х2
и убедиться в правильности работы программы.
-
Загрузить текст LAB1.PRO.
-
Внести требуемые изменения.
Содержание отчета
Отчет должен содержать полученный текст программы и результаты запросов.
Текст программы:
domains
person = string
predicates
male(person).
female(person).
father(person, person).
mother(person, person).
parent(person, person).
sister(person, person).
brother(person, person).
uncle(person, person).
grandfather(person, person).
grandmother(person, person).
common_mother(person,person).
common_father(person,person).
clauses
parent(X, Y) :- mother(X, Y).
parent(X, Y) :- father(X, Y).
common_mother(X,Y) :-
mother(X,M),
mother(Y,M).
common_father(X,Y) :-
father(X, F),
father(Y, F).
brother(X, Y) :-
common_mother(X,Y),
male(Y),
X <> Y.
brother(X, Y) :-
common_father(X,Y),
not(common_mother(X,Y)),
male(Y),
X <> Y.
sister(X, Y) :-
common_mother(X,Y),
female(Y),
X <> Y.
sister(X,Y) :-
common_father(X,Y),
not(common_mother(X,Y)),
female(Y),
X <> Y.
uncle(X, U) :-
mother(X, P),
brother(P, U).
uncle(X, U) :-
father(X, P),
brother(P, U).
grandfather(X, G) :-
father(P, G),
mother(X, P).
grandfather(X, G) :-
father(X, P),
father(P, G).
grandmother(X, G) :-
mother(P, G),
mother(X, P).
grandmother(X, G) :-
mother(P, G),
father(X, P).
%------------------------------------
female("Carmen").
female("Josefa").
female("Isabel").
female("Francisca").
female("Ana").
female("Marta").
female("Lucia").
%------------------------------------
male("Alejandro").
male("Pablo").
male("David").
male("Daniel").
male("Sergio").
male("Carlos").
male("Manuel").
%------------------------------------
father("Ana", "Daniel").
father("Josefa", "Pablo").
father("Isabel", "Pablo").
father("David", "Pablo").
father("Lucia", "Manuel").
father("Marta", "David").
father("Sergio", "David").
father("Carlos", "David").
%------------------------------------
mother("Ana", "Josefa").
mother("Alejandro", "Isabel").
mother("Daniel", "Francisca").
mother("Josefa", "Carmen").
mother("Isabel", "Carmen").
mother("David", "Carmen").
mother("Carlos", "Lucia").
mother("Sergio", "Lucia").
mother("Marta", "Lucia").
Результат работы
Для схемы