Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПРЕДСТАВЛЕНИЕ ЗНАНИЙ И ЛОГИЧЕСКОЕ ПРОГРАММИРОВА...doc
Скачиваний:
4
Добавлен:
01.04.2025
Размер:
1.08 Mб
Скачать

1.2. Терминология

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

Вывод – процесс получения заключения из некоторых предложений.

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

Основанная на знаниях система – это альтернативный термин для системы управления базой знаний.

Система баз знаний (СБЗ). - компьютерная система, имеющая следующие составляющие:

  • База данных, содержащая основные факты;

  • База данных, содержащая правила, которые позволяют делать выводы из базы данных фактов;

  • Программное обеспечение, называемое системой управления базой знаний (СУБЗ), которое поддерживает обычные функции СУБД, а также управление процессом вывода в базе данных правил, оперирующих базой данных фактов.

Система управления базой знаний (СУБЗ) это системное программное обеспечение, которое поддерживает обычные функции СУБД, а также осуществляет управление процессом вывода правил в базе данных, оперирующей базой данных фактов.

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

Собрание собрание_38 проводится в Таганроге.

Здесь имеется в виду, что для конкретного вида мероприятия (в данном случае – собрание, а не заседание и т.д.), и его условного обозначения (собрание_38 а не заседание_01) определено место проведения (Таганрог).

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

собрание (собрание_38, Таганрог)

С другой стороны, информация, подобная следующей

Собрание собрание_38 плодотворно

не является простым фактом и представляет собой информацию более высокого уровня. Значение этого факта отражено в классификации, предложенной Уидерхолдом (Wiederhold, 1984) [1]:

  • Структурное знание — это знание о зависимостях между данными и ограничениями на них. Например, «перевод студента на следующий курс зависит от того, были ли им сданы зачеты и экзамены в предыдущую сессию»;

  • Общее процедурное знание — это знание, которое можно описать только процедурой. Например, «совпадение заказанного количества товара с полученным количеством товара позволяет санкционировать оплату»;

  • Прикладное знание — знание, которое определяется правилами и соглашениями, относящимися к конкретной предметной области, например, «определению наиболее дешевого плана двухнедельного отдыха на море»;

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

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

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

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

Терм языка Пролог - это либо константа, либо переменная, либо структура. Константами являются атомы и числа.

Константы используются для обозначения (именования) конкретных объектов предметной области и конкретных отношений между ними.

Атом языка Пролог - это

  • последовательность букв, цифр и знака "подчеркивание", обязательно начинающаяся со строчной буквы;

  • последовательности специальных знаков ":-", "?-", "=", ">" и других.

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

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

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

База правил - совокупность правил в программе на языке Пролог.

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

<структура-0>:-<структура-1>, ... ,<структура-N>.

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

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

В качестве предикатов, составляющих тело правила, могут выступать

  • предикаты, фигурирующие в базе фактов;

  • предикаты, совпадающие с заголовком других правил;

  • встроенные предикаты систем программирования Пролог.

Встроенный предикат - предикат, выводимость (согласованность) которого устанавливается непосредственно системой программирования Пролог.

Запрос на языке Пролог - утверждение, рассматриваемое в качестве целевого, имеющее следующий вид:

?-<структура-1>, ...,<структура-N>.

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

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

Конкретизация переменной - связывание переменной языка Пролог с конкретным значением.

Конкретизация переменной обеспечивает возврат искомых значений переменных по запросам.

Выполнение запроса в языке Пролог - процесс доказательства выводимости всех подцелей целевого утверждения методом резолюции с использовании линейной по входу стратегии.

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

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

Удовлетворив один предикат (подцель) запроса, интерпретатор переходит к соседнему справа, обрабатывая его аналогичным образом.

Запрос считается выполненным после удовлетворения его последней (крайней справа) подцели. Если же какая-либо подцель (но не первая) не может быть удовлетворена (согласована), то в работу включается механизм бэктрекинга, который заставляет интерпретатор, передвигаясь по предикатам целевого утверждения справа налево, вновь согласовывать эти предикаты, но уже на новых утверждениях программы. Если попытка пересогласовать какой-либо предикат (подцель) удается, то интерпретатор продолжает рассмотрение подцелей от данной в обычном порядке (слева направо).