
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ
УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
ТЕЛЕКОММУНИКАЦИЙ ИМ. ПРОФ. М.А. БОНЧ-БРУЕВИЧА»
(СПбГУТ)
ФАКУЛЬТЕТ ИНФОКОММУНИКАЦИОННЫХ СЕТЕЙ И СИСТЕМ (ИКСС)
КАФЕДРА ПРОГРАММНОЙ ИНЖЕНЕРИИ И ВЫЧИСЛИТЕЛЬНОЙ ТЕХНИКИ (ПИ И ВТ)
ДИСЦИПЛИНА: «Логическое и функциональное программирование»
Лабораторная работа №1.
Семейное древо
Выполнил:
Козлов Н.С
Подпись____________
Принял:
Ерофеев С.А.
Подпись____________
«_____»________ 2021
Цель работы: создать базу знаний на основе семейного древа, с применением логического языка программирования Prolog.
Блок-схема
Код программы на языке Prolog
DOMAINS name = symbol. sex = symbol. PREDICATES man(name) woman(name) couple(name, name) child(name, name, name) son(name, name, name) daughter(name, name, name) mother(name, name) father(name, name) sister(name, name) brother(name, name) grandmother(name, name) grandfather(name, name) uncle(name, name) aunt(name, name) mother_in_law(name, name) father_in_law(name, name) shurin(name, name) CLAUSES man(victor). man(yury). man(alexey). man(sergey). man(nikita). woman(natalya). woman(ekaterina). woman(lidya). woman(elvira). couple(X, Y):- man(X), woman(Y), couple(Y, X). couple(yury, ekaterina). couple(victor, lidya). couple(sergey, natalya). child(X, Y, Z):- man(X), woman(X), couple(Y, Z). child(sergey, victor, lidya). child(elvira, victor, lidya). child(natalya, yury, ekaterina). child(alexey, yury, ekaterina). child(nikita, sergey, natalya). son(X, Y, Z):- child(X, Y, Z), man(X). daughter(X, Y, Z):- child(X, Y, Z), woman(X). mother(X, Y):- child(Y, Z, X), man(Z). father(X, Y):- child(Y, X, Z), woman(Z). sister(X, Y):- child(X, F, M), woman(X), child(Y, F, M), X<>Y. brother(X, Y):- child(X, F, M), man(X), child(Y, F, M), X<>Y. grandmother(X, Y):- mother(X, P), child(Y, Z, P); mother(X, P), child(Y, P, Z). grandfather(X, Y):- father(X, P), child(Y, F, P); father(X, P), child(Y, P, Z). uncle(X, Y):- brother(X, P), child(Y, F, P); brother(X, P), child(Y, P, M). aunt(X, Y):- sister(X, P), child(Y, F, P); sister(X, P), child(Y, P, Z). mother_in_law(X, Y):- mother(X, Z), couple(Y, Z). father_in_law(X, Y):- father(X, Z), couple(Y, Z). shurin(X, Y):- brother(X, Z), couple(Y, Z). |
Примеры работы программы
Вывод
На языке логического программирования Prolog, была создана база знаний на основе семейного древа в среде разработке TurboProlog 2.0.