logo search
Основы искусственного интеллекта

Управление поиском решений. Встроенный механизм поиска с возвратом. Использование предиката fail и отсечение.

Основной операцией в Прологе при поиске решений, является операция сопоставления цели с имеющимися в программе фактами, для получения логического вывода об истине или лжи значений цели.

В прологе имеются средства позволяющие управлять, при необходимости, процессом поиска решений. Для организации повторений можно применять встроенный предикат «fail». Выполнение этого предиката всегда дает ложное значение.

Например: В прологе содержатся имена городов, вывести все имена во внутренней цели.

Predicates

city(symbol)

show

Clauses

city(moskow).

city(kiev).

city(kazan).

show :- city(X), write(X), nl, fail.

Goal

show.

На экране увидим:

moskow

kiev

kazan

Замечание: Всегда ложный предикат fail, вызывает откат для поиска других утверждений, который может обеспечить выполнение цели, без fail, то для внутренней цели поиск был бы прекращен, после нахождения названия первого города. Применение этого метода, позволяет извлекать данные из каждого утверждения.

Для того чтобы иметь возможность выбирать данные удовлетворяющие некоторым условиям, необходимо иметь средство управления откатом. В прологе для этого используется предикат отсечения (!). Этот предикат, вычисление которого всегда успешно, заставляет внутри программы сопоставления забыть все указатели отката, установления во время попыток вычислить предыдущие подцели.