Будь умным!


У вас вопросы?
У нас ответы:) SamZan.net

РУССКАЯ ПАТРИАРХАЛЬНАЯ СЕМЬЯ

Работа добавлена на сайт samzan.net:

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 24.11.2024

УРОК 3.   БАЗА ЗНАНИЙ "РУССКАЯ ПАТРИАРХАЛЬНАЯ СЕМЬЯ"

ЧАСТЬ 1. СЛОЖНО-СОСТАВНЫЕ ВОПРОСЫ

Загрузите файл lab_3.pl.

Напишем программу, анализирующую родственные отношения в большой семье.

Допустим, есть семья, состоящая из пяти человек, и родственные связи между ними  можно представить  следующей схемой:

Начать  описание  такой  семьи  можно   с   описания отношения "родитель".

Имена принято писать с большой буквы, но Пролог воспринимает объекты написанные с большой буквы, как переменные. Решаем эту проблему с помощью заключения имени в апострофы (одинарные кавычки).

родитель(‘Иван_Петрович’, ‘Маша’).

родитель(‘Иван_Петрович’, ‘Миша’).    

родитель(‘Ольга_Николаевн’, ‘Миша’).      

родитель(‘Ольга_Николаевна’, ‘Маша’).

Используя эту начальную группу фактов, попытаемся определить правило для отношения отец. Отец это, во-первых, родитель, а, во-вторых, мужчина. Учитывая все вышесказанное:

отец(_некто,_ребенок):-родитель(_некто,_ребенок), пол(_некто,мужской).

Однако, задав вопрос типа ?-отец(‘Иван_Петрович’, ‘Маша’) мы получим ответ false, поскольку вторая подцель в правиле является ложно (предложение с именем "мужчина" вообще отсутствует в программе). Поэтому для полноты картины введем аналогичные факты для всех членов семьи.

пол(‘Петр_Петрович,мужской).

пол(‘Иван_Петрович,мужской).

пол(‘Ольга_Николаевна,женский).

пол(‘Миша,мужской).

пол(Маша,женский).  

Теперь отношение отец стало вполне корректным. Аналогично можно определить отношение мать.  

мать(_некто,_ребенок):-родитель(_некто,_ребенок), пол(_некто,женский).  

Правила для отношений "дочь" и "сын" очень похожи на  два предыдущих правила. Например, правило для отношения "дочь": _x - дочь _y, если _y - родитель _х, и _х принадлежит к женской половине человечества.

дочь(_X,_Y) :- родитель(_Y,_X),пол(_X,женский).

сын(_X,_Y) :- родитель(_Y,_X),пол(_X,мужской).

Если два человека  являются  родителями  кого-то,  то логично предположить  (берем стандартную семью), что  они являются также и супругами.

муж(_он,_она) :- отец(_он,_Реб),мать(_она,_Реб).

жена(_она,_он) :- мать(_она,_Реб),отец(_он,_Реб).

Следующие отношения, которые мы рассмотрим, есть брат и сестра.

брат(_X,_Y):-мать(_Z,_X),мать(_Z,_Y),пол(_X,мужской),_X \= _Y.

сестра(_X,_Y):-мать(_Z,_X),мать(_Z,_Y),пол(_X,женский),_X \= _Y.

Первое правило гласит, что _X является братом _Y,  если они оба имеют одних и тех же родителей (мать в частности), и _X обязательно должен быть  мужчиной (иначе  какой же  он брат?). Последнее условие необходимо, чтобы _Х не  оказался братом самому себе.  Второе  правило  целиком   аналогично первому и никаких новых пояснений здесь не требуется. Это правило не описывает полностью всех братьев данной семьи. Осталось еще ввести два факта:

брат(‘Петр_Петрович’, ‘Иван_Петрович’).

брат(‘Иван_Петрович’,’Петр_Петрович’).

То, что их два, связано с тем, что первый аргумент означает "кто есть брат", а второй - "для кого". Теперь можно поэкспериментировать с вопросами к построенной базе данных. Например, выясним  -  кто имеет  брата,  женатого  на Ольге Николаевне? Такой вопрос можно задать следующим образом:

?-брат(_X,_Y),муж(_Y, ‘Ольга_Николаевна’).

Это - сложный вопрос, состоящий из двух подцелей. Поиск ответа на него соответствует поиску по И-дереву, то есть такая цель будет считаться достигнутой, если будут достигнуты сначала первая, а затем и вторая подцели.

Естественно, _X = ‘Петр Петрович’, а _Y = ‘Иван  Петрович’, то  есть  у Петра  Петровича  есть  брат,  удовлетворяющий условиям запроса. Кстати, обратите внимание на то что,  если после вывода первого ответа вы нажмете клавишу «;», то получите два совершенно одинаковых ответа.

Задание 3.1

Выясните, почему именно два одинаковых ответа (нарисуйте дерево вывода).

На данный момент у нас имеется следующая база данных:

родитель(‘Иван_Петрович’, ‘Маша’).

родитель(‘Иван_Петрович’, ’Миша’).    

родитель(‘Ольга_Николаевна’, ‘Миша).      

родитель(‘Ольга_Николаевна’, ‘Маша’).

пол(‘Петр_Петрович,мужской).

пол(‘Иван_Петрович,мужской).

пол(‘Ольга_Николаевна,женский).

пол(‘Маша,женский).

пол(Миша,мужской).

мать(_X,_Y):-родитель(_X,_Y),пол(_X,женский).

отец(_X,_Y):-родитель(_X,_Y),пол(_X,мужской).

дочь(_X,_Y):-родитель(_Y,_X),пол(_X,женский).

сын(_X,_Y):-родитель(_Y,_X),пол(_X,мужской).

муж(_X,_Y):-отец(_X,_Z),мать(_Y,_Z).

жена(_X,_Y):-мать(_X,_Z),отец(_Y,_Z).

брат(_X,_Y):-мать(_Z,_X),мать(_Z,_Y),пол(_X,мужской),_X \= _Y.

сестра(_X,_Y):-мать(_Z,_X),мать(_Z,_Y),пол(_X,женский),_X \= _Y.

брат(‘Петр_Петрович’, ‘Иван_Петрович’).

брат(‘Иван_Петрович’, ‘Петр_Петрович’).

Продолжим рассмотрение генеалогического дерева и начнем с того, какое положение занимает Петр Петрович по отношению к другим  членам семьи. Для Маши  с  Мишей  он  является  дядей. Отразим этот факт в виде правила:

дядя(_X,_Y) :- родитель(_Z,_Y),брат(_X,_Z).

Для хозяйки он приходится деверем (об этом уже  знают значительно меньшее число людей).

     деверь(_X,_Y) :- брат(_X,_Z),муж(_Z,_Y).

Иными словами, деверь - это брат мужа. Последнее,  что  осталось  описать,  -  это  кто  кем является для Петра Петровича.

племянник(_X,_Y):-родитель(_Z,_X),брат(_Y,_Z),пол(_X,мужской).

племянник(_X,_Y):-родитель(_Z,_X),сестра(_Y,_Z),пол(_X,мужской).

племянница(_X,_Y):-родитель(_Z,_X),брат(_Y,_Z),пол(_X,женский).

племянница(_X,_Y):-родитель(_Z,_X),сестра(_Y,_Z),пол(_X,женский).

Так как мы уже ввели понятие дяди, мы можем его использовать для определения племянника:

племянник(_X,_Y):-дядя(_Y,_X),пол(_X,мужской).

племянница(_X,_Y):-дядя(_Y,_X), пол(_X, женский).

Невестка - жена брата (обратное отношение для деверя).

невестка(_X,_Y):-жена(_X,_Z),брат(_Z,_Y).

Теперь  мы  полностью   описали   отношения, которые наблюдаются  в этой  небольшой семье.

Задание 3.2

В качестве небольшого упражнения, выясните:  Верно ли, что если _X является деверем _Y, то _Y является невесткой _X, и если верно, то найти все пары _X и _Y. Задайте соответствующие вопросы.

_______________________________________________________________

Самостоятельное задание:

На этом уроке мы решили задачу описания семейных отношений для небольшой семьи из пяти  человек.

родитель(‘Иван_Петрович’, ‘Маша).

родитель(‘Иван_Петрович’, ‘Миша’).

родитель(‘Ольга_Николаевна’, ‘Маша’).

родитель(‘Ольга_Николаевна’, ‘Миша’).

пол(‘Петр_Петрович’,мужской).

пол(‘Иван_Петрович’,мужской).

пол(‘Ольга_Николаевна’,женский).

пол(‘Миша’,мужской).

пол(‘Маша’,женский).

брат(‘Петр_Петрович’, ‘Иван_Петрович’).

брат(‘Иван_Петрович’, ‘Петр_Петрович’).

мать(_X,_Y):-родитель(_X,_Y),пол(_X,женский).

отец(_X,_Y):-родитель(_X,_Y),пол(_X,мужской).

дочь(_X,_Y):-родитель(_Y,_X),пол(_X,женский).

сын(_X,_Y):-родитель(_Y,_X),пол(_X,мужской).

муж(_X,_Y):-отец(_X,_Z),мать(_Y,_Z).

жена(_X,_Y):-мать(_X,_Z),отец(_Y,_Z).

брат(_X,_Y):-мать(_Z,_X),мать(_Z,_Y),пол(_X,мужской),_X \= _Y.

сестра(_X,_Y):-мать(_Z,_X),мать(_Z,_Y),пол(_X,женский),_X \= _Y.

дядя(_X,_Y):-родитель(_Z,_Y),брат(_X,_Z).

деверь(_X,_Y):-брат(_X,_Z),муж(_Z,_Y).

племянник(_X,_Y):-родитель(_Z,_X),брат(_Y,_Z),пол(_X,мужской).

племянник(_X,_Y):-родитель(_Z,_X),сестра(_Y,_Z),пол(_X,мужской).

племянница(_X,_Y):-родитель( _Z,_X),брат(_Y,_Z),пол(_X,женский).

племянница(_X,_Y):-родитель(_Z,_X),сестра(_Y,_Z),пол(_X,женский).

невестка(_X,_Y):-жена(_X,_Z),брат(_Z,_Y).

 

Сейчас  мы расширим их число.

Рассмотрите следующую схему:

Сохраним текст программы под новым именем. Откроем текст программы во встроенном редакторе.( Для этого в диалоговом окне выберите пункт меню File, в выпавшем меню выберите Navigator. Откроется окно, в котором отображен список файлов, зеленым цветом обозначены открытые файлы. Для просмотра и редактирования файла необходимо выбрать необходимый файл одинарным нажатием мышью и нажать на значок карандаша, изображенный вверху окна (крайний правый).) Далее в окне редактора выбираете пункт меню File, в выпавшем списке выбираете пункт Save as. Будет открыто окно, в котором при желании вы сможете изменить путь к файлу, это нам сейчас не нужно,  просто в конце строки вводим желаемое имя, например, lab_2last.pl и нажимаете кнопку Ok.

Задание 3.3

Добавьте к написанной программе множество фактов, необходимых для описания отношений в этой семье. Найдите по полученной программе всех мужчин, которые являются отцами.

Задание 3.4

Объедините две семьи следующим образом: Пусть Миша женится на Люсе и у них родится сын - Андрейка.

Задание 3.5

После этого в связи с появлением большого количества новых кровных и некровных родственников напишите правила, определяющие следующие отношения:

а) внук,дед,бабушка;

б) тетя,племянник,племянница (используя определение тети);

в) шурин - брат жены;

г) зять - муж сестры или дочери;

д) свекор - отец мужа;

е) свекровь - мать мужа;

ж) тесть - отец жены;

з) теща - мать жены;

и) сноха - жена сына для отца;

к) невестка - жена сына для матери;

л) золовка - сестра мужа;

м) свояченица - сестра жены;

н) сват - отец одного из супругов для родителей другого;

о) сватья - мать одного из супругов для родителей другого;

Задайте вопросы для каждого нового отношения.




1. Модуль 1 Професійні хвороби Змістовий модуль 3 Захворювання зумовлені дією хімічних факторів
2. Этические вопросы деятельности адвоката
3. фольклор. Народные песни сказки легенды пословицы были и остаются неисчерпаемым источником вдохновения п
4. тема знаний о явлениях и процессах которая характеризуется свойственными ей объектами и предметами
5. Детский сад 211 ОАО РЖД
6. Уральский государственный экономический университет Центр дистанционного образования.
7. тематизирован фактический материал об условиях жизни организмов
8. Вариант 1 Задача 1нечетный вариант Даны прогнозные данные по ценным бумагам двух компаний А и В из разны
9. Но поскольку постоянство лишь дополнение к изменению то возникает естественный вопрос- существуют ли факты
10. Питер. Вечеринка Стиляги или назад в СССР в стиле зажигательной дискотеки.html
11. О чем бы вы ни мечтали приступайте В дерзости есть гений и сила и волшебство
12. Тайные общества Китая
13. Историческая живопись первой половины 19 века Брюлллов Бруни Иванов Для русского изобразительного искус.
14. Тема 2.- Гносеологія філософія пізнання Мета- ознайомити студентів з основами теорії пізнання дати уявл
15. РЕФЕРАТ дисертації на здобуття наукового ступеня кандидата сільськогосподарських наук4
16. острая антропонозная инфекционная болезнь вызываемая Bcillus nthrcis характеризуется тяжелой интоксикацией по
17. Падение отеля Дюморт В НьюЙорке 1970го года Магнус Бейн наблюдает за тем как некогда гламурный отель
18. Статья- Кондакарь типографского устава и музыкальная культура древней Руси XI XII веков
19. Управление трудовыми ресурсами 1
20. протон Который в центр помещен Атома который построил Бор