- •Введение.
- •Фундаментальные подходы к познанию ис.
- •Синергетический подход.
- •Информационный подход.
- •Знания.
- •Свойства знаний.
- •Классификация знаний.
- •Модели представления знаний в сии.
- •Предикатная модель представления знаний.
- •Редукционная модель представления знаний.
- •Процедурные модели представления знаний.
- •Специальные модели представления знаний. Семантические сети.
- •Фреймовая модель представления знаний.
- •Экспертные системы в сии.
- •Архитектуры экспертной системы как сии.
- •Функциональная схема экспертной системы.
- •Технология разработки экспертных систем.
- •Общий обзор языка prolog на примере конкретной программы.
- •Пример программы.
- •Рекурсивное определение правил.
- •Поиск Пролог-системой ответа на вопрос.
- •Декларативный и процедурный смысл программы.
- •Декларативная семантика Пролог-системы.
- •Процедурная семантика Пролог-программы.
- •Порядок предложений и целей.
- •Списки.
- •Операции над списками.
- •1) Принадлежность к списку.
- •2) Добавление элемента.
- •3) Удаление элемента.
- •4) Сцепление (конкатенация) списков.
- •Управление перебором в Пролог-системе.
- •Решение головоломок методом «образовать и проверить».
Рекурсивное определение правил.
Добавим отношение Предок.
Для всех X и Z X является предком Z, если X является родителем Z.
предок (X,Z) :- родитель (X,Z).
Для всех X и Z X является предком Z, если существует такой Y, что X является родителем Y и Y является предком Z.
предок (X,Z) :- родитель (X,Y), предок (Y,Z).
Множество предложений, входящих в состав одного отношения называется процедурой.
Поиск Пролог-системой ответа на вопрос.
Чтобы ответить на вопрос Пролог-система пытается достичь всех целей. Достичь цели это значит показать, что она логически следует из правил и фактов программы.
Если вопрос содержит переменные, то система должна найти конкретные объекты, которые будучи подставленными вместо переменных обеспечивают достижение цели. Если система не в состоянии вывести ответ из остальных предложений программы, то ответом будет No.
? предок (“Том”,”Пат”).
Пытается доказать по 1 предложению: родитель (“Том”,”Пат”). No.
Пытается доказать по 2 предложению: родитель (“Том”,Y), предок (Y,”Пат”).
Y=”Боб”
предок (“Боб”,”Пат”). X=”Боб” Z=”Пат”
родитель (“Боб”,”Пат”). Yes.
Система использует новые множества переменных всякий раз, когда меняется правило, использующее переменную.
Графическое представление шагов вычисления имеет форму дерева.
Вершины дерева соответствуют целям (списку целей), которые нужно достичь. Дуги соответствуют применению альтернативных предложений программы, которые преобразуют цель, соответствующую одной вершине в цель, соответствующую другой.
Корневая (верхняя) цель достигается тогда, когда находится путь от корня дерева к его листу, помеченному меткой “Yes”. То есть лист может быть помечен такой меткой, если он представляет собой простой факт. Выполнение Пролог-программы сводится к поиску таких путей. В процессе поиска система может входить в ветви, приводящие к неуспеху. В этом случае происходит автоматический возврат к предыдущей вершине и далее следует попытка применить к ней альтернативное предложение.
Если переменная встречается в предложении только 1 раз нет необходимости изобретать ей имя. Можно использовать анонимную переменную, которая записывается в виде одиночного символа подчёркивания.
имеет ребёнка (X) :- родитель (X,Y).
Можно записать:
имеет ребёнка (X) :- родитель (X,_).
Областью действия переменной является предложение. Если имя переменной встречается в 2 предложениях, то оно обозначает 2 разные переменные.
Всякий раз когда в предложениях появляется символ _ , то оно обозначает новую анонимную переменную.
Структуры – объекты Пролога, которые состоят из нескольких компонентов. Компоненты в свою очередь тоже могут быть структурами. Компоненты объединяются в структуру с помощью функтора.
дата(число, месяц, год) дата(1, “май”, 1990)
отрезок(точка1(абсцисса1,ордината1), точка2(абсцисса2,ордината2))
отрезок(точка1(-2,3), точка2(4,9))
Число компонентов в структуре называется её арностью. Одним и тем же функтором можно воспользоваться для обозначения структур с различной арностью. Пролог различает их по количеству аргументов и различает как 2 разных функтора.
Каждый функтор определяется двумя параметрами:
именем;
арностью(количество аргументов).
Сопоставление – процесс, на вход которого подаются 2 терма, а он проверяет соответствуют ли они друг другу по правилам:
если S и T константы, то они сопоставимы только если они являются одним и тем же объектом;
если S – переменная, а Т – произвольный объект, то они сопоставимы и S приписывается значение Т;
если Т – переменная, а S – произвольный объект, то Т приписывается значение S;
если S и T – структуры, то они сопоставимы, если:
а) S и T имеют одинаковый главный функтор;
б) все их соответствующие компоненты сопоставимы.
Результирующая конкретизация определяется сопоставлением компонентов.
точка(А,В) и точка(1,2). Yes.
точка(А,В) и точка(X,Y,Z). No.
плюс(2,2) и 4. No.
+(2,D) и +(Е,2). Е=2 D=2 Yes.
