Goal: information1

то получим ответы вот в такой форме:

“Иванов И.И. любит заниматься спортом”

“Петров П.П. любит играть на гитаре”

“Васечкин В.В. любит прогулки на природе”

“конец”

Общие принципы проектирования повторяющегося процесса при организации возврата с помощью предиката fail следующие:

- первое(-ые) правило в определении рабочее и включает предикат fail для инициирования возврата;

- последнее в определении утверждение всегда имеет значение ”истина” и обеспечивает успешное завершение возвратов.

Такой способ организации повторяющего процесса возможен только, если в теле рабочего правила есть хотя бы один предикат, для которого в базе знаний имеется несколько вариантов согласований. Структура повторяющегося процесса зависит от количества предикатов в теле рабочего правила, имеющих несколько вариантов успешного согласования с целью. Если таких предикатов два и более, то получаются вложенные циклы.

5.4. Создание бесконечных альтернатив при помощи предиката repeat

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

Clauses

Repeat.

Repeat:- repeat.

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

Пример. Программа запрашивает у пользователя цифру и выводит ее на экран. Затем запрашивает ”Продолжить? Да/Нет”. Если ”да”, то снова запрашивает цифру, если ”нет” – то прекращает работу.

Predicates

Start

Run

Conec(string)

Repeat

Goal

Start.

Clauses

Repeat.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: