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




Процедурная семантика - часть 5



(Заметим, что, если  С  - факт, тогда  n=0,   и в этом случае новый список целей оказывается короче, нежели исходный; такое уменьшение списка целей может в определенных случаях превратить его в пустой, а следовательно, - привести к успешному завершению.)

Переменные в новом списке целей заменяются новыми значениями, как это предписывает конкретизация  S,  что порождает еще один список целей

        В1'',  ....  Вn", G2',   ...,  Gm'
  • Вычисляет (используя рекурсивно ту же самую процедуру) этот новый список целей. Если его вычисление завершается успешно, то и вычисление исходного списка целей тоже завершается успешно. Если же его вычисление порождает неуспех, тогда новый список целей отбрасывается и происходит возврат к просмотру программы. Этот просмотр продолжается, начиная с предложения, непосредственно следующего за предложением  С   (С  -  предложение, использовавшееся последним) и делается попытка достичь успешного завершения с помощью другого предложения.
  • line();

    Более компактная запись этой процедуры в обозначениях, близких к Паскалю, приведена на рис. 2.11.

    Здесь следует сделать несколько дополнительных замечаний, касающихся процедуры вычислить в том виде, в котором она приводится. Во-первых, в ней явно не указано, как порождается окончательная результирующая конкретизация переменных. Речь идет о конкретизации S, которая приводит к успешному завершению и которая, возможно, уточнялась последующими конкретизациями во время вложенных рекурсивных вызовов вычислить.

    line();

    procedure вычислить (Прогр, СписокЦелей, Успех)

    Входные параметры:

            Прогр:   список предложений
            СписокЦелей:   список целей

    Выходной параметр:

            Успех:          истинностное значение; Успех принимает значение



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