Генерирование бесконечного множества

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

бесконечн_двоичн_число (А, В, С, D): -

repeat,

цифра (A), цифра (В), цифра (С), цифра (D).

Подцель «repeat» работает следующим образом. Пусть пользователь ввел символ;, запрашивая другой ответ, причем переменные А, В, С, D конкретизированы значением 1. Интерпретатор возвратится на ад (влево от подцели «цифра (D)») до предиката «repeat». Затем он снова начнет выдачу ответов, причем начальными значениями переменных А, В, С и D будут нули.

Экологический процесс

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

- увеличение популяции добычи вызывает рост популяции хищников на протяжении следующего периода времени (поскольку количество пищи для хищников увеличивается);

- увеличение популяции хищников приводит к уменьшению популяции их добычи на протяжении следующего периода времени (потому что появляется большее число хищников, поедающих добычу);

- уменьшение популяции добычи вызывает снижение размера популяции хищников на протяжении следующего периода времени (так как объем пищи хищников уменьшился);

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

- и т. д.

Мы ходим получить бесконечное множество ответов в соответствии с данным циклом.

Версия программы, в которой применяется поиск с возвратом

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

% Добыча Хищники

популяция (рост, без_изменений).

популяция (без_изменений, рост).

популяция (уменьшение, без_изменений).

популяция (без изменений, уменьшение).

Приведенный ниже составной запрос к этой базе данных будет выполняться циклически до бесконечности:

|? - repeat, популяция (Добыча, Хищники).

Добыча = рост

Хищники = без_изменений;

Добыча = без_изменений

Хищники = рост;

Добыча = уменьшение

Хищники= без_изменений;

Добыча=без_изменений

Хищники =уменьшение;

Добыча =рост

Хищники = без_изменений;

и т. д. Схема ответов соответствует временным фазам состояния экосистемы.

Соседние файлы в папке Гл.0,1,2,3,4,5,Предисловие