Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

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






Логическое программирование на языке Пролог. Представление знаний о предметной области в виде фактов и правил базы знаний Пролога. Организация повторений.




Пролог является представителем семейств языков логического программирования и в сравнении с традиционными языками программирования, предназначенными для записи алгоритмов обладает существенными особенностями:

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

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

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

Программирование на Прологе включает в себя следующие этапы:

1) Объявление фактов и отношений между ними

2) Определение правил взаимосвязи объектов и отношений между ними.

3) Формулировка вопроса об объектах и отношений между ними.

Рассмотрим объекты которыми оперирует Пролог:

Имена – это последовательность букв и цифр, начинающиеся с буквы (строчной).

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

:- обозначает импликацию (если, то)

? обозначает отрицание

! обозначает отсечение

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

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

Списки – представляют собой объединение элементов произвольного вида, разделённых запятыми и заключённых в квадратные скобки. Списки от структур отличаются тем, что количество элементов может меняться при выполнении программы. Пример списков: [зелёный, жёлтый, красный].

Структура программы. Программа на языке Prolog состоит из следующих разделов:

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

domains

person, thing = symbol

predicates

likes (person, thing)

/*Эти объекты имеют смысл «Тот, кто любит» и «Вещь, которую любят». */

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

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



predicatesслужит для описание используемых программой предикатов; Prolog требует указания типов объектов для каждого предиката программы. Некоторые из этих объектов могут быть, к примеру, числовыми данными, а другие – символьными строками. Поэтому в этом разделе необходимо задать тип объектов каждого из предикатов:

predicates

likes (symbol, symbol) /*это означает,что два объекта предиката likes относятся к типу symbol*/

Комментарии обромляются символами /* и */

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

clauses заносятся факты и правила, известные априорно; о содержимом этого раздела можно говорить как о данных, необходимых для работы программы. Например,

clauses

likes(“John”, camera).

likes (“Tom”,computer).

likes (“Kathy”,computer).

Термы John, Tom, Kathy принадлежат к домену person, а термы camera и computer – к домену thingю Все три утверждения относятся к одному предикату, но значения у них разные.

Особенности использования целей. Не все программы содержат внутри себя описание своей цели (внутренняя цель), часто цель задается в процессе работы программы (внешняя цель).

Внутренние цели – начинается с goal, это цель поиска, которые задаются в самой программе. Для вывода на экран во внутренних целях, используется предикат write. Например,

write («Любимые вещи: »),

write (X), nl,

write (Y, «любит», Z)



/*nl – перенос курсора на новую строку*/

Внешние цели – в формулировке запроса к программе можно использовать несколько переменных. Тогда программа выдаст всевозможные комбинации значений переменных.

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

Дебби сестра Сэма, т.к у них одни и те же родители, и Дэбби – девочка. Это можно записать, как

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

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

Девочка(Катя).

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

likes(cindy,Something):-

likes(bill,Something).

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


mylektsii.ru - Мои Лекции - 2015-2019 год. (0.005 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал