Структура программы на языке prolog. Представление о логическом программировании

Страницы работы

Содержание работы

18. структура программы на языке prolog. Представление о логическом программировании. Представление знаний о предметной области в виде фактов и правил базы знаний prolog'a.

Prolog- это язык программирования,   который предназначен для   обработки  символьной        нечисловой  информации,   и особенно   хорошо  он  приспособлен  для  решения   задач,   в которых фигурируют объекты и отношения между ними. Отличия prologa от других языков:

Традиционные языки программирования остаются языками типа «КАК», язык prolog порывает с традициями языков типа «КАК» поскольку он определенным образом направляет программистское мышление, заставляя программиста давать определение ситуаций и формулировать задачи вместо того, чтобы во всех деталях расписывать решение этих задач. Традиционные языки программирования являются процедурно-ориентированными. Язык prolog основан на описательной или декларативной точке зрения. Декларативный смысл определяет что должно быть результатом работы программы в то время как процедурный смысл определяет как этот результат может быть получен.

Области применения prolog:

-    Быстрая   разработка   прототипов (макетов) в  упрощенной версии(для любых задач)

-   проверка   различных   теорий  для   доказательства   теорем, стратегий искусственного интеллекта

-  конструирование встроенных экспертных систем и оболочек экспертных систем

- построение пакетов для работы с символьной информацией для решения уравнений, дифференцирования и интегрирования

- разработка приложений для баз данных

-  планирование и составление расписаний, проектов, учебных планов, программ.

Структура программы:

1.   DOMAINS/*определение данных*/

Этот   раздел   определяет   типы   данных,    используемых   в программе. Содержимое его может отсутствовать.

2.  PEDICATES /*определение предикатов*/

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

3.   CLAUSES /*определение фактов и правил */

Это основной раздел программы, в нем определяются факты и правила.

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

Заголовок- это предикат, а тело состоит из термов, которые могут быть связаны между собой отношениями И (ставим запятую), ИЛИ (ставим точку с запятой ). Между телом и заголовком ставиться :Каждое правило должно заканчиваться точкой.

Имена переменных должны начинаться с прописной буквы и могут    содержать    только    буквы    и    цифры    или    знак подчеркивания.   Одиночным  знаком     _     будем  обозначать анонимные переменные.

4.   GOAL/*определениецели*/

Определяется   цель.   Цель   может   состоять   из   несложных подцелей.

Если в начале строки стоит %, то все что идет до конца строки - это комментарий.

Пример: дерево родственных отношений

Тот факт, что Иван является родителем Петра на prolog будет записан так:

родитель(иван,петр).

родитель(ольга,петр).

родитель(иван,елена).

родитель(петр, нина).

………………………

женщина(ольга).

женшина(елена).

женщина(ирина).

женщина(нина).

мужчина(иван).

мужчина(петр).

мужчина(павел).

Отношение между мужчина и женщина унарные, отношение родитель - бинарные.

мать (х,у):родитель (х,у), женщина (х).

вопросы : родитель (х, нина) родитель (ольга, х) родитель (x.v)

% программа дерево родственных отношений

DOMAINS

S=symbol

PEDICATES

родитель (s,s) женщина (s) мужчина (s)

мать(s,s)

отец (s,s)

сестра(s,s)

брат(s,s)

бабушка(s,s)

дедушка(s,s)

внук(s,s)

внучка(s,s)

дочь(s,s)

сын(s,s)

тетя(s,s)

дядя(s,s)

племенник(s,s)

племянница(s,s)

кузен(s,s)

кузина(s,s)

предок(s,s)

различные(s,s)

CLAUSES

Сестра:

Сестра(y,z):Родитель(x,y),

Женщина(y),

Различные(y,z).

Различные(x,y):Not (x=y).

ТЕТЯ:

Тетя(x,z):Родитель(y,z),

Сестра(x,y).

Похожие материалы

Информация о работе

Тип:
Ответы на экзаменационные билеты
Размер файла:
35 Kb
Скачали:
0