Aula 2 –Programação Lógica Sintaxe Prolog - facom.ufu.brmarcelo/PL/Aula2-Sintaxe.pdf · Aula 2...

51
Aula 2 – Programação Lógica Sintaxe Prolog Profa. Elaine Faria UFU - 2014

Transcript of Aula 2 –Programação Lógica Sintaxe Prolog - facom.ufu.brmarcelo/PL/Aula2-Sintaxe.pdf · Aula 2...

  • Aula 2 Programao LgicaSintaxe Prolog

    Profa. Elaine FariaUFU - 2014

  • Crditos

    O material a seguir consiste de adaptaes e extenses dos originais gentilmente cedidos pelo Prof. AlexsandroSantos Soares

    Agradecimento especial ao Prof. Gabriel Coutinho que auxiliou na confeco do material

  • Introduo

    Linguagens que utilizam o paradigma lgico so classificadas com Declarativas Descrevem o problema e no a soluo

    Descrevem O QUE deve ser feito e no COMO deve ser feito

    Conceito de Mundo Fechado Descreve o problema atravs de FATOS e REGRAS

    Realiza-se CONSULTAS que devero ser respondidas pelo interpretador avaliando-se os fatos e regras descritos

    Tudo o que o interpretador no souber ter uma resposta negativa

  • Introduo

    Principal linguagem de programao do paradigma de programao lgico PROLOG

    Prolog = Programming in Logic Linguagem de programao utilizada para resolver

    problemas envolvendo objetos e relaes entre objetos

    Ex:Expressar em Prolog o fato Joo gosta de Maria: objetos: Maria e Joo

    relacionamento: gosta de, ou simplificando, gosta.

    Em Prolog: gosta(joao,maria).

  • Aplicaes da Programao Lgica

    Sistemas Baseados em Conhecimento Sistemas que aplicam mecanismos automatizados de raciocnio

    para a representao e inferncia de conhecimento

    Bancos de Dados Inteligentes Sistemas que empregam agentes de busca de dados com

    base em critrios

    Sistemas Especialistas Sistemas que emulam a especializao humana em algum

    domnio especfico.

    Processamento da Linguagem Natural Usada para desenvolvimento de ferramentas para a

    comunicao homem-mquina em geral e para a construo de interfaces

  • Aplicaes da Programao Lgica

    Indstria de aviao, em solues de planejamento e escalonamento Coordena 20% do trfico areo do mundo

    Instituto Nacional de Meteorologia (INMET) Previso do tempo

    Modelagem ambiental Modelos matemticos para a simulao do

    desenvolvimento de florestas

  • Aplicaes da Programao Lgica

    Logstica Solues timas em tempo-real para um fluxo

    contnuo de ordens de servio

    Minerao de dados Busca automtica em bancos de dados por

    padres e relacionamentos significantes

    Construo de compilares Erlang uma linguagem criada pela Ericsson

    cuja primeira verso foi feita em Prolog

  • Idia bsica do Prolog

    Descrever a situao de interesse

    Fazer uma pergunta

    Prolog deduz logicamente novos fatos sobre a situao que ns descrevemos

    Prolog retorna suas dedues como respostas

  • Consequncias

    Pensar declarativamente, no procedimentalmente Desafiador

    Requer uma mentalidade diferente

    Linguagem de alto nvel No to eficiente quanto, digamos, C

    Bom para prototipagem rpida

    til em muitas aplicaes de IA

  • Base de Conhecimento 1

    mulher(maria).

    mulher(joana).

    mulher(iolanda).

    tocaGuitarra(joana).

    festa.

    ?-

  • Base de Conhecimento 1

    mulher(maria).

    mulher(joana).

    mulher(iolanda).

    tocaGuitarra(joana).

    festa.

    ?- mulher(maria).

  • Base de Conhecimento 1

    mulher(maria).

    mulher(joana).

    mulher(iolanda).

    tocaGuitarra(joana).

    festa.

    ?- mulher(maria).

    true

    ?-

  • Base de Conhecimento 1

    mulher(maria).

    mulher(joana).

    mulher(iolanda).

    tocaGuitarra(joana).

    festa.

    ?- mulher(maria).

    true

    ?- tocaGuitarra(joana).

  • Base de Conhecimento 1

    mulher(maria).

    mulher(joana).

    mulher(iolanda).

    tocaGuitarra(joana).

    festa.

    ?- mulher(maria).

    true

    ?- tocaGuitarra(joana).

    true

    ?-

  • Base de Conhecimento 1

    mulher(maria).

    mulher(joana).

    mulher(iolanda).

    tocaGuitarra(joana).

    festa.

    ?- mulher(maria).

    true

    ?- tocaGuitarra(joana).

    true

    ?- tocaGuitarra(maria).

    false

  • Base de Conhecimento 1

    mulher(maria).

    mulher(joana).

    mulher(iolanda).

    tocaGuitarra(joana).

    festa.

    ?- tatuada(joana).

  • Base de Conhecimento 1

    mulher(maria).

    mulher(joana).

    mulher(iolanda).

    tocaGuitarra(joana).

    festa.

    ?- tatuada(joana).

    ERROR: predicate tatuada/1 not defined.

    ?-

  • Base de Conhecimento 1

    mulher(maria).

    mulher(joana).

    mulher(iolanda).

    tocaGuitarra(joana).

    festa.

    ?- festa.

  • Base de Conhecimento 1

    mulher(maria).

    mulher(joana).

    mulher(iolanda).

    tocaGuitarra(joana).

    festa.

    ?- festa.

    true

    ?-

  • Introduo

    O prolog baseado em: Fatos

    Regras

    Consultas

  • Programa Prolog

    Fatos So entendidos como relaes entre objetos

    Constituem-se de afirmaes que so feitas ao Prolog

    So verdades nas quais a Prolog ir basear-se para responder as consultas solicitadas

    Ex: rvore genealgica

  • Programa Prolog

    Fatos cont.

    progenitor(maria, jose) Fonte: Luis, A. M. Palazzo, Introduo Programao Prolog, Educat, 1997

  • Programa Prolog

    Regras Especificao de algo que pode ser

    verdadeiro se algumas condies forem satisfeitas

    composta de duas partes: Concluso (esquerda) e condio (direita)

    Exemplo: Relao Filho. filho(X,Y) :- progenitor(Y,X).

  • Programa Prolog

    Consultas Questionamentos que sero respondidos

    avaliando-se os fatos e regras Joo filho de Jos? ? filho(joo, jos).

    Quem o filho de Jos? ?filho(X, jos).

    Quem so os filhos de Joo ?filho(X,joo). X uma varivel que representa um objeto

    desconhecido

    Variveis so escritas com a primeira letra em maisculo

  • Base de conhecimento 2

    progenitor(maria, jos).progenitor(joo, jos).progenitor(joo, ana).progenitor(jos,jlia).progenitor(jos, ris).progenitor(ris,jorge).filho(X,Y) :- progenitor(Y,X).

    fato

    regra

    cabea corpo

  • Base de conhecimento 3

    feliz(iolanda).

    escuta_musica(maria).

    escuta_musica(iolanda):- feliz(iolanda).

    tocaGuitarra(maria):- escuta_musica(maria).

    tocaGuitarra(iolanda):- escuta_musica(iolanda).

    ?-

  • Base de conhecimento 3

    feliz(iolanda).

    escuta_musica(maria).

    escuta_musica(iolanda):- feliz(iolanda).

    tocaGuitarra(maria):- escuta_musica(maria).

    tocaGuitarra(iolanda):- escuta_musica(iolanda).

    ?- tocaGuitarra(maria).

    true

    ?-

  • Base de conhecimento 3

    feliz(iolanda).

    escuta_musica(maria).

    escuta_musica(iolanda):- feliz(iolanda).

    tocaGuitarra(maria):- escuta_musica(maria).

    tocaGuitarra(iolanda):- escuta_musica(iolanda).

    ?- tocaGuitarra(maria).

    true

    ?- tocaGuitarra(iolanda).

    true

  • Clusulas

    feliz(iolanda).

    escuta_musica(maria).

    escuta_musica(iolanda):- feliz(iolanda).

    tocaGuitarra(maria):- escuta_musica(maria).

    tocaGuitarra(iolanda):- escuta_musica(iolanda).

    Existem cinco clusulas nesta base de conhecimento:

    dois fatos e trs regras.

    O final de uma clusula marcado com um ponto final.

  • Predicados

    feliz(iolanda).

    escuta_musica(maria).

    escuta_musica(iolanda):- feliz(iolanda).

    tocaGuitarra(maria):- escuta_musica(maria).

    tocaGuitarra(iolanda):- escuta_musica(iolanda).

    Existem trs predicados nesta base de

    conhecimento:

    feliz, escuta_musica e tocaGuitarra

  • Base do Conhecimento 4

    feliz(vicente).

    escuta_musica(bruno).

    tocaGuitarra(vicente):- escuta_musica(vicente), feliz(vicente).

    tocaGuitarra(bruno):- feliz(bruno).

    tocaGuitarra(bruno):- escuta_musica(bruno).

  • Base do Conhecimento 4

    feliz(vicente).

    escuta_musica(bruno).

    tocaGuitarra(vicente):- escuta_musica(vicente), feliz(vicente).

    tocaGuitarra(bruno):- feliz(bruno).

    tocaGuitarra(bruno):- escuta_musica(bruno).

    A vrgula ," expressa conjuno em Prolog

  • Expressando Disjuno

    feliz(vicente).

    escuta_musica(bruno).

    tocaGuitarra(vicente):- escuta_musica(vicente), feliz(vicente).

    tocaGuitarra(bruno):- feliz(bruno).

    tocaGuitarra(bruno):- escuta_musica(bruno).

    feliz(vicente).

    escuta_musica(bruno).

    tocaGuitarra(vicente):- escuta_musica(vicente), feliz(vicente).

    tocaGuitarra(bruno):- feliz(bruno); escuta_musica(bruno).

  • Prolog e Lgica

    Prolog tem algo a ver com lgica

    Operadores Implicao :-

    Conjuno ,

    Disjuno ;

    Uso do modus ponens

    Negao

  • Base do Conhecimento 5

    mulher(maria). mulher(joana). mulher(iolanda).

    ama(vicente, maria). ama(marcelo, maria). ama(abobrinha, coelhinho). ama(coelhinho, abobrinha).

  • Variveis em Prolog

    mulher(maria). mulher(joana). mulher(iolanda).

    ama(vicente, maria). ama(marcelo, maria). ama(abobrinha, coelhinho). ama(coelhinho, abobrinha).

    ?- mulher(X).

  • Instanciao de Variveis

    mulher(maria). mulher(joana). mulher(iolanda).

    ama(vicente, maria). ama(marcelo, maria). ama(abobrinha, coelhinho). ama(coelhinho, abobrinha).

    ?- mulher(X).

    X=maria

  • Solicitando Alternativas

    mulher(maria). mulher(joana). mulher(iolanda).

    ama(vicente, maria). ama(marcelo, maria). ama(abobrinha, coelhinho). ama(coelhinho, abobrinha).

    ?- mulher(X).

    X=maria;

  • Solicitando Alternativas

    mulher(maria). mulher(joana). mulher(iolanda).

    ama(vicente, maria). ama(marcelo, maria). ama(abobrinha, coelhinho). ama(coelhinho, abobrinha).

    ?- mulher(X).

    X=maria;

    X=joana

  • Solicitando Alternativas

    mulher(maria). mulher(joana). mulher(iolanda).

    ama(vicente, maria). ama(marcelo, maria). ama(abobrinha, coelhinho). ama(coelhinho, abobrinha).

    ?- mulher(X).

    X=maria;

    X=joana;

    X=iolanda

  • Solicitando Alternativas

    mulher(maria). mulher(joana). mulher(iolanda).

    ama(vicente, maria). ama(marcelo, maria). ama(abobrinha, coelhinho). ama(coelhinho, abobrinha).

    ?- mulher(X).

    X=maria;

    X=joana;

    X=iolanda.

    ?

  • Base do Conhecimento 5

    mulher(maria). mulher(joana). mulher(iolanda).

    ama(vicente, maria). ama(marcelo, maria). ama(abobrinha, coelhinho). ama(coelhinho, abobrinha).

    ?- ama(marcelo,X), mulher(X).

  • Base do Conhecimento 5

    mulher(maria). mulher(joana). mulher(iolanda).

    ama(vicente, maria). ama(marcelo, maria). ama(abobrinha, coelhinho). ama(coelhinho, abobrinha).

    ?- ama(marcelo,X), mulher(X).

    X=maria.

    ?-

  • Base do Conhecimento 5

    mulher(maria). mulher(joana). mulher(iolanda).

    ama(vicente, maria). ama(marcelo, maria). ama(abobrinha, coelhinho). ama(coelhinho, abobrinha).

    ?- ama(abobrinha,X), mulher(X).

  • Base do Conhecimento 5

    mulher(maria). mulher(joana). mulher(iolanda).

    ama(vicente, maria). ama(marcelo, maria). ama(abobrinha, coelhinho). ama(coelhinho, abobrinha).

    ?- ama(abobrinha,X), mulher(X).

    false

    ?-

  • Base do Conhecimento 6

    ama(vicente,maria).

    ama(marcelo,maria).

    ama(abobrinha, coelhinho).

    ama(coelhinho, abobrinha).

    tem_ciumes(X,Y):- ama(X,Z), ama(Y,Z).

  • Base do Conhecimento 6

    ama(vicente,maria).

    ama(marcelo,maria).

    ama(abobrinha, coelhinho).

    ama(coelhinho, abobrinha).

    tem_ciumes(X,Y):- ama(X,Z), ama(Y,Z).

    ?- tem_ciumes(marcelo,W).

  • Base do Conhecimento 6

    ama(vicente,maria).

    ama(marcelo,maria).

    ama(abobrinha, coelhinho).

    ama(coelhinho, abobrinha).

    tem_ciumes(X,Y):- ama(X,Z), ama(Y,Z).

    ?- tem_ciumes(marcelo,W).

    W=vicente;

    W=marcelo;

    false.

    ?-

  • Base do Conhecimento 7

    Base de fatos: Qual o resultado das seguintes perguntas?

    gosta(joao, peixe). ?- gosta(maria,X).gosta(joao,maria). ?- gosta(X,livro).gosta(maria,livro). ?- gosta(Quem,Oque).gosta(pedro,livro). ?- gosta(X,Y).gosta(maria,flor). ?- gosta(X,X).gosta(maria,vinho). ?- gosta(_a,_b).

    ?- gosta(A,peixe).

  • Prolog

    Comentrio em Prolog Linha: %

    Bloco: /* ..... */

  • Referncias

    Luis, A. M. Palazzo, Introduo Programao Prolog, Educat, 1997.

    Slides da Profa Solange ICMC-USP Inteligncia Artificial