24
Introdução à Modelagem Conceitual 3. Prolog Luiz A M Palazzo Abril, 2011 Universidade Católica de Pelotas Universidade Católica de Pelotas Centro Politécnico Centro Politécnico Laboratório de Modelagem Computacional Laboratório de Modelagem Computacional

Introdução à Modelagem Conceitual 3. Prolog

  • Upload
    trish

  • View
    28

  • Download
    4

Embed Size (px)

DESCRIPTION

Universidade Católica de Pelotas Centro Politécnico Laboratório de Modelagem Computacional. Introdução à Modelagem Conceitual 3. Prolog. Luiz A M Palazzo Abril, 2011. O que é PROLOG ?. PROgrammation en LOGique Alain Colmerauer Univ. Aix-Marseille, 1972 Robert Kowalski - PowerPoint PPT Presentation

Citation preview

Page 1: Introdução à Modelagem Conceitual 3. Prolog

Introdução à Modelagem Conceitual3. Prolog

Luiz A M PalazzoAbril, 2011

Universidade Católica de PelotasUniversidade Católica de Pelotas

Centro PolitécnicoCentro Politécnico

Laboratório de Modelagem ComputacionalLaboratório de Modelagem Computacional

Page 2: Introdução à Modelagem Conceitual 3. Prolog

Introdução à Modelagem Conceitual - 03 PROLOG 2

O que é PROLOG ?

  PROgrammation en LOGique

  Alain Colmerauer  Univ. Aix-Marseille, 1972

  Robert Kowalski  Univ. Edimburgo, 1974

Page 3: Introdução à Modelagem Conceitual 3. Prolog

Introdução à Modelagem Conceitual - 03 PROLOG 3

Programação em Lógica

Sócrates é homem.Todo homem é

mortal.

Quem é mortal?

Sócrates é mortal.

homem(sócrates).mortal(X)

homem(X).

?- mortal(Z).

Z = sócrates.

Page 4: Introdução à Modelagem Conceitual 3. Prolog

Introdução à Modelagem Conceitual - 03 PROLOG 4

Fatos, Regras e Consultas

Fatos, Regras e Consultas

  A programação em lógica baseia-se em estruturas lógicas denominadas Cláusulas de HornCláusulas de Horn,, que se apresentam em quatro formas distintas:

FatosFatos a RegrasRegras a bConsultasConsultas bVaziaVazia

Page 5: Introdução à Modelagem Conceitual 3. Prolog

Introdução à Modelagem Conceitual - 03 PROLOG 5

Fatos, Regras e Consultas

• Fatos: São verdades incondicionais:

pai(josé, joão).pai(joão, júlio).pai(júlio, jorge).

Page 6: Introdução à Modelagem Conceitual 3. Prolog

Introdução à Modelagem Conceitual - 03 PROLOG 6

Fatos, Fatos, Regras e Regras e ConsultasConsultas

Fatos, Fatos, Regras e Regras e ConsultasConsultas

• Fatos: São verdades incondicionais:

pai(josé, joão).pai(joão, júlio).pai(júlio, jorge).

• Regras: Podem ser verdadeiras ou não:

filho(X, Y) pai(Y, X).avô(X, Y) pai(X, Z), pai(Z, Y).

Page 7: Introdução à Modelagem Conceitual 3. Prolog

Introdução à Modelagem Conceitual - 03 PROLOG 7

Fatos, Fatos, Regras e Regras e ConsultasConsultas

Fatos, Fatos, Regras e Regras e ConsultasConsultas

• Fatos: São verdades incondicionais:

pai(josé, joão).pai(joão, júlio).pai(júlio, jorge).

• Regras:

Podem ser verdadeiras ou não:

filho(X, Y) pai(Y, X).avô(X, Y) pai(X, Z), pai(Z, Y).

• Consultas: Provocam a execução do programa:

?- filho(júlio, X). X=joão?- avô(X, jorge). X=joão

Page 8: Introdução à Modelagem Conceitual 3. Prolog

Aplicações Avançadas em Prolog

• Sistemas Especialistas,• Engenharia de Software,• Simulação,• Educação,• Suporte à Decisão,• Programação Científica,• Processamento da Linguagem,• Bases de Dados Dedutivas,• Programação da Web.

Page 9: Introdução à Modelagem Conceitual 3. Prolog

Introdução à Modelagem Conceitual - 03 PROLOG 9

A Cláusula Prolog

a :- b1, b2 ... bi ; bj ... bn.

Cabeça

Condição

“se” “e” “ou”

Corpo

Page 10: Introdução à Modelagem Conceitual 3. Prolog

Operadores Prolog

Linguagem Natural

Cálculo de Predicados

ProgramasProlog

E ,OU ;SE :-

NÃO not

Introdução à Modelagem Conceitual - 03 PROLOG 10

Page 11: Introdução à Modelagem Conceitual 3. Prolog

Introdução à Modelagem Conceitual - 03 PROLOG 11

Fatos Seja a árvore genealógica

mostrada abaixo...

Maria João

José Ana

Júlia Íris

Jorge

que pode ser representada pelo seguinte programa Prolog:

progenitor(maria, josé).progenitor(joão, josé).progenitor(joão, ana).progenitor(josé, júlia).progenitor(josé, íris).progenitor(íris, jorge).

Este programa representa a relação progenitor/2, na forma de um predicado, que contém 6 cláusulas, que são todas fatos.

Page 12: Introdução à Modelagem Conceitual 3. Prolog

Introdução à Modelagem Conceitual - 03 PROLOG 12

ConsultasO programa pode ser pensado como uma tabela em uma BD.

progenitor(maria, josé).progenitor(joão, josé).progenitor(joão, ana).progenitor(josé, júlia).progenitor(josé, íris).progenitor(íris, jorge).

No caso de um programa constituído unicamente de fatos, a semântica é exatamente a mesma de uma BD relacional...

que pode ser consultada de várias maneiras:

?- progenitor(joão, ana).true

?- progenitor(joão, jorge).false

?- progenitor(joão, X).X=josé;X=ana;false

?- progenitor(X,Y).X=maria, Y=josé;X=joão, Y=josé;...X=íris, Y=jorge;false

Page 13: Introdução à Modelagem Conceitual 3. Prolog

Introdução à Modelagem Conceitual - 03 PROLOG 13

Ampliando a Base de Fatos

O programa pode ser ampliado acrescentando-se novos fatos que inclusive podem estabelecer novas relações.

No exemplo ao lado acrescentou-se ao programa original as relações masculino/1 e feminino/1.

Estas relações, que possuem aridade 1 (um só argumento), podem ser pensadas como sendo atributos dos objetos a que se aplicam.

progenitor(maria, josé).progenitor(joão, josé).progenitor(joão, ana).progenitor(josé, júlia).progenitor(josé, íris).progenitor(íris, jorge).

masculino(joão).masculino(josé).masculino(jorge).

feminino(maria).feminino(ana).feminino(júlia).feminino(íris).

Page 14: Introdução à Modelagem Conceitual 3. Prolog

Introdução à Modelagem Conceitual - 03 PROLOG 14

Regras

As relações pai/2 e mãe/2 podem agora ser definidas da seguinte maneira:

X é pai de Y se X é progenitor de Y e X é masculino.

X é mãe de Y se X é progenitor de Y e X é feminino.

Em Prolog:

pai(X,Y) :-

progenitor(X,Y), masculino(X).

mãe(X,Y) :-

progenitor(X,Y), feminino(X).

Page 15: Introdução à Modelagem Conceitual 3. Prolog

Introdução à Modelagem Conceitual - 03 PROLOG 15

Mais Regras

As relações irmão/2 e irmã/2 podem agora ser definidas da seguinte maneira:

X é irmão de Y se Z é progenitor de X e Z é progenitor de Y e X é masculino.

X é irmã de Y se ...

Em Prolog:

irmão(X,Y) :- progenitor(Z,X), progenitor(Z,Y), masculino(X).

irmã(X,Y) :- ...

mas, esta regra tem um problema. (qual?)

Page 16: Introdução à Modelagem Conceitual 3. Prolog

Introdução à Modelagem Conceitual - 03 PROLOG 16

Exercício

Acrescentar ao programa da árvore genealógica as seguintes relações (em 10 minutos):

avô/2

tia/2

prima/2

Page 17: Introdução à Modelagem Conceitual 3. Prolog

Introdução à Modelagem Conceitual - 03 PROLOG 17

Representação Textual

Considere o seguinte texto:

“João nasceu em Pelotas e Jean nasceu em Paris. Paris fica na França, enquanto que Pelotas fica no Rio Grande do Sul. Agora, só é gaúcho quem nasceu no Rio Grande do Sul, tchê.”

Ao lado a codificação em Prolog:

nasceu(joão,pelotas).nasceu(jean,paris).

fica(paris,frança).fica(pelotas,rs).

gaúcho(X):-nasceu(X,Y),fica(Y,rs).

?- gaúcho(X).X=joão;false

Page 18: Introdução à Modelagem Conceitual 3. Prolog

Introdução à Modelagem Conceitual - 03 PROLOG 18

Predicados RecursivosSeja, por exemplo, a relação antepassado/2:

Uma tentativa de codificar esta relação em Prolog seria:

antepassado(X,Y) :- progenitor(X,Y).

antepassado(X,Y) :- progenitor(X,Z), progenitor(Z,Y).

... (indefinidamente).

Claramente, uma má solução. (Por que?)

Maria João

Júlia Íris

Jorge

progenitor progenitor

progenitor(a)

(b)

antepassado direto

antepassado indireto

Page 19: Introdução à Modelagem Conceitual 3. Prolog

Introdução à Modelagem Conceitual - 03 PROLOG 19

Predicados RecursivosUma representação mais geral:

Uma codificação recursiva para antepassado/2:

antepassado(X,Y) :- progenitor(X,Y).

antepassado(X,Y) :- progenitor(X,Z), antepassado(Z,Y).

... (só!).

Por que esta solução é melhor que a anterior?

Y

João

Íris

antepassado

antepassado

progenitor

...

Page 20: Introdução à Modelagem Conceitual 3. Prolog

Introdução à Modelagem Conceitual - 03 PROLOG 20

Caminhos em GrafosSeja o grafo direcionado abaixo:

conecta(a,b,3).conecta(a,c,4)....conecta(e,f,2).

caminho(X,Y,K):-conecta(X,Y,K).

caminho(X,Y,K):-conecta(X,Z,K1),

caminho(Z,Y,K2),K is K1+K2.

?- caminho(X,Y,K).X=a, Y=b, K=3;...false

A

B

C

D

E

F

34

2

45

1

2

E as relações conecta(X,Y,K) e caminho(X,Y,K), onde X e Y são nodos e K é o custo entre eles. Ao lado, em Prolog:

5

Page 21: Introdução à Modelagem Conceitual 3. Prolog

Introdução à Modelagem Conceitual - 03 PROLOG 21

Predicados Recursivos• Referenciam a si próprios.

• Possuem, no mínimo, duas cláusulas, uma recursiva e a outra não.

• A cláusula não-recursiva denomina-se cláusula básica.

• As cláusulas básicas podem ser regras ou fatos.

• As cláusulas recursivas são sempre regras.

• O predicado recursivo somente é bem sucedido na cláusula básica.

• A cláusula recursiva nunca é bem sucedida.

Page 22: Introdução à Modelagem Conceitual 3. Prolog

Introdução à Modelagem Conceitual - 03 PROLOG 22

Programa Prolog

Predicados são conjuntos de cláusulas com o mesmo nome e aridade

Programa PROLOG

Cada predicado denota uma relação

Conjunto de Predicados

Fatos: Verdades incondicionais

Regras: Verdades condicionais

A

A B, C, D ...

A é verdadeiro

A é verdadeiro se B, C, D ... são todos verdadeiros

pai(joão, josé).

pai(X, Y) :- masculino(X), progenitor(X, Y).

É executado a partir de uma consulta ou cláusula objetivo

( A)

Conjunto de axiomas

Teorema a ser provado

Consulta:?-pai(joão,

X).

Sistema PROLOG

Dedução SLD

Resultado: Instanciações das variáveis da consulta que permitem prová-la verdadeira.

O domínio do problema é representado como um conjunto de relações

Um predicado é verdadeiro se pelo menos uma das suas cláusulas é verdadeira

Variáveis começam com maiúsculas e constantes com minúsculas

Problemado

Mundo Real

Page 23: Introdução à Modelagem Conceitual 3. Prolog

Introdução à Modelagem Conceitual - 03 PROLOG 23

Exercício

Criar a base de fatos da sua árvore genealógica (inicialmente só com as relações progenitor/2, masculino/1 e feminino/1).

Enriquecer com outras relações de parentesco além das apresentadas (por exemplo: bisavó/2, cunhado/2, ... etc).

Testar! (por exemplo: quem é tio de X?)

Sugestão: Pedir a ajuda das pessoas mais velhas da família.

Page 24: Introdução à Modelagem Conceitual 3. Prolog

Introdução à Modelagem Conceitual - 03 PROLOG 24

Ponteiros

• Prolog na Wikipedia http://pt.wikipedia.org/wiki/Prolog

• Programação em Lógica http://vl.fmnet.info/logic-prog/

• SWI Prolog http://www.swi-prolog.org