Представление знаний в интеллектуальных системах
Методическое пособие - Компьютеры, программирование
Другие методички по предмету Компьютеры, программирование
?ющих рассмотренные выше фразы 1), 2), 3). Группирование конкретизаций Книга_22, Жак_2 и Мари_4 порождает концептуальный граф, изображенный на следующем рисунке. На нем рамками выделены графы фраз 1, 2, 3 и граф группы фраз.
22.Язык Prolog. Правила. Рекурсивные правила
Последним и самым мощным видом выражений в Прологе являются правила обобщающие понятие факта. Например, для построения семейной БД можно перечислить родительские отношения при помощи списка фактов: мать(каролина,юлия). мать(каролина, альбертина). Выражать фактами отношения внуков с дедами необходимости нет, ибо они могут быть выведены из отношений предшествования Х является дедом Y, если существует субъект Z, отец которого Х и который сам отец или мать Y. На Прологе это высказывание записывается в виде двух правил: дед(Х,Y):-отец(Х,Z), мать(Z,Y). дед(Х,Y):-отец(Х,Z), отец(Z,Y)., где символ :- читается если (при условии, что).
Вообще правило выглядит так: Н:-Р1,Р2, … , Рn, где Н,Р1,Р2, … , Рn - простые предикаты. Это выражение читается следующим образом: Н если (Р1 и Р2 …и Рn). Предикат Н называется заголовком правила, а последовательность Р1,Р2, … , Рn - телом правила.
Приведённые только что правила являются аналогом предложения Н, если (Р1 Р2 … Рn), или выражения (Р1 Р2 … Рn)Н или формулы Р1 Р2 … РnН, которые суть различные записи хорновских дизъюнктов. Приведённое правило похоже, кроме того, на объявление процедуры в языке программирования.
Заголовок правила дед(Х,Y) объявлен как и тело правила отец(Х,Z), мать(Z,Y). Это правило указывает на то, что вопрос, имеющий форму ? - дед(андре,каролина). преобразуется в вопрос ? - отец(андре,Z), мать(Z,каролина). Наличие правила (как и факта) в БД означает общезначимость соответствующей формулы. Считается, что все переменные в правиле связаны кванторами общности. Например, правило дед(Х,Y):-отец(Х,Z), мать(Z,Y). толкуется как .
Правила - самые общие выражения Пролога, факт представляет собой правило без правой части, а вопрос - без левой:
Н истинно, если Р1 и Р2 …и Рn истинны (правило),
Н истинно (факт или правило без тела),
Р1 и Р2 …и Рn истинны? (вопрос или правило без заголовка).
Рассмотрим следующую БД:
мать(каролина,юлия).
мать(каролина, альбертина).
мать(мари,проспер).
мать(анна,каролина).
отец(проспер,юлия).
отец(проспер,альбертина).
отец(альфонс,проспер).
отец(андре,каролина).
дед(Х,Y):-отец(Х,Z), мать(Z,Y).
дед(Х,Y):-отец(Х,Z), отец(Z,Y).
бабка(Х,Y):-мать(Х,Z), мать(Z,Y).
бабка(Х,Y):-мать(Х,Z), отец(Z,Y).
Отношения мать и отец заданы фактами, а отношение дед и бабка определяются с помощью правил.
На вопрос ? - дед(альфонс,юлия). ответов среди фактов нет (ни один факт не соответствует предикату вопроса). Но заголовки некоторых правил соответствуют этому предикату.
Цель заголовка какого-либо правила считается достигнутой (как и для факта) при совпадении имени предиката, числа аргументов в нём и констант стоящих на соответствующих местах предиката. Так, например факт дед(альфонс,юлия) обеспечивает реализуемость (удовлетворение, достижение) цели дед(Х,Y). Переменным из заголовка правила присваиваются значения: Х=альфонс, Y=юлия. Новой целью будет далее тело с новыми значениями переменных отец(альфонс,Z),отец(Z,юлия). Эта последовательность предикатов обрабатывается как последовательность подцелей. Их достижение обеспечивается присваиванием Z=проспер.
В итоге получаем последовательность вопрос-ответ
? - дед(альфонс,юлия).
- - > да
Значение внутренней (отсутствующей в вопросе) переменной не входит в ответ. Это вполне естественно, ибо вопрос да-нет и переменные X, Y, Z нужны только для вычисления (нахождения) ответа.
Рекурсивные правила
База данных семья должна отвечать на вопрос является ли Х предком Y. Определение предиката быть предком рекурсивно. Для предков по женской линии соответствующие правила на Прологе записываются так. предок(Х,Y):-мать(Х,Y). предок(Х,Y):-мать(Х,Z),предок(Z,Y). Такие рекурсии разрешается использовать, иначе язык был бы слишком примитивным. Рекурсивное определение предиката обязательно должно содержать базис, т.е. нерекурсивную часть, иначе оно будет логически некорректным и программа зациклится. Чтобы избежать зацикливания, надлежит, кроме того, позаботиться о порядке выполнения, а следовательно, и порядке написания соответствующих выражений. Поэтому практически полезно, а порой и необходимо придерживаться принципа: сначала нерекурсивные выражения.
23.Представления контекста. Пример введения кванторов
Представление контекста
Сам по себе концептуальный граф несет немного информации, тогда как включение в семантическую сеть позволяет связать его концепты и функциональные связи с областью рассуждений (экспертизы). Например, Книга_22 - конкретизация слова "книга", которое представляет абстрактное понятие (или, иначе, тип). Отношение принадлежности типу представлено связывающим узлом (именем предиката) Конкр (от слова "конкретизация"). Кроме факта, что Книга_22 относится к типу "книга", мы хотим показать, что она принадлежит некоторому "множеству книг" (например, из библиотеки некоторого университета). Отношение принадлежности множеству представлено связывающим узлом (именем предиката) Элем (от слова "элемент"). На рисунке конкретизации Жак_2, Кни га_22 и Мари_4
связаны с различными типами и множествами, которым они принадлежат. Отметим, что "тип" употребляется в абстрактном смысле (абстрактный