Описание взаимоотношений между объектами — КиберПедия 

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

Своеобразие русской архитектуры: Основной материал – дерево – быстрота постройки, но недолговечность и необходимость деления...

Описание взаимоотношений между объектами

2020-12-27 60
Описание взаимоотношений между объектами 0.00 из 5.00 0 оценок
Заказать работу

Как уже говорилось, Пролог создан для того, чтобы описывать взаимоотношения между объектами. В этом смысле Пролог можно назвать реляционным языком. "Реляционность" Пролога является значительно более мощной и развитой по сравнению с реляционными языками, используемыми для работы с базами данных. Именно поэтому зачастую Пролог используется для создания СУБД, в которых применяются сверхсложные запросы и процедуры поиска.

Пусть у нас есть несколько объектов. Обозначим их именами a, b, c, d, e и f. Рассмотрим отношение типа "родитель" между этими объектами:

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

На Прологе эта схема будет представлена следующей программой из 6 предложений (фактов):

родитель(a, c).

родитель(b, c).

родитель(b, d).

родитель(c, e).

родитель(c, f).

родитель(f, g).

Аргументы отношения могут быть атомами (конкретными объектами или константами) или переменными - абстрактными объектами.

Здесь объекты a, b, c, d, e, f – это атомы (константы). Обратите внимание на то, что они записываются строчными буквами. Константы на Прологе бывают символьного типа, строкового типа, а также константы - числа. В данном случае мы имеем дело именно с символьными константами. Как обычно, константа – это то, что имеет неизменное значение.

родитель - это бинарное отношение (отношение второго порядка). С тем же успехом можно было бы дополнить нашу схему, добавив отношения первого порядка. Например:

женщина (a).

мужчина (b).

мужчина (c).

и т.д.

Классический Пролог является интерактивной средой - он позволяет пользователю задавать системе вопросы и, естественно, получать на них ответы.

После ввода рассмотренной выше программы Пролог-системе можно будет задавать различные вопросы.

Синтаксис постановки вопроса на языке Пролог выглядит так:

? утверждение

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

Например:

? – родитель (a, c)

Да

? – родитель (a, e)

Нет

и т.п.

Можно задавать и вопросы вида:

?- родитель(a, X)

X = c

Да

?- родитель(X, c)

X = a

X = b

Да

?- родитель(X, Y)

X=a Y=c

X=b Y=c

X=b Y=d

X=c Y=e

X=c Y=f

X=f Y=g

Да

 

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

 

СОСТАВНЫЕ ВОПРОСЫ

Пролог умеет отвечать не только на такие примитивные вопросы, какие были приведены выше. Вопросы могут быть сложными, образующими логические выражения. Примером составного вопроса является вопрос вида "кто является родителем родителя?". Для того чтобы задать такой вопрос, определим понятие "родитель родителя" следующим образом.

Некто X является родителем родителя Z, если этот X – родитель некоторого Y, а этот Y является родителем для Z. Это утверждение может быть записано в виде логического выражения, представляющего коньюнкцию. В Прологе операция И обозначается ключевым словом and либо запятой:

родитель(X, Y) and родитель (Y, Z)

Найдем родителя и "деда" объекта g:

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

?- родитель(X,Y), родитель(Y, g)

Реакция системы на этот вопрос будет заключаться в выдаче значений переменных X и Y:

X = c

Y = f

Обратите внимание на то, что наш вопрос мог быть записан и в таком виде:

?- родитель(Y, g), родитель(X,Y)

Результат будет тем же самым, однако, как это будет видно далее, эффективность поиска в этом случае будет выше.

 

ПРАВИЛА

Введем отношение "отпрыск". Можно изобразить аналогичную вышеприведенной схему отношений и ввести еще 6 предложений-фактов. Однако значительно элегантнее определить отношение "отпрыск" (отношение, противоположное отношению "родитель") следующим образом:

С точки зрения формальной логики понятие "отпрыск" можно определить так:

Для любых X и Y Y является отпрыском X, если X - родитель Y.

На Прологе это будет записано в виде следующего предложения:

отпрыск(Y,X):- родитель(X,Y).

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

Если (антецедент) То (консеквент),

то в Прологе правило выглядит иначе – сначала записывается заключение, а затем посылка:

Заключение     if   Посылка

Посылка в Прологе называется телом правила, а заключение - головой правила.

(Голова) if   (Тело)

Например, отношение родитель_родителя может быть представлено в виде правила

родитель_родителя(X,Z):- родитель(X,Y), родитель(Y,Z).

А отношение "сестра" может быть определено так:

сестра(X,Y):-

родитель(Z,X),

родитель(Z,Y),

женщина(X).

 

 


Поделиться с друзьями:

Типы оградительных сооружений в морском порту: По расположению оградительных сооружений в плане различают волноломы, обе оконечности...

Двойное оплодотворение у цветковых растений: Оплодотворение - это процесс слияния мужской и женской половых клеток с образованием зиготы...

Своеобразие русской архитектуры: Основной материал – дерево – быстрота постройки, но недолговечность и необходимость деления...

Автоматическое растормаживание колес: Тормозные устройства колес предназначены для уменьше­ния длины пробега и улучшения маневрирования ВС при...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.01 с.