Inferência

18
Inferência

description

Inferência. A Linguagem Prolog FATOS. Os fatos permitem definir os predicados: - Exemplo: um sistema ecológico para especificar a cadeia alimentar come (urso, peixe) come (urso, raposa)% predicado binário come (cavalo, mato) animal (urso) - PowerPoint PPT Presentation

Transcript of Inferência

Page 1: Inferência

Inferência

Page 2: 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)

Page 3: Inferência

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

Page 4: Inferência

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)

Page 5: Inferência

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

Page 6: Inferência

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?

Page 7: Inferência

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)

Page 8: Inferência

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

Page 9: Inferência

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)

Page 10: Inferência

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

Page 11: Inferência

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)

Page 12: Inferência

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

Page 13: Inferência

13

A Linguagem PrologEXEMPLO DE PROGRAMA E CONSULTAS

Consultas e respostas (continuação):

? presa(X)peixe

peixinhopeixequatiraposacoelhocavalocavalo

Page 14: Inferência

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

Page 15: Inferência

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

Page 16: Inferência

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)

Page 17: Inferência

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

Page 18: Inferência

18

A Linguagem PrologRECURSÃO (exemplo)

urso peixeurso quatiurso raposaurso cavalourso peixe

peixe peixinho

peixinho alga