Программирование на языке Пролог для искусственного интеллекта
Шрифт:
Таким образом, запятая между целями обозначает конъюнкцию целей: они все должны быть истинными. Однако в Прологе возможна и дизъюнкция целей: должна быть истинной, по крайней мере одна из целей. Дизъюнкция обозначается точкой с запятой. Например:
читается так: P — истинно, если истинно Q или истинно R. То есть смысл такого предложения тот же, что
Запятая связывает (цели) сильнее, чем точка с запятой. Таким образом, предложение
понимается как:
и имеет тот же смысл, что и два предложения
2.6. Рассмотрим следующую программу:
Как пролог-система ответит на следующие вопросы? Там, где возможны несколько ответов, приведите по крайней мере два.
(a)
(b)
(c)
(d)
2.7. В следующей программе говорится, что два человека являются родственниками, если
(a) один является предком другого, или
(b) у них есть общий предок, или
(c) у них есть общий потомок.
Сможете ли вы сократить эту программу, используя запись с точками с запятой?
2.8. Перепишите следующую программу, не пользуясь точками с запятой.
2.4. Процедурная
Процедурная семантика определяет, как пролог-система отвечает на вопросы. Ответить на вопрос — это значит удовлетворить список целей. Этого можно добиться, приписав встречающимся переменным значения таким образом, чтобы цели логически следовали из программы. Можно сказать, что процедурная семантика Пролога — это процедура вычисления списка целей с учетом заданной программы. "Вычислить цели" это значит попытаться достичь их.
Назовем эту процедуру
входом — программа и список целей,
выходом — признак успех/неуспех и подстановка переменных.
Рис. 2.9. Входы и выходы процедуры вычисления списка целей.
Смысл двух составляющих выхода такой:
(1) Признак успех/неуспех принимает значение "да", если цели достижимы, и "нет" — в противном случае. Будем говорить, что "да" сигнализирует об успешном завершении и "нет" — о неуспехе.
(2) Подстановка переменных порождается только в случае успешного завершения; в случае неуспеха подстановка отсутствует.
(1) Исходный список целевых утверждений:
(2) Просмотр всей программы от начала к концу и поиск предложения, у которого голова сопоставима с первым целевым утверждением
Найдена формула 7:
Замена первого целевого утверждения конкретизированным телом предложения 7 — порождение нового списка целевых утверждений.