Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Основы языка программирования Пролог




Объекты рассуждения в Прологе называются термами синтаксическими объектами одной из следующих категорий

· константы,

· переменные,

· функции (составные термы или структуры), состоящие из имени функции и списка аргументов-термов, имена функций начинаются со строчной буквы..

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

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

Специальным знаком «_» обозначается анонимная переменная, которая используется тогда, когда конкретное значение переменной не существенно для данного предложения. Анонимные переменные не отличаются от обычных при поиске соответствий, но не принимают значений и не появляются в ответах. Различные вхождения знака подчеркивания означают различные анонимные переменные.

Предложение- это фраза Хорна, в которой посылки связаны между собой логическим «И», а дизъюнкты- логическим «ИЛИ».

Простейшим типом предложения является факт. Любой факт имеет соответствующее значение истинности и определяет отношение между термами.

Факт является простым предикатом, который записывается в виде функционального терма, например:

мать(мария, анна).

отец(иван, анна).

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

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

Цель: мать (мария, юлия).

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

Цель: мать(X, юлия).

Сложные цели представляют собой конъюнкцию простых целей и имеют следующий вид:

Цель: Q1, Q2,…,Qn, где запятая обозначает операцию конъюнкции, а Q1, Q2,…,Qn – подцели главной цели.

Конъюнкция в Прологе истинна только при истинности всех компонент, однако, в отличие от логики, в Прологе учитывается порядок оценки истинности компонент (слева направо).

Пример 18.

Пусть задана семейная БД при помощи перечисления родительских отношений в виде списка фактов:

мать(мария, анна).

мать(мария, юлия).

мать(анна, петр).

отец(иван, анна).

отец(иван, юлия).

Тогда вопрос, является ли иван дедом петра, можно задать в виде следующей цели:

Цель: отец(иван, X), мать(X, петр).

На самом деле БД Пролога включает не только факты, но и правила, которые представляют собой не множество, а список. Для получения ответа БД просматривается по порядку, то есть в порядке следования фактов и предикатов в тексте программы.

Цель достигнута, если в БД удалось найти факт или правило, который (которое) удовлетворяет предикату цели, то есть превращает его в истинное высказывание. В нашем примере первую подцель удовлетворяют факты отец(иван, анна). и отец(иван, юлия). Вторую подцель удовлетворяет факт мать(анна, петр). Следовательно, главная цель удовлетворена, переменная X связывается с константой анна.

Третьим типом предложения является правило.

Правила – это предложения вида

H: - P1, P2,…, Pn.

Символ «: -» читается как «если», предикат H называется заголовком правила, а последовательность предикатов P1, P2,…, Pn называется телом правила. Приведенное правило является аналогом хорновского дизъюнкта ШP1ЪШ P2,…,ЪШPn ЪH. Предикаты P1, P2,…, Pn часто назыавают посылками. Заголовок следует из тела правила. Заголовок истинен, если истинны все посылки в теле правила. В посылках переменные связаны квантором существования, а в заголовке - квантором всеобщности.

Пример 19.

Добавим в БД примера 18 правила, задающие отношение «дед»:

мать(мария, анна).

мать(мария, юлия).

мать(анна, петр).

отец(иван, анна).

отец(иван, юлия).

дед (X, Y): - отец(X, Z), мать(Z, Y).

дед (X, Y): - отец(X, Z), отец(Z, Y).

Тогда вопрос, является ли иван дедом петра, можно задать в виде следующей цели:

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

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

Очень часто правила в Прологе являются рекурсивными. Например, для нашей семейной БД предикат «предок» определяется рекурсивно:

предок(x, y): - мать(x, y).

предок(x, y): - отец(x, y).

предок(x, y): - мать(x, z), предок(z, y).

предок(x, y): - отец (x, z), предок(z, y).

Рекурсивное определение предиката обязательно должно содержать нерекурсивную часть, иначе оно будет логически некорректным и программа зациклится. Чтобы избежать зацикливания, следует также позаботиться о порядке выполнения предложений, поэтому практически полезно, а порой и необходимо придерживаться принципа: «сначала нерекурсивные выражения».

Программа на Прологе - это конечное множество предложений.




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


Дата добавления: 2015-06-27; Просмотров: 451; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.058 сек.