Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Определение отношений на основе правил




Рассматриваемый пример программ можно легко дополнить с применением мно­гих интересных способов. Вначале введем информацию о мужском или женском поле людей, участвующих в отношении parent. Эту задачу можно решить, добавив сле­дующие факты к программе:

female (pam). male! torn].

male(bob). female { Иг). female (pat). female (ann) -male(jim).

В этом случае введены отношения male и female. Эти отношения являются унарными (или одноместными). Бинарные отношения типа parent определяют связь между парами объектов. С другой стороны, унарные отношения могут использовать­ся для объявления простых свойств объектов, которые они могут иметь или не иметь. Первое из приведенных выше унарных предложений можно прочитать таким образом: Пэм - женщина. Вместо этого информацию, объявленную в двух унарных отношениях, можно передать с помощью одного бинарного отношения. В таком слу­чае приведенная выше часть программы примет примерно такой вид:

sext pam, feminine). sex< torn, masculine). sex [ bob, masculine).

В качестве следующего дополнения к программе введем отношение offspring (отпрыск), обратное отношению parent. Отношение offspring можно определить таким же образом, как и parent, предоставив список обычных фактов об отношении offspring, и в качестве каждого факта указать такую пару людей, что один из них является сыном или дочерью другого, например: offspring; lie, torn).



Часть I, Язык Prolog


Но отношение of f spring можно определить гораздо более изящно, используя то, что оно является противоположным parent и что parent уже было определено. Этот альтернативный способ может быть основан на следующем логическом утверждении:

Для всех X v. Y,

Y является сыном или дочерью х, если
х является родителем Y.

Такая формулировка уже более близка к синтаксису языка Prolog. Соответст­вующее предложение Prolog, которое имеет тот же смысл, выглядит таким образом: offspring[Y, X):- parent: X У».

Это предложение можно также прочитать так: Для всех X и Y,

если X является родителем Y, то

Y является сыном или дочерью У. •

Предложения Prolog, такие как

offspring: Y, X):- parent: X, fi.

называются правилами. Между фактами и правилами существует важное различие.

Такие факты, как

patent (torn, Иг).

представляют собой логические утверждения, которые всегда и безусловно являются

истинными. С другой стороны, правила представляют собой утверждения, которые

становятся истинными, если удовлетворяются некоторые условия. Поэтому принято

считать, что правила состоят из следующих частей:

• условие (правая часть правила);

• заключение (левая часть правила).

Часть, соответствующая заключению, называется также головой предложения, а часть, соответствующая условию, — телом предложения, как показано ниже. offspring; Y, X):- parent! x, Y}.

*---------------------- V----------------------- *----------------- V ----------------- J

голова тело

Если условие parent [ X, Y] является истинным, то его логическим следствием становится offspring (У, X).

Применение правил в языке Prolog иллюстрируется в следующем примере. Зада­дим программе вопрос, является ли Лиз дочерью Тома:?- offspring! liz, torn).

Поскольку в программе отсутствуют факты о дочерях и сыновьях, единственным способом поиска ответа на этот вопрос является использование правила с определе­нием отношения offspring. Данное правило является общим в том смысле, что оно применимо к любым объектам X и Y; но его можно также применить и к таким кон­кретным объектам, как liz и torn. Чтобы применить правило к объектам liz и ton-.,. вместо Y необходимо подставить liz, а вместо X - torn. Это действие называется конкретизацией переменных (в данном случае — X и Y), которое выполняется сле­дующим образом: X <■ torn и Y = liz

После конкретизации будет получен частный случай общего правила, который выглядит следующим образом: offspring! liz, torn):- parent! torn, liz).

Часть с обозначением условия принимает вид parent; torn, liz)

После этого система Prolog пытается определить, является ли истинной часть с обозначением условия. Поэтому первоначальная цель: offspring: liz, tomi


Глава 1, Введение в Prolog



заменяется подцелью: patent f torn, liz)

Оказалось, что задача достижения этой (новой) цели является тривиальной, по­скольку ее можно найти как факт в рассматриваемой программе. Это означает, что часть данного правила с обозначением заключения также является истинной, и Prolog в качестве ответа на вопрос выводит yes.

Теперь введем в рассматриваемый пример программы еще некоторую информа­цию о семейных отношениях. Определение отношения mother может быть основано на следующем логическом утверждении:





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


Дата добавления: 2015-10-01; Мы поможем в написании ваших работ!; просмотров: 566 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Два самых важных дня в твоей жизни: день, когда ты появился на свет, и день, когда понял, зачем. © Марк Твен
==> читать все изречения...

2282 - | 2108 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.008 с.