ИНСТРУМЕНТАЛЬНЫЕ СРЕДСТВА ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ

Язык логического программирования Пролог

После почти 20-летнего успешного развития в 1996 г. Пролог стал стандартом логических языков программирования. Главным отличием его от так называемых процедурных языков, таких как Borland С, Delphi, Java и др., является его декларативный характер.

Если в традиционных языках программирования необходимо знать заранее, как решить ту или иную задачу, то в декларативном Прологе это делает «сам» интерпретатор. Эта особенность языка делает его незаменимым в областях, где сложность задач и объем необходимых знаний превосходят возможности человека. Это свойство наиболее подходит для исследований в области ИИ.

Пролог — это декларативный язык, в среде которого необходимо точно и грамотно на логическом языке описать условие задачи, а ее выполнение — это результат некоторого рутинного процесса, выполняемого интерпретатором. Фрагменты Пролог-программы иногда называют базами знаний. Далее рассмотрение языка осуществляется для версии Турбо Пролог.

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

Составляющие Пролог-программы.

В самом общем виде Пролог- программа может быть представлена как совокупность двух основных разделов.

Первый раздел содержит постановку задачи, т.е. описание ее условия в виде набора исходных данных, представленных в форме БД.

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

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

Утверждения. Простейший вид утверждений Пролог-программы — это факт. Он констатирует наличие отношений между объектами или переменными. Отношение в программе называется предикатом.

Пример.

нравится ("Лена", "теннис").

играет ("Костя", "футбол").

имеет ("Сергей", _) .

отец ("Катя", "Дмитрий").

плюс (3, 2, 5) .

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

Вопросы в Пролог-программе имеют тот же формат, что и факты. Их можно различить по контексту, расположению на экране в режиме отладки программы или по наличию знака «?» в начале или в конце утверждения (в зависимости от диалекта интерпретатора). Семантически вопрос в Пролог-программе определяет наличие того или иного отношения между объектами.

Пример.

нравится ("Лена", "хоккей").

нравится ("Лена", "теннис").

? нравится ("Лена", X).

X = "теннис".

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

где t — подцель (теорема или промежуточная цель программы); аь аг> •••, aN аксиомы, посредством которых достигается подцель;:— знак определения функции (читается: «определяется, как...»); , — знак операции конъюнкции (логическое «и»); • — обязательный знак окончания правила (резольвенты).

Пример.

Дано: "все люди ошибаются", "Сократ — человек". Первую фразу можно формализовать следующим образом: "для всех X, X ошибается, если X — человек".

Запишем исходные данные в терминах Пролог-программы: failable (X):- person (X). person (socrates).

Сформулируем запрос: failable (socrates), в результате получим ответ: yes.

 
Посмотреть оригинал
< Пред   СОДЕРЖАНИЕ   ОРИГИНАЛ   След >