Programação Declarativa 2 INTRODUZIR REGRAS Relação X é descendente de Y (denotada pelo predicado offspring (X,Y)) Aproximação 1 (definição exaustiva)

Slides:



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

Introdução à Linguagem Prolog
Capítulo 8 A linguagem da Lógica de Predicados
Capítulo 1 A linguagem da Lógica Proposicional
INTRODUÇÃO À SUCESSÃO LEGÍTIMA:
A Regra da Cadeia Everton Lopes.
Lógica Matemática e Computacional 7 – Introdução à Programação Lógica
Elsa Carvalho 241 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Interpretação.
Tipos de igualdade X = Y é verdadeiro se X é igual a Y. X is E é verdadeiro se X é a avaliação da expressão E. E1 =:= E2 é verdadeiro se a avaliação da.
Orações subordinadas adverbiais
Introdução à Programação Lógica
Introdução à Linguagem Prolog
Introdução à Linguagem Prolog
Cálculo Relacional Datalog não-recursivo
CONJUNÇÕES As conjunções são palavras invariáveis que servem para conectar orações, estabelecendo entre elas uma relação de dependência ou de simples coordenação.
David Menotti Algoritmos e Estruturas de Dados I DECOM – UFOP
APRENDIZAGEM COM CONHECIMENTO A PRIORI
Programação em Lógica Indutiva
Maria Aparecida Castro Livi
Sistema Progol TÉCNICAS E HEURÍSTICAS. Progol – Tópicos Definição do sistema; Declarações de Modo; Construção da cláusula mais específica; Algoritmo de.
5. Processamento de Listas
2. A Linguagem Prolog.
Introdução à Modelagem Conceitual 3. Prolog
Programação em Lógica Augusto Marks Batista Guilherme dos Santos Fujiyoshi Marlon Bill Santos.
DEDUÇÃO NO CÁLCULO PROPOSICIONAL
2002/2003 Programação Orientada para Objectos 1 Aula 5 Memória livre e instâncias dinâmicas Criação de instâncias dinâmicas Destruição de instâncias dinâmicas.
INF 1771 – Inteligência Artificial
INF 1771 – Inteligência Artificial
Inteligência Artificial
Luís Rodrigues – Universidade dos Açores
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
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.
Prolog Programação Lógica Ícaro A. Souza.
Conceitos de Linguagem de Programação
Aula Prática - Prolog Sistemas Inteligentes /~if684
3 - MATRIZ COMPLEMENTAR E CO-FATOR
Richard Dawkins Apresentado por Mafalda Goulart Nº 27876
Linguagens lógicas 2013 – Luiz Mauricio Nascimento Silva
Cássio Cristo Dawyson Guerra Matheu Santos
Procedimentos Pré-definidos em prolog comunicação
INTRODUÇÃO.
André Luiz da Costa Carvalho
O Processo de KDD Data Mining SUMÁRIO - AULA1 O processo de KDD
Sistemas Especialistas Podem ser definidos como programas de computador desenvolvidos para representar o conhecimento humano num dado domínio específico.
Elsa Carvalho 186 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Aplicação e Composição.
Gramática.
Princípios da Programação em Prolog
INTRODUÇÃO À PROGRAMAÇÃO EM LÓGICA Profa. Joseluce de Farias Cunha
Lógica para Computação
Semântica de uma fórmula da lógica da 1a ordem via modelo de Herbrand
Programação em Lógica Indutiva Jacques Robin DI-UFPE.
Jacques Robin CIn-UFPE Tipologia do conhecimento de saída da mineração de dados.
Programação Lógica com Prolog
Árvores Rubro-Negras São árvores balanceadas segundo um critério ligeiramente diferente do usado em árvores AVL A todos os nós é associada uma cor que.
Decidibilidade, Corretude, Completude, Consistência
Aritmética Em Prolog podemos fazer uso de operadores aritméticos não lógicos pré-definidos pelo sistema, como por exemplo >, >=, +, *, -, etc. A interrogação.
Inteligência Artificial: A Linguagem Prolog (Parte 1)
Elsa Carvalho 262 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Negação Com os.
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.
Período Composto.
Revisão 1º Bimestre Inteligência Artificial
Vinicius Ponte Machado
Interpretação do Teorema de Herbrand
Revisão 2º Bimestre Inteligência Artificial - IA Nome: Leonardo Brussolo de Paula.
1 Lógica de Predicados BCC101 Matemática Discreta I.
Inteligência Artificial Objetos em Prolog  Esta aula introduz objetos de dados simples e estruturados  Os tópicos abordados são:  Unificação como operação.
Liz Seja bem vinda.
Transcrição da apresentação:

Programação Declarativa 2 INTRODUZIR REGRAS Relação X é descendente de Y (denotada pelo predicado offspring (X,Y)) Aproximação 1 (definição exaustiva) offspring (bob,pam). offspring (bob,tom). offspring (liz,tom). offspring (ann,bob). offspring (pat,bob). offspring (jim,pat). Aproximação 2 (introdução de uma regra) Para qualquer X e Y, X é descendente de Y se Y é ascendente de X. offspring (X,Y):- parent (Y,X). cabeça (conclusão) corpo (condição)

Programação Declarativa 3 Instância de uma regra (exemplo) Regra offspring (X,Y) :- parent (Y,X). Objectivo ?- offspring (tom,liz). Instância para X = tom e Y = liz offspring (tom,liz) :- parent (liz,tom) o objectivo offspring (tom,liz) é substituído pelo (sub) objectivo parent (liz,tom). Se parent(liz,tom) é verdadeiro então offspring(tom,liz) é verdadeiro.

Programação Declarativa 4 Conjunção de objectivos (exemplo) Quando no corpo da cláusula existe mais do que um objectivo. Para qualquer X e Y, X é avó de Y (predicado grandparent (X,Y)) se, existe Z, tal que X é ascendente de Z e Z é ascendente de Y. grandparent (X,Y) :- parent (X,Z), parent (Z,Y). Na instância grandparent(tom,pat) :- parent(tom,Z1), parent(Z1,pat) (X = tom, Y = pat e Z = Z1), o objectivo grandparent(tom,pat) é substituído pela conjunção dos objectivos parent(tom,Z1) e parent(Z1,pat). Seja Z1 = bob. Se parent (tom,bob) e parent (bob,pat) são verdadeiros, então grandparent (tom,pat) é verdadeiro.

Programação Declarativa 5 Mais um exemplo Para qualquer X e Y, X é irmã de Y, se X é do sexo feminino e, existe Z, tal que Z é ascendente de X e Y. sister(X,Y) :- female(X), parent(Z,X), parent(Z,Y). ? – sister(ann,pat). Yes ? – sister(X,pat). X = ann; X = pat; (pat é irmã de si própria!) no sister(X,Y) :- female(X), parent(Z,X), parent(Z,Y), difference(X,Y).

Programação Declarativa 6 ver progProl0 REGRAS Relação X é descendente de Y (denotada pelo predicado offspring (X,Y)) Aproximação 1 (definição exaustiva) offspring(bob,pam). offspring(bob,tom). offspring(liz,tom). offspring(ann,bob). offspring(pat,bob). offspring(jim,pat). Aproximação 2 (introdução de uma regra) Para qualquer X e Y, X é descendente de Y, se Y é ascendente de X. offspring(X,Y):-parent(Y,X). cabeça (conclusão) corpo (condição) Instância de uma regra (exemplo) Regra offspring(X,Y) :- parent(Y,X). Instância da regra (para X = tom e Y = liz) offspring (tom,liz) :  parent (liz,tom) Objectivo ?  offspring(tom,liz). Dada a instância offspring (tom,liz) :  parent (liz,tom), o objectivo offspring (tom,liz) é substituído pelo (sub) objectivo parent (liz,tom). Se parent (liz,tom) é verdadeira então offspring (tom,liz) é verdadeira.

Programação Declarativa 7 Conjunção de objectivos (exemplo) Suponhamos que o corpo de uma cláusula é uma conjunção de objectivos (as questões, também, podem ser introduzidas como conjunções de objectivos). Para qualquer X e Y, X é avó de Y (predicado grandparent (X,Y)) se, existe Z, tal que X é ascendente de Z e Z é ascendente de Y. grandparent(X,Y) :- parent(X,Z),parent(Z,Y). Na instância grandparent (tom,pat) :- parent (tom,Z1), parent (Z1,pat) da regra acima, para X = tom, Y = pat e Z = Z1, o objectivo grandparent (tom,pat) é substituído pela conjunção dos objectivos parent (tom,Z1) e parent (Z1,pat). Seja Z1 = bob. Se parent (tom,bob) e parent (bob,pat) são verdadeiras, então grandparent (tom,pat) é verdadeira. Exemplo Para qualquer X e Y, X é irmã de Y, se X é do sexo feminino e, existe Z, tal que Z é ascendente de X e Y. sister(X,Y) :- female(X), parent(Z,X), parent(Z,Y). ? – sister(ann,pat). Yes ? – sister(X,pat). X = ann; X = pat; (pat é irmã de si própria!) no Refinamento sister(X,Y) :- female(X), parent(Z,X), parent(Z,Y), different(X,Y).

Programação Declarativa 8 Programa (completo) % procedimento parent parent(pam,bob). parent(tom,bob). parent(tom,liz). parent(bob,ann). parent(bob,pat). parent(pat,jim). % procedimento female female(pam). female(liz). female(ann). female(pat). % procedimento male male(tom). male(bob). male(jim). % procedimento offspring offspring(Y,X) :- parent(X,Y). % procedimento mother mother(X,Y) :- parent(X,Y),female(X) % procedimento grandparent grandparent(X,Z) :- parent(X,Y), parent(Y,Z). % procedimento sister sister(X,Y) :- parent(Z,X), parent(Z,Y), female(X), different(X,Y) Observações % (/* comentário */) assinala uma (respectivamente, parte de uma) linha de comentários num programa Prolog. Um procedimento é um conjunto de cláusulas que define uma relação (e.g. o conjunto constituído pela cláusula mother(X,Y) :  parent(X,Y),female(X) define o procedimento mother).