Навигация
Главная
Поиск
Форум
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
HACK F.A.Q 65535
Бип из системно... 65535
Гостевая книга ... 65535
Содержание сайт... 65535
Вызов хранимых ... 65535
Эмулятор микроп... 65535
Приложение «Про... 61622
Организация зап... 61324
Invision Power ... 60976
Оператор выбора... 60288
Подключение Mic... 59111
Модуль Forms 58952
Создание отчето... 58525
ТЕХНОЛОГИИ ДОСТ... 54760
Программируемая... 53490
Пример работы с... 51475
Имитационное мо... 50185
21 ошибка прогр... 45150
Реклама
Сейчас на сайте
Гостей: 14
На сайте нет зарегистрированных пользователей

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

Моделирование системы управления качеством производственного процесса на...
Моделирование автовокзала + Отчет + Блок схема
Создание последовательности окон и передвижение окон по экрану на Turbo ...

Реклама



Подписывайся на YouTube канал о программировании, что бы не пропустить новые видео!

ПОДПИСЫВАЙСЯ на канал о программировании
Процесс представления знаний


Для того чтобы более четко проиллюстрировать то, какие преимущества дает программисту использование методов логического программирования при представлении знаний, рассмотрим, как на процедурном языке (например, на языке Си) можно составить программу, предназначенную для представления знаний. Сам по себе язык Си не является средством логического программирования. Поэтому для того, чтобы воспользоваться этим языком при представлении знаний, необходимо реализовать нужные средства в рамках языка Си. В типичной Си-программе для этого требуется:
1) определение структур данных, конкретные экземпляры которых будут использоваться для описания структуры системы;
2) составление процедур, предназначенных для выполнения вычислительных операций над экземплярами структур данных, иными словами, для придания описаниям определенного формального смысла.
Неопытный программист, пользующийся языком Си, стремится изобретать новые средства для каждой новой области применения (т.е. для каждой представляемой системы). В результате этого тип формального смыслового значения, реализуемого процедурами программы, будет сильно зависеть от конкретных особенностей представляемой системы. Обратите внимание на то, насколько сильно это отличается от языка Пролог: символическое обозначение отношения и Пролог-программе имеет один и тот же тип формального смыслового значения независимо от того, какая система представляется. Самым большим недостатком введении новых средств для каждой новой области применения является то, что лицу, пытающемуся прочитать программу, потребуется изучить как ее описание, так и описание системы, реализованное структурами данных этой программы.

Процесс представления знаний с помощью Пролог-программы может состоять из следующих этапов [4]:
1. Специалист, знакомый с системой, анализирует ее структуру для того, чтобы выделить все значимые сущности и важные отношения между этими сущностями.
2. Программист выбирает символические обозначения для представления каждой сущности и каждого отношения.
3. Специалист по системе определяет каждое отношение семантически, при этом отмечается, какие конкретные реализации отношения будут истинными, а какие - ложными.
4. Программист аксиоматически определяет каждое отношение при помощи фраз языка Пролог. Аксиоматическое определение будет правильным, если интерпретатор Пролога сможет вывести из этого определения каждую истинную конкретную реализацию данного отношения.
После того как знания о системе будут описаны в Пролог-программе, пользователь сможет обращаться к этим знаниям посредством запросов или при помощи более совершенного интерфейса программы с пользователем.
В качестве примера рассмотрим систему, образованную межличностными отношениями служащих, регулярно посещающих собрания в некоторой организации. Руководитель организации, хорошо разбирающийся в этой системе, проводит ее анализ и разбивает систему на следующие компоненты. Каждый служащий (Мария Кравчук, Федор Александров, Роман Иванов, Иван Фирсов и Евгения Харченко) – это значимая сущность. Каждое собрание (собрание_38 и собрание_39) – это также значимая сущность. Отношение между служащим и собранием, которое он должен посещать, является важным. Отношение между служащими, которые знают друг друга, также является важным.
Программист выбирает следующие символические обозначения этих сущностей и отношений:

«мария», «роман», «федор», «иван» и «евгения» - это служащие;
«собрание_38» и «собрание_39» - это виды собраний;
«собрание» - это отношение между служащим и собранием, которую он посещает;
« знает » - это отношение между служащими, которые знают друг друга.

Руководитель организации семантически определяет отношение «собрание», устанавливая, что истинны следующие конкретные реализации этого отношения:

собрание (мария, собрание_38).
собрание (роман, собрание_38).
собрание (иван, собрание_39).
собрание (федор, собрание_39).
собрание (евгения, собрание_39).




а все остальные конкретные реализации - ложны. Руководитель организации определяет отношение "знает", утверждая, что любые два лица, посещающие одно и то же собрание, знают друг друга. Из этого следует, что истинными будут такие конкретные реализации отношения "знает":

знает (мария, роман).
знает (роман, мария).
знает (иван, федор).
знает (федор, иван).
знает (иван, евгения).
знает (евгения, иван).
знает (федор, евгения).
знает (евгения, федор).




Все остальные конкретные реализации этого отношения будут ложными. Программист, "вооружившись" этими семантическими определениями, определяет отношение "собрание" аксиоматически, при этом каждая истинная конкретная реализация данного отношения записывается в виде факта:

% Служащий Вид собрания
собрание (мария, собрание_38).
собрание (роман, собрание_38).
собрание (иван, собрание_39).
собрание (федор, собрание_39).
собрание (евгения, собрание_39).




Проверка корректности данных аксиоматических определений состоит в необходимости продемонстрировать то, что интерпретатор языка Пролог сможет вывести из них все истинные конкретные реализации каждого отношения.
Формальный смысл. Символические обозначения, используемые дня представления сущностей и отношений в такой Пролог-программе, имеют как формальный смысл, выражаемый через другие символические обозначения, так и внешний смысл, который связывает их с компонентами представляемой системы. Для того чтобы оценить по достоинству силу Пролога как формализма, полезно подробно рассмотреть природу обоих типов смысловых значений.
Формальный смысл символического обозначения, употребляемого в Пролог-программе, является продуктом дескриптивных фраз программы и обрабатывающей структуры Пролога. Рассмотрим формальный смысл символического обозначения отношения (т.е. имени предиката), используемого в Пролог-программе. С формальной точки зрения отношение - это отображение п термов-переменных (где п - количество аргументов) на истинностное значение. В Пролог-программе отношение определяется аксиоматически множеством фраз языка Пролог. Интерпретатор - это процедура, обладающая способностью выводить истинные конкретные реализации отношения из фраз, определяющих это отношение. С этой точки зрения интерпретатор реализует смысл аксиоматического определения отношения. Формальный смысл символического обозначения отношения - это множество истинных конкретных реализаций отношения, которые могут быть выведены интерпретатором из фраз, содержащихся в программе,
Сходным образом формальный смысл терма, не содержащего переменных (т.е. константы или структуры без переменных), - это множество истинных конкретных реализации отношений, в которые может входить этот терм.
Внешний смысл. Для того чтобы обеспечить возможность представления знаний о мире при помощи Пролог-программы, символические обозначения программы (константы и имена предикатов и структур) должны обладать внешним смыслом, связывающим их с компонентами представляемой системы. Этот смысловой уровень существует в умах программистов и пользователей программы. Он сходен со смысловым значением слов естественного языка. В приведенном выше примере программист выбрал символическое обозначение «мария» для представления служащей Мария Кравчук, следовательно. Мария Кравчук - это внешний смысл символического обозначения «мария».
Для того чтобы сделать более ясной разницу между формальным и внешним смыслом символических обозначений, рассмотрим фразу
знает (евгения, федор).



На рис. 3.1 показано, как внешние смысловые значения связывают символические обозначения программы с компонентами представляемой системы.

Представление фразы
Представление фразы
Рис. 3.1

Формальный смысл символического обозначения "знает" - это множество истинных конкретных реализации отношения "знает/2". Частью формального смысла символического обозначения "евгения" является то, что , данное обозначение может служить первым аргументом истинного конкретного случая отношения "знает/2". В приведенном выше примере подразумеваемым внешним смыслом обозначения "знает" является знакомство друг с другом двух лиц, общающихся между собой в некоторой социальной ситуации, а предполагаемым внешним смыслом символического обозначения «евгения» является человек по имени Евгения Харченко. Если выражаться в терминах логики предикатов, то внешний смысл символического обозначения константы - это его значение при некоторой интерпретации. Интерпретатор языка Пролог реализует формальный смысл символических обозначений; мы же как программисты и пользователи программы должны придать этим обозначениям внешний смысл.
Программа, предназначенная для представления знаний о системе, окажется удачной, если пользователь сможет извлекать эти знания из программы и использовать их способом, целесообразным для выполнения действий с системой. Иными словами, поведение и выходная информация программы должны отражать структуру системы. Если пользователь обнаружит, что выходная информация программы противоречит его пониманию системы, то это будет означать, что программа непригодна для работы.
С точки зрения пользователя подразумеваемый внешний смысл символических обозначений, встречающихся в выходных данных, - это, ключ к знаниям, воплощенным в программе. Так, если внешний смысл, который пользователь придает символическим обозначениям в выходной информации программы, будет отличаться от внешнего смысла, который в них вкладывал программист, то пользователю может показаться, что программа составлена некорректно.
Рассмотрим в качестве примера человека, который в первый раз пришел в библиотеку с компьютеризированным каталогом. Программа спрашивает этого человека: «Тип книги?» , не давая никаких указаний о том, что может обозначать слово «тип». Пользователь судорожно пытается сообразить, что же следует ввести в ответ - « небеллетристика» ? «иностранная» ? «красная»? Он в конце концов решает ввести слово «небеллетристика», но программа отвергает это слово, сообщая, что «небеллетристика - это неверный тип». Пользователь знаком со структурой каталога и предполагает, что эта структура корректно реализована в программе. Однако для того, чтобы воспользоваться программой, он вначале должен выяснить, какой смысл программист вложил в символическое обозначение «тип».
Внешний смысл символических обозначений - это "подводный камень" любой программы, представляющей знания, поскольку почти всегда у конкретного символического обозначения существует более чем одно внешнее смысловое значение. Символические обозначения, представляющие из себя неоднозначные слова естественного языка (как слово «тип»), наиболее ненадежны в этом отношении. Для того, чтобы сузить диапазон внешних смысловых значений символического обозначения, лучше всего делать более точные определения отношений, в которых используются эти обозначения. К примеру, внешним смыслом обозначения «мария», входящего в истинную конкретную реализацию отношения "собрание/2"

собрание (мария, собрание_38).




может быть любое количество людей, первое имя которых - Мария. Но если при определении отношения добавить номер человека по социальному страхованию:

собрание (мария, 121_76_7720, собрание_38).




то это существенно сузит круг лиц с именем "Мария", к которым будет иметь отношение символическое обозначение «мария», если только данная конкретная реализация отношения "собрание/2" будет истинной.
Опубликовал Kest October 13 2010 17:11:38 · 0 Комментариев · 5394 Прочтений · Для печати

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


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



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

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

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

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

Пароль



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

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

Случайные загрузки
Atb
База предприятий ...
Ранги для форума
Панель "ссылки"
PHP: Полезные приемы
IIIDTrans
GPSS World Studen...
MpegPlay
CoolHints2k
LaserTank [Исходн...
Формирование отче...
Web Регистрация
mmmJlabel
PHP 5 в подлинник...
De Knop
Converter AMR<->W...
Программа "AutoRu...
Просмотр коммент...
Tag Игра "Пятнашк...
Progressbar

Топ загрузок
Приложение Клие... 100356
Delphi 7 Enterp... 81303
Converter AMR<-... 20037
Borland C++Buil... 10906
GPSS World Stud... 10004
Borland Delphi ... 7962
Turbo Pascal fo... 6939
Visual Studio 2... 4946
Калькулятор [Ис... 4194
FreeSMS v1.3.1 3500
Случайные статьи
Указатель this
LINITIAL (ИНИЦИАЛИ...
Свойства ARM
отчетность через и...
Определение вторич...
Сохранение проекта
Каковы функции бло...
Спецификация исклю...
Получение цифровог...
African vases
Формат блока YMODEM
Установка последов...
Поиск заданного э...
Что содержит конфи...
Зависимости функци...
Модуль Image
Управление свойств...
Обзор инструментов...
Приставка Gamepark...
Программируем на PHP
Компоненты доступа...
Вот что происходит...
Таблицы (Table)
Дополнительные фак...
Information Center...
Статистика



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


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