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



         

Отрицание как неуспех - часть 2


  • Х и Y не совпадают буквально;
  • Х и Y не сопоставимы;
  • значения арифметических выражений Х и Y не равны.
  • Давайте считать в данном случае, что Х и Y различны, если они не сопоставимы. Вот способ выразить это на Прологе:

            Если Х и Y сопоставимы, то

                  цель различны( X, Y) терпит неуспех

                  иначе цель различны( X, Y) успешна.

    Мы снова используем сочетание отсечения и fail:

            различны( X, X) :-  !,   fail.

            различны( X, Y).

    То же самое можно записать и в виде одного предложения:

            различны( X, Y) :-

                 Х = Y,  !,   fail;

                 true.

    Здесь true - цель, которая всегда успешна.

    Эти примеры показывают, что полезно иметь унарный предикат "not" (не), такой, что

            nоt( Цель)

    истинна, если Цель не истинна. Определим теперь отношение not следующим образом:

            Если Цель

    успешна, то not( Цель) неуспешна,

            иначе not( Цель)

    успешна.

    Это определение может быть записано на Прологе так:

            not( Р) :-

                 P,  !,   fail;

                 true.

    Начиная с этого момента мы будем предполагать, что  not  - это встроенная прологовская процедура, которая ведет себя так, как это только что было определено. Будем также предполагать, что оператор not определен как префиксный, так что цель

            not( змея( X) )




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