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

3.2. Представление клауз Хорна на языке Пролог. Факты. Правила. Вопросы.

3.2.1. Представление фактов в Пролог—программах.

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

<имя предиката>(<терм1>,<терм2>,…,<термn>).

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

Например, student(‘Иванов’).

Этот факт означает то, что Иванов является студентом.

Другой пример —

student(‘Иванов’,’МГГУ’).

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

Одноместные предикаты определяют свойства объектов, а nместные предикаты определяют отношения между объектами. Совокупность наборов значений переменных, при которых предикат p(x1,x2,…,xn) имеет значение “истина” называется nместным отношением. Реляционной схемой (схемой отношения) предиката называется описание роли каждого аргумента предиката.

Например, parent(<имя родителя>,<имя ребенка>)  схема предиката parent; person(<имя>,<пол>,<возраст>)  схема предиката person.

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

Синтаксические правила записи фактов в программе следующие:

  1. Имя предиката в утверждении-факте есть символьный атом.

  2. После имени предиката записывается список аргументов в круглых скобках. Между именем предиката и открывающей скобкой ‘(‘ не должно быть пробела.

  3. Возможны нуль—местные предикаты в фактах, т.е. предикаты, не имеющие аргументов.

  4. В качестве аргументов в списке могут быть как переменные, так и константы.

  5. В конце факта обязательна точка.

Переменные в фактах неявно связываются квантором всеобщности. Это означает, что факт p(T1,T2,…Tn). где Ti –переменные следует понимать так (T1) (T2)… (Tn) p(T1,T2,…Tn) —истина.

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

plus(X,0,X). что означает, сумма любого числа Х с нулем равна X.

proiz(X,0,0). что означает, произведение любого числа Х с нулем равна 0.

horizontal(p(X1,Y),p(X2,Y)). что означает, отрезок прямой, начало и конец которого точки p(X1,Y) и p(X2,Y), соответственно, параллелен оси Х.

3.2.2. Вопросы.

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

Вопрос, включающий в себя конъюнкцию предикатов p1,p2,…,pn , называется конъюнктивным вопросом. Каждый предикат pi называется целью. Конъюнктивный вопрос  это конъюнкция целей. Вопросы, состоящие из одной цели, называются простыми вопросами. Вопрос, не содержащий переменных, называется основным вопросом, а вопрос, включающий переменные, называется неосновным.

Переменные в вопросах неявно связаны квантором существования. Это означает, что вопрос ?p(X1,X2,…Xn). где X1,X2,…Xnпеременные, предполагает утвердительный ответ, если существует такой набор термов t1,t2,…tn, что подстановка {X1=t1,X2=t2,…Xn=tn} в предикат p дает результат “истина”. Если существует, хотя бы одна такая подстановка, то вопрос ?p(X1,X2,…Xn). выводим из логической программы, т.е. является логическим следствием программы.

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