Лабораторные работы. Ерофеев / Разработка ИИ. Отчет №2
.docxМинистерство цифрового развития, связи и массовых коммуникаций Российской Федерации
Федеральное государственное бюджетное образовательное учреждение Высшего образования «Санкт-Петербургский государственный университет телекоммуникаций им. Проф. М. А. Бонч-Бруевича» (СПбГУТ)
Факультет Информационных технологий и программной инженерии
Кафедра Программной инженерии
Лабораторная работа 1
По дисциплине: Разработка приложений искусственного интеллекта в киберфизических системах
Выполнил студент: Яковлев М. А. ИКПИ-32
Принял работу: Ерофеев С. А.
Дата выполнения:
«01» октября 2025 г.
Санкт-Петербург
2025 г.
Постановка задачи
Разработать базу знаний на языке Prolog, моделирующую генеалогическое дерево семьи. База знаний должна содержать факты о людях и семейных отношениях. Система должна позволять определять различные виды родственных связей на основе фактов и правил.
Перечень предикатов
· man(person) — определяет, что человек является мужчиной.
· woman(person) — определяет, что человек является женщиной.
· mama(person, person) — определяет, что первый человек является матерью второго.
· papa(person, person) — определяет, что первый человек является отцом второго.
· parent(person, person) — определяет, что первый человек является родителем второго.
· brother(person, person) — определяет, что первый человек является братом второго.
· sister(person, person) — определяет, что первый человек является сестрой второго.
· uncle(person, person) — определяет, что первый человек является дядей второго.
· aunt(person, person) — определяет, что первый человек является тётей второго.
· cousin(person, person) — определяет, что первый человек является двоюродным братом или сестрой второго.
· cousin_brother(person, person) — определяет, что первый человек является двоюродным братом второго.
· cousin_sister(person, person) — определяет, что первый человек является двоюродной сестрой второго.
· dever(person, person) — определяет, что первый человек является деверем для второго.
Рисунок
1. Древо
хема
взаимосвязи элементов
Программа на Prolog
DOMAINS
person = symbol
PREDICATES
man(person)
woman(person)
mama(person, person)
papa(person, person)
parent(person, person)
brother(person, person)
sister(person, person)
uncle(person, person)
aunt(person, person)
cousin(person, person)
cousin_brother(person, person)
cousin_sister(person, person)
married(person, person)
dever(person, person)
CLAUSES
man(maxim).
man(alexey).
man(vladimir).
man(victor).
man(ivan).
man(leonid).
man(abram).
man(alexander).
woman(yana).
woman(nina).
woman(zinaida).
woman(natalia).
woman(elena).
woman(ludmila).
woman(lora).
woman(maria).
woman(diana).
mama(yana, maxim).
mama(nina, alexey).
mama(nina, alexander).
mama(zinaida, natalia).
mama(natalia, yana).
mama(elena, leonid).
mama(lora, maria).
mama(maria, diana).
mama(ludmila, victor).
papa(alexey, maxim).
papa(vladimir, alexey).
papa(vladimir, alexander).
papa(alexander, victor).
papa(ivan, natalia).
papa(leonid, yana).
papa(abram, leonid).
married(yana, alexey).
married(vladimir, nina).
married(leonid, natalia).
married(abram, elena).
married(alexander, ludmila).
married(ivan, zinaida).
married(alexey, yana).
married(X, Y) :- married(Y, X), X <> Y, !.
parent(X, Y) :- mama(X, Y).
parent(X, Y) :- papa(X, Y).
brother(X, Y) :-
man(X),
parent(P, X),
parent(P, Y),
X <> Y,
!.
sister(X, Y) :-
woman(X),
parent(P, X),
parent(P, Y),
X <> Y,
!.
uncle(X, Y) :-
man(X),
parent(P, Y),
brother(X, P).
aunt(X, Y) :-
woman(X),
parent(P, Y),
sister(X, P).
cousin(X, Y) :-
uncle(U, Y),
parent(U, X).
cousin(X, Y) :-
aunt(A, Y),
parent(A, X).
cousin_brother(X, Y) :-
cousin(X, Y),
man(X).
cousin_sister(X, Y) :-
cousin(X, Y),
woman(X).
dever(B, Y) :-
man(B),
married(Y, H),
brother(B, H).
Заключение
В ходе лабораторной работы была успешно разработана база знаний на языке Prolog в среде Turbo Prolog 2.0, моделирующая семейные отношения. Программа корректно устанавливает связи между членами семьи на основе заложенных фактов и логических правил.
