Introdução à Modelagem Conceitual 3. Prolog

Slides:



Advertisements
Apresentações semelhantes
Lógica de Predicados e Representação de Conhecimento
Advertisements

Introdução à Linguagem Prolog
AULA 5 PGC Sistemas de Banco de Dados Profa. Sandra de Amo
Estruturas de Controle
Paulo Marques Hernâni Pedroso
A FAMÍLIA.
Lógica Matemática e Computacional 7 – Introdução à Programação Lógica
Resumo 1.1) Introdução 1.2) Abordagem Convencional de Arquivos
4. Operadores e Aritmética
Funcionalidades de um SGBD
Lógica Proposicional-1
Elsa Carvalho 163 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Teoria dos Modelos.
Lógicas em Dedução Natural
Introdução à Programação Lógica
Introdução à Linguagem Prolog
Banco de Dados Dedutivo
Cálculo Relacional Datalog não-recursivo
Programação Lógica: PROLOG
6. Backtracking e Controle
5. Processamento de Listas
2. A Linguagem Prolog.
3. Sintaxe e Semântica.
Luiz A. M. Palazzo Pelotas, maio de 2010
Introdução à Modelagem Conceitual 1. Conceitos Básicos
4. Operadores e Aritmética. Introdução à Programação Prolog2 Operadores Na matemática costuma-se escrever expressões como 2*a + b*c onde + e * são operadores.
Lógica para Computação
Otter Provador de Teoremas
Programação em Lógica Augusto Marks Batista Guilherme dos Santos Fujiyoshi Marlon Bill Santos.
AXIOMATIZAÇÃO Equipe: André Augusto Kaviatkovski, Daniel Elias Ferreira, Vinicius Zaramella.
DEDUÇÃO NO CÁLCULO PROPOSICIONAL
INF 1771 – Inteligência Artificial
INF 1771 – Inteligência Artificial
INF 1771 – Inteligência Artificial
INF 1771 – Inteligência Artificial
INF 1771 – Inteligência Artificial
INF 1771 – Inteligência Artificial
Inteligência Artificial
Inteligência Artificial: A Linguagem Prolog (parte 2)
Sintaxe e Semântica do PROLOG.
Aula Prática - Prolog Sistemas Inteligentes /~if684
Prolog Programação Lógica Ícaro A. Souza.
Conceitos de Linguagem de Programação
T ÓPICOS DE I.A. Métodos de Busca Busca em Espaços de Estado Prof. Mário Dantas.
Aula Prática - Prolog Sistemas Inteligentes /~if684
Resolução de Problemas
Programmation en logique. UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE Daniel Augusto da Costa Ambrósio Eduardo Agostinho Oliveira dos Santos Fernando.
Informática Teórica Engenharia da Computação
Conceitos e Linguagens de Programação
Linguagens lógicas 2013 – Luiz Mauricio Nascimento Silva
INF 1771 – Inteligência Artificial
Lógicas e Inferência para IA
Implementação de Resolução
Uma Breve Introdução á programação lógica
BCC101 Matemática Discreta I
INF 1771 – Inteligência Artificial Edirlei Soares de Lima Aula 09 – Introdução ao Prolog.
André Luiz da Costa Carvalho
Sistemas Especialistas Podem ser definidos como programas de computador desenvolvidos para representar o conhecimento humano num dado domínio específico.
INTRODUÇÃO À PROGRAMAÇÃO EM LÓGICA Profa. Joseluce de Farias Cunha
Inteligência Artificial
Lógica para Computação
Banco de Dados Dedutivos
Programação Declarativa 2 INTRODUZIR REGRAS Relação X é descendente de Y (denotada pelo predicado offspring (X,Y)) Aproximação 1 (definição exaustiva)
Programação Lógica com Prolog
Inteligência Artificial: A Linguagem Prolog (Parte 1)
Elsa Carvalho 1 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Conceitos Prolog.
Vinicius Ponte Machado
SISTEMAS DE INFORMAÇÃO Inteligência Artificial 2011/01 UNIPAC - FACAE Faculdade de Ciências Administrativas e Exatas Araguari - MG.
1 Lógica de Predicados BCC101 Matemática Discreta I.
Adriano A. Ribeiro. Português Estruturado Apesar do Português Estruturado ser uma linguagem bastante simplificada, ela possui todos os elementos básicos.
PrologProlog Prof. Luthiano Venecian Elaborado pelo Prof. Luiz A. M. Palazzo Universidade Católica de Pelotas Centro Politécnico Laboratório de Programação.
Transcrição da apresentação:

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

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

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: Fatos a  Regras a  b Consultas  b Vazia  Introdução à Modelagem Conceitual - 03 PROLOG

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

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

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

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.

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

Operadores Prolog Linguagem Natural Cálculo de Predicados Programas  , OU  ; SE  :- NÃO  not Introdução à Modelagem Conceitual - 03 PROLOG

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

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

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

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) :- feminino(X). Introdução à Modelagem Conceitual - 03 PROLOG

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

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

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

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). progenitor(X,Z), progenitor(Z,Y). ... (indefinidamente). Claramente, uma má solução. (Por que?) Maria João Júlia Íris Jorge progenitor (a) (b) antepassado direto antepassado indireto Introdução à Modelagem Conceitual - 03 PROLOG

Predicados Recursivos Uma representação mais geral: Uma codificação recursiva para antepassado/2: antepassado(X,Y) :- progenitor(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

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). 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 3 4 2 5 1 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

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

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

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

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