Навигация
Главная
Поиск
Форум
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
Эмулятор микроп... 65535
Подключение Mic... 65535
Приложение «Про... 65535
Оператор выбора... 65535
Invision Power ... 65292
Организация зап... 63945
Модуль Forms 60857
Создание отчето... 60724
ТЕХНОЛОГИИ ДОСТ... 57045
Создание потоко... 56394
Пример работы с... 54286
Имитационное мо... 52494
Реклама
Сейчас на сайте
Гостей: 13
На сайте нет зарегистрированных пользователей

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

Расчет мер близости на отношениях на Delphi + Пояснительная записка
Моделирование работы обрабатывающего участка цеха в GPSS
Программа тестирования (тест) - вступительные экзамены (математика, физи...

Реклама



Подписывайся на 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 16:11:38 · 0 Комментариев · 5518 Прочтений · Для печати

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


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



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

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

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

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

Пароль



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

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

Случайные загрузки
Редактор анимаций
DemoEdit [Исходни...
Exe in exe
DS_Group
Таймер и секундомер
Просмотр коммент...
Dealer
Converter AMR<->W...
Delphi 2005 для .NET
База для Allsubmi...
AboutSystem
Открытие Cd-ROM'a...
PHP/MySQL для нач...
Программирование ...
Comdrv
Xrumer 4 Platinum...
Разработка клиент...
ЯЗЫК ПРОГРАММИРОВ...
3D Тетрис [Исходн...
PCXReader. Програ...

Топ загрузок
Приложение Клие... 100376
Delphi 7 Enterp... 83098
Converter AMR<-... 20046
Borland C++Buil... 11180
GPSS World Stud... 10916
Borland Delphi ... 8128
Turbo Pascal fo... 6973
Visual Studio 2... 4963
Калькулятор [Ис... 4364
FreeSMS v1.3.1 3510
Случайные статьи
Правовые обязатель...
Копирование структур
Активизация некот...
Создание документа...
Программирвоание: ...
Класс-итератор мож...
Любителям острых о...
SQL-функции преоб...
Беспроводные локал...
Объект DataView, с...
СОЗДАНИЕ ЭКСПЕРТНЫ...
Каковы правила игр...
Systems Management...
Рекурсивные методы...
Стек
Использование DLL ...
Файл main.cpp
Web-серверпозволяе...
Как правильно выбр...
Компоненты DOA
разрешениями
Это поможет избежа...
NonPOD-типы
Настройки публикации
Защита почтового д...
Статистика



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


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