Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛОИИ методичка 2015.doc
Скачиваний:
68
Добавлен:
12.03.2016
Размер:
194.56 Кб
Скачать
    1. Синтаксис языка Пролог

Наименьшие элементы Пролог-программы: Атомы, Числа, Переменные.

Атомы можно записывать тремя способами:

1 - в виде букв, цифр и _, начинающейся со строчной буквы. Пр.катя.

2 – как последовательность спец. Символов +, -, *,/,=. Пр. :-

3 – цепочка символов, заключенная в ''. Пр. 'катя'.

Числа в Прологе могут быть целые и вещественные.

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

Пример: имеет_ребенка(Х) :- родитель(Х, _).

Структура – это конструкция Пролог, которая позволяет объединить другие компоненты: атомы, числа, переменные и др. структуры. В последнем случае структура рекурсивная (дерево, список). Количество аргументов структуры называется ее арностью.

Пример: дерево на Пролог узел(а1, а2) или узел(узел(а1,а2), а3)

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

p(t1,t2,…,tn).

p– предикатный символ.

t1,t2,…,tn– термы.

Из предикатов строятся предложения: факты, правила и вопросы.

Факт – это предикат, после которого ставится точка.

Вопрос (цель) – это предикат или последовательность предикатов, которые формулируют результат, который должна выдать программа. Начинается вопрос с ?- , заканчивается точкой, цели разделяются запятыми.

Правила имеют вид: p:-p1, p2,…,pn.

P, p1, p2,…,pn– предикаты

P – заголовок правила

p1, p2,…,pn– тело правила

Факт – это правило, у которого нет тела.

    1. Семантика языка Пролог

Правила в пролог имеют 2 смысла: декларативный и процедурный.

1 – декларативный смысл правила p:-p1, p2,…,pn.

р истинно, если истинны все p1, p2,…,pn.

2 – процедурный смысл правила определяет порядок достижения целей. Если предикат рассматривать как цель, то для достижения цели р нужно последовательно достичь цели p1, p2,…,pn.

Правило можно представить как процедуру р с параметрами t1, t2,…,tm:

p(t1, t2,…,tm):-

p1(…),

p2(…),

…,

рn(…).

Для выполнения процедуры р необходимо выполнить процедуры p1(…), p2(…),…, рn(…).

Вопрос системе можно рассматривать как вызов процедуры.

?- p(t1, t2,…,tm).

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

    1. Алгоритм работы Пролог-машины.

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

  1. Если список целей пуст, то алгоритм успешно завершает работу.

  2. если список не пуст, то запускается процедура «Просмотр». Она просматривает факты и правила (предложения), пока не обнаружит предложение С, голова которого сопоставима с первой целью G1.

  3. Если такого предложения найти не удается, то процедура «Просмотр» возвращает неудачу. Если предложение найдено, то оно будет иметь вид H :- B1,B2,..,Bn. Подходящих предложений может быть несколько, тогда выберет первый. Находим подстановку (пока достаточно знать, что переменная сопоставима с конкретным значением). В списке целей первая цель G1 заменяется телом правила:

B1,B2,..,Bn, G2,…, Gm. //новый список целей

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

  1. К новому списку целей применяется подстановка. Этот список возвращается процедуре «Вычислить».

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