Prolog: compara - PowerPoint PPT Presentation

1 / 17
About This Presentation
Title:

Prolog: compara

Description:

Prolog: compara o com outras linguagens de programa o e de representa o do conhecimento Jacques Robin, DI-UFPE www.di.ufpe.br/~jr – PowerPoint PPT presentation

Number of Views:81
Avg rating:3.0/5.0
Slides: 18
Provided by: Departa70
Category:

less

Transcript and Presenter's Notes

Title: Prolog: compara


1
Prolog comparação com outras linguagens de
programação e de representação do conhecimento
  • Jacques Robin, DI-UFPE
  • www.di.ufpe.br/jr

2
Prolog x sistemas de produção controle
  • Raciocino dirigido pelo objetivo (e não pelos
    dados)
  • Regras encadeada para trás (e não para frente)
  • Busca em de cima para baixo e em profundidade na
    árvore de prova (e não de baixo para cima e em
    largura)
  • Sempre dispara 1a regra aplicável encontrada (ie,
    sem resolução de conflitos)
  • Backtracking quando 1a regra leva a uma falha

3
Prolog x sistemas de produçãopoder expressivo
  • Fatos universais (e não apenas instanciados)
  • ex ancestral(X,adão).
  • Unificação (e não apenas matching)
  • bidirecional
  • variáveis lógicas podem ser instanciadas com
    termos compostos (e não apenas atómicos)
  • ex ?- prof(X,disc(ia,dept(di,ufpe)))
  • prof(pessoa(geber,Y),disc(ia,Z))
  • -gt X pessoa(geber,Y), Z
    dept(di,ufpe).

4
Prolog x resolução em L1
  • Restrições de Prolog com respeito a L1
  • apenas cláusulas de Horn
  • sem igualdade semântica
  • unificação sem verificação de ocorrência
  • Extensões de Prolog com respeito a L1
  • predicados (e não apenas funções) como
    construtores de termos
  • predicados built-in de segunda ordem
  • Outras diferenças com respeito a L1
  • negação por falha (limitada mas não monótona)

5
Outras linguagens de PL
  • PL com semântica declarativa estendida
  • negação explícita
  • conclusões disjuntivas
  • igualdade semântica (Eqlog)
  • PL com semântica procedimental estendida
  • backtracking inteligente
  • controle de busca por meta-regras (MRS, Metalog)
  • PL para SGBD dedutivo (Datalog)
  • encadeamento para frente
  • busca em aprofundamento iterativo
  • otimização de acesso à memória secundária
  • resolução completa e correta

6
Prolog x programação imperativa 1
  • Interativo
  • compilação transparente integrada na
    interpretação
  • rodar programa consultar um BD
  • Gerenciamento automático da memória
  • Mecanismo único de manipulação de dados --
    unificação de termos lógicos -- implementando
  • atribuição de valor
  • passagem de parâmetros
  • alocação de estruturas
  • leitura e escritura em campos de estruturas

7
Prolog x programação imperativa 2
  • Estrutura de dados única termo Prolog
  • variáveis lógicas sem tipo estático
  • Controle implícito built-in na estrategia de
    resolução, ex Em programação imperativa
  • procedure c(E)
  • const e0tipoE0
  • var EtipoE, S0tipoS0, l1tipo-I1, S1tipoS1
  • do if E e0 then do S0 call p0(e0) return
    S0 end
  • else do I1 call p1(E) S1 call
    p2(E,l1) return S1 end
  • end
  • Em Prolog
  • c(e0,S0) - p0(e0,S0).
  • c(E,S1) - p1(E,I1), p2(E,I1,S1).

8
Prolog x programação funcional 1
  • Matematicamente, predicado relação
  • não-determinismo
  • respostas múltiplas (disponíveis por
    backtracking),
  • unificação e busca built-in,
  • livra o programador da implementação do controle
  • bi-direcionalidade
  • cada argumento pode ser entrada ou saída,
    dependendo do contexto de chamada,
  • única definição para usos diferentes
    verificador, instanciador, resolvedor de
    restrições, enumerador.
  • integração imediata com BD relacional

9
Prolog x programação funcional 2
  • Append em Lisp
  • (defun append(L1,L2)
  • (cond ((null L1) L2))
  • (T (cons (first L1) (append (rest
    L1) L2))))))
  • ?- append(a,b,c,d)
  • a,b,c,d
  • Append em Prolog
  • append(,L,L).
  • append(HT1,L,HT2) - append(T1,L,T2).
  • ?- append(a,b,c,d,R).
  • R a,b,c,d.
  • Append relacional codifica 8 funções

10
Vários usos do mesmo predicado
  • verificador
  • ?- append(a,b,c,a,b,c). -gt yes.
  • ?- append(a,b,c,a). -gt no.
  • instanciador
  • ?- append(a,b,c,R). -gt R a,b,c.
  • ?- append(H,c,a,b,c). -gt H a,b.
  • resolvedor de restrições
  • ?- append(X,Y,a,b,c). -gt X , Y a,b,c
  • -gt X a,
    Y b,c ...
  • enumerador
  • ?- append(X,Y,Z). -gt X , Y , Z
  • -gt X _, Y ,
    Z _ ...

11
Prolog x programação OO
  • Funcionalidades built-in
  • unificação e busca
  • - tipos, herânça e encapsulação
  • Ontologicalmente
  • Entidade Atómica (EA) em OO, valor de tipo
    built-in
  • em Prolog,
    átomo (argumento ou predicado)
  • Entidade Composta (EC) em OO, objeto
  • em Prolog,
    fato
  • Relação simples entre EC e EA em OO, atributo de
    tipo built-in

  • em Prolog, posição em um predicado
  • Relação simples entre ECs em OO, atributo de
    tipo objeto
  • em
    Prolog, predicado
  • Relação complexa entre entidades em OO, método

  • em Prolog, conjunto de regras

12
Prolog x programação OO exemplo
  • Em OO
  • ptsubclass_of planobj
  • attrsX inst_of int, Y inst_of int
  • metsright(Pt inst_of pt) return self.X gt
    Pt.X
  • pt1inst_of pt attrsX 0, Y 0
  • pt2inst_of pt attrsX 1, Y 1
  • ?- pt1.right(pt2) -gt no.
  • Em Prolog
  • pt(0,0).
  • pt(1,1).
  • planobj(pt(_,_)).
  • right(pt(X1,_),pt(X2,_) - X1 gt X2.
  • ?- right(pt(0,0),pt(1,1)). -gt no.

13
Programação por restrições
  • Programar declarar restrições sobre os valores
    v1, ... vn, de um conjunto de variáveis V1,
    ..., Vn
  • o dominio Di associado a cada variável Vi
  • equações e inequações Pj(Vp, ..., Vq) ligando-as
  • Executar programa
  • fazer uma consulta sobre a compatibilidade de
    restrições de entrada Pk(Vr, ..., Vs) com as
    restrições do programa
  • recuperar em saída todos os valores (v11, ... ,
    vn1) ... (v1l, ..., vnl) de (V1, ... , Vn) que
    satisfazem ambos Pj(Vp, ... , Vq) e
    Pk(Vr, ..., Vs).

14
Programação por restrições exemplo
  • integer(N).
  • integer(S).
  • sumto(0,0).
  • sumto(N,S) - 1 lt N, N lt S, sumto(N - 1, S -
    N).
  • ?- S lt 3, sumto(N,S).
  • (N 0, S 0), (N 1, S 1), (N 2, S 3).
  • Propagação recursiva de restrições
  • 1 1 lt N1 N lt S1 S lt 3
  • (N1,S1) in (1,1),(1,2),(1,3),(2,1),(2,2),(2,3),(3
    ,1),(3,2),(3,3)
  • 2 1 lt N2 N1 - 1 lt S2 S1 - N1 lt 2
  • (N2,S2) in (1,1),(1,2),(2,1),(2,2) gt (N1,S1)
    in (2,3),(2,4),(3,4),(3,5)
  • N1 2, S1 3 gt N2 1, S2 1

15
Prolog x programação por restrições
  • Em Prolog
  • predicados aritméticos não podem ser chamados
    como resolvedores de restrições
  • mas apenas como verificadores
  • a consulta S lt 3, sumto(N,S) gera erro por
    chamar predicados aritméticos com termos não
    instanciados
  • Prolog pode ser visto como
  • uma linguagem de programação por restrição
  • cujo único operador é a unificação
  • cujo domínio é o conjunto de arvores finitas que
    representam os termos Prolog

16
Prolog como restrições exemplo
  • prof(X,disc(ia,dept(di,ufpe)))
  • ?- prof(pessoa(geber,Y),disc(ia,Z))
  • 1 prof prof, 2 2
  • 2 X pessoa(geber,Y), disc disc, 2 2,
  • 3 ia ia, dept(di,ufpe) Z
  • 4 fundo das arvores atingindas
  • devolve as equações não trivais
  • X pessoa(geber,Y),
  • Z dept(di,ufpe).

17
Linguagens de PL multiparadigma
  • PL concorrente, paralela (Concurrent Prolog,
    Parlog)
  • PL funcional (Lambda-Prolog, LeFun)
  • PL OO (Logtalk, Objlog, Login, FLORID)
  • PL por restrições, ie, Prolog (in)equações
  • aritméticas (CLP(R), CHIP, Prolog3)
  • de tipos (Login)
  • booleanas (CHIP, Prolog3)
  • PL para Internet, predicados built-in para
  • protocolos http, ftp, mail, news, etc.
  • parsing de páginas HTML para termos Prolog
  • PiLLoW, Logicweb
Write a Comment
User Comments (0)
About PowerShow.com