Лекции.Орг


Поиск:




Категории:

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

 

 

 

 


Правила. Помимо фактов база данным может содержать факты




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

likes(bill, X):- prefers(X, wine).

Здесь условие состоит из единственной цели prefers(X, wine). Данное правило соответствует предложению "Bill likes anybody, provided (if) she prefers a wine". В отличие фактов likes, данное правило охватывает не одну пару объектов, а (потенциально) множество таких пар (в данном случае две пары).

Выполним следующие запросы:

?- likes(bill, jane).

true.

?- likes(X, jane).

X = bill; false.

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

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

Добавим в базу данных следующие правила.

likes(kate, X):- likes(jane, X), likes(mary, X).

is_happy(X):- likes(X, Y), likes(Y, X).

Рассмотрим выполнение следующих запросов

?- likes(X, john).

X = jane; X = alice; X = mary; X = kate.

?- is_happy(X).

X = john; X = mary; false.

?- is_happy(X), prefers(X, Y).

X = mary, Y = wine; false.

Более подробно

Термы

Программа на Прологе — это набор термов. Термы:

· константы:

o атомы;

o числа;

· переменные;

· структуры (составные термы).

Атомы можно записывать как:

· последовательность букв и цифр, начиная с буквы в нижнем регистре, например…;

· последовательность символов + - * / \ ~ < >:.? @ # $ &, например…;

· последовательность произвольных символов, заключенных в одинарные кавычки. Отметим, что 'mary' — это то же самое, что mary, а '--->' — то же самое, что --->.

Числа могут иметь знак, десятичную точку и экспоненту, например….

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

Структура состоит из функтора и компонентов (сначала функтор, потом компоненты в круглых скобках через запятую). Функтор — атом, а каждый из компонентов — произвольный терм (в т. ч. структура). Примеры:

likes(john, mary)

beliefs(alice, likes(john, mary))

knows(jane, beliefs(alice, likes(john, mary)))

birth_date(john, date(1980, 6, 15))

+(1, 2)

*(+(1, 2), +(3, 4))





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


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


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

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

Не будет большим злом, если студент впадет в заблуждение; если же ошибаются великие умы, мир дорого оплачивает их ошибки. © Никола Тесла
==> читать все изречения...

2613 - | 2287 -


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

Ген: 0.007 с.