- •Лекция №4
- •План лекции
- •Унификация
- •Наибольший общий унификатор
- •Унификация
- •Унификация
- •Унификация
- •Унификация
- •Унификация
- •Обобщенное правило Modus Ponens
- •Пример построения базы знаний
- •Представление задачи с помощью хорновских дизъюнктов (БЗ)
- •Алгоритм прямого вывода
- •Алгоритм прямого вывода
- •Алгоритм прямого вывода
- •Алгоритм прямого вывода
- •Алгоритм обратного вывода
- •Алгоритм обратного вывода
- •Алгоритм обратного вывода
- •Алгоритм обратного вывода
- •Алгоритм обратного вывода
- •Алгоритм обратного вывода
- •Алгоритм обратного вывода
- •Алгоритм обратного вывода
- •Алгоритм обратного вывода
- •Логическое программирование. Декларативная и процедурная семантика
- •Обратный вывод в логическом программировании
- •Логическая программа.
- •Дерево вывода (алгоритм обратного вывода)
- •Возможные темы РГР
Лекция №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) |