Скачиваний:
4
Добавлен:
15.08.2023
Размер:
56.7 Кб
Скачать

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ

УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ

«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ

ТЕЛЕКОММУНИКАЦИЙ ИМ. ПРОФ. М.А. БОНЧ-БРУЕВИЧА»

(СПбГУТ)

ФАКУЛЬТЕТ ИНФОКОММУНИКАЦИОННЫХ СЕТЕЙ И СИСТЕМ (ИКСС)

КАФЕДРА ПРОГРАММНОЙ ИНЖЕНЕРИИ И ВЫЧИСЛИТЕЛЬНОЙ ТЕХНИКИ (ПИ И ВТ)

ДИСЦИПЛИНА: «Логическое и функциональное программирование»

Лабораторная работа №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.

Соседние файлы в папке 2