Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
63
Добавлен:
04.01.2020
Размер:
265.22 Кб
Скачать

Лекция №4

Вывод в логике предикатов. Обратный вывод в логическом программировании.

План лекции

Унификация

Обобщенное правило Modus Ponens

Прямой логический вывод

Обратный логический вывод

Обратный вывод в логическом программировании.

Унификация

Унификация позволяет отождествлять формулы логики предикатов путем замены свободных переменных на термы.

Подстановкой (унификатором) называется множество пар вида ={x1/t1, x2/t2 ,…, xn/tn}, где ti - терм, xi -

переменная, не входящая в терм ti . Подстановка может применяться к терму,предикату,предложению.

Результат применения подстановки к выражению обозначается Subst( , ) (или ).

Пример: Для унификации выражений Knows(John,x) и Knows(y,z) можно использовать подстановки

θ1 = {y/John, x/z } или θ2 = {y/John, x/John, z/John}

В результате применения подстановки θ1 получаем

Knows(John,z)= Knows(John,z)

В результате применения подстановки θ2 получаем

Knows(John, John)= Knows(John, John)

Наибольший общий унификатор

• Унификатор θ1 = {y/John, x/z } является более общим , чем унификатор θ2 = {y/John, x/John,

z/John}, так как

θ2 = Subst ( { z/John }, θ1 ) = θ1 { z/John }

Утверждение: Для любой унифицируемой пары выражений существует единственный наибольший общий унификатор (НОУ), уникальный с точностью до переименования переменных

НОУ= { y/John, x/z }

Унификация

Еще один пример: унификатором для двух выражений

King(x) and Greedy(x)

и King(John) and Greedy(y)

 

является

θ = {x/John,y/John}

 

Унификатор выражений:

Unify( , ) = if

=

 

 

 

 

Knows(John,x) Knows(John,Jane)

Knows(John,x) Knows(y,OJ)

Knows(John,x) Knows(y,Mother(y))

Knows(John,x) Knows(x,OJ)

Унификация

Например, подстановкой для двух выражений

King(x) and Greedy(x) и King(John) and Greedy(y)

является

θ = {x/John,y/John}

Унификатор выражений: Unify( , ) = if

=

 

 

 

 

Knows(John,x)

Knows(John,Jane)

{x/Jane}

Knows(John,x)

Knows(y,OJ)

 

 

Knows(John,x)

Knows(y,Mother(y))

 

Knows(John,x)

Knows(x,OJ)

 

 

Унификация

Например, подстановкой для двух выражений

King(x) and Greedy(x) и King(John) and Greedy(y)

является

θ = {x/John,y/John}

Унификатор выражений: Unify( , ) = if

=

 

 

 

 

Knows(John,x)

Knows(John,Jane)

{x/Jane}

Knows(John,x)

Knows(y,OJ)

{x/OJ,y/John}

Knows(John,x)

Knows(y,Mother(y))

 

Knows(John,x)

Knows(x,OJ)

 

 

Унификация

Например, подстановкой для двух выражений

King(x) and Greedy(x) и King(John) and Greedy(y)

является

θ = {x/John,y/John}

Унификатор выражений: Unify( , ) = if

=

 

 

 

 

Knows(John,x)

Knows(John,Jane)

{x/Jane}

Knows(John,x)

Knows(y,OJ)

{x/OJ,y/John}

Knows(John,x)

Knows(y,Mother(y)) {y/John,x/Mother(John)}

Knows(John,x)

Knows(x,OJ)

 

 

Унификация

Например, подстановкой для двух выражений

King(x) and Greedy(x) и King(John) and Greedy(y)

является

θ = {x/John,y/John}

Унификатор выражений: Unify( , ) = if

=

 

 

 

 

Knows(John,x)

Knows(John,Jane)

{x/Jane}

Knows(John,x)

Knows(y,OJ)

{x/OJ,y/John}

Knows(John,x)

Knows(y,Mother(y)) {y/John,x/Mother(John)}

Knows(John,x)

Knows(x,OJ)

 

{fail}

Обобщенное правило Modus Ponens

p1', p2', … , pn', ( p1 p2 … pn q) ,

 

Subst(θ,q)

 

где Subst(θ, pi') = Subst(θ, pi)

для всех i

Пример,

 

 

Дано:

p1' = King(John)

p2' = Greedy(y)

King(x) Greedy(x) Evil(x)

 

p1 = King(x), p2 = Greedy(x),

q = Evil(x)

 

θ = {x/John,y/John}

 

Subst(θ,q) = Evil(John)

Соседние файлы в папке Интеллектуальные информационные системы (ИИС)