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