
- •Введение.
- •Фундаментальные подходы к познанию ис.
- •Синергетический подход.
- •Информационный подход.
- •Знания.
- •Свойства знаний.
- •Классификация знаний.
- •Модели представления знаний в сии.
- •Предикатная модель представления знаний.
- •Редукционная модель представления знаний.
- •Процедурные модели представления знаний.
- •Специальные модели представления знаний. Семантические сети.
- •Фреймовая модель представления знаний.
- •Экспертные системы в сии.
- •Архитектуры экспертной системы как сии.
- •Функциональная схема экспертной системы.
- •Технология разработки экспертных систем.
- •Общий обзор языка prolog на примере конкретной программы.
- •Пример программы.
- •Рекурсивное определение правил.
- •Поиск Пролог-системой ответа на вопрос.
- •Декларативный и процедурный смысл программы.
- •Декларативная семантика Пролог-системы.
- •Процедурная семантика Пролог-программы.
- •Порядок предложений и целей.
- •Списки.
- •Операции над списками.
- •1) Принадлежность к списку.
- •2) Добавление элемента.
- •3) Удаление элемента.
- •4) Сцепление (конкатенация) списков.
- •Управление перебором в Пролог-системе.
- •Решение головоломок методом «образовать и проверить».
Общий обзор языка prolog на примере конкретной программы.
Синтаксически все объекты данных в Прологе представляют собой термы.
Тип данных Пролог распознаёт по его синтаксической форме в тексте программы.
Атом – синтаксически неделимый терм, представляющий собой произвольную последовательность символов, составленную одним из следующих способов:
из цепочки букв, цифр и символов подчёркивания, начиная со строчной буквы (например, parent_, z3);
из специальных символов (например, <___>);
из цепочки символов, помещённых в одинарные кавычки (например, ‘Tom’, ‘Tom_X’).
Один и тот же атом означает одно и то же и записывается одинаково в любом предложении, то есть во всей программе.
Все реализации Пролога поддерживают целые и вещественные числа. Вещественные числа требуются редко, так как Пролог предназначен для обработки символьной информации.
Переменные Пролога служат для обозначения объекта, к которому нельзя сослаться по имени. Переменная – цепочка, состоящая из букв, символов подчёркивания, начинающихся с прописной буквы, либо с символа подчёркивания. Тогда данная запись будет переменной.
Если переменная встречается в предложении один раз, то нет необходимости изобретать ей имя, можно использовать анонимную переменную, которая обозначается _ (символ подчёркивания).
Областью действия переменной является предложение. Если имя переменной встречается в двух предложениях, то оно обозначает две разные переменные. Внутри одного предложения это имя означает одну и ту же переменную. Исключение составляет анонимная переменная. Всякий раз, когда в предложении появляется символ подчёркивания, он означает новую переменную.
Пример программы.
Рассмотрим дерево родственных отношений.
Пишется на латинице, но в примере на русском для понятности.
Программа:
родитель (“Пам”,”Боб”).
родитель (“Том”,”Боб”).
родитель (“Том”,”Лиз”).
родитель (“Боб”,”Энн”).
родитель (“Боб”,”Пат”).
родитель (“Пат”,”Джим”).
Вопросы:
? родитель (“Боб”,”Пат”). Ответ: Yes.
? родитель (“Лиз”,”Пат”). Ответ: No.
? родитель (“Том”,”Энн”). Ответ: No.
? родитель (Х,”Лиз”). Ответ: Yes, X=”Том”.
? родитель (“Боб”,Х). Ответ: Yes, X=”Энн”, X=”Пат”.
? родитель (X,Y). Ответ: Yes, X=”Пам”, Y=”Боб”
X=”Пам”, Y=”Боб”
…………………….
После перебора всех вариантов ответ No.
(Кто родитель родителя Джима?) ? родитель (X,”Джим”), родитель (Y,X). Ответ: Yes, X=”Пат”, Y=”Боб”.
(Кто внуки Тома?) ? родитель (”Том”,Х), родитель (X,Y).
На Прологе легко определить отношение с помощью указания n-ки объектов, для которых это отношение выполняется.
Пользователь может легко задавать Пролог-системе вопросы, но только касающиеся отношений, определённых в программе.
Пролог-программа состоит из предложений, каждое из которых заканчивается точкой.
Аргументами отношения могут быть, среди прочего, конкретные объекты – константы и абстрактные объекты – переменные.
Вопросы к системе состоят из одного или более целевых утверждений (целей). Последовательность целей через запятую означает конъюнкцию целей (И), через ; дизъюнкцию целей (ИЛИ).
Пролог-система рассматривает вопросы как цели, к достижению которых ей надо стремиться.
Ответ на вопрос может быть положительным или отрицательным в зависимости от того, может ли быть соответствующая цель достигнута или нет. В случае положительного ответа мы говорим, что цель достижима и успешна, в противном случае цель недостижима, имеет неуспех или терпит неудачу.
Если на вопрос существует несколько ответов, Пролог-систеиа найдёт столько из них, сколько пожелает пользователь.
Добавим в программу отношения типа мужчина и женщина. Они унарные.
женщина (“Пам”).
женщина (“Лиз”).
женщина (“Пат”).
женщина (“Энн”).
мужчина (“Том”).
мужчина (“Боб”).
мужчина (“Джим”).
Введём отношение отпрыск, которое обратно отношению родитель. Будем основываться на утверждении. Что для всех X и Y Y является отпрыском Х, если Х является родителем Y.
Если X – родитель Y, то Y – отпрыск X.
отпрыск (Y,X) :- родитель (X,Y).
часть вывода условие условная часть
(голова предложения) (тело предложения)
Это является правилом.
Теперь есть отношения: родитель, мужчина, женщина и правило.
Вопрос:
? отпрыск (“Лиз”,”Том”).
Решение: Y=”Лиз” X=”Том” и выполнится родитель (“Том”,”Лиз”). Ответ: Yes.
Определим отношение мать:
Для всех X и Y: X является матерью Y, если X является родителем Y и X – женщина.
мать (X,Y) :- родитель (X,Y), женщина (Х).
Отношение сестра:
Для любых X и Y X является сестрой Y, если:
а) у X и Y общий родитель Z;
б) X – женщина.
сестра (X,Y) :- родитель (Z,X), родитель (Z,Y), женщина (X).
? сестра (“Энн”,”Пат”).
Решение: сестра (X,Y) :- родитель (Z,X), родитель (Z,Y), женщина (X).
X=”Энн”, Y=”Пат”.
Проверяется все 3 утверждения: родитель (Z,”Энн”) Z=”Боб” и т. д.
Пролог-программы можно легко расширять, добавляя в них новые предложения.
Предложения бывают 3 типов:
факты;
правила;
вопросы.
Факты содержат утверждения, которые являются всегда безусловно верными. Правила содержат утверждения, истинность которых зависит от некоторых условий. С помощью вопросов пользователь может спрашивать систему о том, какие утверждения являются истинными. Предложения Пролога состоят из головы и тела.
Тело – список целей, разделённых запятыми (И) или точкой с запятой (ИЛИ).
Факты – это предложения, имеющие пустое тело.
Предполагается, что на переменные действует квантор всеобщности, читаемый как «для всех».