Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Informatsionnye_tehnologii_lektsii.doc
Скачиваний:
19
Добавлен:
25.12.2018
Размер:
478.72 Кб
Скачать

Логика предикатов.

Понятие предиката обычно связывают с логическим высказыванием, записываемым в форме К P(t1,t2,…,tn); где К - квантор (обычно используется 2 квантора  - существования и  - общности);

Р – предикатный символ для которого возможны 2 значения (1 – истина, и 0 – ложь); и t1,t2,…,tn - термы, т.е. либо константы, либо переменные.

Из предикатов строятся логические формулы, причем правильно построенными формулами в логике предикатов первого порядка являются коньюктивные нормальные формы, т.е. формулы вида

дизъюнкты

где - операция дизъюнкции;

& - логическая операция конъюнкции;

~ - прямое либо инверсное значение предиката.

Для определения истинности ППФ – правильно построенной формулы обычно используют метод резолюции, который заключается в поиске среди множества дизъюнктов хотя бы одного ложного. Для этого образуют из двух дизъюнктов, содержащих дополнительную пару, резольвенту, например

P(a) – резольвента

Q(b,c) – дополнительная пара

Нахождение хотя бы одного ложного дизъюнкта в ППФ означает ложность этой формулы, а доказательством истинности некоторого дизъюнкта будет являться нахождение пустой резольвенты для инверсии этого дизъюнкта (т.е. выполняется доказательство “от противного”).

Форма записи пролог программы.

Программа на ПРОЛОГ’е состоит из множества фраз, причем фраза это либо факт либо правило. Причем факт – это фраза без условий, например факт, что Мария знает Бориса может быть представлен в виде:

знает (Мария, Борис);

В этой записи знает - это имя предиката, а Мария, Борис - список аргументов.

Простейшая ПРОЛОГ – программа – это множество фактов, которое иногда называют базой данных, например:

знает (Мария, Борис).

знает (Александр, Борис).

знает (Александр, Петр).

Запрос к базе данных выполняется в виде вопроса (?) и имени предиката, например:

? знает (Мария, Борис).

Это означает вопрос “Знает ли Мария Бориса”. Интерпретатор найдет соответствующий факт в базе данных и ответит: да.

Переменные в ПРОЛОГ’е записываются с большой буквы и квантифицируются экзистенционально, т.е. считается, что ищется хотя бы одно значение, при котором запрос ? знает (Борис, Кто).; означает “Кто знает Борис”. Ответом будет: -Кто = Мария.; повторный запрос ? знает (Борис, Кто).; выдаст: -Кто = Александр.; а третий повторный запрос выдаст – нет.

Помимо фактов в ПРОЛОГ’е имеются правила, которые имеют вид:

заголовок_правила:- тело_правила.

:- – служебный символ, который означает “если-то” – логическую связку;

Тело_правила содержит предикаты, разделенныелогическими связками , - логическое “и”, а также ; - логическое “или”.

Переменные, входящие в заголовок правила квантифицируется универсально, а в тело правила – экзистенционально, т.е. в заголовке неяво присутствует квантор общности (), а в теле правила – квантор существования.

Примером правила может являться следующая запись:

знает (А,В):-рабочая_смена (А, Смена), рабочая_смена (В, Смена).

которая означает, что каждые любые два человека А и В знают друг друга, если работают в одну и ту же рабочую смену, определяемую как “Смена”.

Согласно этому правилу в базе данных помимо явных данных, таких, что

знает (Мария, Борис).

знает (Александр, Борис).

знает (Александр, Петр).

появляются 4 неявные данные: Мария знает Александра, Мария знает Петра, Петр знает Бориса в том случае, если все они работают в одну смену.

И в случае обращения к программе запроса ? знает (Мария, Петр). ответом будет – да, поэтому с точки зрения пользователя не имеет значения является ли база данных явной или неявной.

ПРОЛОГ имеет также основные арифметические и логические операции, что позволяет расширить область его применения.

Основными областями применения для ПРОЛОГ’а являются системы с элементами искусственного интеллекта где требуется представление знаний в некотором формальном виде. Обычно это инженерия знаний и разработка экспертных систем.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]