Читаем 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).

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

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

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных