Цель:  цель

        ДругиеЦели:  список целей

        Достигнуты:   истинностное значение

        Сопоставились:   истинностное значение

        Конкрет:   конкретизация переменных

                Н,   Н',  B1,  B1',  ...,  Вn ,  Вn':   цели

Вспомогательные функции:

        пycтой( L):   возвращает истину, если L - пустой список

        голoвa( L):   возвращает первый элемент списка L

        хвост( L):   возвращает остальную часть списка L

        конкат( L1, L2):   создает конкатенацию списков - присоединяет

                список L2 к концу списка L1

        сопоставление( T1, T2, Сопоставились, Конкрет): пытается

                сопоставить термы Т1 и T2; если они сопоставимы, то

                Сопоставились - истина, а Конкрет представляет

                собой конкретизацию переменных

        подставить( Конкрет, Цели): производит подстановку переменных

                в Цели согласно Конкрет

begin

    if пустой( СписокЦелей) then Успех : = истина

    else

        begin

            Цель : = голова( СписокЦелей);

            ДругиеЦели : = хвост( СписокЦелей);

            Достигнута : = ложь;

            while not Достигнута and

                'в программе есть еще предложения' do

                begin

                    Пусть следующее предложение в Прогр есть

                            Н    :-   B1,  ....  Вn.

                    Создать вариант этого предложения

                            Н'    :-   В1',  ....  Вn'.

                    сопоставление( Цель, Н',

                                                    Сопоставились, Конкрет)

                    if Сопоставились then

                        begin

                            НовыеЦели : =

                                конкат( [В1', ..., Вn' ], Другие Цели);

                            НовыеЦели : =

                                подставить( Конкрет, НовыеЦели);

                            вычислить( Прогр, НовыеЦели, Достигнуты)

                        end

                    end;

            Успех : = Достигнуты

        end

end;

Рис. 2. 11.  Вычисление

Вы читаете Prolog
Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

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

Отметить Добавить цитату