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

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

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

Apresentações semelhantes


Apresentação em tema: "Introdução à Modelagem Conceitual 3. Prolog Luiz A M Palazzo Abril, 2011 Universidade Católica de Pelotas Centro Politécnico Laboratório de Modelagem Computacional."— Transcrição da apresentação:

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

2 Introdução à Modelagem Conceitual - 03 PROLOG2 O que é PROLOG ? PROgrammation en LOGique Alain Colmerauer Univ. Aix-Marseille, 1972 Robert Kowalski Univ. Edimburgo, 1974

3 Introdução à Modelagem Conceitual - 03 PROLOG3 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.

4 Introdução à Modelagem Conceitual - 03 PROLOG4 Fatos, Regras e Consultas Cláusulas de Horn, A programação em lógica baseia-se em estruturas lógicas denominadas Cláusulas de Horn, que se apresentam em quatro formas distintas:Fatos a Regras a b Consultas b Vazia

5 Introdução à Modelagem Conceitual - 03 PROLOG5 Fatos, Regras e Consultas Fatos: São verdades incondicionais : pai(josé, joão). pai(joão, júlio). pai(júlio, jorge).

6 Introdução à Modelagem Conceitual - 03 PROLOG6 Fatos, Regras e Consultas 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).

7 Introdução à Modelagem Conceitual - 03 PROLOG7 Fatos, Regras e Consultas 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

8 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.

9 Introdução à Modelagem Conceitual - 03 PROLOG9 A Cláusula Prolog a :- b 1, b 2... b i ; b j... b n. Cabeça Condição se eou Corpo

10 Operadores Prolog Linguagem Natural Cálculo de Predicados Programas Prolog E, OU ; SE :- NÃO not Introdução à Modelagem Conceitual - 03 PROLOG10

11 Introdução à Modelagem Conceitual - 03 PROLOG11 Fatos Seja a árvore genealógica mostrada abaixo... MariaJoã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.

12 Introdução à Modelagem Conceitual - 03 PROLOG12 Consultas O 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

13 Introdução à Modelagem Conceitual - 03 PROLOG13 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).

14 Introdução à Modelagem Conceitual - 03 PROLOG14 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).

15 Introdução à Modelagem Conceitual - 03 PROLOG15 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?)

16 Introdução à Modelagem Conceitual - 03 PROLOG16 Exercício Acrescentar ao programa da árvore genealógica as seguintes relações (em 10 minutos): avô/2 tia/2 prima/2

17 Introdução à Modelagem Conceitual - 03 PROLOG17 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

18 Introdução à Modelagem Conceitual - 03 PROLOG18 Predicados Recursivos Seja, 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?) MariaJoão JúliaÍris Jorge progenitor (a) (b) antepassado direto antepassado indireto

19 Introdução à Modelagem Conceitual - 03 PROLOG19 Predicados Recursivos Uma 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 progenitor...

20 Introdução à Modelagem Conceitual - 03 PROLOG20 Caminhos em Grafos Seja 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 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

21 Introdução à Modelagem Conceitual - 03 PROLOG21 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.

22 Introdução à Modelagem Conceitual - 03 PROLOG22 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 Problema do Mundo Real

23 Introdução à Modelagem Conceitual - 03 PROLOG23 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.

24 Introdução à Modelagem Conceitual - 03 PROLOG24 Ponteiros Prolog na Wikipedia Programação em Lógica SWI Prolog


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

Apresentações semelhantes


Anúncios Google