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

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

Introdução à Linguagem Prolog

Apresentações semelhantes


Apresentação em tema: "Introdução à Linguagem Prolog"— 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
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.)
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),!,r(Y). ?- p(X, 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: Cut Verde Cut Vermelho maior(X,Y,X) :- X > Y, !. maior(X,Y,Y) :- Y >= X. maior(X,Y,X) :- X > Y, !. maior(_,Y,Y). Variável livre 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(X),r(Y), fail. no p(a). p(b). p(c). p(X,Y) :- p(X), r(Y). r(d). r(e).

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"

Apresentações semelhantes


Anúncios Google