- •Глава 4
- •Введение
- •Три точки зрения на Пролог-программу
- •4. 1. Реляционный подход
- •Изображение отношений
- •Ограничения, обеспечивающие целостность, которые накладываются при записи отношений в программу
- •Ограничения, обеспечивающие целостность, накладываемые при выборке фраз
- •Реализация свойств отношений
- •Нерефлексивность
- •Симметричное и транзитивное отношение
- •Первая попытка
- •Вторая попытка
- •Запоминание списка посещенных мест
- •4. 2. Взгляд на программу с точки зрения потока данных Переход от выходного потока данных к программе
- •Упорядоченные множества ответов
- •Генерирование бесконечного множества
- •Экологический процесс
- •Версия программы, в которой применяется поиск с возвратом
- •Рекурсивная версия программы
- •Планирование производственных операций
- •Сильные и слабые стороны подхода к программе с позиций потока данных
- •4.3. Бихевиористический подход Приведенные ранее примеры, в которых проявился бихевиористический подход
- •Ограничение сферы действия эффектов поведения
- •Программа "найти_или_спросить"
- •Оценка бихевиористического подхода
- •Библиографические заметки
- •Упражнения
Генерирование бесконечного множества
Предположим, что требуется, чтобы множество ответов предыдущей программы стало бесконечным за счет повторения опять и опять предыдущего набора из шестнадцати ответов. После того, как будет получена совокупность из четырех единиц, следует опять перейти к четырем нулям и продолжить счет. Для того чтобы процедура "двоичн_число" стала удовлетворять этим требованиям, нужно модифицировать ее путем добавления еще одной подцели:
бесконечн_двоичн_число (А, В, С, D): -
repeat,
цифра (A), цифра (В), цифра (С), цифра (D).
Подцель «repeat» работает следующим образом. Пусть пользователь ввел символ;, запрашивая другой ответ, причем переменные А, В, С, D конкретизированы значением 1. Интерпретатор возвратится на ад (влево от подцели «цифра (D)») до предиката «repeat». Затем он снова начнет выдачу ответов, причем начальными значениями переменных А, В, С и D будут нули.
Экологический процесс
В этом примере каждый ответ является сообщением об относительном размере популяций хищников и их добычи в гипотетической экологической ситуации. Эти две популяции связаны друг с другом следующим образом:
- увеличение популяции добычи вызывает рост популяции хищников на протяжении следующего периода времени (поскольку количество пищи для хищников увеличивается);
- увеличение популяции хищников приводит к уменьшению популяции их добычи на протяжении следующего периода времени (потому что появляется большее число хищников, поедающих добычу);
- уменьшение популяции добычи вызывает снижение размера популяции хищников на протяжении следующего периода времени (так как объем пищи хищников уменьшился);
- уменьшение размера популяции хищников приводит к увеличению популяции добычи в течение следующего периода времени (ввиду того, что меньшее число хищников охотится за своими жертвами)
- и т. д.
Мы ходим получить бесконечное множество ответов в соответствии с данным циклом.
Версия программы, в которой применяется поиск с возвратом
Самый простой путь получения данного множества ответов - это введение в программу четырех фактов, описывающих относительные размеры популяций хищников и их жертв, по одному факту на каждую фазу цикла. Важен порядок, в котором записываются факты, так как он должен соответствовать порядку следования фаз цикла. Первый аргумент каждого факта "популяция" описывает состояние популяции добычи, а второй аргумент - состояние популяции хищников.
% Добыча Хищники
популяция (рост, без_изменений).
популяция (без_изменений, рост).
популяция (уменьшение, без_изменений).
популяция (без изменений, уменьшение).
Приведенный ниже составной запрос к этой базе данных будет выполняться циклически до бесконечности:
|? - repeat, популяция (Добыча, Хищники).
Добыча = рост
Хищники = без_изменений;
Добыча = без_изменений
Хищники = рост;
Добыча = уменьшение
Хищники= без_изменений;
Добыча=без_изменений
Хищники =уменьшение;
Добыча =рост
Хищники = без_изменений;
и т. д. Схема ответов соответствует временным фазам состояния экосистемы.