Читаем Prolog полностью

(2)    существует такая его  (С)   конкретизация  I,  что

        (a)    голова   I  совпадает с  G  и


        (б)    все цели в теле  I  истинны.

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

Таким образом, запятая между целями обозначает конъюнкцию целей: они все должны быть истинными. Однако в Прологе возможна и дизъюнкция целей: должна быть истинной, по крайней мере одна из целей. Дизъюнкция обозначается точкой с запятой. Например:

        Р   :-   Q;  R.

читается так:  Р  -  истинно, если истинно   Q   или истинно  R.  То есть смысл такого предложения тот же, что и смысл следующей пары предложений:

        Р   :-   Q.


        Р   :-   R.

Запятая связывает (цели) сильнее, чем точка с запятой. Таким образом, предложение

        Р   :-   Q,  R;  S,  Т,   U.

понимается как:

        Р   :-   ( Q,  R);  (S,   Т,  U).

и имеет тот же смысл, что и два предложения

        Р   :-   Q,  R.


        Р   :-   S,  T,  U.

Упражнения

2. 6.    Рассмотрим следующую программу:

    f( 1, один).


    f( s(1), два).


    f(    s(s(1)),    три).


    f( s(s(s(X))),  N) :-


               f(X,   N).

Как пролог-система ответит на следующие вопросы? Там, где возможны несколько ответов, приведите по крайней мере два.

    (a)        ?- f( s( 1), A).


    (b)        ?- f( s(s(1)), два).


    (c)        ?- f(   s(s(s(s(s(s(1)))))), С).


    (d)        ?- f( D, три).

Посмотреть ответ

2. 7.    В следующей программе говорится, что два человека являются родственниками, если

    (a)        один является предком другого, или


    (b)        у них есть общий предок, или


    (c)        у них есть общий потомок.

    родственники( X, Y) :-


          предок( X, Y).

    родственники( X, Y) :-


          предок( Y, X).

    родственники( X, Y) :-


                      % X и Y имеют общего предка


          предок( Z, X),


          предок( Z, Y).

    родственники( X, Y) :-


                      % X и Y имеют общего потомка


          предок( X, Z),


          предок( Y, Z).

Сможете ли вы сократить эту программу, используя запись с точками с запятой?

Посмотреть ответ

2. 8.    Перепишите следующую программу, не пользуясь точками с запятой.

    преобразовать( Число, Слово) :-


          Число = 1,  Слово = один;


          Число = 2,  Слово = два;


          Число = 3,  Слово = три.

Посмотреть ответ


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

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

2. 4.    Процедурная семантика

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

цели логически следовали из программы. Можно

сказать, что процедурная семантика Пролога - это

процедура вычисления списка целей

с учетом заданной программы. "Вычислить цели" это значит попытаться достичь их.

Назовем эту процедуру вычислить. Как показано на рис. 2.9, входом и выходом этой процедуры являются:

    входом - программа и список целей,


    выходом - признак успех/неуспех и подстановка переменных.

Рис. 2. 9.  Входы и выходы процедуры вычисления списка целей.

Смысл двух составляющих выхода такой:

(1)    Признак успех/неуспех принимает значение "да", если цели достижимы, и "нет" - в противном случае. Будем говорить, что "да" сигнализирует об успешном завершении и "нет" - о неуспехе.

(2)    Подстановка переменных порождается только в случае успешного завершения; в случае неуспеха подстановка отсутствует.

ПРОГРАММА

большой( медведь).                % Предложение 1


большой( слон).                       % Предложение 2


маленький( кот).                    % Предложение 3


коричневый ( медведь).        % Предложение 4


черный ( кот).                         % Предложение 5


серый( слон).                           % Предложение 6

темный( Z) :-                           % Предложение 7:


           черный( Z).                   % любой черный


                                                   % объект является темным


темный( Z) :-                           % Предложение 8:


           коричневый( Z).           % Любой коричневый


                                                    % объект является темным

ВОПРОС

?-  темный( X), большой( X)    % Кто одновременно темный


                                                     % и большой?

ШАГИ  ВЫЧИСЛЕНИЯ

(1)    Исходный список целевых утверждений:

            темный( X),  большой( X).

Перейти на страницу:

Похожие книги

Слово о полку Игореве
Слово о полку Игореве

Исследование выдающегося историка Древней Руси А. А. Зимина содержит оригинальную, отличную от общепризнанной, концепцию происхождения и времени создания «Слова о полку Игореве». В книге содержится ценный материал о соотношении текста «Слова» с русскими летописями, историческими повестями XV–XVI вв., неординарные решения ряда проблем «слововедения», а также обстоятельный обзор оценок «Слова» в русской и зарубежной науке XIX–XX вв.Не ознакомившись в полной мере с аргументацией А. А. Зимина, несомненно самого основательного из числа «скептиков», мы не можем продолжать изучение «Слова», в частности проблем его атрибуции и времени создания.Книга рассчитана не только на специалистов по древнерусской литературе, но и на всех, интересующихся спорными проблемами возникновения «Слова».

Александр Александрович Зимин

Древнерусская литература / Прочая старинная литература / Прочая научная литература / Древние книги / Литературоведение / Научная литература