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

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

Introdução à Linguagem Prolog Prof. Fabrício Enembreck PPGIA – Programa de Pós Graduação em Informática Aplicada.

Apresentações semelhantes


Apresentação em tema: "Introdução à Linguagem Prolog Prof. Fabrício Enembreck PPGIA – Programa de Pós Graduação em Informática Aplicada."— Transcrição da apresentação:

1 Introdução à Linguagem Prolog Prof. Fabrício Enembreck PPGIA – Programa de Pós Graduação em Informática Aplicada

2 Conteúdo do Curso Introdução à Lógica e à Programação Lógica Introdução ao Prolog e ao SWI-Prolog Matching e Backtraking Múltiplas soluções Listas e predicados recursivos Grafos em Prolog

3 Matching e Backtraking Backtraking –Procedimento que permite ao Prolog ser não determinístico –Trabalhando com cláusulas unitárias (fatos) p(a). p(b). p(c). r(d). r(e). ?- p(X). X = a ; X = b ; X = c ; no ?- p(X), r(Y). X = a Y = d ; X = a Y = e ; X = b Y = d ; X = b Y = e ; X = c Y = d ; X = c Y = e ; no

4 Matching e Backtraking (cont.) Backtraking –Trabalhando com regras p(a). p(b). p(c). p(X,Y) :- p(X), r(Y). r(d). r(e). ?- p(X, Y). X = a Y = d ; X = a Y = e ; X = b Y = d ; X = b Y = e ; X = c Y = d ; X = c Y = e ; no

5 Matching e Backtraking (cont.) Evitando o Backtraking com o cut: ! p(a). p(b). p(c). p(X,Y) :- p(X), r(Y). r(d). r(e). ?- p(X, Y),!. ?- p(X),r(Y),!. ?- p(X),!,r(Y).

6 Matching e Backtraking (cont.) Exemplo com o cut: Implementando o maior/3 com apenas uma comparação maior(X,Y,X) :- X > Y. maior(X,Y,Y) :- Y >= X. maior(X,Y,X) :- X > Y, !. maior(_,Y,Y). Variável anônima

7 Matching e Backtraking (cont.) Tipos de cut: maior(X,Y,X) :- X > Y, !. maior(X,Y,Y) :- Y >= X. maior(X,Y,X) :- X > Y, !. maior(_,Y,Y). Variável livre Cut Verde Cut Vermelho Utilizado apenas para otimizar a performance Modifica a semântica do programa

8 Matching e Backtraking (cont.) Provocando o Backtraking com o fail Todo predicado utilizando o comando fail sempre falhará p(a). p(b). p(c). p(X,Y) :- p(X), r(Y). r(d). r(e). ?- p(X),r(Y), fail. no

9 Matching e Backtraking (cont.) Exemplo do fail p(a). p(b) :- !. p(c). p(X,Y) :- p(X), r(Y). r(d). r(e). q(X, Y) :- p(X),r(Y), write(X),tab(1), write(Y),nl, fail. ?- q(X,Y). a d a e b d b e no

10 Matching e Backtraking (cont.) Usando Negação como Falha Implemente um predicado Prolog chamado not que recebe um outro predicado P e é verdade P é falso e falso se P é verdade: not(P) :- P, !, fail. not(_).

11 Exercícios A partir da base de fatos, encontre a solução para os questionamentos p(a). p(b). p(c). p(X,Y) :- p(X), r(Y), q(X). r(a). r(e) :- !. r(f). q(a). q(b). ?- p(X), r(Y). ?- p(X),r(Y),q(Z). ?- p(X),!,r(Y),q(Z). ?- !,p(X),!,r(Y),q(Z). ?- p(X,Y),!.

12 Exercícios A partir da base de fatos, escreva um programa Prolog usando o princípio da negação como falha para denotar a seguinte relação: Ana gosta de todos os animais menos macaco animal(onca). animal(papagaio). animal(macaco). animal(cachorro). animal(gato).


Carregar ppt "Introdução à Linguagem Prolog Prof. Fabrício Enembreck PPGIA – Programa de Pós Graduação em Informática Aplicada."

Apresentações semelhantes


Anúncios Google