7,8 лаба зі Ш.І / L7_Model_Nasled
.doc
Лабораторная работа
Моделирование механизма наследования на ПРОЛОГЕ
Цель работы:
реализация принципа наследования свойств с помощью языка логического программирования ПРОЛОГ
Подготовка к работе:
Повторить материал лекций по теме: модель знаний "Семантическая сеть".
Построить семантическую сеть текста (для заданного варианта) по аналогии с приведенным примером:
Все птицы летают.
Канарейки желтого цвета.
Твики живет у Тома.
Твики это канарейка.
Канарейка это птица.
Семантическая сеть - «Птицы»
Представим эту сеть на Прологе в виде трех отношений и одного свойства:
is_a(tviki, canary). отношение «является видом»
is_a(canary, bird).
live(tviki, tom). отношение «живет у»
color(canary, yellow). отношение «имеет цвет»
flay(bird). свойство «летать»
Составить пролог-программу описывающую семантическую сеть.
Порядок выполнения работы:
-
Загрузить среду программирования на turbo-prolog
-
Набрать текст пролог-программы тестового примера, устранить допущенные синтаксические ошибки
-
Задайте системе следующие запросы
-
кто живет у Тома?
-
какого цвета канарейка?
-
кто может летать?
Должны быть получены положительные ответы в соответствии с текстом. В противном случае устраните логические ошибки.
-
Теперь задайте следующие вопросы:
-
какого цвета Твики?
-
имеет ли Том канарейку?
-
живет ли у Тома птица?
-
летает ли канарейка?
-
летает ли Твики?
Вы получили отрицательные ответы. Это связано с тем, что фактов, непосредственно отвечающих на эти вопросы в базе знаний нет.
-
Введите правила, позволяющие реализовать принцип наследования.
А. Обобщение понятия «является видом»
Введем предикат is_all(X,Y) - являться видом всех вышестоящих классов.
is_all(X,Y):-is_a(X,Y).
is_all(X,Y):-is_a(X,Z),is_all(Z,Y).
Б. Наследование свойства «летать»
flay(X):-is_all(X,Y),flay(Y). Если Y является вышестоящим родом для X и Y летает, то X тоже летает
В. Наследование цвета color(X,C):-is_all(X,Y),color(Y,C).
Г. Наследование имени рода для предиката «живет у» live(X,Y):-is_all(Z,X),live(Z,Y).
-
Отладить программу и получить правильные ответы на вышеперечисленные вопросы.
-
Модифицировать текст пролог-программы для своего варианта задания.
Содержание отчета:
Отчет оформляется по общим правилам и содержит текст варианта задания, семантический граф текста, пролог-программу с фактами и правилами наследования.
Контрольные вопросы:
-
Какие выгоды в программировании дает принцип наследования?
-
Почему при описании предиката "являться видом" используется рекурсия?
-
Почему в других правилах наследования не используется рекурсия?
-
Перечислите элементы семантической сети.
-
Какие ограничения налагаются на порядок следования предикатов в пролог-программе?
Варианты заданий
№ |
Текст |
Вопросы |
1 |
Планеты светят отраженным светом. Марс красноватого цвета. Венера голубоватого цвета. Марс – планета. Венера – планета. Все планеты вращаются вокруг оси. |
Какого цвета бывают планеты? Какие планеты светят отраженным светом? Вращается Марс вокруг оси? |
2 |
Большинство лиственных растений сбрасывают на зиму листья. Широколиственные породы деревьев имеют крупные листовые пластины. У калитки растет дуб. Дуб относится к широколиственным растениям. Лиственные растения подразделяются на широколиственные и мелколиственные |
Какие листья у дуба? Какие деревья сбрасывают листву? Относится дуб к лиственным растениям? |
3 |
Деревья выделяют в атмосферу кислород. кустарник не имеет главного ствола. Бузина растет на пригорке. Кустарник вид дерева. Бузина – кустарник. |
Бузина выделяет кислород в атмосферу? У каких деревьях нет главного ствола? Что растет на пригорке? |
4 |
Низшие растения не имеют листьев. Грибы относятся к низшим растениям. Грибы неспособны к фотосинтезу. Сморчок – съедобный гриб. |
Способен сморчок к фотосинтезу? Какие растения не имеют листьев? |
5 |
Все птицы имеют крылья. Пингвин – птица. Пингвины имеют черный клюв. В зоопарке живет пингвин Яков. |
Какого цвета клюв у Якова? Кто является птицей? Кто живет в зоопарке? |
6 |
Волк – хищник. Хищники питаются мясом. Собака потомок волка. Собаки лают. Рекс живет у Петра. Рекс – собака. |
Чем питается Рекс. Кто лает? Рекс – хищник? |
7 |
Олени имеют рога. Лось – прекрасный пловец. Лось – представитель семейства оленей. Семен приручил лося и назвал его Гром. |
У кого есть рога? Гром плавает? Какой вид животного приручил Семен? |
Справочный материал:
Текст Пролог-программы тестового примера представлен ниже.
Секция описания типов
domains
s=symbol
Секция описания предикатов
predicates
is_a(s,s)
is_all(s,s)
live(s,s)
color(s,s)
flay(s)
Секция описания фактов и правил
clauses
факты
is_a(tviki, canary).
is_a(canary, bird).
Обобщение понятия «является видом»
is_all(X,Y):-is_a(X,Y).
is_all(X,Y):-is_a(X,Z), is_all(Z,Y).
факт
live(tviki, tom).
Наследование имени рода для предиката «живет у» live(X,Y):-is_all(Z,X), live(Z,Y).
факт
color(canary, yellow).
наследование цвета
color(X,C):-is_all(X,Y), color(Y,C).
факт
flay(bird).
наследование свойства летать
flay(X):-is_all(X,Y), flay(Y).