русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Управление поиском решения


Дата добавления: 2013-12-23; просмотров: 968; Нарушение авторских прав


Если в Visual Prolog создать программу для автономного исполнения (то есть создать свой project-файл для разрабатываемой программы), то поиск цели в ней будет вестись так же, как для внутренней цели в PDC Prolog, то есть до первого успешного решения.

Это описание объясняет, как работает утилита TestGoal в Visual Prolog.

При реализации механизма возврата выполняются следующие правила:

1. Подцели вычисляются слева-направо.

2. Предложения при вычислении подцели проверяются в текстуальном порядке, то есть сверху-вниз.

3. Если подцель сопоставима с заголовком правила, то должно быть вычислено тело этого правила, при этом тело правила образует новое подмножество подцелей для вычисления.

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

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

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

Предикат fail всегда имеет ложное значение!

Пример 22: Использование предиката fail. Для примера 21 можно добавить правило для печати всех матерей, которые есть в БД:

печать_матерей:-мать(X,Y), write(X,” есть мать”,Y),nl,fail.

goal

печать_матерей.

В результате будет выдано 3 решения:

X=мария, Y= анна.

X=мария, Y= юлия.

X=анна, Y= петр.

Отсечение так же, как и fail помещается в тело правила. Однако, в отличие от fail предикат отсечения имеет всегда истинное значение.



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

Существует только два случая применения предиката отсечения:

1. Если заранее известно, что определенные посылки никогда не приведут к осмысленным решениям – это так называемое «зеленое отсечение».

2. Если отсечения требует сама логика программы для исключения альтернативных подцелей – это так называемое «красное отсечение».



<== предыдущая лекция | следующая лекция ==>
Вычисление цели. Механизм возврата | Структура программ Пролога


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.008 сек.