диз'юнкція цілей

Книга англійських фахівців, що містить опис основ логічного програмування і особливостей мови Пролог - базового мови ЕОМ п'ятого покоління. Області застосування цієї мови пов'язані з розробкою експертних систем, інтелектуальних баз даних, обробкою природної мови, розробкою компіляторів ЕОМ. Книга корисна для першого ознайомлення з мовою Пролог.

Книга: програмування МОВОЮ ПРОЛОГ

диз'юнкція цілей

диз'юнкція цілей

Функтор ';' визначає диз'юнкцію (що означає або) цільових тверджень. Якщо X і Y - цільові затвердження, то цільове твердження X; Y узгоджується з базою даних, якщо узгоджується X або Y. Якщо X не узгоджується, то робиться спроба довести узгодженість Y. Якщо і Y не узгоджується, то не узгоджується і диз'юнкція в цілому . Ми можемо використовувати функтор ';' для того, щоб висловити альтернативи в межах одного твердження. Наприклад, будемо вважати, що деякий об'єкт є людиною, якщо цей об'єкт - або Адам або Єва або якщо в об'єкта є мати. Ми можемо висловити це в одному правилі наступним чином:

людина (Х): - (Х = адам; Х = єва, мати (Х, Y)).

У цьому правилі ми насправді визначили три альтернативи. Однак для Прологу це правило містить дві альтернативи, одна з яких сама містить дві альтернативи. Так як функтор ';' є вбудованим і визначено як правоассоціатівний інфіксне оператор, то цільове твердження в наведеному правилі в дійсності можна переписати таким чином:

';' (Х = адам, ';' (Х = єва, мати (Х, Y)))

Таким чином, перша можливість відповідає тому, що X - це адам. Друга можливість включає дві альтернативи: X це єва або у X є мати

Ми можемо використовувати диз'юнкцію в будь-якому місці, де може бути використано будь-яке інше цільове твердження на Пролозі. Однак доцільно використовувати додаткові дужки, щоб уникнути непорозумінь, що стосуються взаємодії операторів ';' і ','. Зазвичай ми можемо уникнути застосування диз'юнкції шляхом використання декількох фактів і правил, що містять, можливо, визначення деяких додаткових предикатів. Наприклад, наведений вище приклад в точності еквівалентний наступному:

Цей варіант більш традиційний і, можливо, простіше для читання. Для багатьох Пролог-систем він може бути більш ефективним в порівнянні з використанням ';'.

Результатом відсікання є неможливість змінити вибір альтернатив, обумовлених наявністю диз'юнкцій, зроблений з моменту зіставлення з правилом, що містить відсікання (див. Гл. 4). Внаслідок цього є ряд випадків, коли програма, що містить відсікання, не може бути перетворена в звичайну програму без використання диз'юнкцій. Однак в загальному випадку не рекомендується надмірно часто використовувати ';'. Як застереження відсилаємо вас до гл. 8, де показано, як необдумане використання ';' ускладнює розуміння програм.

Схожі статті