Упражнения
1.
Прочитайте статью Хейеса в сборнике [Brachman and Levesque, 1985]. Как
вы думаете, можно ли считать фреймы не более чем средством реализации подмножества
логики предикатов, или они позволяют смоделировать экстралогические свойства,
присущие человеку, формулирующему суждения?
2.
Неоднозначность, которую мы обнаружили в "проблеме Никсона", можно распространить
каскадно и получить еще более замысловатые примеры. Один из них взят из работы
[Touretzky et al., 1987] (рис. 6.10). Познакомьтесь с этой работой, а затем
ответьте на следующие вопросы.
I)
К какому заключению придет доверчивый резонер, рассуждая об отношении квакера-ре
спубликанца к армии?
II)
К какому заключению придет резонер-скептик?
3.
Примеры сетей с наследованием, представленные на рис. 6.11 и 6.12, также взяты
из работы [Touretzky et a/., 1987]. На этих рисунках представлены две топологически
идентичные
сети, которые отличаются только маркировкой узлов. На рис. 6.11 показано, что
королевские слоны являются исключениями, поскольку не имеют серой окраски, а на
рис. 6.12 показано, что капелланы являются исключениями, поскольку это мужчины,
не склонные к употреблению пива.
Рис.
6.10. Сеть с наследованием, в которой имеется каскад неоднозачностей
I) Резонер Турецкого должен
был бы заключить, что в обоих случаях возможно несколько интерпретаций. Согласны
ли вы с таким заключением или нет и по какой причине?
II) Сандуол полагает, что корректная
интерпретация сети на рис. 6.11 состоит в том, что прямой путь от узла королевский
слон к узлу серые животные должен иметь более высокий приоритет, чем непрямой
путь через узел слон [Sandewall, 1986]. А что вам подсказывает ваша интуиция?
III)
Днализируя сеть, представленную на рис. 6.12, Турецкий пришел к заключению, что
изменение маркировки узлов сети с одной и той же топологией меняет и наше интуитивное
предположение о распространении наследуемых свойств. Заключение о том, что корабельный
капеллан не является любителем пива (как на том настаивает Сандуол), является
менее обоснованным, чем в случае со слонами. В пользу такого заключения Турецкий
приводит следующие аргументы.
С
какой из участвующих в споре сторон согласны вы? Или, возможно, у вас есть аргументы
в пользу обеих точек зрения?
Рис.
6.11. Проблема "королевского слона"
Рис.
6.12. Проблема "корабельного капеллана "
4.
Просмотрите пример из врезки 6.1. Придумайте обработчик сообщения для класса square,
который будет вычислять площадь объекта этого класса, например объекта square-one,
а затем присваивать вычисленное значение слоту этого объекта.
Для этого вам понадобится сначала
внести изменения в определение класса square.
(defclass square (is-a
rectangle)
(slot length-of-sides (create-accessor write))
(slot
area (create-accessor write)))
Согласно
этому определению, класс square имеет два слота: length-of-sides — для хранения
длин сторон объекта, area — для хранения его площади. Фацет create-accessor в
определении слота говорит о том, что функции доступа к слоту должны автоматически
формироваться средствами языка CLIPS. Последние самостоятельно сформируют объявления
функций put-length-of-sides и put-area. Эти наименования функций можно затем использовать
в обработчиках сообщений.
Второй
шаг — модифицировать спецификацию объекта, в которую следует включить задание
длин сторон:
(definstances geometry (square-one of square
(length-of-sides
10)))
Теперь остается только разработать
обработчик события, который будет использовать функцию для установки нужного значения
в слот area объекта square-one.
5. Метод, который был реализован в предыдущем упражнении, хорош для работы с квадратами, но с его помощью нельзя решить аналогичную проблему при работе с другими четырехугольниками, представленными в нашей иерархии,— прямоугольниками, параллелограммами и трапециями. Теперь, когда вы знаете, как сформировать слоты и обработчики событий, пользуясь средствами языка CLIPS, попытайтесь решить и эту проблему. Для этого вам потребуется передавать объекту любого класса, расположенного в иерархии ниже узла четырехугольник, сообщение, в ответ на которое соответствующий обработчик должен извлечь данные из слотов, представляющих отдельные исходные параметры формы фигуры (длины сторон, высота и т.д.), и обрабатывать их по формуле, специфичной для фигур каждого вида. Постарайтесь найти такое решение, которое позволяло "бы обрабатывать различные фигуры по возможности единообразно. Учтите, что подклассы могут наследовать и слоты, и обработчики сообщений от своих суперклассов (предшественников).
| Maya 3D графика в кино и телевидении Воздействие испытаний ядерного оружия на здоровье населения Объектно-ориентированный язык программирования Java Объектно-ориентированное программирование Delphi Библиотека визуальных компонентов VCL и ее базовые классы Кроссплатформенное программирование для Linux Элементы управления Win32 Элементы управления Windows XP Файлы и устройства ввода/вывода Что такое экспертная система? Объектно-ориентированное программирование Инструментальные средства разработки экспертных систем Программирование на языке CLIPS Критерии и количественные характеристики надежности Расчет характеристик надежности невостанавливаемых резервированных изделий Расчет надежности системы с постоянным резервированием Интегрирование тригонометрических функций ; |