Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
29
Добавлен:
02.04.2015
Размер:
205.82 Кб
Скачать

3.3. Логическое программирование

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

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

Наибольшее распространение получила система логического программирования, основанная на представлении знаний в виде так называемыхклауз Хорна. Это система и язык Prolog (PROgramming in LOGic), предложенная в начале 70-х годов Аланом Колмероем. Общая идея логического программирования представлена схемой на рис. 3.1. База знаний содержит описание правил вывода и известных фактов в форме клауз Хорна. Задание на работу с системой логического программирования имеет вид клаузы или набора клауз, в которых фигурируют предметные переменные, значения которых необходимо определить.

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

Клаузы Хорна и метод резолюций

Клаузой Хорна называется частный случай клаузы B1,...,BmA1,...,An, получающийся при m=1:

BA1,...,An.

Метод резолюций основан на использовании правил резолюции. Правило резолюции – это правило вывода, которое позволяет из двух предложений

B1,...,Bm A1,...,Ai,...,An и

B'1,...,B'j,...,B'rA'1,...,A'k ,

для которых существует так называемая согласующая подстановка  такая, что Ai=B'j, вывести третье

B1,..., Bm, B'1,..., B'j-1, B'j+1,..., B'r 

A1,..., Aj-1, Aj+1,..., An, A'1,..., A'k.

Понятие согласующей подстановки  определяется как множество пар {(xq,tq)}, означающих, что переменная xq всюду в Ai и B'j заменяется термом tq так, что Ai=B'j, причем любая другая унифицирующая подстановка  носит менее общий характер.

Для клауз Хорна правило резолюции можно записать в общем виде

BA1,A2,...,An | B'  A'1,...,A'k

A1=B'1,

B  A'1,...,A'k, A2,...,An

где  - согласующая подстановка, | - разделитель клауз.

Сущность метода резолюций – это процедурная интерпретация клауз Хорна, которая заключается в следующем. Множество клауз Хорна S, описывающих постановку задачи, дополняется отрицанием C целевого утверждения C, содержащего в общем случае некоторые предметные переменные, значения которых необходимо определить. С помощью правил резолюции находим решение задачи, а именно значения предметных переменных, для которых множество S  {C} невыполнимо. Это значения предметных переменных, при которых из множества предложений S  {C} удается вывести пустое предложение .

Пример 3.3. Дана формулировка задачи на естественном языке:

Робот находится там, где находится тележка. Определить, где находится робот, если известно, что тележка находится на складе.

Запись условий задачи в стандартной форме:

где(робот, x)  где(тележка, x).

где(тележка, склад) .

где(робот, y).

В соответствии с методом резолюций запрос формируется как отрицание предложения "где(робот, y)". Последовательность резолюций:

где(робот, y) | где(робот, x)  где(тележка, x)

y=x ;

где(тележка, x)

где(тележка, x) | где(тележка, склад) 

x=склад .

Таким образом, на втором шаге при использовании согласующей подстановки x=склад получено пустое предложение  и ответ где(робот, склад), что означает, что робот находится на складе.

Соседние файлы в папке учебное пособие 2003