2. A Linguagem 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
Capítulo 7 Tableaux semânticos e resolução na Lógica Proposicional
Curso: Banco de Dados I Análise de Sistemas PUC Campinas
Lógica Matemática e Computacional 7 – Introdução à Programação Lógica
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
Cálculo Relacional Datalog não-recursivo
Resolução.
Subconsultas ou Consultas Aninhadas
Árvores.
Introdução à Lógica de Programação (cont.)
Programação Lógica: PROLOG
EQUAÇÕES POLINOMIAIS Prof. Marlon.
PROFESSORA LÚCIA BRASIL
04(c) 2007 Gustavo Motta1 Introdução ao -calculus Prof. Gustavo Motta Departamento de Informática/UFPB.
Introdução ao -calculus
6. Backtracking e Controle
3. Sintaxe e Semântica.
Introdução à Modelagem Conceitual 3. Prolog
Luiz A. M. Palazzo Pelotas, maio de 2010
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
Indução Métodos de prova já vistos Excepções
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
Conceitos Básicos.
LISTAS Uma lista é uma estrutura de dados muito comum na programação não numérica (com particular destaque na computação simbólica onde representa quase.
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
Grafos Árvores Geradoras.
Aula Prática - Prolog Sistemas Inteligentes /~if684
Capítulo 4 Métodos para determinação de propriedades semânticas de fórmulas da Lógica Proposicional
Cálculo Numérico / Métodos Numéricos
Linguagens lógicas 2013 – Luiz Mauricio Nascimento Silva
INF 1771 – Inteligência Artificial
Capítulo 11 Programação Lógica
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
Procedimentos Pré-definidos em prolog comunicação
Sistemas Baseados em Conhecimento
©Prof. Lineu MialaretAula 9 - 1/28Matemática Discreta 1 Instituto Federal de Educação, Ciência e Tecnologia de São Paulo - IFSP Campus de Caraguatatuba.
José Augusto Amgarten Quitzau
Sistemas Especialistas Podem ser definidos como programas de computador desenvolvidos para representar o conhecimento humano num dado domínio específico.
Campus de Caraguatatuba Aula 16e: Exercícios de View
INTRODUÇÃO À PROGRAMAÇÃO EM LÓGICA Profa. Joseluce de Farias Cunha
Inteligência Artificial
Estatística Geral (Elementos de Probabilidade)
1 Disciplina: Inteligência Artificial Curso: Sistemas de Informação Período: 7º Prof.: Fábio Martins de Oliveira Sistemas Especialistas: formas de encadeamento.
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.
Anjolina Grisi de Oliveira
Vinicius Ponte Machado
SISTEMAS DE INFORMAÇÃO Inteligência Artificial 2011/01 UNIPAC - FACAE Faculdade de Ciências Administrativas e Exatas Araguari - MG.
Transcrição da apresentação:

2. A Linguagem Prolog

A Cláusula Prolog a :- b1, b2... bi; bj... bn. “se” “e” “ou” Corpo, Condição, Antecedente. Cabeça, Conclusão, Consequente. Introdução à Programação Prolog

Operadores Prolog  ,  ;  :-  E OU SE NÃO not Linguagem Natural Cálculo de Predicados Programas Prolog E  , OU  ; SE  :- NÃO  not Introdução à Programação 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 à Programação 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). fail ?- progenitor(joão, X). X=josé; X=ana. fail ?- progenitor(X,Y). X=maria, Y=josé; X=joão, Y=josé; ... X=íris, Y=jorge. fail Introdução à Programação Prolog

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, 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). Introdução à Programação 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 à Programação 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 à Programação 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 à Programação 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; no 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. Mas só é gaúcho quem nasceu no Rio Grande do Sul, tchê.” Ao lado a codificação em Prolog: Introdução à Programação 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 à Programação 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 à Programação 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; no 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 à Programação 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 à Programação Prolog

Programa Prolog Problema do Mundo Real Predicados são conjuntos de cláusulas com o mesmo nome e aridade (no. de argumentos) 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 Fato: pai(joão, josé). Regra: 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: Regras de Inferência Método de Dedução SLD Resultado: sim/não ou instanciações das variáveis da consulta que permitem prová-la verdadeira no contexto do programa. O domínio do problema é representado como um conjunto de relações em notação clausal Um predicado é verdadeiro se pelo menos uma das suas cláusulas é verdadeira. Variáveis começam com maiúsculas e constantes com minúsculas Introdução à Programação Prolog

Tema para Casa 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 à Programação Prolog