Навигация
Главная
Поиск
Форум
FAQ's
Ссылки
Карта сайта
Чат программистов

Статьи
-Delphi
-C/C++
-Turbo Pascal
-Assembler
-Java/JS
-PHP
-Perl
-DHTML
-Prolog
-GPSS
-Сайтостроительство
-CMS: PHP Fusion
-Инвестирование

Файлы
-Для программистов
-Компонеты для Delphi
-Исходники на Delphi
-Исходники на C/C++
-Книги по Delphi
-Книги по С/С++
-Книги по JAVA/JS
-Книги по Basic/VB/.NET
-Книги по PHP/MySQL
-Книги по Assembler
-PHP Fusion MOD'ы
-by Kest
Professional Download System
Реклама
Услуги

Автоматическое добавление статей на сайты на Wordpress, Joomla, DLE
Заказать продвижение сайта
Программа для рисования блок-схем
Инженерный калькулятор онлайн
Таблица сложения онлайн
Популярные статьи
OpenGL и Delphi... 65535
Форум на вашем ... 65535
21 ошибка прогр... 65535
HACK F.A.Q 65535
Бип из системно... 65535
Гостевая книга ... 65535
Invision Power ... 65535
Пример работы с... 65535
Содержание сайт... 65535
ТЕХНОЛОГИИ ДОСТ... 65535
Организация зап... 65535
Вызов хранимых ... 65535
Создание отчето... 65535
Имитационное мо... 65535
Программируемая... 65535
Эмулятор микроп... 65535
Подключение Mic... 65535
Создание потоко... 65535
Приложение «Про... 65535
Оператор выбора... 65535
Реклама
Сейчас на сайте
Гостей: 7
На сайте нет зарегистрированных пользователей

Пользователей: 13,372
новичок: vausoz
Новости
Реклама
Выполняем курсовые и лабораторные по разным языкам программирования
Подробнее - курсовые и лабораторные на заказ
Delphi, Turbo Pascal, Assembler, C, C++, C#, Visual Basic, Java, GPSS, Prolog, 3D MAX, Компас 3D
Заказать программу для Windows Mobile, Symbian

Моделирование системы управления качеством производственного процесса на...
Метод половинного деления для нахождения корня уровнения на Turbo Pascal...
Моделирование процесса обработки заданий на вычислительном центре на GP...

Фреймы


Концепция фреймов является одним из способов представления знаний о ситуациях. Каждый фрейм содержит слоты (в буквальном переводе - щели), которые идентифицируют тип ситуации или задают параметры конкретной ситуации. К примеру, фрейм, описывающий ситуацию на собрании, может иметь слот тип, значение которого будет определять тип собрания. В этом фрейме могут также присутствовать слоты время и место, значениями которых будут параметры конкретного собрания. Формализм фреймов можно рассматривать как обобщение формализма семантических сетей. Иерархия - это одна из важнейших концепций формализма фреймов, поэтому данный формализм также пригоден для представления таксономий знаний.
Выражение, записанное на языке фреймов, таком как FRL, декларирует существование фрейма. В нижеследующем примере упоминаются три фрейма – МЕРОПРИЯТИЕ, СОБРАНИЕ и СОБРАНИЕ_38. Фрейм МЕРОПРИЯТИЕ - наиболее общий, фрейм СОБРАНИЕ - более конкретный, описывающий вид МЕРОПРИЯТИЯ, а фрейм СОБРАНИЕ_38 - наиболее уточненный фрейм, описывающий конкретное СОБРАНИЕ. Фрейм СОБРАНИЕ называется субфреймом фрейма МЕРОПРИЯТИЕ, а фрейм СОБРАНИЕ_38 будет субфреймом фрейма СОБРАНИЕ.

Фреймы

Наследование значений слотов. Другой важнейшей концепцией формализма фреймов является наследование. Можно дать указание о том, что если значение слота в одном из фреймов не задается, то фрейм должен унаследовать умалчиваемое значение этого слота из фрейма более высокого уровня. Наследование фреймами значений слотов будет осуществляться в том случае, если в фрейме будет присутствовать слот РАЗНОВИДНОСТЬ, в котором содержится имя другого фрейма. Например, слоты ВРЕМЯ и МЕСТО фрейма СОБРАНИЕ будут унаследованы фреймом СОБРАНИЕ_38. Слот РАЗНОВИДНОСТЬ языка фреймов аналогичен дуге "является" семантической сети в том смысле, что он представляет отношение включения в класс или отношение принадлежности к классу.
Оценка формализма фреймов. Фрейм лучше всего трактовать как некоторую разновидность структур данных. Наследование от фрейма к фрейму реализуется процедурами, которые осуществляют доступ к конкретным экземплярам структур данных. Если язык фреймов не обеспечивает тот тип вывода, который нужен программисту, то программист может написать новую процедуру, обеспечивающую такой вывод. В худшем случае это означает, что каждый возможный вывод потребуется записывать в явной форме. Для действительного понимания смысла программы, написанной на языке фреймов, необходимо соотнести выражения на языке фреймов с процедурами, реализующими выводы для фреймов. Это может оказаться весьма сложным, так как процедуры записываются на языке, отличном от языка фреймов.
Реализация фрейм-программы на Прологе. Нижеследующая Пролог-программа выражает структуру приведенного выше примера СОБРАНИЕ.

разновидность (собрание, мероприятие).
разновидность (собрание_38, собрание).

% локальные значения слотов для фрейма СОБРАНИЕ:
собрание (время, 'Среда 14.00').
собрание (место, 'Зал заседаний').

% локальные значения слотов для фрейма СОБРАНИЕ_38:
собрание_38 (присутствуют, [роман, анна, борис]). % (1)

% правило наследования
собрание_38 (Атрибут, Значение) :- % (2)
разновидность (собрание_38, Фрейм),
подцель =. . [фрейм, Атрибут, Значение],
подцель.




Обратите внимание на то, что и "собрание", и "собрание_38" - это базы данных, в которых хранятся атрибуты. База данных "собрание" связана с базой данных "собрание_38" при помощи факта «разновидность(собрание_38, собрание)». Правило наследования позволяет "собранию_38" наследовать любые значения атрибутов от "собрания" Если запросить время проведения "собрания_38":

? - собрание_38 (время, X).
Х='Среда.14.00'




то ответ будет получен по факту "собрание" при помощи правила наследования.
Факты, противоречащие друг другу. Представьте себе, что сперва планировалось провести "собрание_38" в принятое по умолчанию время (Среда, 14.00), но потом по какой-то причине понадобилось его перенести. Посмотрим, что получится, если в базу данных "собрание_38" добавить атрибут "время", противоречащий уже имеющемуся атрибуту.

собрание_38 (время, 'Четверг 9.00').




Теперь в слоте "время" фрейма "собрание_38" будут находиться два значения - локальное значение и унаследованное значение:

?- собрание_38 (время, X).
Х = 'Четверг 9.00';
Х = 'Среда 14.00';
нет




Здесь трудность состоит в том, что "собрание_38" должно описывать реальное собрание, которое может быть проведено только один раз. Иными словами, отношение между собранием и временем его проведения должно регулироваться ограничением вида один-к-одному, обеспечивающим целостность отношения. Однако в дайной версии программы запрос вырабатывает два значения времени проведения собрания. Значение «Четверг 9.00» должно перекрывать умалчиваемое значение «Среда 14.00», так что запрос подобный приведенному выше, должен вырабатывать только значение «Четверг 9.00».
Запрет наследования. Проблема решается при помощи приводимой ниже программы. Предикат "сократить" в первом правиле "собрание_38" гарантирует то, что если у фрейма "собрание_38" будет иметься локальное значение слота, то этот фрейм не сможет унаследовать другое значение того же самого слота от фрейма "собрание".

разновидность: (собрание, мероприятие).
разновидность (с_38, собрание).

% значения слотов фрейма "собрание":
собрание (время. 'Среда 14.00').
собрание (место, 'Зал заседаний').

% локальное правило
собрание_38 (Атрибут, Значение) :-
с_38 (Атрибут, Значение),!.

% правило наследования
собрание_38 (Атрибут, Значение) :-
разновидность (с_38, Фрейм),
Подцель =..[Фрейм, Атрибут, Значение],
Подцель.

% значения слотов, локальные по отношению к фрейму
% "собрание_38":
с_38 (присутствуют, [роман, анна, борис]).
с_38 (время, 'Четверг 9.00').




Все атрибуты, являющиеся локальными для фрейма "собрание_38", теперь хранятся в базе данных "с_38". Первое правило "собрание_38" проверяет, имеется ли в базе данных "с_38" фраза с требуемым атрибутом. Если имеется, то возвращается нужное значение, а предикат "сократить" предотвращает дальнейшую выдачу ответов. Если такой фразы нет в базе данных "с_38", то второе правило "собрание_38" ищет требуемый атрибут в базе данных "собрание". Теперь запрос о времени проведения собрания выдает единственный ответ:

?- собрание_38 (время, X).
Х = 'Четверг 9.00'; %по «с_38»
нет

?- собрание_38 (место, X). %по «собрание_38»
Х = 'Четверг 9.00';
Х = 'Зал заседаний';
нет


Опубликовал Kest October 13 2010 13:15:32 · 0 Комментариев · 11734 Прочтений · Для печати

• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •


Комментарии
Нет комментариев.
Добавить комментарий
Имя:



smiley smiley smiley smiley smiley smiley smiley smiley smiley
Запретить смайлики в комментариях

Введите проверочный код:* =
Рейтинги
Рейтинг доступен только для пользователей.

Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.

Нет данных для оценки.
Гость
Имя

Пароль



Вы не зарегистрированны?
Нажмите здесь для регистрации.

Забыли пароль?
Запросите новый здесь.
Поделиться ссылкой
Фолловь меня в Твиттере! • Смотрите канал о путешествияхКак приготовить мидии в тайланде?
Загрузки
Новые загрузки
iChat v.7.0 Final...
iComm v.6.1 - выв...
Visual Studio 200...
CodeGear RAD Stud...
Шаблон для новост...

Случайные загрузки
Последнее загруж...
CABfiles
Калькулятор [Исхо...
Моделирование дви...
Добавление к ссы...
PDPcheck
AlnComponents
CaptionButton
Delphi 7: Для про...
iChat v.7.0 Final...
RbControls
Visual Basic Script
Алгоритм DES шифр...
Matrix2D
Calendar
Популярные загрузки
CLR via C#
Pass [Исходник на...
Анекдоты с ostrie.ru
MiniTetris [Исход...

Топ загрузок
Приложение Клие... 100774
Delphi 7 Enterp... 97839
Converter AMR<-... 20268
GPSS World Stud... 17014
Borland C++Buil... 14194
Borland Delphi ... 10293
Turbo Pascal fo... 7374
Калькулятор [Ис... 5984
Visual Studio 2... 5207
Microsoft SQL S... 3661
Случайные статьи
Применение MPEG-1 ...
Explorer для клиен...
Программные инфрас...
Как правильно вест...
setDisplay
Второй этап маршру...
Ждать последующих ...
Работа в Windows 10
Коммутаторы локаль...
Дополнительные вст...
Вулкан Миллион зер...
Онлайн казино Slo...
10.5. Хорновские...
Оптимизация алгоритма
Анализ слов
Cобытийное моделир...
Перегрузка методов...
Процесс представле...
Оператор цикла repeat
Известен ли маршру...
Аутсайдер в обществе
Как работают модули
Представления дере...
Процессы и потоки
Элементарные примеры
Статистика



Друзья сайта
Программы, игры


Полезно
В какую объединенную сеть входит классовая сеть? Суммирование маршрутов Занимают ли таблицы память маршрутизатора?