Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
методическое пособие по ЛБ.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
620.54 Кб
Скачать

Организация запросов

  1. Сменить цель

goal % раздел целей

likes (X, tennis). % показать всех кто любит теннис

  1. Запустить программу для выполнения запроса

  2. Создать следующие запросы:

  • Показать, что любит Дис.

  • Что любит Долли?

  • Кто любит теннис и любит баскетбол?

likes (R, tennis), likes (R, reading). % две подцели (конъюнкция) разделены запятой.

  • Кто любит теннис или не любит читать?

likes (R, tennis); likes (R, reading). % две подцели (дизъюнкция) разделены точкой/запятой.

  1. Добавить несколько пользовательских предикатов.

  2. Организовать 2-3 составные цели с конъюнкцией.

  3. Организовать 2-3 составные цели с дизъюнкцией.

Вопросы для самоконтроля

  1. Дайте трактовку понятию в Visual Prolog:

    • цели;

    • подцели;

    • сложной цели;

    • сложной цели с конъюнкцией

    • сложной цели с дизъюнкцией.

  2. Приведите примеры сложной цели с конъюнкцией.

  3. Приведите примеры сложной цели с дизъюнкцией.

Лабораторная работа «Использование отладчика приложения для составления целевого дерева»

Тема: Использование отладчика приложения для составления целевого дерева.

Цель работы: изучить механизм поиска с возвратом в Visual Prolog, правила построения целевого дерева, алгоритма работы программы.

Унификация и поиск с возвратом

При организации цели часто используется сопоставление (:-) при этом необходимо учитывать следующие правила:

  • идентичные структуры сопоставляются друг с другом;

  • свободная переменная сопоставляется с константой или с ранее связанной переменной (и становится связанной с соответствующим значением);

  • две свободные переменные могут сопоставляться (и связываться) друг с другом. С момента связывания они трактуются как одна переменная: если одна из них принимает какое-либо значение, то вторая немедленно принимает, то же значение.

Процесс, используемый Visual Prolog во время попытки сопоставления вызова (из подцели) с конкретным предложением (в разделе программы clauses) называется унификацией. Унификацияэто процесс сопоставления двух предикатов и присваивания свободным переменным значений для того, чтобы сделать предикаты идентичными.

Этот механизм необходим, чтобы Visual Prolog мог определить, какое предложение вызвать и каким переменным присвоить значения. Представлены важные моменты, связанные с сопоставлением (унификацией):

  • когда Пролог начинает попытки достичь цели, он начинает поиск с начала программы;

  • когда вызов завершается успехом, говорят, что вызов возвратился, и делается попытка доказать следующую подцель;

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

Поиск с возвратом

Поиск с возвратом — это механизм, который указывает Visual Prolog, как искать решения для программы. Этот процесс дает Прологу возможность перебрать все известные факты и правила для решения. Рассмотрены четыре основных принципа поиска с возвратом:

  1. подцели должны проверяться по порядку, сверху вниз;

  2. предикатные предложения проверяются в том порядке, в котором они появляются в программе, сверху вниз;

  3. когда подцель сопоставляется с заголовком правила, тело правила должно после этого быть доказано (тело правила состоит из новых подцелей, которые должны быть доказаны);

  4. цель доказана, когда соответствующие факты найдены для каждой листьевой вершины дерева целей.

При поиске решений часто возникают варианты пути поиска, и приходится выбирать один из путей, прорабатывать его и при не нахождении решения возвращаться для проработки следующей ветки. Этот метод называется поиск с возвратом, а точка ветвления называется точкой отката. Работа поиска с возвратом всегда подчиняется следующим правилам:

  1. Согласование целевого утверждение всегда начинается с вершины программы.

  2. При выполнении нового обращения поиск начинается с вершины программы.

  3. При успешном соответствии обращения, обращение возвращается и может быть испытана новая подцель.

  4. При неуспешном соответствии обращения, переменная освобождается и может быть испытана новая подцель.