1 / 24

Introdução à Modelagem Conceitual 3. Prolog

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

trish
Download Presentation

Introdução à Modelagem Conceitual 3. Prolog

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

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

  3. Sócrates é homem. Todo homem é mortal. Quem é mortal? Sócrates é mortal. homem(sócrates). mortal(X)  homem(X). ?- mortal(Z). Z = sócrates. Programação em Lógica  Introdução à Modelagem Conceitual - 03 PROLOG

  4. Fatos, Regras e Consultas • A programação em lógica baseia-se em estruturas lógicas denominadas Cláusulas de Horn, que se apresentam em quatro formas distintas: 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). Introdução à Modelagem Conceitual - 03 PROLOG

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

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

  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. A Cláusula Prolog a:-b1,b2 ...bi; bj ... bn. “e” “ou” “se” Condição Cabeça Corpo Introdução à Modelagem Conceitual - 03 PROLOG

  10. Operadores Prolog Introdução à Modelagem Conceitual - 03 PROLOG

  11. Fatos 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. Seja a árvore genealógica mostrada abaixo... Maria João José Ana Júlia Íris Jorge Introdução à Modelagem Conceitual - 03 PROLOG

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

  13. Ampliando a Base de Fatos 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). 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 aridade1 (um só argumento), podem ser pensadas como sendo atributos dos objetos a que se aplicam. Introdução à Modelagem Conceitual - 03 PROLOG

  14. Regras Em Prolog: pai(X,Y) :- progenitor(X,Y), masculino(X). mãe(X,Y) :- progenitor(X,Y), feminino(X). 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. Introdução à Modelagem Conceitual - 03 PROLOG

  15. Mais Regras Em Prolog: irmão(X,Y) :- progenitor(Z,X), progenitor(Z,Y), masculino(X). irmã(X,Y) :- ... mas, esta regra tem um problema. (qual?) As relações irmão/2 e irmã/2 podem agora ser definidas da seguinte maneira: X é irmão de Y seZ é progenitor de X eZ é progenitor de Y e X é masculino. X é irmã de Y se ... 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 Introdução à Modelagem Conceitual - 03 PROLOG

  17. Representação Textual 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 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: Introdução à Modelagem Conceitual - 03 PROLOG

  18. Maria João progenitor progenitor Júlia Íris (a) progenitor antepassado direto Jorge (b) antepassado indireto 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?) Introdução à Modelagem Conceitual - 03 PROLOG

  19. 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? João progenitor Íris antepassado ... antepassado Y Introdução à Modelagem Conceitual - 03 PROLOG

  20. B E 2 1 3 2 D 4 A F 4 5 C Caminhos em Grafos 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 Seja o grafo direcionado abaixo: 5 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: 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. Introdução à Modelagem Conceitual - 03 PROLOG

  22. Consulta: ?-pai(joão, X). É executado a partir de uma consulta ou cláusula objetivo ( A) O domínio do problema é representado como um conjunto de relações Cada predicado denota uma relação Teorema a ser provado Programa PROLOG Conjunto de Predicados A é verdadeiro Fatos: Verdades incondicionais A  pai(joão, josé). Sistema PROLOG Conjunto de axiomas Predicados são conjuntos de cláusulas com o mesmo nome e aridade pai(X, Y) :- masculino(X), progenitor(X, Y). Regras: Verdades condicionais Resultado: Instanciações das variáveis da consulta que permitem prová-la verdadeira. Dedução SLD A  B, C, D ... Um predicado é verdadeiro se pelo menos uma das suas cláusulas é verdadeira A é verdadeiro se B, C, D ... são todos verdadeiros Variáveis começam com maiúsculas e constantes com minúsculas Programa Prolog Problema do Mundo Real 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. 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 Introdução à Modelagem Conceitual - 03 PROLOG

More Related