Научная статья на тему 'Реализация механизма логического вывода для прототипа экспертной системы (ЭС)'

Реализация механизма логического вывода для прототипа экспертной системы (ЭС) Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
465
56
i Надоели баннеры? Вы всегда можете отключить рекламу.

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Солодовников И. В., Рогозин О. В., Шуруев О. В.

Для обеспечения эффективной работы прототипа ЭС необходимо реализовать механизм логического вывода. Специфика использования ЭС в практических целях предложен механизм логического вывода разработанный в виде отдельного модуля, имеющий удобный пользовательский интерфейс и возможность объяснять полученные решения.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Реализация механизма логического вывода для прототипа экспертной системы (ЭС)»

РЕАЛИЗАЦИЯ МЕХАНИЗМА ЛОГИЧЕСКОГО ВЫВОДА ДЛЯ ПРОТОТИПА ЭКСПЕРТНОЙ СИСТЕМЫ (ЭС)

Солодовников И.В., Рогозин О.В., Шуруев О.В.

Для обеспечения эффективной работы прототипа ЭС необходимо реализовать механизм логического вывода. Специфика использования ЭС в практических целях предложен механизм логического вывода разработанный в виде отдельного модуля, имеющий удобный пользовательский интерфейс и возможность объяснять полученные решения.

Основные принципы реализации МЛВ для прототипа ЭС.

1. Поиск решения на основе метода обратного вывода.

2. Унификация переменных.

3. Использование точек возврата.

4. Обработка правил сверху вниз.

5. Сохранение полученных решений для объяснения полученного результата.

6. Модульный принцип реализации.

Создание прототипа ЭС является первым и основным шагом при ее реализации. Ключевую роль при этом играет создание механизма логического вывода.

Грамматика

Для обеспечения ввода пользователем правил и фактов в базу знаний была разработана следующая грамматика.

Элементарные строковые значения

константа ::= последовательность строчных букв переменная ::= последовательность заглавных букв отношение ::= последовательность строчных букв

Эти понятия представляют наименьшие логические элементы в строке, вводимой пользователем с клавиатуры. Понятие константа описывает постоянные значения, входящие в состав правил или фактов. Понятие переменная описывает переменные, входящие в состав правил или целевой формулы. Понятие отношение определяет формат строкового значения для ввода отношений между субъектами в рамках фактов или правил.

Примеры:

константа: оля; шоколад; маша. переменная: X; А; КТО. отношение: любит; на; отец.

аргумент ::= константа | переменная

Понятие аргумент обобщает понятия константа и переменная и служит для описания аргументов в правиле базы знаний, которые могут быть как константами, так и переменными.

списокконстант ::= константа | константа , списокконстант список аргументов ::= аргумент | аргумент , список аргументов

Эти понятия описывают соответствующие списки с символом запятой в качестве разделителя.

Предикатные формулы

утверждение ::= отношение ( список_констант ) выражение ::= отношение ( список_аргументов )

Эти понятия описывают простейший предикат - набор субъектов, связанных отношением. Только субъекты понятия утверждение задаются константами, а субъектами понятия выражения могут быть как константы, так и переменные. Примеры:

утверждение: любит (оля, шоколад); отец (вова, олег). выражение: любит (лена, ЧТО); отец (X, У).

предикат ::= утверждение | выражение

Понятие предикат обобщает понятия утверждение и выражение и служит для описания предикатов в правиле базы знаний, аргументы которых могут быть как константами, так и переменными.

набор_предикатов ::= предикат | предикат & набор_предикатов

Это понятие описывает набор предикатов с символом амперсанда в качестве разделителя.

формула ::= набор_предикатов

Понятие формула определяется как набор предикатов и служит для задания целевой формулы и условий правил базы знаний.

Объекты базы знаний

факт ::=утверждение .

Понятие факт служит для описания факта базы знаний и задается строкой утверждения, которая заканчивается точкой. Пример: любит (маша, конфеты).

правило ::= предикат < формула .

Понятие правило служит для описания правила базы знаний и состоит из двух частей. Заголовок (следствие) правила задается предикатом, а условия - формулой. Как и строка факта, строка правила заканчивается точкой. Пример: на (X, 2) < на (X, У) & на (У, 2).

цель ::= формула ?

Понятие цель служит для описания цели обратного вывода и задается целевой формулой. Строка цели завершается знаком вопроса. Пример: любит (маша, ЧТО) ?

Иерархия классов

Для проведения синтаксического анализа вводимых пользователем данных каждому ключевому понятию приведенной выше грамматики соответствует свой класс. Конструктор такого класса позволяет создать его экземпляр на основе текстовой строки, которая соответствует понятию грамматики. В случае ошибки конструктор класса генерирует исключение, соответствующее типу ошибки. Это исключение обрабатывается основой программой, реализующей пользовательский интерфейс, которая и выводит сообщение об ошибке.

Некоторые классы объединяют в себе несколько ключевых понятий грамматики, сходных между собой. Например, класс ОУа!ие может описывать понятия константа, переменная и отношение, а класс ОРге^са1е - понятия утверждение и выражение. Одним из параметров конструктора таких классов обязательно является тип, задающий конкретное понятие. На рис. 1 показана иерархия классов, а также направления включений и понятия грамматики, описываемые конкретными классами.

Рис. 1. Иерархия классов и понятия грамматики, описываемые конкретными классами

Классы, не описывающие понятий грамматики, служат для реализации синтаксического разбора и механизма обратного вывода. Класс СБггог описывает возможные ошибки и используется для генерации исключений. Класс СЫпк описывает наборы связанных переменных и служит для работы с ними в процессе обратного вывода.

Класс СБаве описывает всю базу знаний как набор фактов и правил, а также реализует механизм обратного вывода по заданной целевой формуле. Синтаксический анализ

Конструктор каждого класса реализует синтаксический анализ строки, описывающей то конкретное понятие грамматики, которое соответствует данному классу. При этом он разбирает эту строку на составные части в соответствии с грамматическим определением данного понятия и вызывает конструкторы нижестоящих по иерархии классов, передавая им соответствующие части анализируемой строки. Как упоминалось выше, при возникновении ошибки, на любом этапе, генерируется исключение, которое сразу же обрабатывается основной программой.

Пример:

Как уже было сказано, на входе конструктора класса, описывающего несколько грамматических понятий, обязательно задается тип конструируемого экземпляра. Этот тип задает конкретное грамматическое понятие, позволяющее однозначно определить алгоритм синтаксического анализа полученной строки.

Механизм обратного вывода

Механизм обратного вывода основан на рекурсивной замене заданной целевой формулы в соответствии с фактами и правилами базы знаний. Алгоритм такого вывода выглядит следующим образом:

На первом шаге каждый предикат целевой формулы, содержащий переменные, подвергается возможной замене на соответствующий факт базы знаний. Новая полученная целевая формула рекурсивно анализируется по точно такому же алгоритму.

После того как все возможные подобные замены будут произведены, для каждого предиката целевой формулы ищется соответствующее правило базы знаний, согласно которому данный предикат можно заменить последовательностью других предикатов, составляющих условие правила. Новая формула также рекурсивно подвергается точно такой же процедуре, начиная с первого шага.

Таким образом, строится некоторое дерево вывода, которое обходится в соответствии со стратегией поиска в глубину. Целевая формула разбивается на части, которые заменяются новыми формулами, истинность которых легче установить в рамках заданных фактов. Процесс продолжается до тех пор, пока целевая формула не превратится в аксиому, то есть все ее предикаты не станут тождественно равными какому-либо факту базы знаний. Если же какой-либо предикат становится невозможно упростить, заменив его фактом, либо применив к нему правило, то анализ такой целевой формулы также прекращается, так как она становится заведомо ложной.

Если исходная целевая формула содержала переменные, то любая замена предиката этой формулы сопровождается запоминанием соответствующих значений для каждой из этих переменных.

Высота дерева вывода ограничена глубиной рекурсии. В процессе работы алгоритма дерево вывода обходится целиком. При обходе листьев дерева, в которых целевая формула превращается в аксиому, происходит запоминание, как самой формулы, так и множества значений переменных, о которых говорилось выше. Эта информация используется в качестве объяснения результатов вывода.

После того как обход дерева вывода будет полностью завершен, происходит оценка результата. Если за время вывода не было найдено ни одного преобразования, превращающего целевую формулу в аксиому, это означает, что эта формула ложна. Если же такие преобразования нашлись, то целевая формула истинна, а накопленная в процессе обхода дерева информация представляет собой совокупность объяснений.

Иными словами, если исходная целевая формула не содержала переменных, то объяснением результата вывода является тождественная ей целевая формула,

превратившаяся в аксиому в результате преобразований. Если же в вопросе содержались переменные, то, в случае нескольких объяснений, к каждому их них добавляется реализация совокупности этих переменных.

Следует отметить, что при использовании правила для модификации целевой формулы, все его переменные унифицируются путем добавления к ним номера правила и текущей глубины рекурсии (рис. 2). Это делается для того, чтобы имена связанных переменных не совпали с переменными исходной целевой формулы или другими промежуточными переменными. Использование знака подчеркивания делает невозможным для пользователя объявление переменной с таким же именем.

Рис. 2. Необходимость унификации переменных правила в процессе обратного вывода Примеры:

Пусть база данных содержит факты:

1. любит (оля, шоколад)

2. любит (оля, конфеты)

3. любит (маша, шоколад)

4. любит (маша, конфеты)

5. любит (лена, мороженое)

6. любит (юля, мороженое)

и правило:

7. сладкоежка (X) < любит (X, У)

Фрагмент рабочего окна программы, содержащей данные знания:

Пусть целевая формула: сладкоежка (оля) ?

Тогда дерево вывода будет выглядеть следующим образом:

Так как целевая формула не содержала переменных, то, несмотря на то, что в процессе обхода дерева вывода было найдено два преобразования, превращающих целевую формулу в аксиому, в качестве объяснения результата вывода используется только то, которое было получено первым.

Фрагмент рабочего окна программы, демонстрирующей данный пример:

Теперь пусть целевая формула: сладкоежка (КТО) ?

Получим следующее дерево вывода:

Следует отметить, что результатом вывода будут являться только различные реализации совокупности переменных исходной целевой формулы. То есть при получении нескольких преобразований, превращающих целевую формулу в аксиому при одних и тех же значениях исходных переменных, в качестве объяснения результата вывода используется только то преобразование, которое было получено первым.

Все вышесказанное демонстрирует фрагмент рабочего окна программы, реализующей данный вывод:

Тестовые примеры работы программы

Исходное рабочее окно программы, содержащей тестовые примеры:

Вывод

отношение (аргумент....) & отношение (аргумент,.

р

Демонстрация применения рекурсивных правил вывода:

Демонстрация последовательного применения правил:

Демонстрация корректного связывания переменных:

Демонстрация вывода по целевой формуле, содержащей несколько переменных:

Демонстрация вывода по целевой формуле, содержащей несколько переменных, с использованием рекурсивных правил:

Появившаяся полоса прокрутки позволяет посмотреть все остальные результаты, не поместившиеся в окне вывода:

Вывод

отношение (аргумент,

J.^ |на (ГДЕ, ЧТО) ?

: отношение (аргумент.

т.

Истинно.

6). ГДЕ = стол, ЧТО = яблоко;т.к. на (стол, скатерть) и на (скатерть, тарелка) и на (тарелка, яблоко)

7). ГДЕ = стол, ЧТО = муха; т.к. на (стол, скатерть) и на (скатерть,тарелка) и на (тарелка, яблоко) и на (яблоко, муха)

8). ГДЕ = скатерть, ЧТО = яблоко; т.к. на (скатерть, тарелка) и на (тарелка, яблоко) Э). ГДЕ = скатерть, ЧТО = муха;т.к. на (скатерть, тарелка) и на (тарелка, яблоко) и I 10). ГДЕ = тарелка, ЧТО = муха; т.к. на (тарелка, яблоко) и на (яблоко, муха)

) (яблоко, муха)

Список литературы.

1. Адаменко А., Кучуков А. Логическое программирование и Visual Prolog. Ст-П.: БХВ - Петербург, 2003.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

2. Девятков В.В. Системы искусственного интеллекта. М.: Изд-во МГТУ им. Баумана, 2001.

3. Джексон Питер Введение в экспертные системы. М.-С-Пт.-Киев : Изд. дом "Вильямс",2001

4. Поспелов Д.А. Ситуационное управление. Теория и практика. М.: Наука, 1986.

5. Хейес-Рот Ф., Уотерман Д., Ленат Д. Построение экспертных систем. Пер. с англ. Мир, М., 1987.

i Надоели баннеры? Вы всегда можете отключить рекламу.