Программирование на языке Пролог для искусственного интеллекта
Шрифт:
Тогда наши три правила можно выразить тремя предложениями так:
Разумеется, с таким же успехом можно последнюю цель в третьем предложении заменить
В нашем следующем примере требуется произвести некоторый подсчет, для чего, как правило, необходимы арифметические действия. Примером такой задачи может служить вычисление длины какого-либо списка; иначе говоря, подсчет числа его элементов. Определим процедуру
которая будет подсчитывать элементы списка
(1) Если список пуст, то его длина равна 0.
(2) Если он не пуст, то
Эти два случая соответствуют следующей программе:
Применить процедуру
Заметим, что во втором предложении этой процедуры две цели его тела нельзя поменять местами. Причина этого состоит в том, что переменная N1 должна быть конкретизирована до того, как начнет вычисляться цель
Таким образом мы видим, что введение встроенной процедуры
Интересно посмотреть, что произойдет, если мы попытаемся запрограммировать отношение
Теперь уже цель
породит ответ:
Сложение ни разу в действительности не запускалось и поэтому ни разу не было выполнено. Но в процедуре
Такая версия
и
она и в этом случае будет давать те же результаты. С помощьюИтак:
• Для выполнения арифметических действий используются встроенные процедуры.
• Арифметические операции необходимо явно запускать при помощи встроенной процедуры
• К моменту выполнения операций все их аргументы должны быть конкретизированы числами.
• Значения арифметических выражений можно сравнивать с помощью таких операторов, как
3.16. Определите отношение
так, чтобы
3.17. Определите предикат
так, чтобы
3.18. Определите предикат
так, чтобы
3.19. Определите предикат
который принимает значение истина, если
3.20. Определите предикат
где
3.21. Определите процедуру
которая, с помощью перебора, порождает все целые числа X, отвечающие условию N1≤X≤N2.
3.22. Определите операторы 'если', 'то', 'иначе' и ':=" таким образом, чтобы следующее выражение стало правильным термом:
Выберите приоритеты так, чтобы 'если' стал главным функтором. Затем определите отношение 'если' так, чтобы оно стало как бы маленьким интерпретатором выражений типа 'если-то-иначе'. Например, такого