|  |  | 
Упражнения
  
 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, попытайтесь решить и эту проблему. Для этого вам потребуется передавать объекту любого класса, расположенного в иерархии ниже узла четырехугольник, сообщение, в ответ на которое соответствующий обработчик должен извлечь данные из слотов, представляющих отдельные исходные параметры формы фигуры (длины сторон, высота и т.д.), и обрабатывать их по формуле, специфичной для фигур каждого вида. Постарайтесь найти такое решение, которое позволяло "бы обрабатывать различные фигуры по возможности единообразно. Учтите, что подклассы могут наследовать и слоты, и обработчики сообщений от своих суперклассов (предшественников).
|  |  |