Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
учебное_пособие_флп.doc
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
675.84 Кб
Скачать

2.2.Определение отношений на основе фактов и правил

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

Отношение – это обобщение функции, которое определяется как подмножество прямого произведения множеств.

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

Предикат определяет, является ли данное отношение истинным или ложным, поэтому предикат можно рассматривать как “индикатор отношения”.

Для записи отношений между объектами можно использовать различные формализмы. В ЛП используется исчисление предикатов первого порядка (ИП1П).Вернее, ограниченная форма ИП1П в виде логики так называемых хорновских предложений(факты, правила и цели).

По сути хорновские дизъюнкты - это логические импликации(правила типа если - то) .В общем виде импликации имеют вид:

A ;A ;….;A :-B ,B ,…,B (n>=0;m>=0)

В – это посылки импликации, А – это заключение импликации.

Чтобы увеличить эффективность метода резолюций, используемого в качестве метода автоматизации доказательства теорем, берутся лишь формулы при n=1 и m>=0:

  • Формула Хорна-> A:-B ,B ,….,B

  • (n=1; m>0)- это правило

  • A:-

  • (m=0;n=1) - это факт

  • ?:-B ,B ,…..,B

  • (m>0;n=0) –это цель

Рис.2.1. Схема, демонстрирующая два уровня значения программы – декларативное и процедурное

2.3 Пример программы на языке Пролог

Рассмотрим классическую программу родственных отношений на языке Пролог

Дано дерево родственных отношений вида:

Рис.2.2.Дерево родственных отношений

Предположим, надо определить, кто является сестрой Ann?

Тот факт, что Tom является родителем Bob (стрелки на рисунке) можно записать следующим образом:

parent(tom,bob).

parent- имя отношения –предикат

tom,bob –параметры (аргументы) отношения.

Имена собственные являются константами и в Прологе пишутся со строчной буквы.

Программа на Прологе для ответа на вопрос, кто является сестрой Ann имеет следующий вид:

Листинг 2.1.Программа о семейных отношениях

domains

person=symbol

predicates

parent(person,person)

female(person)

sister(person,person)

clauses

parent(pam,bob). %определение отношений

parent(tom,bob). % на основе фактов

parent(bob,ann).

parent(bob,pat).

parent(pat,jim).

parent(tom,liz).

female(ann).

female(pat).

female(liz).

female(pam).

sister(X,Y):- %определение отношений

parent(Z,X), % на основе правил

parent(Z,Y),

female(X),

X<>Y.

goal (внешняя цель)

sister(X,ann).

Представленное на рис.1.1.дерево семейных отношений определено в программе на основе 6 предложений, каждое из которых объявляет о наличии одного факта, выраженного отношением parent.Это отношение определяет связь между двумя объектами.

Чуть ниже представлены 4 предложения, каждое из которых объявляет о наличии факта, выраженного унарным отношением female.Это отношение определяет такое свойство объекта как принадлежность к женскому полу.

Последовательность предложений, описывающих один и тот же предикат, называется процедурой.

Все предложения, относящиеся к одной и той же процедуре, имеют одинаковое имя предиката и одну и ту же размерность(арность). Эти предложения должны следовать друг за другом.

Следующее предложение программы определяет отношение sister(X,Y) на основе правил. Правила определяют условия, при которых отношения между объектами становятся истинными. Чем правило отличается от факта? Факт всегда является истинным. Правило становится истинным при выполнении определенных условий. Правило имеет голову и тело. Правило (его заголовок) принимает значение истина только в том случае, если приняли значение истинности все предложения, составляющие его тело.

голова:- тело.

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

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

Нельзя использовать пробелы, знак минус и слеш.

Построим графы, определяющие абстрактные отношения, такие как сестра и тетя :

Рис.2.3 Определение отношений сестра и тетя