Создан заказ №5267194
3 июня 2020
Разработать и реализовать на языке Пролог интеллектуальную систему, отвечающая на вопросы о родственных отноше
Как заказчик описал требования к работе:
ЗАДАНИЕ ПО КУРСОВОЙ РАБОТЕ.
Разработать и реализовать на языке Пролог интеллектуальную систему, отвечающая на вопросы о родственных отношениях.
Основным модулем системы должна быть база знаний, в которой хранится информация о членах семьи (не менее 10 человек) из нескольких (не менее трех) поколен
ий и родственных отношениях между ними (не менее 7-10 различных отношений).
Базовые отношения родства, к которым относятся 4 понятия:
родитель, супруги, мужчина, женщина, должны быть представлены в базе явно, в виде соответствующих фактов Пролога (предикатов-фактов).
Все остальные родственные отношения (внук, дядя, невестка и т.п.) определяются на основе базовых отношений (предикатов-правил) и для конкретных лиц должны выводиться пролог-системой исходя из базовых фактов. Таким образом, база знаний о родственных отношениях является дедуктивной (т.е. обладает возможностями дедуктивного вывода). Отметим, что базовый набор отношений может быть выбран не единственным способом: например, вместо бинарного отношения родитель могут быть взяты отношения мать и отец.
Основная задача системы – ответы на запросы:
• Определить для заданного члена семьи, кто состоит с ним в
конкретном родственном отношении, пример:
Кто является сестрой Ольги? или Кто внуки Андрея?
Дополнительные функции.
• Определить для двух конкретных членов семьи, в каком
родственном отношении они находятся, пример:
В каком родстве Елена и Петр?
Заметим, что в случае вопросов о родственном отношении двух членов семьи, не находящихся в близком родстве, необходимо в ответе произвести «синтез» искомого отношения из нескольких известных системе фраз, пример:
Елена - тётя внука Петра, или Елена - тётя Николая, внука Петра.
Для корректной работы системы все члены семьи должны иметь разные имена.
Интерфейс с пользователем может быть организован с помощью стандартных средств: простых фраз естественного языка.
Для корректного вывода русских имён в ответах системы можно встроить в неё список имён, с указанием их именительного и родительного падежей (именно эти падежи используются в запросах, указанных выше видов и ответах на них).
Укажем некоторые отношения родства, которые могут быть представлены в системе:
зять – муж дочери;
золовка – сестра мужа;
свояченица – сестра жены;
шурин – брат жены;
деверь – брат мужа;
сноха – жена сына (для его отца) или жены двух братьев друг другу.
Методические указания.
1. В качестве среды программирования использовать “SWI-prolog”.
2. В качестве примера реализации системы приводится фрагмент программы «Родственники».
Используемые (разработанные предикаты):
Male/1 /* предикат-факт, с одним параметром, описывающий мужчин */
Female/1 /* предикат-факт, с одним параметром, описывающий женщин */
Parents/3 /* предикат- факт, с тремя параметрами, 1-ребёнок 2-3 родители */
Sister/2 /* предикат-факт, с двумя параметрами, 1-сестра 2-сестра */
who_is_the_sister /* предикат-запрос нулевой арности, т.е. без параметров */
База знаний:
/* факты */
male("Frank"). /* отец */
male("Sam"). /* сын */
female("Mary"). /* мать */
female("Debbie"). /* сестра */
parents("Sam","Frank","Mary"). /*родители Sam - Frank и Mary */
parents("Debbie","Frank","Mary"). /*родители Debbie - Frank и Mary */
/* правило, задающее отношение брат-сестра */
sister(Sister,Brother) :- female(Sister), male(Brother), parents(Sister,Father,Mother), parents(Brother,Father,Mother).
/* правило нулевой арности для вывода результатов цели */
who_is_the_sister :- sister(Sister,Brother), write(Sister," is the sister of ",Brother, "."),nl.
/* цель - это предикат и правило */
?- who_is_the_sister.
Результат выполнения запроса к программе:
«Debbie» is the sister of «Sam».
Приведенная программа «Родственники» содержит одно правило: предикат who_is_the_sister.
who_is_the_sister является целью программы, ее единственным целевым утверждением.
Цель (запрос) задается в виде правила, является точкой входа в систему и представляет собой единственное целевое утверждение без подцелей.
Тело правила состоит из двух частей. Первая часть это правило sister. В качестве второй части-предпосылки используется предикат write, который выводит полученные правилом sister результаты.
При разработке программы такой способ записи цели более предпочтителен, так как он упрощает эту самую запись. Особенно полезным он бывает тогда, когда программа имеет много разных подцелей, включающих в себя достаточно сложные операции. С точки зрения человека, лишь использующего эту программу, такой способ также более предпочтителен, так как упрощает процедуру запросов.
Предположим, что Вы хотите узнать имя сына. Этот запрос оформляется при помощи правила:
who_is_the_son :- parents(Son,Father,Mother), male(Son), write("The son is ",Son,"."),nl.
?- who_is_the_son.
Результат этого запроса: «The son is Sam».
подробнее
Заказчик
заплатил
заплатил
500 ₽
Заказчик не использовал рассрочку
Гарантия сервиса
Автор24
Автор24
20 дней
Заказчик принял работу без использования гарантии
6 июня 2020
Заказ завершен, заказчик получил финальный файл с работой
5
Разработать и реализовать на языке Пролог интеллектуальную систему, отвечающая на вопросы о родственных отноше.docx
2020-06-09 19:58
Последний отзыв студента о бирже Автор24
Общая оценка
5
Положительно
Заказ был сделан в срок. Все хорошо, грамотно и без ошибок! Автор всегда на связи и в любой момент может помочь. Спасибо большое!