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




Усовершенствование процедуры ответпольз - часть 2


Здесь Цель - утверждение, которое нужно форматировать. ВнешФормат

определяет внешний формат этого утверждения, задаваемый отношением

        можно_спросить( Цель, ВнешФормат)

Вопрос - это Цель, отформатированная в соответствии с ВнешФормат. Перем - список переменных, входящих в Цель, вместе с соответствующими ключевыми словами (как указано в ВнешФормат), причем список Перем

получается из списка Перем0 добавлением новых переменных. Например:

        ?-  формат( X передает документы Y,

                            'Кто' передает 'Что' 'Кому',

                            Вопрос, [ ], Перем).

        Вопрос = 'Кто' передает документы 'Кому',

        Перем = [ Х/'Кто', Y/'Кому'].

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

        assert( сказано( мери передает документы друзьям, правда) ).

В ситуации, когда имеется несколько решений, предложенных пользователем для одной и той же цели, в память относительно нее будет записано несколько фактов. Здесь возникает одно осложнение. Допустим, что в нескольких местах программы встречаются различные варианты некоторой цели (отличающиеся именованием переменных). Например:

        ( X имеет Y) и

                            % Первый вариант - Цель1



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