- •Лабораторная работа 1. Различные способы представления знаний
- •Продукционная модель
- •Язык prolog как реализация продукционной модели данных Работа в системе swi_Prolog
- •Определение предикатов на основе фактов
- •Определение предикатов на основе правил
- •Рекурсивные правила
- •Семантическая сеть
- •Рассмотрим использование семантических сетей для представления структуры событий.
- •Фреймовая модель
Продукционная модель
Продукционная модель, или модель, основанная на правилах, позволяет представить знания в виде предложений типа:
ЕСЛИ посылка, ТО заключение.
Посылка и заключение – это некоторые высказывания.
Здесь необходимо ввести понятия высказывания и исчисления высказываний.
Высказывание есть утвердительное предложение, которое либо истинно, либо ложно, но не то и другое вместе.
Примеры высказываний: «Снег белый», «Прохоров – декан».
Исчисление высказываний – формальная логическая система. Множество ее базовых элементов составляют логический алфавит T из множества высказываний, обозначаемых строчными латинскими буквами (иногда с индексами) и называемых атомами и четырех элементарных логических функций (связок):
«отрицание» — ~, —, not, не;
«конъюнкция» — Ù, &, and, и;
«дизъюнкция» — Ú, ÷, or, или;
«импликация» — ®;
Исчисление высказываний дает возможность строить составные высказывания из простых, соединяя их логическими связками.
Значение истинности высказывания зависит от его структуры и от значений истинности составляющих ее простых высказываний (табл. 3.1).
Таблица 3.1
P |
Q |
- P |
P Ù Q |
P Ú Q |
P ® Q |
И |
И |
Л |
И |
И |
И |
И |
Л |
Л |
Л |
И |
Л |
Л |
И |
И |
Л |
И |
И |
Л |
Л |
И |
Л |
Л |
И |
Расширением исчисления высказываний является исчисление предикатов.
В логике предикатов по сравнению с логикой высказываний имеется еще три логических понятия: термы, предикаты и кванторы.
Термы описывают понятия изучаемой предметной области, а предикаты — свойства этих понятий, а также их поведение и отношения между ними.
Кроме того, имеется два квантора: " — всеобщности и $ — существования. Если x терм, то ("x) читается как «для всех x», «для каждого x», «для любого x», тогда как ($x) читается как «существует x», «для некоторых x», «по крайней мере для одного x».
Запишем следующие утверждения:
Каждое рациональное число есть вещественное число.
Существует число, которое является простым.
Для каждого числа x существует такое число y , что x<y.
Обозначим «x есть простое число» через предикат P(x), «x есть рациональное число» через Q(x), «x есть вещественное число» через R(x) и «x меньше y» через предикат МЕНЬШЕ (x, y).
Тогда указанные выше утверждения могут быть записаны соответственно выражениями:
("X) (Q(X)® R(X)),
($X) P(X),
("X) ($Y) МЕНЬШЕ (X, Y).
Следует обратить внимание, что терм, начинающий с заглавной буквы – это переменная, вместо котолрой может быть подставлена любая константа.
Переменная, к которой применяется квантор, называется связанной, а переменная, к которой не применен квантор, называется свободной.
Определим область действия квантора, входящего в выражение, как то выражение, к которому этот квантор применяется. Так, область действия квантора существования в выражении 3 есть МЕНЬШЕ (X, Y), а область действия квантора всеобщности в выражении 3 есть ($Y) МЕНЬШЕ (X, Y).
Пример атомарных предикатов:
является (ласточка, птица)
отец (X, джон)
Пример предикатной формулы, соответствующей сложному предложению:
имеет (ласточка, крылья), владеет (ласточка, гнездо) →
является (ласточка, птица)
где является (_,_); имеет (_,_); владеет (_ _) — атомарные предикаты.
Подставляя вместо «ласточка» переменную, получим формулу более общего вида. Однако из вышеприведенной конструкции предикатной формулы позволяет сформулировать утверждение не только о конкретном объекте, которым является ласточка, но и обо всех объектах из класса птиц:
имеет (Х, крылья), владеет (Х, гнездо) является (Х, птица)
Однако предикат, который содержит переменные; например,
имеет (Х, крылья)
не может быть оценен, т.е. нельзя определить ложь он или истина, пока вместо переменной не будет поставлена константа.
Однако иногда можно определить значения предиката, связав переменные кванторами.
Программные средства, оперирующие со знаниями, представленными правилами, получили название продукционных систем (или систем продукции) и впервые были предложены Постом в 1941 г.
Система продукции, реализованная в виде модели представления знаний экспертной системы, состоит из трех элементов:
1. Набор фактов и правил, образующих базу знаний;
2. Рабочая память, где хранятся факты из базы знаний, а также результаты выводов, получаемых на основе фактов и правил;
3. Механизм логического вывода, использующий правила в соответствии с содержимым рабочей памяти.
Конфигурацию системы продукции упрощенно можно представить рисунок.
Рис.
На простом примере рассмотрим упрощенно механизм функционирования системs продукции.
Допустим, что факты, записанные в базу знаний, имеют вид:
Намерение (отдых).
Место отдыха (горы).
Кроме того, имеются правила:
Намерение (отдых), Дорога (ухабистая)Использовать (джип).
Место отдыха (горы) Дорога (ухабистая).
Допустим, что требуется определить истинность или ложность предиката
Использовать (джип).
Возможна прямая и обратная цепочка рассуждений.
В том и другом случае факты переписывются из базы знаний в рабочую память.
При прямой цепочке рассуждений в базе знаний отыскивается правило, в котором анализируемый предикат находится в заключении. При этом проверяется истинность посылки. Если посылка истинна, то она переписывается в рабочую область, и процесс вывода закончен. В противном случае отыскивается следующее правило и так до тех пор, пока будет доказана либо истинность, либо ложность заданного предиката.
Для рассматриваемого примера последовательность логического вывода будет следующей:
Механизм вывода анализирует правила, начиная с него, определяет наличие факта
Намерение (отдых)
в рабочей памяти и отсутствие в ней факта
Дорога (ухабистая).
Посылка правила 1 считается ложной, механизм вывода переходит к следующему правилу (в нашем случае к правилу 2).
Посылка правила 2 признается истинной, так как факт
Место отдыха (горы)
присутствует в рабочей памяти и механизм вывода считает заключение правила 2 истинным.
Заключение правила 2
Дорога (ухабистая)
заносится в рабочую память.
После просмотра всех правил происходит вторичное их применение, начиная с правила 2, за исключением тех, которые уже были применены (в примере это правило 2).
При повторном рассмотрении правила 1 его посылка становится истинной ввиду доопределения рабочей памяти, и механизм вывода выполняет его заключение.
Заключение
Использовать (джип)
переносится в рабочую память, а правило 1 исключается из дальнейшего согласования.
Правил для сопоставления не остается, система останавливается, то есть. доказана истинность анализируемого предиката.
Способ, при котором на основании фактов исследуется возможность применения правила, пригодного для подтверждения, называется обратным выводом.
Для пояснения этого способа обратимся к тому же примеру. Целью запроса также является доказательство истинности предиката
Использовать (джип).
Считая, что рабочая память содержит факты
Намерение (отдых)
и
Место отдыха (горы),
ищем правило, которое в качестве заключения содержит анализируемый предикат.
Последовательность вывода следующая:
Определяется правило, в котором в заключительной части содержится предикат
Использовать (джип).
Это правило 1.
Исследуется возможность применения правила 1 для подтверждения истинности предиката.
Поскольку факт
Намерение (отдых)
из посылки правила 1 занесен в рабочую память, то для достижения цели достаточно подтвердить факт
Дорога (ухабистая).
Факт
Дорога (ухабистая)
принимается за новую цель, и необходимо найти правило, подтверждающее этот факт.
Исследуется возможность применения правила 2. Посылка этого правила является истинной, так как факт
Место отдыха (горы)
имеется в рабочей памяти.
Ввиду возможности применения правила 2, рабочая память пополнится фактом
Дорога (ухабистая)
и появляется возможность применения правила 1 для подтверждения цели
Использовать (джип).
Итак, и в этом случае истинность анализируемого предиката доказана.
В более сложных случаях, если правила содержат переменные, то в процессе вывода им ставится в соответствие некоторые константы из фактов и таким образом получается результат.
