Inferência
description
Transcript of Inferência
Inferência
2
A Linguagem PrologFATOSOs fatos permitem definir os predicados:
- Exemplo: um sistema ecológico para especificar a cadeia alimentar
come (urso, peixe)come (urso, raposa) % predicado bináriocome (cavalo, mato)animal (urso)animal (peixe) % predicado unárioanimal (raposa)
3
A Linguagem PrologCONSULTASDe posse do programa Prolog (base de dados ,
podemos fazer consultas .
Exemplos: ? come (cavalo, mato) Resposta: yes
? come (urso, coelho) Resposta: no
? come (urso, X) Resposta: peixe
coelho
4
A Linguagem PrologREGRAS
Uma regra é a descrição de um predicado através de uma implicação
Exemplo: “um animal é presa se é comido por outro animal”.
come(Y,X) ^ animal(X) -> presa(X)
em Prolog:
presa(X) :- come(Y,X), animal(X)
5
A Linguagem PrologREGRAS e CONSULTAS
Acrescentando a nova regra à BD podemos fazer novo tipo de consulta
come (urso, peixe)come (urso, raposa) % predicado bináriocome (cavalo, mato)animal (urso)animal (peixe) % predicado unárioanimal (raposa)
presa(X) :- come(Y,X), animal(X) % regra
?-presa(x) resposta: peixe e raposa
6
A Linguagem PrologREGRA DE INFERÊNCIA: RESOLUÇÃO
As regras e os fatos de um programa prolog correspondem à fórmulas de 1a ordem transformada em Cláusulas de Horn.
Prolog trata as regras como sendo quantificadas universalmente
A regra de inferência usada pelo interpretador prolog é a regra da resolução.Como foi obtida a resposta do exemplo anterior?
7
A Linguagem PrologREGRA DE INFERÊNCIA: RESOLUÇÃO
Observe que a regra (Cláusula de Horn)presa(X) :- come(Y,X), animal(X)
Corresponde a wffxy(come(Y,X) ^ animal(X)) -> presa(X)
Corresponde a cláusula~(come(X,Y) ^ animal(X)) v presa(x) ~come(X,Y) v ~animal(X) v presa(x)
8
A Linguagem PrologREGRA DE INFERÊNCIA: RESOLUÇÃO
Regra da resolução : Duas cláusulas de Horn são resolvidas em uma nova cláusula se uma delas contiver um predicado negado que corresponda a um predicado não-negado na outra cláusula. A nova cláusula elimina o termo de correspondência e fica disponível para uso em resposta a pergunta.As variáveis são substituídas por constantes associadas de maneira consistente
9
A Linguagem PrologREGRA DE INFERÊNCIA: RESOLUÇÃO
? presa(X)
O Prolog procura, na BD, por uma regra com o predicado presa(X) como o conseqüente
Busca outras cláusulas que possam ser resolvidas com a regra
Faz as substituições das variáveis na cláusula regra
1. ~come(X,Y) v ~animal(X) v presa(X) 2. come(urso,peixe)3. ~animal(peixe) v presa(peixe) {resolvente de 1 e 2}4. animal (peixe)5. presa (peixe) {resolvente de 3 e 4}
Refaz o processo procurando na BD outra cláusula a resolver com a cláusula da regra.Encontrará come(urso,peixe)
10
A Linguagem PrologREGRA DE INFERÊNCIA: RESOLUÇÃO
Outro exemplo: acrescentando à BD a regra: “x é caçado se é presa”caçado(X) :- presa(X)
Como é feita a consulta que segue? ? caçado(X)
a regra na forma simbólica é:presa(X) -> caçado(X)
a cláusula correspondente é:~(presa(X) v caçado(X)
essa cláusula é resolvida com a da regra de definição de presa e seguindo a resolução obtém as respostas:
peixe raposa
11
A Linguagem PrologEXEMPLO DE PROGRAMA E CONSULTAS
come (urso, peixe)come (peixe,peixinho)come (peixinho,alga)come (quati,peixe)come(urso,quati)come (urso, raposa)come(raposa,coelho)come (coelho, mato)come(urso,cavalo)come(cavalo,mato)come(gato-selvagem,cavalo)
animal(urso)animal(peixe)animal(peixinho)
animal(quati)animal(raposa)animal(coelho) animal(cavalo)animal(gato-selvagem)
planta(mato)planta(alga)
presa(X) :- come(Y,X),
animal(X)
12
A Linguagem PrologEXEMPLO DE PROGRAMA E CONSULTAS
Consultas e respostas:
? animal(coelho)yes
? come(gato-selvagem,mato)no
? come(X,peixe)ursoquati
? come(X,Y),planta(Y)peixinho algacoelho matocavalo mato
13
A Linguagem PrologEXEMPLO DE PROGRAMA E CONSULTAS
Consultas e respostas (continuação):
? presa(X)peixe
peixinhopeixequatiraposacoelhocavalocavalo
14
A Linguagem PrologRECURSÃO
As regras em Prolog são implicações lógicasPodem depender de fatos:
presa(X) :- come(X,Y),animal(X) Podem depender de outras regras:
caçado(X) :- presa(X)Podem depender da própria regra: com
definição recursiva
15
A Linguagem PrologRECURSÃO
Exemplo: usar a BD ecológica para definir a relação
na-cadeia-alimentar(X,Y)
com o significado: ”Y está na cadeia alimentar de X”
que por sua vez pode significar duas coisas:1. X come Y diretamente2. X come algum animal que come algum animal
que come algum animal ... que come Y
16
A Linguagem PrologRECURSÃO (exemplo)
O caso 2. pode ser reescrito como:2’. “X come Z e Y está na cadeia alimentar de Z”
O caso 1. é o ponto de parada da regra recursiva
A regra incorpora os casos 1 e 2’:na_cadeia_alimentar(X,Y) :- come(X,Y)na_cadeia_alimentar(X,Y) :- come(X,Z),
na_cadeia_alimentar(Z,Y)
17
A Linguagem PrologRECURSÃO (exemplo)
? na_cadeia_alimentar(urso,Y)
resposta:1. peixe2. quati3. raposa4. cavalo5. peixinho6. alga7. peixe8. peixinho9. alga10. coelho11. mato12. mato
18
A Linguagem PrologRECURSÃO (exemplo)
urso peixeurso quatiurso raposaurso cavalourso peixe
peixe peixinho
peixinho alga