Главная
»
Информационные системы
»
Представление знаний в ИС
»
Язык Prolog. Дизъюнкция. Отрицание.
Язык Prolog. Дизъюнкция. Отрицание.
Дизъюнкция
Чистый Пролог разрешает применять только конъюнкцию в вопросах и правилах. Язык, используемый на практике, богаче: в нём допускаются дизъюнкция и отрицание в телах правил и вопросах (т.е. целях, которые исследуются на достижимость). Рассмотрим снова БД библио и следующие выражения со связкой дизъюнкции, обозначаемой точкой с запятой: начальник(Х,анри);библиотекарь(Х)
Для достижения цели, содержащей дизъюнкцию, система сперва пытается удовлетворить левую часть рассматриваемой дизъюнкции, а если это не удаётся, то переходит к поиску удовлетворения для правой части той же дизъюнкции. Для нашего примера имеем:
? - начальник(Х,анри);библиотекарь(Х).
- - - > Х=эмиль;
- - - > Х=жозеф;
- - - > Х=эмиль;
- - - > нет.
В этом простом примере дизъюнкция не включена ни в какой более сложный предикат и поэтому всё дело свелось к двум последовательным вопросам. Первый предикат удовлетворён дважды, второй - один раз (причём независимо от первого).
Отрицание
В Прологе отрицание имеет имя not и для представления отрицания какого-либо выражения Р используется запись not(P). Цель not(P) достижима тогда и только тогда, когда не удовлетворяется предикат (цель) Р. При этом переменным значения не присваиваются. В самом деле, если достигается Р, то не достигается not(P); значит, надо стереть все присваивания, приводящие к этому результату, наоборот, если Р не достигается, то переменные не принимают никаких значений. Рассмотрим пример, связанный с БД библио:
? - not(начальник(эмиль,арсен)).
- - - > да
? - not(начальник(эмиль,Х)).
- - - > нет
Чтобы обработать отрицание, Пролог рассматривает возможность проведения доказательства как эквивалент значения Л. Следовательно not(P) считается истинным тогда и только тогда, когда не удовлетворяется Р. Подход этот в высшей степени прагматический, не имеющей эквивалента в логике.
Друзья! Приглашаем вас к обсуждению. Если у вас есть своё мнение, напишите нам в комментарии.