A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Inteligência Artificial: A Linguagem Prolog (parte 2) Prof. Elaini Simoni Angelotti

Apresentações semelhantes


Apresentação em tema: "Inteligência Artificial: A Linguagem Prolog (parte 2) Prof. Elaini Simoni Angelotti"— Transcrição da apresentação:

1 Inteligência Artificial: A Linguagem Prolog (parte 2) Prof. Elaini Simoni Angelotti

2 2 A Linguagem Prolog LÓGICA E PROLOG Observe que a regra Observe que a regra presa(X) :- come(Y,X), animal(X) Em lógica corresponde a: x y(come(Y,X) ^ animal(X)) -> presa(X) x y(come(Y,X) ^ animal(X)) -> presa(X) Aplicando as Leis de Equivalência temos: ~(come(X,Y) ^ animal(X)) v presa(X) ~come(X,Y) v ~animal(X) v presa(X)

3 3 A Linguagem Prolog REGRA DE INFERÊNCIA: RESOLUÇÃO Outro exemplo: acrescentando à BC a regra: x é caçado se é presa caçado(X) :- presa(X). a regra na forma simbólica é: presa(X) -> caçado(X) a cláusula correspondente é: ~(presa(X)) v caçado(X)

4 4 A Linguagem Prolog EXEMPLO 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). caçado(X) :- presa(X).

5 5 A Linguagem Prolog EXEMPLO DE PROGRAMA E CONSULTAS Consultas e respostas: ?- animal(coelho). yes ?- come(gato_selvagem,mato). no ?- come(X,peixe). urso; quati. ?- come(X,Y),planta(Y). peixinho alga; coelho mato; cavalo mato.

6 6 A Linguagem Prolog RETROCESSO (BACKTRACKING) O PROLOG tenta responder a uma questão comparando a questão com os fatos na BC. O Prolog tenta encontrar os predicados que se unificam. Se uma procura falha, o backtracking permite que se volte ao último momento onde se instanciou uma variável, procurando se existe outra possibilidade de instanciação. Exemplo: gosta(maria, comida). gosta(maria, vinho). gosta(joão, vinho). gosta(joão, maria). ?- gosta(maria, X), gosta(joão, X).

7 7 A Linguagem Prolog RETROCESSO (BACKTRACKING) gosta(maria, X), gosta(joão, X). gosta(maria, comida). gosta(maria, vinho). gosta(joão, vinho). gosta(joão, maria). X = comida Será procurado: gosta(joão, comida). A procura falha!! O valor instanciado na variável X (neste caso, comida) é esquecido e o Prolog procura um outro valor para a X. 1º sub_objetivo 2º sub_objetivo

8 8 A Linguagem Prolog RETROCESSO (BACKTRACKING) gosta(maria, X), gosta(joão, X). gosta(maria, comida). gosta(maria, vinho). gosta(joão, vinho). gosta(joão, maria). X = vinho 1º sub_objetivo 2º sub_objetivo

9 9 As regras em Prolog são implicações lógicas Podem 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 Uma das principais características herdadas da lógica pela linguagem Prolog é o uso da RECURSÃO. A Linguagem Prolog RECURSÃO

10 10 A Linguagem Prolog RECURSÃO Exemplo: usar a BC 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 diretamente. 2. X come algum animal que come algum animal que come algum animal... que come Y.

11 11 A Linguagem Prolog RECURSÃO O caso 2. pode ser reescrito como: X come Z e Y está na cadeia alimentar de Z 1. O caso 1. é o ponto de parada da regra recursiva. 12 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).

12 12 A Linguagem Prolog RECURSÃO ?- na_cadeia_alimentar(urso,Y). resposta: 1. peixe 2. quati 3. raposa 4. cavalo 5. peixinho 6. alga 7. peixe 8. peixinho 9. alga 10. coelho 11. mato 12. mato

13 13 A Linguagem Prolog RECURSÃO antepassado(X,Z):-progenitor(X,Z). antepassado(X,Z):-progenitor(X,Y), antepassado(Y,Z).

14 14 A Linguagem Prolog LISTAS São estruturas simples de dados, largamente empregadas em computação não-numérica. Uma lista é uma seqüência de qualquer número de intens. Ex: [ brasil, paraguai, uruguai, argentina] Para representar listas em Prolog, dois casos devem ser considerados: a lista vazia, representada por [ ]. A lista não-vazia. Ex: [maria, jorge, bete]

15 15 A Linguagem Prolog LISTAS A lista não-vazia possui dois componentes: CABEÇA e CAUDA. [brasil, paraguai, uruguai] CABEÇA = brasil CAUDA = [paraguai, uruguai] A cabeça de uma lista pode ser separada de sua cauda com o uso |. Usando-se a lista [Cabeça|Cauda] e unificando essa lista com outra lista qualquer, a cabeça ficará com o 1º elemento da lista e a cauda ficará com o resto da lista.

16 16 A Linguagem Prolog LISTAS

17 17 A Linguagem Prolog EXERCÍCIO: UNIFIQUE AS LISTAS ABAIXO LISTA 1LISTA2UNIFICAÇÃO [[a,b]|Y][H|T] [a,b][X,Y|Z] [[a,b],[c,d]][X,Y] [a][X|Y] [[Ana,Y]|Z][[X,foi],[ao_cinema]] [data(7,W,1993), hoje][data(7,X,Y),Z] [a,b,c,d][X,Y,Z] [X|[Y|Z]][a,b,c,d]

18 18 A Linguagem Prolog EXEMPLO USANDO LISTA E RECURSÃO Um programa em Prolog que retorna o último elemento de uma lista: ultimo([A],A). ultimo([Z|B],A):- ultimo(B,A).

19 19 A Linguagem Prolog DECLARAÇÃO IS Para realizar cálculos aritméticos em Prolog, usamos a declaração IS. Essa declaração deve ser colocada entre dois objetos: o 1º é uma variável e o segundo uma expressão aritmética. Exemplo: X is * 9 / 4 A parte decimal do número é separada da parte inteira por um ponto (.) e não por uma vírgula (,). Ex: 13.23


Carregar ppt "Inteligência Artificial: A Linguagem Prolog (parte 2) Prof. Elaini Simoni Angelotti"

Apresentações semelhantes


Anúncios Google