Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Основные элементы языка Пролог.




 

Алфавит языка Пролог включает следующие символы:

1. A, B, C, …, Z, a, b, c,…,z — прописные и строчные буквы латинского алфавита.

2. 0,1,2,3,4,5,6,7,8,9 — цифры.

+ - = * / < > [ ] : ; , | . —специальные знаки

 

 

Основными конструкциями логического программирования являются термы и утверждения. В логических программах существует только один тип данных — логические термы (рис. 1). Понятие “терм” в Прологе совпадает с понятием терма в исчислении предикатов и означает либо переменную, либо константу, либо составной терм.

 

 

Переменная в Прологе — это последовательность латинских букв, цифр и знака подчеркивания, начинающая с прописной буквы или знака подчеркивания. Например, X, all, S1 — переменные. Переменные используются для представления объектов, значения которых определяются в ходе решения задачи. Переменные записываются в качестве аргументов предикатов в Пролог— программе и в запросах. Если значение аргумента предиката не принимается во внимание, то этот аргумент обозначается анонимной переменной, то есть в место имени переменной указывается знак подчеркивания «_».

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

Атомы могут быть трех типов:

1. символьный атом — это последовательность латинских букв, цифр и знака подчеркивания, начинающая со строчной буквы. Например, may, all, factorial — символьные атомы. Символьные атомы не должны содержать пробелы. Символьные атомы используются для обозначения предметных, функциональных и предикатных констант.

2. Последовательность специальных знаков есть атом, например, :- >= *.

3. Любое слово из букв латинского и русского алфавита и цифр, заключенное в апострофы, например, ‘Mary’, ‘Маша’,’1_мая’, ‘Arity_Prolog’. Пробелы в символьных атомах не допустимы.

Числа в языке Пролог используются целые и вещественные. Целые числа записываются так же, как в любом другом языке программирования; целые отрицательные числа записываются со знаком, в записи положительных чисел знак можно опустить, например, 135, 0, -89.

Вещественные константы могут быть представлены в форме с фиксированной точкой и с плавающей точкой, например, 135.712 и 0.135712E+3,соответственно.

Строки — это последовательности символов, заключенная между знаками $. Строки используются в задачах обработки текстов на естественных языках. $$ — пустая строка. Знак $ внутри строки записывается дважды. Строки могут включать пробелы, например, $1 января 2003 года $ есть строка, и $Turbo-Prolog$ тоже строка.

Составной терм — это конструкция вида f(t1,t2,…,tk), где f — символьный атом, определяющий функциональную константу или главный функтор, а t1,t2,…,tk — термы, каждый из которых может быть составным термом. Составной терм по-другому называется структурой;
book(Author,Title,Year) — пример составного терма.

 


 




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

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

 

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

<имя предиката>(<терм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), соответственно, параллелен оси Х.

 







Вопросы.

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

Вопрос, включающий в себя конъюнкцию предикатов 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).
выводим из логической программы, т.е. является логическим следствием программы.

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

 

 





Правила.

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

С точки зрения синтаксиса языка Пролог правило ¾это утверждение вида
A:¾ B1,B2,…Bn. (n³0)
где A ¾ заголовок правила, а конъюнкция предикатов B1,B2,…Bn
называется телом правила.

В правилах, так же как и в фактах, переменные неявно связаны квантором всеобщности. Например, утверждение «Точка с координатами (X,Y) принадлежит окружности с радиусом, равным 2, и с центром в точке начала координат, если X2+Y2=4.» на Прологе будет записано следующим образом:

circle(X,Y):¾ X^2+X^2=4.
что означает для любых X и Y, таких что X^2+X^2=4, точка (X,Y) принадлежит окружности с радиусом, равным 2, и с центром в точке начала координат.

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

 

 










Последнее изменение этой страницы: 2018-04-12; просмотров: 377.

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