6.3.2.
Фреймы и графы
Минский в
свой работе [Minsky, 1975] определил фрейм как "структуру данных
для представления стереотипных ситуаций". Эту структуру он наполнил самой
разнообразной информацией: об объектах и событиях, которые следует ожидать в
этой" ситуации, и о том, как использовать информацию, имеющуюся во фрейме.
Идея состояла в том, чтобы сконцентрировать все знания о данном классе объектов
или событий в единой структуре данных, а не распределять их между множеством
более мелких структур вроде логических формул или порождающих правил. Такие
знания либо сосредоточены в самой структуре данных, либо доступны из этой структуры
(например, хранятся в другой структуре, связанной с фреймом).
Таким образом,
по существу, фрейм оказался тем средством, которое помогло связать декларативные
и процедурные знания о некоторой сущности в структуру записей, которая состоит
из слотов и наполнителей (filler). Слоты играют ту же роль, что
и поля в записи, а наполнители — это значения, хранящиеся в полях. Однако, как
будет сказано ниже, фреймы отличаются от привычных программных структур вроде
записей в языке PASCAL.
Каждый фрейм
имеет специальный слот, заполненный наименованием сущности, которую он представляет.
Другие слоты заполнены значениями разнообразных атрибутов, ассоциирующихся с
объектом. Это могут быть и процедуры, которые необходимо активизировать всякий
раз, когда осуществляется доступ к фрейму или его обновление. Идея состоит в
том, чтобы выполнение большей части вычислений, связанных с решением проблемы,
явилось побочным эффектом передачи данных во фрейм или извлечения данных из
него.
Фрейм также
можно рассматривать как сложный узел в особого вида ассоциативной сети. Как
правило, фреймы организованы в виде "ослабленной иерархии" (или "гетерархии"),
в которой фреймы, расположенные ниже в сети, могут наследовать значения слотов
разных фреймов, расположенных выше. (Гетерархия — это "запутанная
иерархия", т.е. ациклический граф, в котором узлы могут иметь более одного
предшественника.)
Фундаментальная
идея состоит в том, что свойства и процедуры, ассоциированные с фреймами в виде
свойств узлов, расположенных выше в системе фреймов, являются более или менее
фиксированными, поскольку они представляют те вещи или понятия, которые в большинстве
случаев являются истинными для интересующей нас сущности, в то время как фреймы
более нижних уровней имеют слоты, которые должны быть заполнены наиболее динамической
информацией, подверженной частым изменениям. Если такого рода динамическая информация
отсутствует из-за неполноты наших знаний о наиболее вероятном состоянии дел,
то слоты фреймов более нижних уровней заполняются данными, унаследованными от
фреймов более верхних уровней, которые носят глобальный характер. Данные, которые
передаются в процессе функционирования системы от посторонних источников знаний
во фреймы нижних уровней, имеют более высокий приоритет, чем данные, унаследованные
от фреймов более верхних уровней.
Среди связей в системе фреймов особо нужно выделить связи между экземплярами и классами и связи между классами и суперклассами. Узел Компьютер имеет связь с узлом Машина, которая представляет отношение "класс-суперкласс", а узел sol2, представляющий конкретный компьютер (тот, на котором я работаю), имеет связь с узлом Компьютер, которая представляет отношение "экземпляр-класс". Свойства и отношения, которые в типичной семантической сети кодируются маркировкой связей между узлами, теперь кодируются с помощью представления слот-заполнитель. Кроме того, со слотами может быть ассоциирована любая дополнительная информация, например процедуры вычисления значения этого слота в случае отсутствия явного его заполнения, процедуры обновления значения слота при изменении значения другого слота, ограничения на величины, хранящиеся в слотах, и т.д.