Программирование на языке Пролог для искусственного интеллекта



         

Повышение эффективности зa счет добавления вычисленных фактов к базе данных - часть 2


               % N-e число есть сумма двух

                                                    % предыдущих

Процедура фиб имеет тенденцию к повторению вычислений. Это легко увидеть, если трассировать цель

        ?-  фиб( 6, F).

На рис. 8.2 показано, как протекает этот вычислительный процесс. Например, третье число Фибоначчи f( 3) понадобилось в трех местах, и были повторены три раза одни и те же вычисления.

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

для добавления этих (промежуточных) результатов в базу данных в виде фактов. Эти факты должны предшествовать другим предложениям, чтобы предотвратить применение общего правила в случаях, для которых результат уже известен. Усовершенствованная процедура фиб2

отличается от фиб только этим добавлением:

        фиб2( 1, 1).

                        % 1-е число Фибоначчи

        фиб2( 2, 1).

                        % 2-е число Фибоначчи

        фиб2( N, F) :-

                     % N-e число Фиб., N > 2

                N > 2,

                Nl is N - 1, фиб2( N1, F1),



Содержание  Назад  Вперед