МарГТУ 2009 г.

advertisement
Логическое программирование
Семантика Пролога.
Лекция 12
МарГТУ 2009 г.
1
Декларативная семантика Прологпрограмм
 Дизъюнкция целей
 Процедурная семантика
 Соотношение между процедурным и
декларативным смыслом

МарГТУ 2009 г.
2
Декларативная семантика
Пролог-программ
МарГТУ 2009 г.
3
Семантика Пролог-программ
Семантика
(смысл, понимание)
Декларативная
ЧТО
должно быть
результатом
МарГТУ 2009 г.
Процедурная
КАК
программа
отвечает на вопросы
4
Декларативная семантика

касается только отношений,
определенных в программе;

определяет, что должно быть
результатом работы программы
(не вдаваясь в подробности, как это
достигается)
МарГТУ 2009 г.
5
Декларативная семантика
Пусть задано P: – Q, R.
где P, Q, R – термы.
Декларативный смысл:
"P - истинно, если Q и R истинны."
или
"Из Q и R cледует Р."

логические связи
Голова :– цель1, цель2.
МарГТУ 2009 г.
6
Декларативный смысл программы
определяет, является ли данная цель
истинной (достижимой),
и если – да, то при каких значениях
переменных она достигается.
P: – Q, R.
МарГТУ 2009 г.
7
Конкретизация предложения
результат подстановки в него на место
каждой переменной некоторого терма.
Предложение С.
haschild( X ):-parent( X ,Y).
Конкретизацией I.
I вар.
haschild(tom):-parent(tom,Y).
X=tom
II вар.
haschild(bob):-parent(bob,ann).
X=bob, Y=ann
МарГТУ 2009 г.
8
Определение
Пусть дана некоторая программа и цель G.
Тогда в соответствии с декларативной
семантикой, можно утверждать, что:
Цель G истинна тогда и только тогда, когда
(1) в программе существует предложение С, такое,
(2) что существует такая его (С) конкретизация I, что
(а) голова I совпадает с G и
(b) все цели в теле I истинны.
МарГТУ 2009 г.
9
Пример
female(ann).
parent(ann, bob).
C(I):
mother(ann):-parent(ann, Y), female(ann).
C:
mother(X) :-parent(X, Y), female(X).
?- mother(ann).
Список целей называется истинным (достижимым), если все
цели в этом списке достижимы при одинаковых
конкретизациях переменных.
МарГТУ 2009 г.
10
Дизъюнкция целей
МарГТУ 2009 г.
11
Дизъюнкция целей


обозначается точкой с запятой ";".
Логическое «ИЛИ»: истинна должна быть по крайней
мере одна из целей.
P:-Q;R.
«Р истина, если Q - истина или R - истинна.»
P:-R.
P:-Q.
Коньюнкция связывает цели сильнее, чем дизъюнкция.
P:-Q, R;S, T, U.
понимается как
P:-(Q, R);(S, T, U).
и имеет смысл
P:-Q, R.
P:-S, T, U.
МарГТУ 2009 г.
12
Процедурная семантика
МарГТУ 2009 г.
13
Процедурная семантика

процедура вычисления списка целей с
учетом программы

определяет, как пролог-программа
отвечает на вопросы.
(Ответить на вопрос – значит
удовлетворить цели. )
МарГТУ 2009 г.
14
Процедурная семантика
программа
список целей Процедура
вычисления
признак:
успех, неудача
конкретизация
переменных
МарГТУ 2009 г.
15
Соотношение между
процедурным и
декларативным смыслом
МарГТУ 2009 г.
16
Пример вычисления
Программа 1.
1.большой(медведь).
2.большой(слон).
3.маленький (кот).
4.бурый(медведь).
5.черный(кот).
6.серый(слон).
7.темный(Z):-черный(Z).
7.1
8.темный(Z):-бурый(Z).
8.1
9.?-темный(X),большой(X).
9.1 9.2
для вычисления целей потребовалось
7 сопоставлений и один откат.
МарГТУ 2009 г.
17
Формальное описание процедуры
вычисления целей.
Пусть список целей
G1
G2
…
Gm
Если список целей пуст, вычисление дает успех,
если нет, то выполнятся пункт 2.
2. Берется первая цель G1 из списка. Пролог
выбирает в базе данных, просматривая сначала,
первое предложение С,
С:
H :- B1, B2, ..., Bn.
голова которого, сопоставляется с целью G1.
Если такого предложения нет, то неудача.
Если есть, то переменные конкретизируются и цель
G1 заменяется на список целей с
конкретизированными значениями переменных.
1.
B1’
МарГТУ 2009 г.
B2’
…
Bn’
18
Формальное описание процедуры
вычисления целей.
3.
Рассматривается рекурсивно через п.2 новый
список целей.
B1’
B2’
…
Bn’
G2
…
Gm
Если С – факт, то новый список короче на одну
цель.(n=0)
Если вычисление нового списка оканчивается успешно,
то и исходный список целей выполняется успешно.
Если нет, то новый список целей отбрасывается,
снимается конкретизация переменных и
происходит возврат к просмотру программы, но
начиная с предложения, следующего за
предложением С.
Процесс возврата называется backtracking.
МарГТУ 2009 г.
19
Соотношение между процедурным и
декларативным смыслом
Декларативный смысл определяет, что
должно быть результатом программы,
т.е. касается отношений, определенных
в программе.
Процедурный смысл определяет, как
этот результат может быть достигнут,
т.е. как отношения обрабатываются
прологом.
МарГТУ 2009 г.
20
Спасибо за внимание!
Вопросы?
МарГТУ 2009 г.
21
Download