Логическая модель представления знаний.

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

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

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

Отличительными чертами логических моделей являются единственность теоретического обоснования и возможность реализации системы формально точных определений и выводов (ЛЮБОВЬ (Виктор, Ирина): Виктор любит Ирину).

5. Декларативная парадигма программирования:

Парадигма — набор теорий, стандартов и методов, которые совместно представляют собой способ организации научного знания(способ видения мира). Парадигма в программировании — способ концептуализации, который определяет, как следует проводить вычисления, и как работа, выполняемая компьютером, должна быть структурирована и организована.

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

Декларати́вные языки́ программи́рования — это языки программирования , в которых программистом не задается пошаговый алгоритм решения задачи ("как" решить задачу), а некоторым образом описывается, "что" требуется получить в качестве результата. Механизм обработки сопоставления с образцом декларативных утверждений уже реализован в устройстве языка. Типичным примером таких языков являются языки логического программирования (языки, основанные на системе правил).

Пример: надо пройти в городе из пункта А в пункт Б. Декларативная программа - это план города, в котором указаны оба пункта, плюс правила уличного движения. Руководствуясь этими правилами и планом города, курьер сам найдет путь от пункта А к пункту Б.

Наиболее распространённым языком логического программирования является язык Пролог— язык и система логического программирования, основанные на языке предикатов математической логики дизъюнктов (предложения, содержащие связки "и" ( & ) и одну связку "если" ( <- )) Хорна.

Основными понятия в языке Пролог :

Факты: имена объектов, указанных в факте, называются аргументами, а имя отношения, которое записывается непосредственно перед круглыми скобками, называется предикатом (дуб(дерево)- дуб является деревом).

Правила: правила используются когда необходимо указать, что некоторый факт зависит от группы других фактов. Состоит из заголовка и тела правила, которые соединяются символом «:-» («если»).

Запросы: Запрос инициирует процедуру поиска в базе данных фактов, сопоставимых с запросом. Ответом на вопрос является либо значение «истина», если находится факт, сопоставимый с запросом, либо значение «ложь», если факт не найден.

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

Prolog использует один тип данных, терм, который бывает нескольких типов:

- атом — имя без особого смысла, используемое для построения составных термов;

- числа и строки такие же, как и в других языках;

- переменная обозначается именем, начинающимся с прописной буквы, и используется как символ-заполнитель для любого другого терма;

- составной терм состоит из атома-функтора, за которым следует несколько аргументов, каждый из которых в свою очередь является атомом.

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


Наши рекомендации