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