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

Вопрос 2) Предикаты. Предложения: факты и правила. (Prolog)

Предикат - это логическая функция, которая выражает некоторое отношение между своими аргументами и принимает значение "истина", если это отношение имеется или "ложь", если оно отсутствует.

Обозначение предикатов: F(x), F(x,y),F(x,y,z)…

Одноместный предикат F(x), определенный на предметной области М, является истинным, если у объекта х есть свойство F, и ложным – если этого свойства нет.

Двухместный предикат F(x,y) является истинным, если объекты x и y находятся в отношении F.

Многоместный предикат F(x1,x2…xN) задает между элементами x1,x2…xN и интерпретируется как обозначение высказывания: «Элементы x1…xN находятся между собой в отношении F».

<Имя>(<аргумент>[,<аргумент>]*),

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

Пример: хищник (X) супруги (X,Y) фио (X,Y,Z)

Элементы языка Пролог

Программа на Прологе состоит из множества предложений (фраз). Каждое предложение - это либо факт, либо правило.

Факт - это утверждение о том, что между объектами выполнено некоторое отношение. Факт представляет собой безусловно истинное утверждение.

Например, Наташа является мамой Даши, может быть записан в виде:

мама(Наташа, Даша).

Правило - это факт, истинное значение которого зависит от истинности других фактов.

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

< предикат>:-<предикат>[,<предикат>]*.

Пример. Известно, что бабушка человека - это мама его мамы или мама его папы.

Соответствующие правила будут иметь вид:

бабушка(X,Y):-

мама(X,Z),мама(Z,Y).

бабушка(X,Y):-

мама(X,Z),папа(Z,Y).

Символ ":-" означает "если", и вместо него можно писать if.

Символ "," - это логическая связка "и".

 

Вопрос 3) Переменные. Анонимные переменные. Конкретизация переменных Prolog

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

Имена переменных могут начинаться: - или с прописной буквы - или с символа подчеркивания. Если переменная начинается с буквы латинского алфавита ,то она называется именованной.

X Y Result _result

Переменные могут быть свободными или связанными.

Свободная переменная - это переменная, которая еще не получила значения. Она не равняется ни нулю, ни пробелу; у нее вообще нет никакого значения. Такие переменные еще называют неконкретизированными.

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

Eсли значение переменной не интересует, то можно использовать анонимные переменные в виде символа подчеркивания '_'. Анонимная переменная применяется в случае, когда значение переменной не важно. Каждая анонимная переменная - это отдельный объект.

Например,

haschild(X):-parent(X, Y). Здесь значение Y не интересует, можно записать

haschald(X):-parent(X, _).

Значение анонимной переменной не выводится на печать. Если несколько анонимных переменных, то они все разные. Использование анонимных переменных позволяет не выдумывать имена переменных, когда не надо.

Пусть задано отношение parents для двух родителей.

parents(ann, tom, bob).

Тогда в правиле:

child(X):-parents(_, _, X).

Y Z

обе анонимные переменные разные.

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

Сопоставление и унификация. Предикат равенства. (Prolog)

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]