
- •1Базовые функции обработки списков.
- •2Определение и вызов функций с помощью λ-выражений. Λ-список, λ-преобразование. Свободные и связанные переменные. Функция defun
- •3Локальные определения (форма let).
- •4Функции более высокого порядка. Функциональный аргумент, функциональное значение. Способы композиции функций.
- •5Автоматическое управление памятью в Лиспе. «Сборка мусора».
- •11Какую (двоякую) роль играет в Лиспе функция eval?
- •12Возвращение функцией нескольких величин.
- •13Базовые функции Лиспа.
- •14Опишите три варианта предиката равенства в Лиспе.
- •1Равенство в Прологе.
- •2Встроенные предикаты. Предикаты взаимодействия.
- •4Аппарат вычислений. Обработка списков.
- •5Аппарат вычислений. Рекурсивные определения в Прологе.
- •6Аппарат вычислений. Управление откатом: отсечение.
- •7Аппарат вычислений. Поиск в глубину с возвратом.
- •8Аппарат вычислений. Вывод и процедура отката.
- •9Аппарат вычислений. Процедура унификации в Прологе.
- •10Синтаксис данных (термы и основные объекты Пролога).
- •11Структура программы в языке Пролог (синтаксис языка).
- •12Логическая и управляющая компоненты Пролога.
- •14Общая характеристика языка Пролог.
6Аппарат вычислений. Управление откатом: отсечение.
Отличительной способностью ПроЛога является то, что при поиске решений на ПроЛоге выдается целый список подходящих значений. Поэтому, в ПроЛоге один предикат может быть представлен целым набором правил, каждое из которых может выдавать ответ.
Откат – это попытка ПроЛога найти следующий вариант решения задачи. Откат вызывается неудачей в некотором месте программы, что приводит ПроЛог к попытке найти следующее решение. Откатывание идет до места, где возможно вычислить другое решение. При этом все связанные переменные, которые были связаны ниже точки, где возможен другой вариант решения, освобождаются. При вызове решателя ПроЛога, откат создается самим ПроЛогом для выдачи всех значений решения.
Теперь введем понятие отсечения. Отсечением в ПроЛоге называется механизм, который запрещает перебор правил данного предиката находящихся ниже текущего правила и запрещает механизм отката. Отсечение обозначается знаком “!”.
7Аппарат вычислений. Поиск в глубину с возвратом.
Пытаясь разрешить цель, Visual Prolog (начиная с первого предложения раздела clauses) будет просматривать каждый факт и каждое правило, стремясь найти сопоставление. По мере продвижения вниз по разделу clauses, он устанавливает внутренний указатель на первое предложение, являющееся частью пути, ведущего к решению. Если следующее предложение не является частью этого логического пути, то Visual Prolog возвращается к установленному указателю и ищет очередное подходящее сопоставление, перемещая указатель на него (этот процесс называется поиск с возвратом).
8Аппарат вычислений. Вывод и процедура отката.
Откат уже упоминался в предыдущих лекциях. Суть этого механизма такова: в том месте программы, где возможен выбор нескольких вариантов, Пролог сохраняет в специальный стек точку возврата для последующего возвращения в эту позицию. Точка возврата содержит информацию, необходимую для возобновления процедуры при откате. Выбирается один из возможных вариантов, после чего продолжается выполнение программы.
Во всех точках программы, где существуют альтернативы, в стек заносятся указатели. Если впоследствии окажется, что выбранный вариант не приводит к успеху, то осуществляется откат к последней из имеющихся в стеке точек программы, где был выбран один из альтернативных вариантов. Выбирается очередной вариант, программа продолжает свою работу. Если все варианты в точке уже были использованы, то регистрируется неудачное завершение и осуществляется переход на предыдущую точку возврата, если такая есть. При откате все связанные переменные, которые были означены после этой точки, опять освобождаются.
9Аппарат вычислений. Процедура унификации в Прологе.
В ПРОЛОГе реализована процедура унификации, с помощью которой производится сравнение цели с правилами, а правила сопоставляются с фактами. В результате унификации переменным присваиваются конкретные значения, так что предикат цели становится истинным фактом в случае положительного исхода. Чтобы понять, как осуществляется унификация, разберем конкретный пример программы.
Пример 9. Имеется следующая легенда:
Ивана интересуют компьютеры, книги и автомобили. Петра интересует нечто, что интересует Ивана, но если это нечто является техникой и если это произведено в России. Известно, что компьютеры и автомобили — это техника. Кроме того, известно, что компьютеры производятся в Америке, а автомобили — в Америке и России. Вопрос: "Что интересует Петра?"
1) интерес (Иван, компьютеры). A(i, a)
2) интерес (Иван, книги). A(i, b)
3) интерес (Иван, автомобили). A(i, c)
4) интерес (Петр, x) A(p, x)
5) Ü интерес (Иван, x), A(i, x)
6) техника (x), T(x)
7) произведено(x, Россия). P(x, r)
8) техника (компьютеры). T(a)
9) техника(автомобили). T(c)
10) произведено (компьютеры, Америка). P(a, s)
11) произведено (автомобили, Америка). P(c, s)
12) произведено (автомобили, Россия). P(c, r)
Цель:
13) интерес (Петр, x). A(p, x)