- •Глава 6 представление знаний
- •6.1. Представление знаний при помощи пролога
- •Исчисление предикатов
- •Вычислительные формализмы
- •Пролог как вычислительный формализм
- •Формальный смысл
- •Внешний смысл
- •Обманчивая природа внешнего смысла
- •Представление знаний при помощи языка Си
- •Расширение языка Пролог
- •Другие вычислительные формализмы
- •6.2. Семантические сети Узлы и дуги
- •Семантическая сеть как Пролог-программа
- •6.3. Фреймы Представление знаний о ситуациях
- •Наследование значений слотов
- •Оценка формализма фреймов
- •Реализация фрейм - программы на Прологе
- •Запрет наследования
- •6.4. Объектно-ориентированное программирование Объекты и сообщения
- •Наследование
- •Объектно-ориентированное программирование в терминах абстрактных типов данных
- •Объектно-ориентированное программирование в терминах формализма фреймов
- •6.5. Механизм наследования в прологе Наследование в других формализмах
- •Наследование в Прологе
- •Состояния знаний
- •Обзор механизма наследования
- •Создание дерева состояний
- •Процедура "послать"
- •Опровержение фразы
- •Концепции механизма наследования
- •Пример с собранием
- •Пример с птицами
- •Реализация процедуры "послать"
- •Алгоритм работы процедуры "послать"
- •6.6. Программа, выполняющая запросы к базе данных
- •Состояния как виртуальные базы данных
- •Использование процедуры "з"
- •Опрос базы данных (добавление нового состояния)
- •Процедура "отобразитьсостояния"
- •Полезные свойства программы, выполняющей запросы к базе данных
- •Реализация программы, выполняющей запросы
- •Процедура "отобразить"
- •Процедура "з"
- •Процедура "характер"
- •6.7. Описание изменений базы данных
- •Мир кубиков
- •Картина состояния
- •Внесение изменений в базу данных при помощи процедуры "поместить"
- •Реализация процедуры "поместить"
- •Оценка механизма наследования
- •Процедура "послать" как предикат метаязыка
- •Библиографические заметки
- •Упражнения
Опровержение фразы
Предположим, что компания в качестве поспешной дискриминационний меры решает переместить в подвальное помещение флигеля всех служащих отдела 100, работающих по контракту. Это равнозначно изменению структуры системы, что потребует надлежащего изменения описания системы. Такое изменение можно осуществить при помощи деструктивного перекодирования соответствующих баз данных. Но есть и другой способ внесения изменений, при котором существующие базы данных будут затронуты в минимальной мере. Для этого нужно добавить к состоянию «по—контракту» новый факт «расположение—отдела» и опровергнуть старый факт:
расположение_отдела(по_контракту, 100,'Подвал флигеля').
опровергнуть (по_контракту,
расположение_отдела (служащие, 100, 'Флигель 2-й этаж')).
Состояние «по_контракту» - это состояние, для которого осуществляется опровержение, а фраза «расположение—отдела (служащие, 100, Флигель 2-й этаж')» - это опровергаемая фраза. После того как в программу будут добавлены приведенные выше фразы, при просьбе выдать место расположения отдела 100, адресованной к состоянию «по—контракту», будет выводиться новое значение:
| ?— послать (по —контракту, расположение— отдела (100, Р)),
Р = 'Подвал флигеля' ;
Нет
Но по требованию выдать ту же самую информацию, адресованному к состоянию «служащие», все еще будет вырабатываться старое значение;
| ?-, послать((служащие. расположение_oтдела( 100, Р))
Р = 'Флигель 2-й этаж' ;
нет
Если фраза опровергнута для конкретного состояния, то она больше не будет наследоваться ни этим состоянием, ни любыми другими порожденными им состояниями. Если же к (состоянию была бы добавлена новая фраза, то она стала бы наследоваться всеми его порожденными состояниями. Описанное употребление факта "опровергнугь" знательно облегчает сопровождение программы.
Концепции механизма наследования
Механизм наследования базируется на следующих ключевых концепциях:
1) иерархия состояний знаний;
2) наследование фраз от состояния к состоянию, и
3) отмена наследования фразы путем ее опровержения. Концепции формализма фреймов так соответствуют приведенным выше концепциям:
- фрейм соответствует состоянию знаний:
- слот соответствует фразе, относящейся к состоянию знаний;
-наследование значений слотов от фрейма к фрейму соответствует наследованию фраз от состояния к состоянию и,
- способность локального значения слота перекрывать наследуемое значение слота cooтветствует возможности опровергнуть унаследованную фразу и заменить ее новой фразой. Концепции объектно-ориентированного формализма так соответствуют концепциям механизма наследования:
- класс соответствует состоянию знаний;
- метод соответствует фразе относящейся к состоянию знаний;
- объект соответствует фразе, относящейся к состоянию знаний;
- наследование методов от класса к классу cоответстуют наследованию фраз от состояния к состоянию;
- способность локального метода перекрывать унаследованный метод соответствует возможности опровергнуть унаследованную фразу и заменить ее новой фразой.