PL-3 Ivan Sendin Programa˘c~ao L ogica Aula 3sendin/Cursos/PL/2S2019/aula3.pdf · 2019. 8. 19. ·...

34
PL-3 Ivan Sendin Aula passada Backtracking Regras Programa¸ aoL´ogica Aula 3 Ivan Sendin FACOM - Universidade Federal de Uberlˆ andia [email protected],[email protected] 19 de agosto de 2019

Transcript of PL-3 Ivan Sendin Programa˘c~ao L ogica Aula 3sendin/Cursos/PL/2S2019/aula3.pdf · 2019. 8. 19. ·...

Page 1: PL-3 Ivan Sendin Programa˘c~ao L ogica Aula 3sendin/Cursos/PL/2S2019/aula3.pdf · 2019. 8. 19. · PL-3 Ivan Sendin Aula passada Backtracking Regras Programa˘c~ao L ogica Aula 3

PL-3

Ivan Sendin

Aula passada

Backtracking

Regras

Programacao Logica

Aula 3

Ivan Sendin

FACOM - Universidade Federal de [email protected],[email protected]

19 de agosto de 2019

Page 2: PL-3 Ivan Sendin Programa˘c~ao L ogica Aula 3sendin/Cursos/PL/2S2019/aula3.pdf · 2019. 8. 19. · PL-3 Ivan Sendin Aula passada Backtracking Regras Programa˘c~ao L ogica Aula 3

PL-3

Ivan Sendin

Aula passada

Backtracking

Regras gplc/Linux

Ola Mundo

fatos e consultas

Conjuncoes

Page 3: PL-3 Ivan Sendin Programa˘c~ao L ogica Aula 3sendin/Cursos/PL/2S2019/aula3.pdf · 2019. 8. 19. · PL-3 Ivan Sendin Aula passada Backtracking Regras Programa˘c~ao L ogica Aula 3

PL-3

Ivan Sendin

Aula passada

Backtracking

RegrasCodificacao

(Escrever um texto e salvar .pl)

Compilar gplc

(Avisos! Normalmente deverıamos dar atencao...)

Execucao/Perguntas

Page 4: PL-3 Ivan Sendin Programa˘c~ao L ogica Aula 3sendin/Cursos/PL/2S2019/aula3.pdf · 2019. 8. 19. · PL-3 Ivan Sendin Aula passada Backtracking Regras Programa˘c~ao L ogica Aula 3

PL-3

Ivan Sendin

Aula passada

Backtracking

Regras

Programa Prolog

Especificacao de fatos;

Definicao de regras;

Perguntas.

Page 5: PL-3 Ivan Sendin Programa˘c~ao L ogica Aula 3sendin/Cursos/PL/2S2019/aula3.pdf · 2019. 8. 19. · PL-3 Ivan Sendin Aula passada Backtracking Regras Programa˘c~ao L ogica Aula 3

PL-3

Ivan Sendin

Aula passada

Backtracking

Regras

Fatos

Iniciam com letras minusculas

relacao e objetos, separados por vırgulas

O ponto (.) finaliza um fato

Page 6: PL-3 Ivan Sendin Programa˘c~ao L ogica Aula 3sendin/Cursos/PL/2S2019/aula3.pdf · 2019. 8. 19. · PL-3 Ivan Sendin Aula passada Backtracking Regras Programa˘c~ao L ogica Aula 3

PL-3

Ivan Sendin

Aula passada

Backtracking

Regras

Perguntas

?−mesma ”cara”1 de um fato

Isso e um fato?

Conjuncoes

1sintaxe...

Page 7: PL-3 Ivan Sendin Programa˘c~ao L ogica Aula 3sendin/Cursos/PL/2S2019/aula3.pdf · 2019. 8. 19. · PL-3 Ivan Sendin Aula passada Backtracking Regras Programa˘c~ao L ogica Aula 3

PL-3

Ivan Sendin

Aula passada

Backtracking

Regras

Variaveis

Iniciam com letra maiuscula

Nao/Inicializada

Page 8: PL-3 Ivan Sendin Programa˘c~ao L ogica Aula 3sendin/Cursos/PL/2S2019/aula3.pdf · 2019. 8. 19. · PL-3 Ivan Sendin Aula passada Backtracking Regras Programa˘c~ao L ogica Aula 3

PL-3

Ivan Sendin

Aula passada

Backtracking

Regras

Backtracking

John e Mary...gostam de alguma coisa em comum?

likes(mary,chocolate).

likes(mary,wine).

likes(john,wine).

likes(john,mary).

| ?- likes(john,X),likes(mary,X).

O Prolog percorre os fatos likes ate conseguirinstanciar X (X = wine);

Agora o Prolog percorre os fatos procurando pormary/wine;

O prolog volta para o primeiro fato e continua abusca...

(X = mary)

Page 9: PL-3 Ivan Sendin Programa˘c~ao L ogica Aula 3sendin/Cursos/PL/2S2019/aula3.pdf · 2019. 8. 19. · PL-3 Ivan Sendin Aula passada Backtracking Regras Programa˘c~ao L ogica Aula 3

PL-3

Ivan Sendin

Aula passada

Backtracking

Regras

Regras

Definem uma associacao/dependencias entre fatos

Page 10: PL-3 Ivan Sendin Programa˘c~ao L ogica Aula 3sendin/Cursos/PL/2S2019/aula3.pdf · 2019. 8. 19. · PL-3 Ivan Sendin Aula passada Backtracking Regras Programa˘c~ao L ogica Aula 3

PL-3

Ivan Sendin

Aula passada

Backtracking

Regras

tem(papagaio,penas).

tem(galinha,penas).

tem(urubu,penas).

eh_animal(papagaio).

eh_animal(galinha).

eh_animal(urubu)

eh_ave(papgaio).

eh_ave(galinha).

eh_ave(urubu).

Page 11: PL-3 Ivan Sendin Programa˘c~ao L ogica Aula 3sendin/Cursos/PL/2S2019/aula3.pdf · 2019. 8. 19. · PL-3 Ivan Sendin Aula passada Backtracking Regras Programa˘c~ao L ogica Aula 3

PL-3

Ivan Sendin

Aula passada

Backtracking

Regras

tem(papagaio,penas).

tem(galinha,penas).

tem(urubu,penas).

tem(gato,pelos).

eh_animal(papagaio).

eh_animal(galinha).

eh_animal(urubu).

eh_animal(gato).

eh_ave(X) :- eh_animal(X),tem(X,penas).

: −“Se”X e ave SE X e animal e X tem penas

Page 12: PL-3 Ivan Sendin Programa˘c~ao L ogica Aula 3sendin/Cursos/PL/2S2019/aula3.pdf · 2019. 8. 19. · PL-3 Ivan Sendin Aula passada Backtracking Regras Programa˘c~ao L ogica Aula 3

PL-3

Ivan Sendin

Aula passada

Backtracking

Regras | ?- eh_ave(papagaio).

yes

| ?- eh_ave(gato).

no

Page 13: PL-3 Ivan Sendin Programa˘c~ao L ogica Aula 3sendin/Cursos/PL/2S2019/aula3.pdf · 2019. 8. 19. · PL-3 Ivan Sendin Aula passada Backtracking Regras Programa˘c~ao L ogica Aula 3

PL-3

Ivan Sendin

Aula passada

Backtracking

Regras

Regras

Vamos dizer que:

John gosta de qualquer pessoa que gosta de vinho;

John gosta de qualquer coisa que gosta de vinho;

John gosta de X se X gosta de vinho.

Page 14: PL-3 Ivan Sendin Programa˘c~ao L ogica Aula 3sendin/Cursos/PL/2S2019/aula3.pdf · 2019. 8. 19. · PL-3 Ivan Sendin Aula passada Backtracking Regras Programa˘c~ao L ogica Aula 3

PL-3

Ivan Sendin

Aula passada

Backtracking

Regras

likes(john,X) :- likes(X,wine).

Page 15: PL-3 Ivan Sendin Programa˘c~ao L ogica Aula 3sendin/Cursos/PL/2S2019/aula3.pdf · 2019. 8. 19. · PL-3 Ivan Sendin Aula passada Backtracking Regras Programa˘c~ao L ogica Aula 3

PL-3

Ivan Sendin

Aula passada

Backtracking

Regras

likes(john,mary).

likes(john,rock).

likes(paul,mary).

likes(penny,wine).

likes(john,X) :- likes(X,wine).

Page 16: PL-3 Ivan Sendin Programa˘c~ao L ogica Aula 3sendin/Cursos/PL/2S2019/aula3.pdf · 2019. 8. 19. · PL-3 Ivan Sendin Aula passada Backtracking Regras Programa˘c~ao L ogica Aula 3

PL-3

Ivan Sendin

Aula passada

Backtracking

Regras

| ?- likes(john,penny).

yes

| ?- likes(john,paul).

no

| ?- likes(john,mary).

true ?

yes

Page 17: PL-3 Ivan Sendin Programa˘c~ao L ogica Aula 3sendin/Cursos/PL/2S2019/aula3.pdf · 2019. 8. 19. · PL-3 Ivan Sendin Aula passada Backtracking Regras Programa˘c~ao L ogica Aula 3

PL-3

Ivan Sendin

Aula passada

Backtracking

Regras

| ?- likes(john,X).

X = mary ? ;

X = rock ? ;

X = penny ? ;

no

| ?-

Page 18: PL-3 Ivan Sendin Programa˘c~ao L ogica Aula 3sendin/Cursos/PL/2S2019/aula3.pdf · 2019. 8. 19. · PL-3 Ivan Sendin Aula passada Backtracking Regras Programa˘c~ao L ogica Aula 3

PL-3

Ivan Sendin

Aula passada

Backtracking

Regras

O que significam estas regras?

likes(john,X) :- likes(X,wine),likes(X,food).

likes(john,X) :- female(X),likes(X,wine).

Page 19: PL-3 Ivan Sendin Programa˘c~ao L ogica Aula 3sendin/Cursos/PL/2S2019/aula3.pdf · 2019. 8. 19. · PL-3 Ivan Sendin Aula passada Backtracking Regras Programa˘c~ao L ogica Aula 3

PL-3

Ivan Sendin

Aula passada

Backtracking

Regras

Como implementar a regra:”X gosta de quem gosta de X”

Page 20: PL-3 Ivan Sendin Programa˘c~ao L ogica Aula 3sendin/Cursos/PL/2S2019/aula3.pdf · 2019. 8. 19. · PL-3 Ivan Sendin Aula passada Backtracking Regras Programa˘c~ao L ogica Aula 3

PL-3

Ivan Sendin

Aula passada

Backtracking

Regras

likes(Y,X) :- likes(X,Y).

Page 21: PL-3 Ivan Sendin Programa˘c~ao L ogica Aula 3sendin/Cursos/PL/2S2019/aula3.pdf · 2019. 8. 19. · PL-3 Ivan Sendin Aula passada Backtracking Regras Programa˘c~ao L ogica Aula 3

PL-3

Ivan Sendin

Aula passada

Backtracking

Regras

Ladroes

Quero saber se alguem vai roubar outro alguem

ladroes e gostos pessoais

thief(john).

likes(mary,chocolate).

likes(mary,wine).

likes(john,X) :- likes(X,wine).

Page 22: PL-3 Ivan Sendin Programa˘c~ao L ogica Aula 3sendin/Cursos/PL/2S2019/aula3.pdf · 2019. 8. 19. · PL-3 Ivan Sendin Aula passada Backtracking Regras Programa˘c~ao L ogica Aula 3

PL-3

Ivan Sendin

Aula passada

Backtracking

Regras

Ladroes

may_steal(X,Y) :- thief(X),likes(X,Y).

Page 23: PL-3 Ivan Sendin Programa˘c~ao L ogica Aula 3sendin/Cursos/PL/2S2019/aula3.pdf · 2019. 8. 19. · PL-3 Ivan Sendin Aula passada Backtracking Regras Programa˘c~ao L ogica Aula 3

PL-3

Ivan Sendin

Aula passada

Backtracking

Regras

Ladroes

may_steal(X,Y) :- thief(X),likes(X,Y).

--

| ?- may_steal(john,mary).

yes

Page 24: PL-3 Ivan Sendin Programa˘c~ao L ogica Aula 3sendin/Cursos/PL/2S2019/aula3.pdf · 2019. 8. 19. · PL-3 Ivan Sendin Aula passada Backtracking Regras Programa˘c~ao L ogica Aula 3

PL-3

Ivan Sendin

Aula passada

Backtracking

Regras

Grande Familia

male(albert).

male(edward).

female(alice).

female(victoria).

parents(edward,victoria,albert).

parents(alice,victoria,albert).

Page 25: PL-3 Ivan Sendin Programa˘c~ao L ogica Aula 3sendin/Cursos/PL/2S2019/aula3.pdf · 2019. 8. 19. · PL-3 Ivan Sendin Aula passada Backtracking Regras Programa˘c~ao L ogica Aula 3

PL-3

Ivan Sendin

Aula passada

Backtracking

Regras Regra para responder se e irma:

sister_of(X,Y) :- parents(X,M,D),

parents(Y,M,D).

Page 26: PL-3 Ivan Sendin Programa˘c~ao L ogica Aula 3sendin/Cursos/PL/2S2019/aula3.pdf · 2019. 8. 19. · PL-3 Ivan Sendin Aula passada Backtracking Regras Programa˘c~ao L ogica Aula 3

PL-3

Ivan Sendin

Aula passada

Backtracking

Regras

Regra para responder se e irma:

| ?- sister_of(alice,edward).

yes

| ?- sister_of(edward,alice).

yes

Page 27: PL-3 Ivan Sendin Programa˘c~ao L ogica Aula 3sendin/Cursos/PL/2S2019/aula3.pdf · 2019. 8. 19. · PL-3 Ivan Sendin Aula passada Backtracking Regras Programa˘c~ao L ogica Aula 3

PL-3

Ivan Sendin

Aula passada

Backtracking

RegrasRegra para responder se e irma

sister_of(X,Y) :- female(X),

parents(X,M,D),

parents(Y,M,D).

Page 28: PL-3 Ivan Sendin Programa˘c~ao L ogica Aula 3sendin/Cursos/PL/2S2019/aula3.pdf · 2019. 8. 19. · PL-3 Ivan Sendin Aula passada Backtracking Regras Programa˘c~ao L ogica Aula 3

PL-3

Ivan Sendin

Aula passada

Backtracking

Regras

Regra para responder se e irma

| ?- sister_of(alice,edward).

yes

| ?- sister_of(edward,alice).

no

| ?- sister_of(alice,alice).

yes

Page 29: PL-3 Ivan Sendin Programa˘c~ao L ogica Aula 3sendin/Cursos/PL/2S2019/aula3.pdf · 2019. 8. 19. · PL-3 Ivan Sendin Aula passada Backtracking Regras Programa˘c~ao L ogica Aula 3

PL-3

Ivan Sendin

Aula passada

Backtracking

Regrasdiff(X,Y) :- X \== Y.

sister_of(X,Y) :-

female(X),

diff(X,Y),

parents(X,M,D),

parents(Y,M,D).

Page 30: PL-3 Ivan Sendin Programa˘c~ao L ogica Aula 3sendin/Cursos/PL/2S2019/aula3.pdf · 2019. 8. 19. · PL-3 Ivan Sendin Aula passada Backtracking Regras Programa˘c~ao L ogica Aula 3

PL-3

Ivan Sendin

Aula passada

Backtracking

Regras | ?- sister_of(alice,alice).

no

| ?- sister_of(alice,edward).

yes

Page 31: PL-3 Ivan Sendin Programa˘c~ao L ogica Aula 3sendin/Cursos/PL/2S2019/aula3.pdf · 2019. 8. 19. · PL-3 Ivan Sendin Aula passada Backtracking Regras Programa˘c~ao L ogica Aula 3

PL-3

Ivan Sendin

Aula passada

Backtracking

Regras

DONE!

Page 32: PL-3 Ivan Sendin Programa˘c~ao L ogica Aula 3sendin/Cursos/PL/2S2019/aula3.pdf · 2019. 8. 19. · PL-3 Ivan Sendin Aula passada Backtracking Regras Programa˘c~ao L ogica Aula 3

PL-3

Ivan Sendin

Aula passada

Backtracking

Regras

| ?- sister_of(alice,Who).

Page 33: PL-3 Ivan Sendin Programa˘c~ao L ogica Aula 3sendin/Cursos/PL/2S2019/aula3.pdf · 2019. 8. 19. · PL-3 Ivan Sendin Aula passada Backtracking Regras Programa˘c~ao L ogica Aula 3

PL-3

Ivan Sendin

Aula passada

Backtracking

Regras| ?- sister_of(alice,Who).

Who = edward ? ;

Who = alice

yes

Page 34: PL-3 Ivan Sendin Programa˘c~ao L ogica Aula 3sendin/Cursos/PL/2S2019/aula3.pdf · 2019. 8. 19. · PL-3 Ivan Sendin Aula passada Backtracking Regras Programa˘c~ao L ogica Aula 3

PL-3

Ivan Sendin

Aula passada

Backtracking

Regras

Exercicios

1 ”Alguem gosta de algo, se ele gosta de alguem quee influenciador e este influenciador gosta de algo”

2 Pq ?- sister of(alice,Who) ?

3 Exercıcio 1.3 do livro Clocksin/Mellish.