Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
БИЛЕТЫ 25-26 уч.г..docx
Скачиваний:
0
Добавлен:
19.06.2026
Размер:
42.25 Mб
Скачать

Особенности:

  • Возврат в Прологе автоматический: задаются только условия, а интерпретатор уже управляет процессом перебора и возврата.

  • Переменные должны быть связаны (лексич диапазон, сопоставление) и в не конкретизируемом состоянии, при этом если наступила конкретизация одной переменной, то все связанные переменные также получают свои значения.

  • Конкретизации, выполненные после точки выбора, отменяются и переменные возвращаются в состояние, в котором они находились в момент возникновения точки выбора

  • Перебор заканчивается, если:

    1. Найдены все возможные решения.

    2. Нет больше альтернатив.

Возврат при переборе:

Процедурно представляет собой возврат к последней точке выбора с отменой ранее выполненных конкретизаций и поиском альтернативных решений.

Декларативно возврат соответствует логическому поиску всех значений переменных, при которых условия правила или запроса истинны.

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

Пример: утв(A) :- усл1(A), усл2(A).

Предположим, мы задали запрос: утв(A).

Prolog ищет первое возможное решение для усл1(A), допустим А=а1

Проверяется усл2(A) с уже найденным A = a1, допустим, да

Это называется прямой ход

Теперь пользователь (или система) хочет следующее решение. Prolog начинает возврат при переборе. Prolog не идёт заново с начала, а возвращается к последней точке выбора

В нашем правиле точки выбора могут быть: в усл2(A) (если у него несколько решений) или в усл1(A) (если усл2 решений больше не даёт).

После поиска других решений для усл2, мы возвращаемся к усл1 (процедурная часть), от первого решения отказываемся и продолжаем искать другие решения для усл1.

И так до тех пор, пока: либо не закончатся все варианты, либо возврат не будет запрещён (например, отсечением).

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

4. Последовательность выполнения подцелей в запросе и условий в правиле, содержащих одновременно несколько логических «И», «ИЛИ». Состояния одноимённых переменных в подцелях и в условиях в момент начала их проверки на истинность. Примеры. Обобщение.

Последовательность проверки на истинность условий в правиле, объединенным логич И соответствует вложенным циклам. Подразумевается, что ОБА условия должны выполняться одновременно.

Проверка происходит так: сначала будет найдено 1ое решение для усл1, затем будут найдены все решения для усл2, потом 2ое решение для усл1, затем все решения для усл2 и тд.

Последовательность проверки на истинность условий в правиле, объединенным логич ИЛИ соответствует последовательным циклам. Утверждение будет истинно, если истинно усл1 И утверждение будет истинно, если истинно усл2.

Такие предложения можно разделить на 2 предложения и это действие на результат работы программы не повлияет. Сначала будут найдены ВСЕ решения для усл1, а потом будут найдены ВСЕ решения для усл2.

Кроме того после сопоставления усл1 и усл2 с фактами мы получаем первое решение и в момент возврата значения из переменной все одноименные переменные имеют это значение. Для получения следующего решения мы как бы отказываемся от прошлой конкретизации и поэтому переменная снова будет иметь неконкретезированное состояние.

Пример на состояние переменных (конкретизация и откуда она пришла):

Состояние одноименных переменных в момент начала сопоставления неконкретизированное, конкретизация наступает в момент сопоставления.

Соседние файлы в предмете Теория обработки информации