Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы на экз языки.docx
Скачиваний:
20
Добавлен:
20.09.2019
Размер:
67.44 Кб
Скачать

14. Модели представление знаний на Прологе.

В Прологе ключевой выступает логическая модель представления знаний. Продукционные и логические модели: Знания в таких моделях представляются в следующей форме: "Если А, то В". Вместо А и В могут стоять некоторые утверждения, факты, приказы и т.д. Например: "Если диагонали четырехугольника пересекаются под прямым углом, то этот четырехугольник ромб", "Если сделаешь работу то получишь зарплату" и т.д. Из примеров видно что правило состоит из двух частей: посылки (условия) и следствия (заключения). Если А (посылка) имеет место, то В(следствие) также реализуется или может быть реализовано. Посылка может состоять и из нескольких частей т.е: "Если А1,А2,..,АN то В". Запись правила означает, что "Если все посылки от А1 до АN истинны, то следствие В также истинно". Посылки А1..АN есть простые посылки они соединяются с помощью союзов: и,или и могут содержать отрицание не. При реализации правил такого вида из одной или нескольких посылок (знаний) могут быть получены новые знания, поэтому они называются продукционными. Примером может служить следующее правило: Если человек Х является сыном человека У, и человек У является сыном человека Z, и человек Z является мужчиной, то человек Х является внуком человека Z.

Достоинства логических моделей представления знаний

* В качестве «фундамента» здесь используется классический аппарат математической логики, методы которой достаточно хорошо изучены и формально обоснованы.

* Существуют достаточно эффективные процедуры вывода, в том числе реализованные в языке логического программирования Пролог, использующие механизмы автоматического доказательства теорем для поиска и логически осмысленного вывода информации

* В базах знаний можно хранить лишь множество аксиом, а все остальные знания получать из них по правилам вывода, а также Данные, факты и другие сведения о людях, предметах, событиях и процессах.

Не относится к билету

Остальные модели представления знаний.

* продукционные модели – модель основанная на правилах, позволяет представить знание в виде предложений типа: «ЕСЛИ условие, ТО действие». Продукционная модель обладает тем недостатком, что при накоплении достаточно большого числа (порядка нескольких сотен) продукций они начинают противоречить друг другу;

* сетевые модели (или семантические сети) – в инженерии знаний под ней подразумевается граф, отображающий смысл целостного образа. Узлы графа соответствуют понятиям и объектам, а дуги – отношениям между объектами. Обладает тем недостатком, что однозначного определения семантической сети в настоящее время отсутствует; Сетевые модели: В основе сетевых моделей представления знаний лежит идея о том, что любые знания можно представить в виде совокупности объектов (понятий) и связей (отношений) между ними. В отличие от продукционных эти модели более наглядны, поскольку любой пример можно представить в виде ориентированного (направленного) графа. В основе моделей этого типа лежит конструкция, названная семантической сетью. Сетевые модели формально можно задать в виде Н=[I,C1,C2,..,CN,G]. Здесь I множество информационных единиц; С1,..,СN множество типов связей между информационными единицами. Отображение G задает между информационными единицами, входящими в I связи из заданного набора типов связей. В зависимости от типов связей, используемых в модели, различают классифицирующие сети, функциональные сети и сценарии.

16. Интеграция Пролог-процедур

Понятие Dll.

Вспомним процесс программирования в DOS. Преобразование исходного текста в машинный код включал в себя 2 процесса: компиляцию и линковку. Во время линковки в код программы помещались не только объявления функций и процедур, но и их полный код.

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

рис 1.

DLL (библиотека динамической связи) – файл, выступающий в качестве коллективной библиотеки предикатов, которые могут быть использованы одновременно в нескольких приложениях. Prolog способен генерировать DLL, включать DLL статически и загружать динамически.

Вызов в программе на VP процедур и функций на других языках.

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

Замечание: обратите внимание, что в VP явно указывается язык процедуры

Передача входных/выходных параметров и возвращение значений.

Размер входных параметров определен однозначно и зависит только от объявленного типа. Выходной параметр – 32 битный указатель на область памяти, где хранится выходное значение.

Следует отметить, что функции на Pascal не могут возвращать значения в формате чисел с плавающей точкой, а функции C - структуры (но могут, конечно, возвращать указатели на них).

Многочисленные декларации.

Предикат VP может иметь различные комбинации входных/выходных параметров, и для каждой из них необходима отдельная процедура. Идентификаторы, используемые в Prolog должны совпадать с идентификаторами в библиотеке + суффикс _X, где X – целое число (порядковый номер процедуры, нумерация начинается с 0). Если существует только один вариант, то суффикс отсутствует.

Примечание: если процедура написана на языке C, то параметры заносятся в стек в обратном порядке (после возврата значений указатель автоматически корректируется VP), в противном случае, параметры заносятся в стек в нормальном порядке (см. таблицу 1).

Форматы объектных файлов в Win32.

Под Win32 используется 2 формата объектных файлов: OMF (объектно-модульный формат – используется, например, Borland C++ ) и COFF (Общий объектно-файловый формат, используется, например, Visual C++ ).

  1. При использовании файла в формате OMF имя предиката должно совпадать с именем функции.

  2. При использовании файла в формате COFF, к имени предиката добавляется знак подчеркивания, и после символа @ указывается количество байт, добавленных в стек (например, если предикат name имеет 2 целых аргумента, то он должен быть объявлен как _name@8 (см. таблицу 1)).

Установка указателя на стек.

Существует два способа установки указателя на стек: при объявлении функции и при ее вызове. Так сложилось, что Pascal устанавливает указатель при объявлении функции, а С – при вызове (см. таблицу 1).

Конвертирует имена в верхний регистр.

Порядок аргументов прямой.

Устанавливает указатель на стек при объявлении.

Необходимость конвертировать имена в формат COFF.

C

-

-

-

pascal

+

+

+

stdcall

+

-

+

syscall

+

+

-

Таблица 1: вызов модулей из VP.

Неавтоматическое обозначение внешних предикатов.

Идентификатор процедуры или функции в VP не обязательно должен совпадать с идентификатором во внешнем модуле. В этом случае объявление такого предиката имеет вид:GLOBAL PREDICATES

add(integer, integer, integer) – (i,o) language c as “_myadd@12”