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

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

Inteligência Artificial: A Linguagem Prolog (parte 2)

Apresentações semelhantes


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

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

2 A Linguagem Prolog LÓGICA E PROLOG
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) 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 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 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 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 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 A Linguagem Prolog RETROCESSO (BACKTRACKING)
1º sub_objetivo 2º sub_objetivo 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.

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

9 A Linguagem Prolog RECURSÃO
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.

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: X come Y diretamente. X come algum animal que come algum animal que come algum animal ... que come Y.

11 A Linguagem Prolog RECURSÃO
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).

12 A Linguagem Prolog RECURSÃO
?- na_cadeia_alimentar(urso,Y). resposta: peixe quati raposa cavalo peixinho alga coelho mato

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

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 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 A Linguagem Prolog LISTAS

17 A Linguagem Prolog EXERCÍCIO: UNIFIQUE AS LISTAS ABAIXO
UNIFICAÇÃ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]]

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 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)"

Apresentações semelhantes


Anúncios Google