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).
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.