3.4.2. Управления поиском решения в vip
Несмотря на то, предикат rukovodit (см. предыдущий пример) порождает несколько ответов, процессор логического вывода находит первое решение, которое соответствует поставленной цели.
При обработке целевого утверждения процессор логического вывода использует так называемую точку возврата.
Пусть имеется некоторая цель:
P:-P1,P2,P3. Где P – цель, а P1,P2,P3 – подцели.
При обработке данного правила возможны варианты рассмотренные ниже.
Если выполнение первой подцели дает значение ИСТИНА, выполняется переход ко второй подцели, если она дает значение ИСТИНА, то выполняется переход к третьей подцели. Если третья подцель дает значение ИСТИНА, то правило P считается выполненным.
Пусть подцель P3 дала значение ЛОЖЬ, тогда выполняется переход к подцели P2 так как там было найдено последнее правильное решение. Отыскивается, если возможно новое решение для данной подцели и выполняется снова переход к подцели P3 для отыскания правильного решения. Если подцель P2, не дает правильного результата, то выполняется переход к подцели P1 и делается попытка найти новое для нее решение. Если такое решение найдено, выполняется переход к P2 для поиска нового правильного решения, иначе правило P считается невыполнимым.
Такой процесс поиска решения – поиск решения с возвратом. Чтобы получить все решения для правила P нужно найти все возможные решения для подцелей.
Для решения этой задачи служит системный предикат fail. Обработка данного предиката всегда возвращает значение ЛОЖЬ.
Пример. Правило вывода для получения полной информации о предметной области нужно представить в виде.
vyvod:-
rukovodit(Rukov,Otdel),write(Rukov,"\t",Otdel),
nl,fail.
vyvod.
Второй вариант пустого правила нужен для вывода значения yes – решение найдено при завершении работы программы. На рисунке видно, что выведена полная информация о предметной области и найдено верное решение в соответствии с правилом, что отелом «маркетинг» руководит то же лицо, что и отделом «сбыт» (см рис 3.5.)
Рис. 3.5. Обработка предметной области.
Так как в правиле вывода системный предикат fail последний, то после вывода информации об отделе склад происходит повторный возврат к предикату rukovodit, системные предикаты write и nl детерминированные и они пропускаются, и результат их обработки всегда дает значение ИСТИНА. Обращение будет происходить до тех пор пока предикат rukovodit будет возвращать результат из своей процедуры.
При работе с предметной областью может возникнуть ситуация когда нужно прекратить поиск решения предоставляемого не детерминированным предикатом, либо нужно прекратить поиск по условию. Для этого используется системный предикат «отсечение». Такой предикат обозначается как «!» . При наличии отсечения в правиле оно выполняется до тех пор пока не будет выполнен предикат «отсечение», затем обработка правила продолжается до его завершения символом «.»
Если в рассмотренной выше программе изменить правило, так как это показано ниже, вывод информации о руководителях прекратиться после обнаружения фамилии «Петров О.И.».
vyvod:-
rukovodit(Rukov,Otdel),write(Rukov,"\t",Otdel),nl,
Rukov="Петров О.И",!.
vyvod.
Отсечение используется также совместно с логической связкой «ИЛИ» для вывода сообщений об ошибке поиска данных.
Пример. Правило поиска отдела по фамилии руководителя с выводом сообщения об ошибке поиска.
poisk:-write("Руководитель="),readln(Rukov),
rukovodit(Rukov,Otdel),write(Otdel),!;
write("Нет данных !").
- Основы построения автоматизированных информационных систем
- Глава 1. Системный подход при разработке автоматизированных информационных систем
- 1.1. Общие положения
- 1.2. Автоматизированные информационные системы
- 1.3. Автоматизированные системы в управлении
- 1.4. Методы анализа автоматизированных информационных систем
- 1.5. Структура автоматизированной информационной системы
- Глава 2. Методы проектирования информационных систем
- 2.1. Обобщенная модель информационной системы и методы проектирования
- 2.2. Каноническое проектирование информационных систем
- 2.3. Управление требованиями, спецификация rup
- 2.4. Модели жизненного цикла информационной системы
- 2.5. Использование case технологий при разработке информационных систем
- 2.6. Методологии case проектирования
- 2.6.1. Методология datarun
- 2.6.2. Методология rad
- 2.6.3. Графические нотации
- 2.7. Системные методологии анализа
- 2.7.1. Методология aris
- 2.7.2. Методология baan
- 2.7.3. Методология Oracle
- 2.7.4. Методология Betec (©)
- Глава 3. Особенности современных информационных систем
- 3.1. Корпоративные информационные системы
- 3.2. Системы обработки транзакций
- 3.3. Системы поддержки принятия решения
- 3.4. Экспертные информационные системы
- 3.4.1. Основы создания информационных систем в Visual Prolog
- 3.4.2. Управления поиском решения в vip
- 3.4.3 Использование рекурсии
- 3.4.4. Управление потоком ввода–вывода
- 3.4.5. Особенности составления описания предметной области
- 3.4.6. Особенности работы с базой фактов
- 3.5. Объектно–ориентированные системы
- 3.6. Документальные системы
- 3.6.1. Информационно-поисковый язык
- 3.6.2. Структра поисковой системы
- 3.7. Гипертекстовые информационные системы
- 4. Управление процессом проектирования автоматизированной информационной системы
- 4.1. Методы управления качеством разработки аис
- 4.2. Оценка эффективности функционирования автоматизированных информационных систем
- 4.2.1. Экономическая эффективность
- 4.2.2. Производительность вычислительной системы
- 4.2.3. Оценка качества работы пользователя системы
- Приложения Приложение №1. Базовые сведения о языке программирования Visual Prolog
- Приложение №.2. Компилирование программ в Visual Prolog ver 5.2.
- Приложение №.3. Программа «Внутренняя база данных фактов»
- Приложение №.4. Программа «Внешняя база данных»
- Приложение №5.Некоторые стилевые параметры
- Список литературы