O documento descreve os passos para executar resolução e encadeamento para frente em lógica de primeira ordem. Primeiro, as expressões lógicas devem ser convertidas para forma clausal sem quantificadores. Em seguida, as variáveis devem ser substituídas durante a resolução usando o processo de unificação. Por fim, a resolução é executada para derivar novas conclusões.
ALMANANHE DE BRINCADEIRAS - 500 atividades escolares
LPO Resolução e Forward Chaining
1. Inteligência Artificial – ACH2016
Aula 12 – Resolução e Forward Chaining em
Lógica de Primeira Ordem
Norton Trevisan Roman
(norton@usp.br)
9 de abril de 2019
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 1 / 34
2. Lógica de Primeira Ordem – Resolução
Passos
∀x∃y P(x) ⇒ R(x, y)
¬P(x) ∨ R(x, F(x))
1 Converter de LPO para forma clausal
Generalização da Forma Normal
Conjuntiva para LPO
Uma conjunção de disjunções
Sem quantificadores
2 Determinar que variáveis substituir por quais quando
da resolução
Processo chamado Unificação
3 Executar a resolução
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 2 / 34
3. Lógica de Primeira Ordem – Resolução
Passos
∀x∃y P(x) ⇒ R(x, y)
¬P(x) ∨ R(x, F(x))
1 Converter de LPO para forma clausal 4
Generalização da Forma Normal
Conjuntiva para LPO
Uma conjunção de disjunções
Sem quantificadores
2 Determinar que variáveis substituir por quais quando
da resolução
Processo chamado Unificação
3 Executar a resolução
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 2 / 34
4. Lógica de Primeira Ordem – Resolução
Passos
∀x∃y P(x) ⇒ R(x, y)
¬P(x) ∨ R(x, F(x))
1 Converter de LPO para forma clausal 4
Generalização da Forma Normal
Conjuntiva para LPO
Uma conjunção de disjunções
Sem quantificadores
2 Determinar que variáveis substituir por quais quando
da resolução 4
Processo chamado Unificação
3 Executar a resolução
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 2 / 34
5. Lógica de Primeira Ordem – Resolução
Passos
∀x∃y P(x) ⇒ R(x, y)
¬P(x) ∨ R(x, F(x))
1 Converter de LPO para forma clausal 4
Generalização da Forma Normal
Conjuntiva para LPO
Uma conjunção de disjunções
Sem quantificadores
2 Determinar que variáveis substituir por quais quando
da resolução 4
Processo chamado Unificação
3 Executar a resolução +
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 2 / 34
6. Lógica de Primeira Ordem – Resolução
Regra de inferência para resolução
α ∨ φ UMG(φ, ψ) = θ
¬ψ ∨ β
(α ∨ β)θ
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 3 / 34
7. Lógica de Primeira Ordem – Resolução
Regra de inferência para resolução
Como em lógica pro-
posicional, unifica
literais complementares
α ∨ φ UMG(φ, ψ) = θ
¬ψ ∨ β
(α ∨ β)θ
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 3 / 34
8. Lógica de Primeira Ordem – Resolução
Regra de inferência para resolução
Literais complemen-
tares em LPO: se um
pode ser unificado
à negação do outro
α ∨ φ UMG(φ, ψ) = θ
¬ψ ∨ β
(α ∨ β)θ
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 3 / 34
9. Lógica de Primeira Ordem – Resolução
Regra de inferência para resolução
Literais complemen-
tares em LPO: se um
pode ser unificado
à negação do outro
α ∨ φ UMG(φ, ψ) = θ
¬ψ ∨ β
(α ∨ β)θ
Se tivermos α ∨ φ e ¬ψ ∨ β, e pudermos unificar φ e ψ com
θ, então podemos concluir α ∨ β com a substituição θ
aplicada a eles
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 3 / 34
10. Lógica de Primeira Ordem – Resolução
Regra de inferência para resolução
Literais complemen-
tares em LPO: se um
pode ser unificado
à negação do outro
α ∨ φ UMG(φ, ψ) = θ
¬ψ ∨ β
(α ∨ β)θ
Se tivermos α ∨ φ e ¬ψ ∨ β, e pudermos unificar φ e ψ com
θ, então podemos concluir α ∨ β com a substituição θ
aplicada a eles
Ambas cláusulas devem estar padronizadas
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 3 / 34
11. Lógica de Primeira Ordem – Resolução
Regra de inferência para resolução
Literais complemen-
tares em LPO: se um
pode ser unificado
à negação do outro
α ∨ φ UMG(φ, ψ) = θ
¬ψ ∨ β
(α ∨ β)θ
Se tivermos α ∨ φ e ¬ψ ∨ β, e pudermos unificar φ e ψ com
θ, então podemos concluir α ∨ β com a substituição θ
aplicada a eles
Ambas cláusulas devem estar padronizadas
Ou seja, sem variáveis em comum
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 3 / 34
12. Lógica de Primeira Ordem – Resolução
Regra de inferência: Exemplo
P(x) ∨ Q(x, y)
¬P(A) ∨ R(B, x)
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 4 / 34
13. Lógica de Primeira Ordem – Resolução
Regra de inferência: Exemplo
P(x) ∨ Q(x, y)
¬P(A) ∨ R(B, x)
∀x, y P(x) ∨ Q(x, y)
∀x ¬P(A) ∨ R(B, x)
Lembre que há um quantificador
universal implı́cito em cada cláusula
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 4 / 34
14. Lógica de Primeira Ordem – Resolução
Regra de inferência: Exemplo
P(x) ∨ Q(x, y)
¬P(A) ∨ R(B, x)
∀x, y P(x) ∨ Q(x, y)
∀x ¬P(A) ∨ R(B, x)
Lembre que há um quantificador
universal implı́cito em cada cláusula
Os x’s nas duas
cláusulas são diferentes
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 4 / 34
15. Lógica de Primeira Ordem – Resolução
Regra de inferência: Exemplo
P(x) ∨ Q(x, y)
¬P(A) ∨ R(B, x)
∀x, y P(x) ∨ Q(x, y)
∀x ¬P(A) ∨ R(B, x)
Lembre que há um quantificador
universal implı́cito em cada cláusula
Os x’s nas duas
cláusulas são diferentes
∀x, y P(x) ∨ Q(x, y)
∀x1 ¬P(A) ∨ R(B, x1)
Para evitar confusão, re-
nomeamos as variáveis
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 4 / 34
16. Lógica de Primeira Ordem – Resolução
Regra de inferência: Exemplo
P(x) ∨ Q(x, y)
¬P(A) ∨ R(B, x)
∀x, y P(x) ∨ Q(x, y)
∀x ¬P(A) ∨ R(B, x)
Lembre que há um quantificador
universal implı́cito em cada cláusula
Os x’s nas duas
cláusulas são diferentes
∀x, y P(x) ∨ Q(x, y)
∀x1 ¬P(A) ∨ R(B, x1)
Para evitar confusão, re-
nomeamos as variáveis
P(x) ∨ Q(x, y)
¬P(A) ∨ R(B, x1)
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 4 / 34
17. Lógica de Primeira Ordem – Resolução
Regra de inferência: Exemplo
P(x) ∨ Q(x, y)
¬P(A) ∨ R(B, x1)
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 5 / 34
18. Lógica de Primeira Ordem – Resolução
Regra de inferência: Exemplo
P(x) ∨ Q(x, y)
¬P(A) ∨ R(B, x1)
α ∨ φ UMG(φ, ψ) = θ
¬ψ ∨ β
(α ∨ β)θ
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 5 / 34
19. Lógica de Primeira Ordem – Resolução
Regra de inferência: Exemplo
P(x) ∨ Q(x, y)
¬P(A) ∨ R(B, x1)
α ∨ φ UMG(φ, ψ) = θ
¬ψ ∨ β
(α ∨ β)θ
Buscamos dois literais
que neguem um o outro
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 5 / 34
20. Lógica de Primeira Ordem – Resolução
Regra de inferência: Exemplo
P(x) ∨ Q(x, y)
¬P(A) ∨ R(B, x1)
α ∨ φ UMG(φ, ψ) = θ
¬ψ ∨ β
(α ∨ β)θ
E tentamos unificá-los
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 5 / 34
21. Lógica de Primeira Ordem – Resolução
Regra de inferência: Exemplo
P(x) ∨ Q(x, y)
¬P(A) ∨ R(B, x1)
α ∨ φ UMG(φ, ψ) = θ
¬ψ ∨ β
(α ∨ β)θ
E tentamos unificá-los
P(x) ∨ Q(x, y) θ =
¬P(A) ∨ R(B, x1)
(Q(x, y) ∨ R(B, x1))θ
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 5 / 34
22. Lógica de Primeira Ordem – Resolução
Regra de inferência: Exemplo
P(x) ∨ Q(x, y)
¬P(A) ∨ R(B, x1)
α ∨ φ UMG(φ, ψ) = θ
¬ψ ∨ β
(α ∨ β)θ
E tentamos unificá-los
P(x) ∨ Q(x, y) θ = {x/A}
¬P(A) ∨ R(B, x1)
(Q(x, y) ∨ R(B, x1))θ
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 5 / 34
24. Lógica de Primeira Ordem – Resolução
Resolução: Exemplo
Imagine que temos a seguinte base:
João tem um cachorro
Quem tem um cachorro é um amante dos animais
Amantes dos animais não os matam
João matou Bolão ou a curiosidade o fez
Bolão é um gato
Todo gato é um animal
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 6 / 34
25. Lógica de Primeira Ordem – Resolução
Resolução: Exemplo
Imagine que temos a seguinte base:
João tem um cachorro
Quem tem um cachorro é um amante dos animais
Amantes dos animais não os matam
João matou Bolão ou a curiosidade o fez
Bolão é um gato
Todo gato é um animal
Queremos então saber:
A curiosidade matou Bolão?
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 6 / 34
26. Lógica de Primeira Ordem – Resolução
Exemplo: Construindo a base
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 7 / 34
27. Lógica de Primeira Ordem – Resolução
Exemplo: Construindo a base
João tem um cachorro
∃x Cão(x) ∧ Ter(João, x)
Cão(Totó) ∧ Ter(João, Totó)
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 7 / 34
28. Lógica de Primeira Ordem – Resolução
Exemplo: Construindo a base
João tem um cachorro
∃x Cão(x) ∧ Ter(João, x)
Cão(Totó) ∧ Ter(João, Totó)
Quem tem um cachorro é um amante dos animais
∀x (∃y Cão(y) ∧ Ter(x, y)) ⇒ AmaAnimais(x)
∀x (¬∃y Cão(y) ∧ Ter(x, y)) ∨ AmaAnimais(x)
∀x∀y ¬(Cão(y) ∧ Ter(x, y)) ∨ AmaAnimais(x)
∀x∀y ¬Cão(y) ∨ ¬Ter(x, y) ∨ AmaAnimais(x)
¬Cão(y) ∨ ¬Ter(x, y) ∨ AmaAnimais(x)
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 7 / 34
29. Lógica de Primeira Ordem – Resolução
Exemplo: Construindo a base
João tem um cachorro
∃x Cão(x) ∧ Ter(João, x)
Cão(Totó) ∧ Ter(João, Totó)
Quem tem um cachorro é um amante dos animais
∀x (∃y Cão(y) ∧ Ter(x, y)) ⇒ AmaAnimais(x)
∀x (¬∃y Cão(y) ∧ Ter(x, y)) ∨ AmaAnimais(x)
∀x∀y ¬(Cão(y) ∧ Ter(x, y)) ∨ AmaAnimais(x)
∀x∀y ¬Cão(y) ∨ ¬Ter(x, y) ∨ AmaAnimais(x)
¬Cão(y) ∨ ¬Ter(x, y) ∨ AmaAnimais(x)
Amantes dos animais não os matam
∀x AmaAnimais(x) ⇒ (∀y Animal(y) ⇒ ¬Matar(x, y))
∀x ¬AmaAnimais(x) ∨ (∀y Animal(y) ⇒ ¬Matar(x, y))
∀x ¬AmaAnimais(x) ∨ (∀y ¬Animal(y) ∨ ¬Matar(x, y))
¬AmaAnimais(x) ∨ ¬Animal(y) ∨ ¬Matar(x, y)
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 7 / 34
30. Lógica de Primeira Ordem – Resolução
Exemplo: Construindo a base
João tem um cachorro
∃x Cão(x) ∧ Ter(João, x)
Cão(Totó) ∧ Ter(João, Totó)
Quem tem um cachorro é um amante dos animais
∀x (∃y Cão(y) ∧ Ter(x, y)) ⇒ AmaAnimais(x)
∀x (¬∃y Cão(y) ∧ Ter(x, y)) ∨ AmaAnimais(x)
∀x∀y ¬(Cão(y) ∧ Ter(x, y)) ∨ AmaAnimais(x)
∀x∀y ¬Cão(y) ∨ ¬Ter(x, y) ∨ AmaAnimais(x)
¬Cão(y) ∨ ¬Ter(x, y) ∨ AmaAnimais(x)
Amantes dos animais não os matam
∀x AmaAnimais(x) ⇒ (∀y Animal(y) ⇒ ¬Matar(x, y))
∀x ¬AmaAnimais(x) ∨ (∀y Animal(y) ⇒ ¬Matar(x, y))
∀x ¬AmaAnimais(x) ∨ (∀y ¬Animal(y) ∨ ¬Matar(x, y))
¬AmaAnimais(x) ∨ ¬Animal(y) ∨ ¬Matar(x, y)
João matou Bolão ou a curiosidade o fez
Matar(João, Bolão) ∨ Matar(Curiosidade, Bolão)
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 7 / 34
31. Lógica de Primeira Ordem – Resolução
Exemplo: Construindo a base
João tem um cachorro
∃x Cão(x) ∧ Ter(João, x)
Cão(Totó) ∧ Ter(João, Totó)
Quem tem um cachorro é um amante dos animais
∀x (∃y Cão(y) ∧ Ter(x, y)) ⇒ AmaAnimais(x)
∀x (¬∃y Cão(y) ∧ Ter(x, y)) ∨ AmaAnimais(x)
∀x∀y ¬(Cão(y) ∧ Ter(x, y)) ∨ AmaAnimais(x)
∀x∀y ¬Cão(y) ∨ ¬Ter(x, y) ∨ AmaAnimais(x)
¬Cão(y) ∨ ¬Ter(x, y) ∨ AmaAnimais(x)
Amantes dos animais não os matam
∀x AmaAnimais(x) ⇒ (∀y Animal(y) ⇒ ¬Matar(x, y))
∀x ¬AmaAnimais(x) ∨ (∀y Animal(y) ⇒ ¬Matar(x, y))
∀x ¬AmaAnimais(x) ∨ (∀y ¬Animal(y) ∨ ¬Matar(x, y))
¬AmaAnimais(x) ∨ ¬Animal(y) ∨ ¬Matar(x, y)
João matou Bolão ou a curiosidade o fez
Matar(João, Bolão) ∨ Matar(Curiosidade, Bolão)
Bolão é um gato
Gato(Bolão)
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 7 / 34
32. Lógica de Primeira Ordem – Resolução
Exemplo: Construindo a base
João tem um cachorro
∃x Cão(x) ∧ Ter(João, x)
Cão(Totó) ∧ Ter(João, Totó)
Quem tem um cachorro é um amante dos animais
∀x (∃y Cão(y) ∧ Ter(x, y)) ⇒ AmaAnimais(x)
∀x (¬∃y Cão(y) ∧ Ter(x, y)) ∨ AmaAnimais(x)
∀x∀y ¬(Cão(y) ∧ Ter(x, y)) ∨ AmaAnimais(x)
∀x∀y ¬Cão(y) ∨ ¬Ter(x, y) ∨ AmaAnimais(x)
¬Cão(y) ∨ ¬Ter(x, y) ∨ AmaAnimais(x)
Amantes dos animais não os matam
∀x AmaAnimais(x) ⇒ (∀y Animal(y) ⇒ ¬Matar(x, y))
∀x ¬AmaAnimais(x) ∨ (∀y Animal(y) ⇒ ¬Matar(x, y))
∀x ¬AmaAnimais(x) ∨ (∀y ¬Animal(y) ∨ ¬Matar(x, y))
¬AmaAnimais(x) ∨ ¬Animal(y) ∨ ¬Matar(x, y)
João matou Bolão ou a curiosidade o fez
Matar(João, Bolão) ∨ Matar(Curiosidade, Bolão)
Bolão é um gato
Gato(Bolão)
Todo gato é um animal
∀x Gato(x) ⇒ Animal(x)
∀x ¬Gato(x) ∨ Animal(x)
¬Gato(x) ∨ Animal(x)
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 7 / 34
48. Lógica de Primeira Ordem – Resolução
Resolução Binária
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 12 / 34
49. Lógica de Primeira Ordem – Resolução
Resolução Binária
É a regra da resolução vista até agora
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 12 / 34
50. Lógica de Primeira Ordem – Resolução
Resolução Binária
É a regra da resolução vista até agora
Envolve apenas dois literais, um de cada cláusula resolvida
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 12 / 34
51. Lógica de Primeira Ordem – Resolução
Resolução Binária
É a regra da resolução vista até agora
Envolve apenas dois literais, um de cada cláusula resolvida
Problema: não é completa
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 12 / 34
52. Lógica de Primeira Ordem – Resolução
Resolução Binária
É a regra da resolução vista até agora
Envolve apenas dois literais, um de cada cláusula resolvida
Problema: não é completa
Há conjuntos de cláusulas insatisfatı́veis (falsas em todas as
interpretações) que não gerarão contradição através da
aplicação sucessiva da regra
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 12 / 34
53. Lógica de Primeira Ordem – Resolução
Resolução Binária
É a regra da resolução vista até agora
Envolve apenas dois literais, um de cada cláusula resolvida
Problema: não é completa
Há conjuntos de cláusulas insatisfatı́veis (falsas em todas as
interpretações) que não gerarão contradição através da
aplicação sucessiva da regra
Exemplo:
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 12 / 34
54. Lógica de Primeira Ordem – Resolução
Resolução Binária
É a regra da resolução vista até agora
Envolve apenas dois literais, um de cada cláusula resolvida
Problema: não é completa
Há conjuntos de cláusulas insatisfatı́veis (falsas em todas as
interpretações) que não gerarão contradição através da
aplicação sucessiva da regra
Exemplo:
Podemos obter uma contradição a partir dessas cláusulas?
P(x) ∨ P(y)
¬P(v) ∨ ¬P(w)
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 12 / 34
55. Lógica de Primeira Ordem – Resolução
Resolução Binária
Base
É a regra da resolução vista até agora
Envolve apenas dois literais, um de cada cláusula resolvida
Problema: não é completa
Há conjuntos de cláusulas insatisfatı́veis (falsas em todas as
interpretações) que não gerarão contradição através da
aplicação sucessiva da regra
Exemplo:
Podemos obter uma contradição a partir dessas cláusulas?
P(x) ∨ P(y)
¬P(v) ∨ ¬P(w)
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 12 / 34
56. Lógica de Primeira Ordem – Resolução
Resolução Binária
Negação do que queremos
provar (P(v) ∧ P(w))
É a regra da resolução vista até agora
Envolve apenas dois literais, um de cada cláusula resolvida
Problema: não é completa
Há conjuntos de cláusulas insatisfatı́veis (falsas em todas as
interpretações) que não gerarão contradição através da
aplicação sucessiva da regra
Exemplo:
Podemos obter uma contradição a partir dessas cláusulas?
P(x) ∨ P(y)
¬P(v) ∨ ¬P(w)
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 12 / 34
57. Lógica de Primeira Ordem – Resolução
Resolução Binária
Deverı́amos, pois não há interpretação que faça ambas as
cláusulas serem verdadeiras. Lembre que elas significam:
∀x, y P(x) ∨ P(y)
∀v, w ¬P(v) ∨ ¬P(w)
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 13 / 34
58. Lógica de Primeira Ordem – Resolução
Resolução Binária
Deverı́amos, pois não há interpretação que faça ambas as
cláusulas serem verdadeiras. Lembre que elas significam:
∀x, y P(x) ∨ P(y)
∀v, w ¬P(v) ∨ ¬P(w)
Então para ambas serem verdadeiras, seria necessário que
P(x) e ¬P(x) fossem verdadeiros, para todo x
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 13 / 34
59. Lógica de Primeira Ordem – Resolução
Resolução Binária
Deverı́amos, pois não há interpretação que faça ambas as
cláusulas serem verdadeiras. Lembre que elas significam:
∀x, y P(x) ∨ P(y)
∀v, w ¬P(v) ∨ ¬P(w)
Então para ambas serem verdadeiras, seria necessário que
P(x) e ¬P(x) fossem verdadeiros, para todo x
Contudo, aplicando resolução binária, obtemos, por exemplo
P(x) ∨ ¬P(w), θ = {y/v}
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 13 / 34
60. Lógica de Primeira Ordem – Resolução
Resolução Binária
Deverı́amos, pois não há interpretação que faça ambas as
cláusulas serem verdadeiras. Lembre que elas significam:
∀x, y P(x) ∨ P(y)
∀v, w ¬P(v) ∨ ¬P(w)
Então para ambas serem verdadeiras, seria necessário que
P(x) e ¬P(x) fossem verdadeiros, para todo x
Contudo, aplicando resolução binária, obtemos, por exemplo
P(x) ∨ ¬P(w), θ = {y/v}
E repetindo o procedimento com uma das orações originais,
voltamos a elas novamente
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 13 / 34
61. Lógica de Primeira Ordem – Resolução
Resolução Generalizada
Há no entanto uma extensão à resolução binária que
é completa: a resolução generalizada
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 14 / 34
62. Lógica de Primeira Ordem – Resolução
Resolução Generalizada
Há no entanto uma extensão à resolução binária que
é completa: a resolução generalizada
Nela, buscamos subconjuntos de literais em uma cláusula
que possam ser unificados com a negação de um
subconjunto de literais na outra cláusula
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 14 / 34
63. Lógica de Primeira Ordem – Resolução
Resolução Generalizada
Há no entanto uma extensão à resolução binária que
é completa: a resolução generalizada
Nela, buscamos subconjuntos de literais em uma cláusula
que possam ser unificados com a negação de um
subconjunto de literais na outra cláusula
Exemplo:
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 14 / 34
64. Lógica de Primeira Ordem – Resolução
Resolução Generalizada
Há no entanto uma extensão à resolução binária que
é completa: a resolução generalizada
Nela, buscamos subconjuntos de literais em uma cláusula
que possam ser unificados com a negação de um
subconjunto de literais na outra cláusula
Exemplo:
Em “P(x) ∨ P(y)” e “¬P(v) ∨ ¬P(w)”, cada literal (P) em
uma cláusula pode ser unificado com sua negação na outra
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 14 / 34
65. Lógica de Primeira Ordem – Resolução
Resolução Generalizada
Há no entanto uma extensão à resolução binária que
é completa: a resolução generalizada
Nela, buscamos subconjuntos de literais em uma cláusula
que possam ser unificados com a negação de um
subconjunto de literais na outra cláusula
Exemplo:
Em “P(x) ∨ P(y)” e “¬P(v) ∨ ¬P(w)”, cada literal (P) em
uma cláusula pode ser unificado com sua negação na outra
Gerando assim a contradição necessária (falso) para a
demonstração
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 14 / 34
66. Lógica de Primeira Ordem – Resolução
Fatoração
Uma alternativa mais simples é introduzir uma nova
regra de inferência, a ser usada com a resolução
binária:
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 15 / 34
67. Lógica de Primeira Ordem – Resolução
Fatoração
Uma alternativa mais simples é introduzir uma nova
regra de inferência, a ser usada com a resolução
binária:
α ∨ β ∨ γ θ = UMG(α, β)
(α ∨ γ) θ
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 15 / 34
68. Lógica de Primeira Ordem – Resolução
Fatoração
Uma alternativa mais simples é introduzir uma nova
regra de inferência, a ser usada com a resolução
binária:
α ∨ β ∨ γ θ = UMG(α, β)
(α ∨ γ) θ
Se pudermos unificar dois literais na mesma cláusula, então
podemos eliminar um deles (não importa qual), e então
aplicar o unificador à cláusula inteira
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 15 / 34
69. Lógica de Primeira Ordem – Resolução
Fatoração
Uma alternativa mais simples é introduzir uma nova
regra de inferência, a ser usada com a resolução
binária:
α ∨ β ∨ γ θ = UMG(α, β)
(α ∨ γ) θ
Se pudermos unificar dois literais na mesma cláusula, então
podemos eliminar um deles (não importa qual), e então
aplicar o unificador à cláusula inteira
Essa alternativa é chamada de Fatoração
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 15 / 34
70. Lógica de Primeira Ordem – Resolução
Fatoração: Exemplo
Q(y) ∨ P(x, y) ∨ P(v, A)
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 16 / 34
71. Lógica de Primeira Ordem – Resolução
Fatoração: Exemplo
Q(y) ∨ P(x, y) ∨ P(v, A)
Q(A) ∨ P(v, A) {x/v, y/A}
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 16 / 34
72. Lógica de Primeira Ordem – Resolução
Fatoração: Exemplo
Q(y) ∨ P(x, y) ∨ P(v, A)
Q(A) ∨ P(v, A) {x/v, y/A}
Note que se trata da remoção de literais duplicados
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 16 / 34
73. Lógica de Primeira Ordem – Resolução
Fatoração: Exemplo
Q(y) ∨ P(x, y) ∨ P(v, A)
Q(A) ∨ P(v, A) {x/v, y/A}
Note que se trata da remoção de literais duplicados
Agora a resolução binária pode ser usada
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 16 / 34
74. Lógica de Primeira Ordem – Resolução
Fatoração: Exemplo
Q(y) ∨ P(x, y) ∨ P(v, A)
Q(A) ∨ P(v, A) {x/v, y/A}
Note que se trata da remoção de literais duplicados
Agora a resolução binária pode ser usada
A combinação de resolução binária com fatoração é
completa
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 16 / 34
75. Lógica de Primeira Ordem – Resolução
Fatoração: Exemplo
Q(y) ∨ P(x, y) ∨ P(v, A)
Q(A) ∨ P(v, A) {x/v, y/A}
Note que se trata da remoção de literais duplicados
Agora a resolução binária pode ser usada
A combinação de resolução binária com fatoração é
completa
Toda vez que a base levar a S, poderemos provar S a partir
dela
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 16 / 34
76. Lógica de Primeira Ordem – Resolução
Respondendo Perguntas
Até agora respondemos questões do tipo:
“A curiosidade matou Bolão?”
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 17 / 34
77. Lógica de Primeira Ordem – Resolução
Respondendo Perguntas
Até agora respondemos questões do tipo:
“A curiosidade matou Bolão?”
Resolução pode, contudo, ser usada para responder
perguntas mais gerais:
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 17 / 34
78. Lógica de Primeira Ordem – Resolução
Respondendo Perguntas
Até agora respondemos questões do tipo:
“A curiosidade matou Bolão?”
Resolução pode, contudo, ser usada para responder
perguntas mais gerais:
“Quem matou Bolão?”
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 17 / 34
79. Lógica de Primeira Ordem – Resolução
Respondendo Perguntas
Até agora respondemos questões do tipo:
“A curiosidade matou Bolão?”
Resolução pode, contudo, ser usada para responder
perguntas mais gerais:
“Quem matou Bolão?”
“Matar(w, Bolão)”? (Olhando a substituição {w/???})
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 17 / 34
80. Lógica de Primeira Ordem – Resolução
Respondendo Perguntas
Até agora respondemos questões do tipo:
“A curiosidade matou Bolão?”
Resolução pode, contudo, ser usada para responder
perguntas mais gerais:
“Quem matou Bolão?”
“Matar(w, Bolão)”? (Olhando a substituição {w/???})
Como?
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 17 / 34
81. Lógica de Primeira Ordem – Resolução
Respondendo Perguntas
Até agora respondemos questões do tipo:
“A curiosidade matou Bolão?”
Resolução pode, contudo, ser usada para responder
perguntas mais gerais:
“Quem matou Bolão?”
“Matar(w, Bolão)”? (Olhando a substituição {w/???})
Como? Truque de (Cordell) Green:
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 17 / 34
82. Lógica de Primeira Ordem – Resolução
Respondendo Perguntas
Até agora respondemos questões do tipo:
“A curiosidade matou Bolão?”
Resolução pode, contudo, ser usada para responder
perguntas mais gerais:
“Quem matou Bolão?”
“Matar(w, Bolão)”? (Olhando a substituição {w/???})
Como? Truque de (Cordell) Green:
Adicione à negação do objetivo um literal de resposta
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 17 / 34
83. Lógica de Primeira Ordem – Resolução
Respondendo Perguntas
Até agora respondemos questões do tipo:
“A curiosidade matou Bolão?”
Resolução pode, contudo, ser usada para responder
perguntas mais gerais:
“Quem matou Bolão?”
“Matar(w, Bolão)”? (Olhando a substituição {w/???})
Como? Truque de (Cordell) Green:
Adicione à negação do objetivo um literal de resposta
Ex: ¬Matar(w, Bolão) ∨ Resposta(w)
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 17 / 34
84. Lógica de Primeira Ordem – Resolução
Respondendo Perguntas: Exemplo
Quem é mortal?
Sentença Ação
1 ¬Homem(x) ∨ Mortal(x) Axioma
2 Homem(Sócrates) Axioma
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 18 / 34
85. Lógica de Primeira Ordem – Resolução
Respondendo Perguntas: Exemplo
Quem é mortal?
Sentença Ação
1 ¬Homem(x) ∨ Mortal(x) Axioma
2 Homem(Sócrates) Axioma
3 ¬Mortal(x) ∨ Resposta(x) Neg
1. Negamos a conclusão
(de que existem mortais)
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 18 / 34
86. Lógica de Primeira Ordem – Resolução
Respondendo Perguntas: Exemplo
Quem é mortal?
Sentença Ação
1 ¬Homem(x) ∨ Mortal(x) Axioma
2 Homem(Sócrates) Axioma
3 ¬Mortal(x) ∨ Resposta(x) Neg
1. Negamos a conclusão
(de que existem mortais) 2. O truque é
adicionar o literal
Resposta(x)
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 18 / 34
87. Lógica de Primeira Ordem – Resolução
Respondendo Perguntas: Exemplo
Quem é mortal?
Sentença Ação
1 ¬Homem(x) ∨ Mortal(x) Axioma
2 Homem(Sócrates) Axioma
3 ¬Mortal(x) ∨ Resposta(x) Neg
4 Mortal(Sócrates) 1,2
1. Negamos a conclusão
(de que existem mortais) 2. O truque é
adicionar o literal
Resposta(x)
3. Fazemos a resolução
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 18 / 34
88. Lógica de Primeira Ordem – Resolução
Respondendo Perguntas: Exemplo
Quem é mortal?
Sentença Ação
1 ¬Homem(x) ∨ Mortal(x) Axioma
2 Homem(Sócrates) Axioma
3 ¬Mortal(x) ∨ Resposta(x) Neg
4 Mortal(Sócrates) 1,2
5 Resposta(Sócrates) 3,5
1. Negamos a conclusão
(de que existem mortais) 2. O truque é
adicionar o literal
Resposta(x)
3. Fazemos a resolução
4. Quando chegamos a
uma cláusula com apenas
o literal Resposta, paramos
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 18 / 34
89. Lógica de Primeira Ordem – Resolução
Respondendo Perguntas: Exemplo
Quem é mortal?
Sentença Ação
1 ¬Homem(x) ∨ Mortal(x) Axioma
2 Homem(Sócrates) Axioma
3 ¬Mortal(x) ∨ Resposta(x) Neg
4 Mortal(Sócrates) 1,2
5 Resposta(Sócrates) 3,5
1. Negamos a conclusão
(de que existem mortais) 2. O truque é
adicionar o literal
Resposta(x)
3. Fazemos a resolução
4. Quando chegamos a
uma cláusula com apenas
o literal Resposta, paramos
5. A resposta será o
que estiver ligado à
variável x nesse literal
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 18 / 34
90. Lógica de Primeira Ordem – Resolução
Igualdade
Nenhum dos métodos de inferência até agora lidam
com x = y
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 19 / 34
91. Lógica de Primeira Ordem – Resolução
Igualdade
Nenhum dos métodos de inferência até agora lidam
com x = y
O que fazer quando a prova contém um ’=’?
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 19 / 34
92. Lógica de Primeira Ordem – Resolução
Igualdade
Nenhum dos métodos de inferência até agora lidam
com x = y
O que fazer quando a prova contém um ’=’?
Adicione uma regra extra – paramodulação (não veremos)
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 19 / 34
93. Lógica de Primeira Ordem – Resolução
Igualdade
Nenhum dos métodos de inferência até agora lidam
com x = y
O que fazer quando a prova contém um ’=’?
Adicione uma regra extra – paramodulação (não veremos)
Usada em provadores de teoremas
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 19 / 34
94. Lógica de Primeira Ordem – Resolução
Igualdade
Nenhum dos métodos de inferência até agora lidam
com x = y
O que fazer quando a prova contém um ’=’?
Adicione uma regra extra – paramodulação (não veremos)
Usada em provadores de teoremas
Estenda o algoritmo de unificação (não veremos)
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 19 / 34
95. Lógica de Primeira Ordem – Resolução
Igualdade
Nenhum dos métodos de inferência até agora lidam
com x = y
O que fazer quando a prova contém um ’=’?
Adicione uma regra extra – paramodulação (não veremos)
Usada em provadores de teoremas
Estenda o algoritmo de unificação (não veremos)
Usada em provadores de teoremas
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 19 / 34
96. Lógica de Primeira Ordem – Resolução
Igualdade
Nenhum dos métodos de inferência até agora lidam
com x = y
O que fazer quando a prova contém um ’=’?
Adicione uma regra extra – paramodulação (não veremos)
Usada em provadores de teoremas
Estenda o algoritmo de unificação (não veremos)
Usada em provadores de teoremas
Trate a igualdade como qualquer outro predicado
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 19 / 34
97. Lógica de Primeira Ordem – Resolução
Igualdade
Nenhum dos métodos de inferência até agora lidam
com x = y
O que fazer quando a prova contém um ’=’?
Adicione uma regra extra – paramodulação (não veremos)
Usada em provadores de teoremas
Estenda o algoritmo de unificação (não veremos)
Usada em provadores de teoremas
Trate a igualdade como qualquer outro predicado
Restrinja sua semântica via axiomas
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 19 / 34
98. Lógica de Primeira Ordem – Resolução
Axiomatizando Igualdade
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 20 / 34
99. Lógica de Primeira Ordem – Resolução
Axiomatizando Igualdade
Aproximamos a igualdade por equivalência,
tomando por base suas propriedades
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 20 / 34
100. Lógica de Primeira Ordem – Resolução
Axiomatizando Igualdade
Aproximamos a igualdade por equivalência,
tomando por base suas propriedades
∀x Igual(x, x) (reflexividade)
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 20 / 34
101. Lógica de Primeira Ordem – Resolução
Axiomatizando Igualdade
Aproximamos a igualdade por equivalência,
tomando por base suas propriedades
∀x Igual(x, x) (reflexividade)
∀x, y Igual(x, y) ⇒ Igual(y, x) (simetria)
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 20 / 34
102. Lógica de Primeira Ordem – Resolução
Axiomatizando Igualdade
Aproximamos a igualdade por equivalência,
tomando por base suas propriedades
∀x Igual(x, x) (reflexividade)
∀x, y Igual(x, y) ⇒ Igual(y, x) (simetria)
∀x, y, z Igual(x, y) ∧ Igual(y, z) ⇒ Igual(x, z)
(transitividade)
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 20 / 34
103. Lógica de Primeira Ordem – Resolução
Axiomatizando Igualdade
Aproximamos a igualdade por equivalência,
tomando por base suas propriedades
∀x Igual(x, x) (reflexividade)
∀x, y Igual(x, y) ⇒ Igual(y, x) (simetria)
∀x, y, z Igual(x, y) ∧ Igual(y, z) ⇒ Igual(x, z)
(transitividade)
Permitimos então substituição, em qualquer
predicado ou função, de termos iguais:
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 20 / 34
104. Lógica de Primeira Ordem – Resolução
Axiomatizando Igualdade
Aproximamos a igualdade por equivalência,
tomando por base suas propriedades
∀x Igual(x, x) (reflexividade)
∀x, y Igual(x, y) ⇒ Igual(y, x) (simetria)
∀x, y, z Igual(x, y) ∧ Igual(y, z) ⇒ Igual(x, z)
(transitividade)
Permitimos então substituição, em qualquer
predicado ou função, de termos iguais:
∀x, y Igual(x, y) ⇒ (Pi (x) ⇔ Pi (y)), para todo Pi
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 20 / 34
105. Lógica de Primeira Ordem – Resolução
Axiomatizando Igualdade
Aproximamos a igualdade por equivalência,
tomando por base suas propriedades
∀x Igual(x, x) (reflexividade)
∀x, y Igual(x, y) ⇒ Igual(y, x) (simetria)
∀x, y, z Igual(x, y) ∧ Igual(y, z) ⇒ Igual(x, z)
(transitividade)
Permitimos então substituição, em qualquer
predicado ou função, de termos iguais:
∀x, y Igual(x, y) ⇒ (Pi (x) ⇔ Pi (y)), para todo Pi
Para cada Pi (e função) precisamos incluir um axioma assim
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 20 / 34
106. Lógica de Primeira Ordem – Inferência
Forward Chaining
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 21 / 34
107. L.P.O. – Forward Chaining
Caracterı́sticas
Como na lógica proposicional:
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 22 / 34
108. L.P.O. – Forward Chaining
Caracterı́sticas
Como na lógica proposicional:
Funciona apenas com cláusulas definidas
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 22 / 34
109. L.P.O. – Forward Chaining
Caracterı́sticas
Como na lógica proposicional:
Funciona apenas com cláusulas definidas
Antecedentes ⇒ Consequente
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 22 / 34
110. L.P.O. – Forward Chaining
Caracterı́sticas
Como na lógica proposicional:
Funciona apenas com cláusulas definidas
Antecedentes ⇒ Consequente
A partir de sentenças atômicas, aplica Modus Ponens
progressivamente, adicionando novas sentenças atômicas
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 22 / 34
111. L.P.O. – Forward Chaining
Caracterı́sticas
Como na lógica proposicional:
Funciona apenas com cláusulas definidas
Antecedentes ⇒ Consequente
A partir de sentenças atômicas, aplica Modus Ponens
progressivamente, adicionando novas sentenças atômicas
Utilidade
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 22 / 34
112. L.P.O. – Forward Chaining
Caracterı́sticas
Como na lógica proposicional:
Funciona apenas com cláusulas definidas
Antecedentes ⇒ Consequente
A partir de sentenças atômicas, aplica Modus Ponens
progressivamente, adicionando novas sentenças atômicas
Utilidade
Sistemas que fazem inferência em resposta a informações
recém-chegadas
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 22 / 34
113. L.P.O. – Forward Chaining
Caracterı́sticas
Como na lógica proposicional:
Funciona apenas com cláusulas definidas
Antecedentes ⇒ Consequente
A partir de sentenças atômicas, aplica Modus Ponens
progressivamente, adicionando novas sentenças atômicas
Utilidade
Sistemas que fazem inferência em resposta a informações
recém-chegadas
Sistemas baseados em regras, do tipo Situação ⇒ Resposta
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 22 / 34
114. L.P.O. – Forward Chaining
Caracterı́sticas
Como na lógica proposicional:
Funciona apenas com cláusulas definidas
Antecedentes ⇒ Consequente
A partir de sentenças atômicas, aplica Modus Ponens
progressivamente, adicionando novas sentenças atômicas
Utilidade
Sistemas que fazem inferência em resposta a informações
recém-chegadas
Sistemas baseados em regras, do tipo Situação ⇒ Resposta
Mais eficiente que resolução, nesses casos
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 22 / 34
115. L.P.O. – Forward Chaining
Relembrando Cláusulas Definidas
Disjunções de literais, dos quais exatamente um é
positivo
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 23 / 34
116. L.P.O. – Forward Chaining
Relembrando Cláusulas Definidas
Disjunções de literais, dos quais exatamente um é
positivo
¬P(x) ∨ ¬Q(x) ∨ ¬R(x) ∨ K(x), ou
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 23 / 34
117. L.P.O. – Forward Chaining
Relembrando Cláusulas Definidas
Disjunções de literais, dos quais exatamente um é
positivo
¬P(x) ∨ ¬Q(x) ∨ ¬R(x) ∨ K(x), ou
P(x) ∧ Q(x) ∧ R(x) ⇒ K(x)
(Conjunção de literais positivos ⇒ único literal positivo)
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 23 / 34
118. L.P.O. – Forward Chaining
Relembrando Cláusulas Definidas
Disjunções de literais, dos quais exatamente um é
positivo
¬P(x) ∨ ¬Q(x) ∨ ¬R(x) ∨ K(x), ou
P(x) ∧ Q(x) ∧ R(x) ⇒ K(x)
(Conjunção de literais positivos ⇒ único literal positivo)
Ou uma sentença atômica
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 23 / 34
119. L.P.O. – Forward Chaining
Relembrando Cláusulas Definidas
Disjunções de literais, dos quais exatamente um é
positivo
¬P(x) ∨ ¬Q(x) ∨ ¬R(x) ∨ K(x), ou
P(x) ∧ Q(x) ∧ R(x) ⇒ K(x)
(Conjunção de literais positivos ⇒ único literal positivo)
Ou uma sentença atômica
P(x)
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 23 / 34
120. L.P.O. – Forward Chaining
Relembrando Cláusulas Definidas
Disjunções de literais, dos quais exatamente um é
positivo
¬P(x) ∨ ¬Q(x) ∨ ¬R(x) ∨ K(x), ou
P(x) ∧ Q(x) ∧ R(x) ⇒ K(x)
(Conjunção de literais positivos ⇒ único literal positivo)
Ou uma sentença atômica
P(x)
Gato(Bolão)
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 23 / 34
121. L.P.O. – Forward Chaining
Bases de Conhecimento com Cláusulas Definidas
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 24 / 34
122. L.P.O. – Forward Chaining
Bases de Conhecimento com Cláusulas Definidas
Cada entrada na base é uma cláusula definida
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 24 / 34
123. L.P.O. – Forward Chaining
Bases de Conhecimento com Cláusulas Definidas
Cada entrada na base é uma cláusula definida
P(x)
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 24 / 34
124. L.P.O. – Forward Chaining
Bases de Conhecimento com Cláusulas Definidas
Cada entrada na base é uma cláusula definida
P(x)
P(x) ∧ Q(x) ∧ R(x) ⇒ K(x)
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 24 / 34
125. L.P.O. – Forward Chaining
Bases de Conhecimento com Cláusulas Definidas
Cada entrada na base é uma cláusula definida
P(x)
P(x) ∧ Q(x) ∧ R(x) ⇒ K(x)
Traz implı́cita, em cada entrada, o quantificador universal
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 24 / 34
126. L.P.O. – Forward Chaining
Bases de Conhecimento com Cláusulas Definidas
Cada entrada na base é uma cláusula definida
∀x P(x)
∀x P(x) ∧ Q(x) ∧ R(x) ⇒ K(x)
Traz implı́cita, em cada entrada, o quantificador universal
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 24 / 34
127. L.P.O. – Forward Chaining
Bases de Conhecimento com Cláusulas Definidas
Cada entrada na base é uma cláusula definida
∀x P(x)
∀x P(x) ∧ Q(x) ∧ R(x) ⇒ K(x)
Traz implı́cita, em cada entrada, o quantificador universal
Também aqui precisamos eliminar o quantificador
existencial (skolemização)
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 24 / 34
128. L.P.O. – Forward Chaining
Bases de Conhecimento com Cláusulas Definidas
Cada entrada na base é uma cláusula definida
∀x P(x)
∀x P(x) ∧ Q(x) ∧ R(x) ⇒ K(x)
Traz implı́cita, em cada entrada, o quantificador universal
Também aqui precisamos eliminar o quantificador
existencial (skolemização)
Além de padronizar as variáveis das entradas que
serão unificadas (como na Resolução)
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 24 / 34
129. L.P.O. – Forward Chaining
Funcionamento
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 25 / 34
130. L.P.O. – Forward Chaining
Funcionamento
Começando com os fatos conhecidos, verifique
todas as regras cujas premissas são satisfeitas
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 25 / 34
131. L.P.O. – Forward Chaining
Funcionamento
Começando com os fatos conhecidos, verifique
todas as regras cujas premissas são satisfeitas
Modus Ponens
α ⇒ β UMG(α, ψ) = θ P(x) ⇒ Q(x)
ψ P(A)
(β) θ Q(A) {x/A}
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 25 / 34
132. L.P.O. – Forward Chaining
Funcionamento
Começando com os fatos conhecidos, verifique
todas as regras cujas premissas são satisfeitas
Modus Ponens
α ⇒ β UMG(α, ψ) = θ P(x) ⇒ Q(x)
ψ P(A)
(β) θ Q(A) {x/A}
Adicione suas conclusões aos fatos conhecidos
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 25 / 34
133. L.P.O. – Forward Chaining
Funcionamento
Começando com os fatos conhecidos, verifique
todas as regras cujas premissas são satisfeitas
Modus Ponens
α ⇒ β UMG(α, ψ) = θ P(x) ⇒ Q(x)
ψ P(A)
(β) θ Q(A) {x/A}
Adicione suas conclusões aos fatos conhecidos
Repita o procedimento até que a query seja
respondida (assumindo que uma resposta apenas
baste), ou nenhum novo fato puder ser adicionado
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 25 / 34
134. L.P.O. – Forward Chaining
Funcionamento
Um fato não será novo se for apenas uma
renomeação de um fato conhecido
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 26 / 34
135. L.P.O. – Forward Chaining
Funcionamento
Um fato não será novo se for apenas uma
renomeação de um fato conhecido
Ou seja, se ambos significados forem idênticos
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 26 / 34
136. L.P.O. – Forward Chaining
Funcionamento
Um fato não será novo se for apenas uma
renomeação de um fato conhecido
Ou seja, se ambos significados forem idênticos
Uma sentença é uma renomeação de outra se forem
idênticas, exceto pelos nomes de suas variáveis
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 26 / 34
137. L.P.O. – Forward Chaining
Funcionamento
Um fato não será novo se for apenas uma
renomeação de um fato conhecido
Ou seja, se ambos significados forem idênticos
Uma sentença é uma renomeação de outra se forem
idênticas, exceto pelos nomes de suas variáveis
Ex: Gosta(x, Sorvete) e Gosta(y, Sorvete)
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 26 / 34
138. L.P.O. – Forward Chaining
Exemplo
Base:
É um crime para um compatriota vender armas a nações
hostis. Pitbulândia, um inimigo nosso, tem alguns mı́sseis, e
todos seus mı́sseis foram vendidos a eles por um
compatriota: Osmar
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 27 / 34
139. L.P.O. – Forward Chaining
Exemplo
Base:
É um crime para um compatriota vender armas a nações
hostis. Pitbulândia, um inimigo nosso, tem alguns mı́sseis, e
todos seus mı́sseis foram vendidos a eles por um
compatriota: Osmar
Osmar é criminoso?
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 27 / 34
140. L.P.O. – Forward Chaining
Exemplo
Base:
É um crime para um compatriota vender armas a nações
hostis. Pitbulândia, um inimigo nosso, tem alguns mı́sseis, e
todos seus mı́sseis foram vendidos a eles por um
compatriota: Osmar
Osmar é criminoso?
1. ∀x, y, z Compatriota(x) ∧ Vender(x, y, z) ∧ Arma(y) ∧ Hostil(z) ⇒ Criminoso(x)
Compatriota(x) ∧ Vender(x, y, z) ∧ Arma(y) ∧ Hostil(z) ⇒ Criminoso(x)
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 27 / 34
141. L.P.O. – Forward Chaining
Exemplo
Base:
É um crime para um compatriota vender armas a nações
hostis. Pitbulândia, um inimigo nosso, tem alguns mı́sseis, e
todos seus mı́sseis foram vendidos a eles por um
compatriota: Osmar
Osmar é criminoso?
1. ∀x, y, z Compatriota(x) ∧ Vender(x, y, z) ∧ Arma(y) ∧ Hostil(z) ⇒ Criminoso(x)
Compatriota(x) ∧ Vender(x, y, z) ∧ Arma(y) ∧ Hostil(z) ⇒ Criminoso(x)
2. Inimigo(Pit)
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 27 / 34
142. L.P.O. – Forward Chaining
Exemplo
Base:
É um crime para um compatriota vender armas a nações
hostis. Pitbulândia, um inimigo nosso, tem alguns mı́sseis, e
todos seus mı́sseis foram vendidos a eles por um
compatriota: Osmar
Osmar é criminoso?
1. ∀x, y, z Compatriota(x) ∧ Vender(x, y, z) ∧ Arma(y) ∧ Hostil(z) ⇒ Criminoso(x)
Compatriota(x) ∧ Vender(x, y, z) ∧ Arma(y) ∧ Hostil(z) ⇒ Criminoso(x)
2. Inimigo(Pit)
3. ∃x Mı́ssil(x) ∧ Ter(Pit, x)
Mı́ssil(M) ∧ Ter(Pit, M)
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 27 / 34
143. L.P.O. – Forward Chaining
Exemplo
Base:
É um crime para um compatriota vender armas a nações
hostis. Pitbulândia, um inimigo nosso, tem alguns mı́sseis, e
todos seus mı́sseis foram vendidos a eles por um
compatriota: Osmar
Osmar é criminoso?
4. ∀x Mı́ssil(x) ∧ Ter(Pit, x) ⇒ Vender(Os, x, Pit)
Mı́ssil(x) ∧ Ter(Pit, x) ⇒ Vender(Os, x, Pit)
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 28 / 34
144. L.P.O. – Forward Chaining
Exemplo
Base:
É um crime para um compatriota vender armas a nações
hostis. Pitbulândia, um inimigo nosso, tem alguns mı́sseis, e
todos seus mı́sseis foram vendidos a eles por um
compatriota: Osmar
Osmar é criminoso?
4. ∀x Mı́ssil(x) ∧ Ter(Pit, x) ⇒ Vender(Os, x, Pit)
Mı́ssil(x) ∧ Ter(Pit, x) ⇒ Vender(Os, x, Pit)
5. Mı́sseis são armas
∀x Mı́ssil(x) ⇒ Arma(x)
Mı́ssil(x) ⇒ Arma(x)
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 28 / 34
145. L.P.O. – Forward Chaining
Exemplo
Base:
É um crime para um compatriota vender armas a nações
hostis. Pitbulândia, um inimigo nosso, tem alguns mı́sseis, e
todos seus mı́sseis foram vendidos a eles por um
compatriota: Osmar
Osmar é criminoso?
4. ∀x Mı́ssil(x) ∧ Ter(Pit, x) ⇒ Vender(Os, x, Pit)
Mı́ssil(x) ∧ Ter(Pit, x) ⇒ Vender(Os, x, Pit)
5. Mı́sseis são armas
∀x Mı́ssil(x) ⇒ Arma(x)
Mı́ssil(x) ⇒ Arma(x)
Note que essa sentença não
está no texto → faz parte
do conhecimento comum
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 28 / 34
146. L.P.O. – Forward Chaining
Exemplo
Base:
É um crime para um compatriota vender armas a nações
hostis. Pitbulândia, um inimigo nosso, tem alguns mı́sseis, e
todos seus mı́sseis foram vendidos a eles por um
compatriota: Osmar
Osmar é criminoso?
6. Inimigos são hostis
∀x Inimigo(x) ⇒ Hostil(x)
Inimigo(x) ⇒ Hostil(x)
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 29 / 34
147. L.P.O. – Forward Chaining
Exemplo
Base:
É um crime para um compatriota vender armas a nações
hostis. Pitbulândia, um inimigo nosso, tem alguns mı́sseis, e
todos seus mı́sseis foram vendidos a eles por um
compatriota: Osmar
Osmar é criminoso?
6. Inimigos são hostis
∀x Inimigo(x) ⇒ Hostil(x)
Inimigo(x) ⇒ Hostil(x)
Mais conhecimento comum . . .
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 29 / 34
148. L.P.O. – Forward Chaining
Exemplo
Base:
É um crime para um compatriota vender armas a nações
hostis. Pitbulândia, um inimigo nosso, tem alguns mı́sseis, e
todos seus mı́sseis foram vendidos a eles por um
compatriota: Osmar
Osmar é criminoso?
6. Inimigos são hostis
∀x Inimigo(x) ⇒ Hostil(x)
Inimigo(x) ⇒ Hostil(x)
Mais conhecimento comum . . .
7. Compatriota(Os)
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 29 / 34
154. L.P.O. – Forward Chaining
Algoritmo
Função Forward-Chaining(BC,α): substituição
repita
novo ← {}
para cada sentença s em BC faça
(p1 ∧ . . . ∧ pn ⇒ q) ← PadronizaVar(s)
para cada θ tal que (p1 ∧ . . . ∧ pn) θ = (p0
1 ∧ . . . ∧ p0
n) θ para
algum p0
1, . . . , p0
n em BC faça
q0
← (q) θ
se q0
não se unificar a alguma sentença em BC ou novo então
Adicione q0
a novo
φ ← Unifica(q0
, α)
se φ não for falha então retorna φ
Adicione novo a BC
até que novo esteja vazio
retorna falso
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 31 / 34
155. L.P.O. – Forward Chaining
Algoritmo
Base de Conhecimento
Função Forward-Chaining(BC,α): substituição
repita
novo ← {}
para cada sentença s em BC faça
(p1 ∧ . . . ∧ pn ⇒ q) ← PadronizaVar(s)
para cada θ tal que (p1 ∧ . . . ∧ pn) θ = (p0
1 ∧ . . . ∧ p0
n) θ para
algum p0
1, . . . , p0
n em BC faça
q0
← (q) θ
se q0
não se unificar a alguma sentença em BC ou novo então
Adicione q0
a novo
φ ← Unifica(q0
, α)
se φ não for falha então retorna φ
Adicione novo a BC
até que novo esteja vazio
retorna falso
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 31 / 34
156. L.P.O. – Forward Chaining
Algoritmo
Query (sentença atômica)
Função Forward-Chaining(BC,α): substituição
repita
novo ← {}
para cada sentença s em BC faça
(p1 ∧ . . . ∧ pn ⇒ q) ← PadronizaVar(s)
para cada θ tal que (p1 ∧ . . . ∧ pn) θ = (p0
1 ∧ . . . ∧ p0
n) θ para
algum p0
1, . . . , p0
n em BC faça
q0
← (q) θ
se q0
não se unificar a alguma sentença em BC ou novo então
Adicione q0
a novo
φ ← Unifica(q0
, α)
se φ não for falha então retorna φ
Adicione novo a BC
até que novo esteja vazio
retorna falso
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 31 / 34
157. L.P.O. – Forward Chaining
Algoritmo
Conjunto de novas sentenças
inferidas a cada iteração
Função Forward-Chaining(BC,α): substituição
repita
novo ← {}
para cada sentença s em BC faça
(p1 ∧ . . . ∧ pn ⇒ q) ← PadronizaVar(s)
para cada θ tal que (p1 ∧ . . . ∧ pn) θ = (p0
1 ∧ . . . ∧ p0
n) θ para
algum p0
1, . . . , p0
n em BC faça
q0
← (q) θ
se q0
não se unificar a alguma sentença em BC ou novo então
Adicione q0
a novo
φ ← Unifica(q0
, α)
se φ não for falha então retorna φ
Adicione novo a BC
até que novo esteja vazio
retorna falso
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 31 / 34
158. L.P.O. – Forward Chaining
Algoritmo
PadronizaVar troca todas as
variáveis em seus argumentos
por variáveis ainda não usadas
Função Forward-Chaining(BC,α): substituição
repita
novo ← {}
para cada sentença s em BC faça
(p1 ∧ . . . ∧ pn ⇒ q) ← PadronizaVar(s)
para cada θ tal que (p1 ∧ . . . ∧ pn) θ = (p0
1 ∧ . . . ∧ p0
n) θ para
algum p0
1, . . . , p0
n em BC faça
q0
← (q) θ
se q0
não se unificar a alguma sentença em BC ou novo então
Adicione q0
a novo
φ ← Unifica(q0
, α)
se φ não for falha então retorna φ
Adicione novo a BC
até que novo esteja vazio
retorna falso
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 31 / 34
159. L.P.O. – Forward Chaining
Algoritmo
Começando dos fatos conhe-
cidos, ativa todas as regras
cujas premissas são satisfeitas
Função Forward-Chaining(BC,α): substituição
repita
novo ← {}
para cada sentença s em BC faça
(p1 ∧ . . . ∧ pn ⇒ q) ← PadronizaVar(s)
para cada θ tal que (p1 ∧ . . . ∧ pn) θ = (p0
1 ∧ . . . ∧ p0
n) θ para
algum p0
1, . . . , p0
n em BC faça
q0
← (q) θ
se q0
não se unificar a alguma sentença em BC ou novo então
Adicione q0
a novo
φ ← Unifica(q0
, α)
se φ não for falha então retorna φ
Adicione novo a BC
até que novo esteja vazio
retorna falso
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 31 / 34
160. L.P.O. – Forward Chaining
Algoritmo
Adicionando sua con-
clusão aos fatos conhecidos
Função Forward-Chaining(BC,α): substituição
repita
novo ← {}
para cada sentença s em BC faça
(p1 ∧ . . . ∧ pn ⇒ q) ← PadronizaVar(s)
para cada θ tal que (p1 ∧ . . . ∧ pn) θ = (p0
1 ∧ . . . ∧ p0
n) θ para
algum p0
1, . . . , p0
n em BC faça
q0
← (q) θ
se q0
não se unificar a alguma sentença em BC ou novo então
Adicione q0
a novo
φ ← Unifica(q0
, α)
se φ não for falha então retorna φ
Adicione novo a BC
até que novo esteja vazio
retorna falso
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 31 / 34
161. L.P.O. – Forward Chaining
Algoritmo
Mas somente se o fato for desco-
nhecido → se não é apenas uma
renomeação de um conhecido
Função Forward-Chaining(BC,α): substituição
repita
novo ← {}
para cada sentença s em BC faça
(p1 ∧ . . . ∧ pn ⇒ q) ← PadronizaVar(s)
para cada θ tal que (p1 ∧ . . . ∧ pn) θ = (p0
1 ∧ . . . ∧ p0
n) θ para
algum p0
1, . . . , p0
n em BC faça
q0
← (q) θ
se q0
não se unificar a alguma sentença em BC ou novo então
Adicione q0
a novo
φ ← Unifica(q0
, α)
se φ não for falha então retorna φ
Adicione novo a BC
até que novo esteja vazio
retorna falso
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 31 / 34
162. L.P.O. – Forward Chaining
Algoritmo
Uma sentença é uma re-
nomeação de outra se
forem idênticas exceto
pelo nome das variáveis
Função Forward-Chaining(BC,α): substituição
repita
novo ← {}
para cada sentença s em BC faça
(p1 ∧ . . . ∧ pn ⇒ q) ← PadronizaVar(s)
para cada θ tal que (p1 ∧ . . . ∧ pn) θ = (p0
1 ∧ . . . ∧ p0
n) θ para
algum p0
1, . . . , p0
n em BC faça
q0
← (q) θ
se q0
não se unificar a alguma sentença em BC ou novo então
Adicione q0
a novo
φ ← Unifica(q0
, α)
se φ não for falha então retorna φ
Adicione novo a BC
até que novo esteja vazio
retorna falso
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 31 / 34
163. L.P.O. – Forward Chaining
Algoritmo
O processo repete até que a
query seja respondida ou nenhum
fato extra possa ser adicionado
Função Forward-Chaining(BC,α): substituição
repita
novo ← {}
para cada sentença s em BC faça
(p1 ∧ . . . ∧ pn ⇒ q) ← PadronizaVar(s)
para cada θ tal que (p1 ∧ . . . ∧ pn) θ = (p0
1 ∧ . . . ∧ p0
n) θ para
algum p0
1, . . . , p0
n em BC faça
q0
← (q) θ
se q0
não se unificar a alguma sentença em BC ou novo então
Adicione q0
a novo
φ ← Unifica(q0
, α)
se φ não for falha então retorna φ
Adicione novo a BC
até que novo esteja vazio
retorna falso
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 31 / 34
164. L.P.O. – Forward Chaining
Algoritmo: Problemas
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 32 / 34
165. L.P.O. – Forward Chaining
Algoritmo: Problemas
Busca todos os unificadores possı́veis θ
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 32 / 34
166. L.P.O. – Forward Chaining
Algoritmo: Problemas
Busca todos os unificadores possı́veis θ
É problema se para cada variável houver várias constantes
que possam ser substituı́das
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 32 / 34
167. L.P.O. – Forward Chaining
Algoritmo: Problemas
Busca todos os unificadores possı́veis θ
É problema se para cada variável houver várias constantes
que possam ser substituı́das
Solução: Olhe primeiro a variável que tem menos
substituições possı́veis (variável com mais restrições – PSR)
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 32 / 34
168. L.P.O. – Forward Chaining
Algoritmo: Problemas
Busca todos os unificadores possı́veis θ
É problema se para cada variável houver várias constantes
que possam ser substituı́das
Solução: Olhe primeiro a variável que tem menos
substituições possı́veis (variável com mais restrições – PSR)
A cada iteração, verifica cada regra novamente
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 32 / 34
169. L.P.O. – Forward Chaining
Algoritmo: Problemas
Busca todos os unificadores possı́veis θ
É problema se para cada variável houver várias constantes
que possam ser substituı́das
Solução: Olhe primeiro a variável que tem menos
substituições possı́veis (variável com mais restrições – PSR)
A cada iteração, verifica cada regra novamente
Mesmo que poucas adições tenham sido feitas à base em
cada iteração
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 32 / 34
170. L.P.O. – Forward Chaining
Algoritmo: Problemas
Busca todos os unificadores possı́veis θ
É problema se para cada variável houver várias constantes
que possam ser substituı́das
Solução: Olhe primeiro a variável que tem menos
substituições possı́veis (variável com mais restrições – PSR)
A cada iteração, verifica cada regra novamente
Mesmo que poucas adições tenham sido feitas à base em
cada iteração
Todo fato novo inferido na iteração t deveria ser derivado de
pelo menos um fato novo inferido na t − 1
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 32 / 34
171. L.P.O. – Forward Chaining
Algoritmo: Problemas
Isso porque toda inferência que não necessita de um fato
novo da iteração t − 1 poderia ter sido feita em iterações
anteriores
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 33 / 34
172. L.P.O. – Forward Chaining
Algoritmo: Problemas
Isso porque toda inferência que não necessita de um fato
novo da iteração t − 1 poderia ter sido feita em iterações
anteriores
Solução: forward chaining incremental
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 33 / 34
173. L.P.O. – Forward Chaining
Algoritmo: Problemas
Isso porque toda inferência que não necessita de um fato
novo da iteração t − 1 poderia ter sido feita em iterações
anteriores
Solução: forward chaining incremental
Na iteração t, verificamos uma regra somente se sua premissa incluir
um pi que se unifica com um fato p0
i recém inferido na iteração t − 1
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 33 / 34
174. L.P.O. – Forward Chaining
Algoritmo: Problemas
Isso porque toda inferência que não necessita de um fato
novo da iteração t − 1 poderia ter sido feita em iterações
anteriores
Solução: forward chaining incremental
Na iteração t, verificamos uma regra somente se sua premissa incluir
um pi que se unifica com um fato p0
i recém inferido na iteração t − 1
Ou seja, case toda regra cuja premissa contiver um literal recém
adicionado, permitindo, no entanto, que os demais componentes
casem com fatos de iterações anteriores
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 33 / 34
175. L.P.O. – Forward Chaining
Algoritmo: Problemas
Isso porque toda inferência que não necessita de um fato
novo da iteração t − 1 poderia ter sido feita em iterações
anteriores
Solução: forward chaining incremental
Na iteração t, verificamos uma regra somente se sua premissa incluir
um pi que se unifica com um fato p0
i recém inferido na iteração t − 1
Ou seja, case toda regra cuja premissa contiver um literal recém
adicionado, permitindo, no entanto, que os demais componentes
casem com fatos de iterações anteriores
Pode gerar muitos fatos irrelevantes ao objetivo
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 33 / 34
176. L.P.O. – Forward Chaining
Algoritmo: Problemas
Isso porque toda inferência que não necessita de um fato
novo da iteração t − 1 poderia ter sido feita em iterações
anteriores
Solução: forward chaining incremental
Na iteração t, verificamos uma regra somente se sua premissa incluir
um pi que se unifica com um fato p0
i recém inferido na iteração t − 1
Ou seja, case toda regra cuja premissa contiver um literal recém
adicionado, permitindo, no entanto, que os demais componentes
casem com fatos de iterações anteriores
Pode gerar muitos fatos irrelevantes ao objetivo
Solução: Use backward chaining
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 33 / 34
177. Referências
Russell, S.; Norvig P. (2010): Artificial Intelligence: A Modern Approach. Prentice
Hall. 3a ed.
Slides do livro: http://aima.eecs.berkeley.edu/slides-pdf/
Hiż, A. (1957): Inferential Equivalence and Natural Deduction. The Journal of
Symbolic Logic, 22(3). pp. 237-240.
http://ocw.mit.edu/OcwWeb/Electrical-Engineering-
and-Computer-Science/6-034Spring-2005/LectureNotes/index.htm
http://jmvidal.cse.sc.edu/talks/learningrules/first-orderlogicsdefs.xml
https:
//www.sciencedirect.com/topics/computer-science/unification-algorithm
http://logic.stanford.edu/intrologic/secondary/notes/chapter_12.html
Norton Trevisan Roman(norton@usp.br) 9 de abril de 2019 34 / 34