Você está na página 1de 32

Paradigma Lgico

Profa. Isabel Cristina Siqueira da Silva Paradigmas de Linguagens de Programao Informtca Ulbra Gravata

Paradigmas de Linguagens de Programao


Modelo de Von Neumann: Execuo seqencial dados e instrues
Como resolver o problema?

Em que consiste o problema? Paradigmas


Pensamento humano

Imperativo

Declarativo

Estruturado

Concorrente

Funcional

Lgico

Orientado a Objetos

O Modelo de Programao em Lgica


Base
Axiomas lgicos (proposies) que representam o

conhecimento e regras de deduo de novos conhecimentos


Exemplo: Uma baleia um mamfero. Um mamfero tem

sangue quente. Ento, uma baleia tem sangue quente

Programa
Conjunto de fatos (conhecidos) e regras (de deduo) que

formam a base para formular consultas

Principais aplicaes
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

Origens: lgica matemtica


O uso da lgica na representao dos processos de

raciocnio originou-se nos estudos de

Boole (1815-1864) De Morgan (1806-1871) Teoria posteriormente denominada de lgebra de Boole

O clculo de predicados o subconjunto da lgica

matemtica que formaliza a estrutura lgica e define o significado dos conectivos e, ou, no, se...ento e outros

Lgica Simblica
Representao pq pq p q p q Significado p ou q peq p implica q p equivale a q

no p

O Modelo de Programao em Lgica


Base do modelo: lgica simblica
axiomas lgicos (proposies) que representam o

conhecimento e regras de deduo (inferncia) de novos conhecimentos Exemplos de proposies


p: um coelho um mamfero q: um mamfero tem sangue quente

Exemplo de deduo
Se um coelho um mamfero e um mamfero tem sangue quente Se p q Ento, um coelho tem sangue quente. Ento r

Base do modelo: lgica simblica


Uma relao estabelecida entre objetos e resulta nos

valores verdadeiro e falso

Exemplo: a > b a relao R(a,b), sendo R a relao >

Programao em lgica consiste em implementar

relaes e formular consultas como:


Dados a e b, determinar se R(a,b) verdadeira. Dado a, encontrar todo y tal que R(a,y) verdadeira. Dado b, encontrar todo x tal que R(x,b) verdadeira. Encontrar todo x e todo y tal que R(x,y) verdadeira.

Base do modelo: lgica simblica


Clusulas de Horn
Representao de proposies na forma de uma

sentena se p ento q

Representao: q p ou p q

4 classificaes:

Incondicional Positiva Condicional Negativa

Clusulas de Horn (1)


Clusula incondicional (fato): no contm condies.

Representao: q
Exemplo: 3 um nmero inteiro
inteiro(3)

Clusula positiva (regra): Contm uma ou mais

concluses. Representao: q p
Exemplo: Todo nmero natural um nmero inteiro

inteiro(N) natural(N)

Clusulas de Horn (2)


Clusula condicional (regra): contm uma ou mais

condies.
Representao: q p1p2 Exemplo: Para que um nmero seja natural, ele deve ser

inteiro e positivo
natural(N) inteiro(N) N>0
cabea da clusula (conseqente): concluso corpo da clusula (antecedente): condies a serem satisfeitas

Clusulas de Horn (3)


Clusula negativa (consulta): no contm concluses.

Representao: p
Exemplo: Ser 3 um nmero inteiro?: inteiro(3) Processo de deduo: Se 3 um nmero natural (fato) e

todo nmero natural um inteiro, ento prova-se que 3 um nmero inteiro


Fatos e Regras inteiro(3). inteiro(5). inteiro(-3). natural(N) :- inteiro(N) , N>0. Consulta ?- natural(3). yes ?- natural(-3). no

Modelagem de programas em lgica


Especifica o conhecimento a ser usado na soluo

do problema: fatos e regras Procedimentos de resoluo, baseados em um conjunto de clusulas e um objetivo: consulta ao programa Projeto de solues: abordagem de redes semnticas

Redes semnticas (1)


Usadas para representar relacionamentos
rede semntica simples: 1 1

porta criana

amassou

dedo chocolate

adora comer

relao 1:n

brincar
gosta

criana

circo bicicleta

Redes semnticas (2)


relao n:1
pedro
maria paulo
relao

comeu

pizza

transitiva
maior

pedro

maria
maior

maior

paulo

relao -um
gato -um felino -um mamfero

Redes semnticas (3)


relacionamento faz-parte
morango
torta nata

faz-parte

banquete

A abordagem de grupo
Fatos:

F1: Pedro, Maria e Paulo gostam de ler F2: Pedro, Paulo e Vera gostam de cinema F3: Paulo, Maria e Vera gostam de boliche Questes: X gosta de ler? Quem gosta de boliche? Quem gosta de boliche e cinema?

F1

F2

F3

Programao em Lgica e Prolog


Criada em 1972 em Marseille na Frana
Programas
Clusulas
Fatos e regras (parmetros em letras minsculas) Consultas (parmetros em letras maisculas)

Programa um mundo fechado Mecanismos


Unificao e backtracking

Programas: fatos e regras


Fatos agrupados se constituem na base de dados
Fato 1: Braslia e Porto Alegre so cidades. cidade(portoalegre). cidade(brasilia). brasilia Fato 2: Brasil um pas. pais(brasil). brasil Fato 3: RGS um estado. estado(rgs). Fato 4: Braslia a capital do Brasil. brasilia capital(brasil,brasilia). Fato 5: Porto Alegre a capital do RGS. capital(rgs, portoalegre).

-uma

cidade

-um

pais

capital

brasil

Programas: fatos e regras


Regras estabelecem relaes mais complexas entre

objetos

capital_pais(X,Y) :- pais(X), cidade(Y), capital(X, Y). capital_estado(X,Y) :- estado(X), cidade(Y), capital(X, Y). Y capital do pais X, se X -um pais e Y -uma

cidade e Y capital de X.

Exemplo em PROLOG
/* Base de Dados */ cidade(portoalegre). cidade(brasilia). pais(brasil). estado(rgs). capital(brasil,brasilia). capital(rgs, portoalegre). capital_pais(X,Y) :- pais(X), cidade(Y), capital(X, Y). capital_estado(X,Y) :- estado(X), cidade(Y), capital(X, Y).
/* Consultas */ ?- cidade(portoalegre). Yes ?- capital(brasil,X). X = brasilia ; No

/* Consultas */ ?- capital_pais(X,brasilia). X = brasil ; No ?- capital_estado(rgs,Y). Y = portoalegre ; No

Operadores relacionais
Smbolo/Significado
> < >= =< =
\=

maior menor maior ou igual menor ou igual igual diferente

?- 1+2 \= 2+1. no

?- 1+2 = 2+1. yes

Consultas: reversibilidade
Permite a definio de programas sem distino de e/s Permite a obteno de respostas alternativas Programas com mais de uma finalidade
Exemplo: gosta(maria, peixe). gosta(maria, vinho). gosta(pedro, vinho). gosta(pedro, maria).

Perguntas: - Quem gosta de peixe? ?- gosta(X, peixe). - Quem gosta de vinho? ?- gosta(X, vinho). - Pedro e Maria se gostam? ?- gosta(pedro, maria), gosta(maria, pedro). - Existe algo que Pedro e Maria (ambos) gostem? ?- gosta(pedro, X), gosta(maria, X).

Mecanismo de retrocesso (backtracking)


/* base de dados*/ gosta(pedro,leitura). gosta(maria,leitura). gosta(paulo,leitura). gosta(pedro,cinema). gosta(paulo,cinema). gosta(vera,cinema). gosta(paulo,boliche). gosta(maria,boliche). gosta(vera,boliche).
Objetivo

combina(X,Y,Z) gosta(X,Z) gosta(Y,Z),


sub-objetivos

X\=Y

/* Existe algo Z que X e Y gostam ? */ combina(X,Y,Z):- gosta(X,Z),gosta(Y,Z), X\=Y.

Mtodo de corte (CUT): !


Cut uma estrutura de controle do Prolog e

identificada por ! Ele til para controlar e limitar as buscas


considerado satisfeito - evita o backtracking

Quando o cut encontrado, o objetivo imediatamente

Nenhuma clusula alternativa para aquele predicado

considerada

Portanto, o cut elimina a capacidade de retroceder


combina(X,Y) :- gosta(X,Z), gosta(Y,Z), X\= Y, ! .

Cut: S um!
pedro maria maria pedro

Exemplos de cut !
/* Base de dados */ teste(um). teste(dois). teste(tres). /* Regras */ lista(X):-teste(X). listacut(X):-teste(X),!. listacut2(X,Y):-teste(X),!,teste(Y). /* Consulta */ ?- lista(C). C = um ; C = dois ; C = tres no /* Consulta */ ?- listacut(N). N = um no /* Consulta */ ?- listacut2(M,N). M = um N = um ->; M = um N = dois ->; M = um N = tres yes

Aritmtica Simples
Operadores aritmticos:
+, - , *, / , div (diviso inteira), mod (resto diviso inteira), ^

Associao de valores: operador is


?- B is 5 - 4. B=1

Ateno: a instruo a seguir no vlida:


?- B is B +1.

Aritmtica Simples
Exemplo:
/* Base de dados */ velocidade(ford, 100). velocidade(chevy, 105). velocidade(dodge, 95). velocidade(volvo, 80). tempo(ford, 20). tempo(chevy, 21). tempo(dodge, 24). tempo(volvo, 24). /* Regra */ distancia(X, Y) :- velocidade(X, V ), tempo(X, T), Y is V * T.

/* Consultas*/ ?- velocidade(Quem,95). Quem = dodge

?- tempo(ford, Quanto). Quanto = 20

?- distancia(chevy, D). D = 2205

Condicionais
Exemplo: Se x = y
Escrever quadrado Seno Escrever retangulo
/* Regras */ quadrado(X) :- area(X,X). retangulo(X,Y) :- area(X,Y). area(X,Y) :- Z is X * Y, ( X=Y, write('quadrado: '); write('retangulo: ')), !, write(Z). /* Consultas*/

?- quadrado(3). quadrado: 9

?- retangulo(2,3). retangulo: 6

Recursividade
Exemplo: fatorial
/* Base de dados */ /* Fatorial de 0 1 devolve 1 em F1 */

fatorial(0,1). /* Regra */
/* Enquanto N > 0, define N1 e chama recursivamente */

fatorial(N,F) :- N > 0, N1 is N-1, fatorial(N1,F1), F is N * F1.


/* Consultas*/
?- fatorial(4,F). F = 24. ?- fatorial(3,6). F = yes. ?- fatorial(3,4). F = no.

Recursividade
Exemplo: Clculo do fatorial de 4

? fatorial (4,F).
fatorial(4,F) N = 4, F? 4 > 0, N1 = 3, fatorial(3,F1) fatorial(3,F) N = 3, F? 3 > 0, N1 = 2, fatorial(2,F1) fatorial(2,F) N = 2, F? 2 > 0, N1 = 1, fatorial(1,F1) >> F1 = 6 >> F = 4 * 6 = 24

>> F1 = 2 >> F = 3 * 2 = 6

>> F1 = 1 >> F = 2 * 1 = 2

fatorial(1,F) N = 1, F? 1 > 0, N1 = 0, fatorial(0,F1) >> F1 = 1 >> F = 1 * 1 = 1

Contadores
Exemplo: Inteiros de 1 a 10
/* Regras */

dezena :- dezena(0). dezena(10) :- !. dezena(X) :- X1 is X+1, write(X1), nl, dezena(X1).

/* Consulta*/ ?- dezena.

Contadores
Exemplo: Inteiros de 1 a 10

? dezena.
dezena >> dezena(0) >> X1 = 1 >> dezena(1) dezena(1) >> X1 = 2 >> dezena(2) dezena(2) >> X1 = 3 >> dezena(3) ... dezena(9) >> X1 = 10 >> dezena(10)

dezena(10) :- !

Você também pode gostar