Cтруктура программы

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

domains

/*объявление доменов*/

predicates

/*объявление предикатов*/

clauses

/*предложения-факты и правила*/

goal

/*цель программы*/

Раздел доменов (domain)

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

domains

title, author=symbol

year=integer

predicates

book(title, author, year)

Объявление собственных доменов позволяет отследить ошибки. Несмотря на то, что author и title интерпретируются типом symbol,они не эквивалентны друг другу.

Если вы перепутали местами объекты, то это будет сразу обнаружено.

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

Раздел предикатов (predicates)

Если в разделе clauses вы описали собственные не cтандартные предикаты, то их необходимо объявить в разделе predicates(иначе Пролог вас не поймет).

В результате объявления предиката вы сообщаете, к каким доменам принадлежат аргументы этого предиката. Только стандартные предикаты объявлять не обязательно.

Все пользовательские предикаты c указанием доменов(типов) их аргументов в этом разделе просто перечисляются.

predicates

summa(integer, integer, integer)

Декларация предиката не завершается точкой.

Имя предиката начинается с буквы, за которой может следовать буква, цифра или знак подчеркивания.

Раздел предложений (сlauses)

Раздел состоит из фактов и правил.

Факты(facts) устанавливают отношения между объектами или описывают свойства объекта:

student(petrov, sp-81,2010).

cup(red).

parent(bob, tom).

Правила(rules )- определяют, когда эти отношения истинны. Правила позволяют выводить одни факты из других.

Голова правила истинна тогда и только тогда, когда являются истинными все утверждения, составляющие тело.

If тело then голова (голова if тело)

Раздел целей (goal)

запускает программу в работу.

Выводы:

Программа состоит из предложений, определяющих отношения между объектами.

Предложения бывают трех типов: факты, правила и цели.

Факты содержат утверждения, которые всегда истинны. Правила содержат утверждения, истинность которых зависит от выполнения некоторых условий. Правила состоят из головы и тела. Тело поставляет новые подцели, которые требуется доказать.

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

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

Вычисление ЛП – это вывод следствия из программы. В математике такие системы называются дедуктивными. (ДС)

Дедуктивной системой(ДС) называется способ задания множества путем указания исходных элементов (аксиом исчисления) и правил вывода, каждое из которых описывает, как строить новые элементы из исходных.

ДС называют также исчислением (то есть правилами вычисления и оперирования объектами) или формальнойсистемой.

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

Множество фактов, правил и целей задают логическую программу.

Факты задают отношения между объектами.

Правила определяют одни отношения через другие.

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

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

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

2.7.Особенности ЛП:

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

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

- Возможность рассмотрения альтернативных решений и поиск всех возможных решений.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: