unificação em prolog - DAINF

Propaganda
PR
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
BUSCA DE SOLUÇÕES EM PROLOG
Resolução em PROLOG: Unificação e substituição
PROF. CESAR A. TACLA UTFPR/CURITIBA
1
UNIFICAÇÃO EM PROLOG
HISTÓRICO
PROF. CESAR A. TACLA UTFPR/CURITIBA
2
HISTÓRIA A PARTIR DE 1950
 1958
 forma clausal: simplificação do cálculo de predicados
 emprega ‘cláusulas’ que são disjunções de literais
 pode haver cláusula vazia
 1960
 Dag Prawitz propôs um novo tipo de operação sobre objetos que,mais
tarde, veio a ser conhecida por unificação
 1965
 a programação em lógica se torna possível com o desenvolvimento do
Princípio da Resolução por J.A. Robison (utilizado em PROLOG).
 1969
 Cordell Green – princípio da resolução + programação de
computadores: mecanismo de extração de respostas
PROF. CESAR A. TACLA UTFPR/CURITIBA
3
HISTÓRIA A PARTIR DE 1950
 1972
 primeiro interpretador experimental num grupo liderado por Alain
Colmerauer na Universidade de Aix-Marseille (PROLOG –
Programmation en Logique)
 1974
 Robert Kowalski deu uma interpretação procedimental da lógica
estabelecendo as condições que nos permitem entendê-la como uma
linguagem de programação
 1977
 PROLOG de Edimburgo (linguagem de referência): David H. D.
Warren, Luís Moniz Pereira e outros pesquisadores da
Universidade de Edimburgo
 Fonte: PALAZZO, L.A.M. Introdução a Programação PROLOG, 2006.
PROF. CESAR A. TACLA UTFPR/CURITIBA
4
INTERPRETAÇÃO PROCEDIMENTAL
PROF. CESAR A. TACLA UTFPR/CURITIBA
5
INTERPRETAÇÃO PROCEDIMENTAL
DA LÓGICA
PROF. CESAR A. TACLA UTFPR/CURITIBA
6
NEGAÇÃO POR FALHA
PROF. CESAR A. TACLA UTFPR/CURITIBA
7
NEGAÇÃO POR FALHA
 CLOSED WORLD ASSUMPTION
 tudo que não está declarado na base de conhecimentos ou que não é
derivável é considerado falso por PROLOG.
 Esta falsidade deve ser lida como
 Assume-se que tubarão não é mamífero porque PROLOG não conseguiu
demonstrar (nem sempre é correto – ex. mamifero(raposa).
ex075-00-closed-world-assumption.pl
% Ao fazer a query
% ?- mamifero(tubarao).
% false
%
% porque no mundo fechado deste programa, PROLOG nao
% consegue demonstrar que raposa é mamífero.
mamifero(gato).
mamifero(cao).
mamifero(baleia).
PROF. CESAR A. TACLA UTFPR/CURITIBA
8
NEGAÇÃO POR FALHA
 Operador \+
 \+ objetivo é satisfeito quando PROLOG não consegue demonstrar o
objetivo – negação por falha.
ex080-00-negacaoPorFalha.pl
casado(pedro, maria).
casado(joao, ana).
casado(marcelo, raimunda).
solteiro(X) :\+ casado(X, _),
\+ casado(_, X).
?- solteiro(juca) responde true
?- solteiro(X) responde false; não
consegue dar nenhum exemplo de solteiro
PROF. CESAR A. TACLA UTFPR/CURITIBA
9
UNIFICAÇÃO
PROF. CESAR A. TACLA UTFPR/CURITIBA
10
UNIFICAÇÃO: CONCEITO
 Unificação
 Operação que ocorre entre dois termos PROLOG e que tenta torná-los
idênticos por meio da instanciação
 Termo
 Sintaticamente todos os objetos são considerados termos. Assim, o
menor conjunto de elementos que satisfaz:
 Toda constante é um termo
 Toda variável é um termo
 Se t1, t2, ..., tn são termos e f é um átomo, então f(t1, t2, ..., tn) também é um
termo (f é um símbolo funcional n-ário ou um termo funcional
*termos a partir daqui designam qualquer tipo de elemento (inclusive compostos como functors e
listas) – isto é diferente do que foi visto na definição da sintaxe de LPO, porém, note que a
definição acima é compatível com o que foi visto anteriormente.
PROF. CESAR A. TACLA UTFPR/CURITIBA
11
OPERAÇÃO DE UNIFICAÇÃO
 Dois termos unificam
 se são idênticos ou
 se após a substituição de suas variáveis por objetos, se tornam
idênticos
 Exemplo
 data(D, M, 1994) e data(X, março, A) unificam se
D=X
 M = março
 1994 = A
 Contra-exemplos
 data(D, M, 1994) e data(X, Y, 94) não unificam  1994 <> 94
 data(X, Y, Z) e ponto(X, Y, Z)  data <> ponto
PROF. CESAR A. TACLA UTFPR/CURITIBA
12
UNIFICAÇÃO MAIS GERAL
 ?-data(D, M, 1994) = data(X, março, A)
 Há várias unificações possíveis...
 D=X, M=março, 1994=A (menos comprometida)
 D=1, X=1, M=março, 1994=A
 D=primeiro, X=primeiro, março, 1994=A
 Instanciações mais gerais são menos comprometidas
 Facilitam unificações posteriores!
 PROLOG utiliza instanciações deste tipo.
PROF. CESAR A. TACLA UTFPR/CURITIBA
13
REGRAS DE UNIFICAÇÃO
 Se S e T são constantes
 então S e T unificam somente se ambos representam o mesmo objeto;
 Se S é uma variável e T é qualquer coisa,
 então S e T unificam com S instanciada com T;
 Se S e T são estruturas, unificam somente se:
 (1) S e T tem o mesmo functor principal, e
 (2) todos os seus componentes correspondentes também unificam.
PROF. CESAR A. TACLA UTFPR/CURITIBA
14
PROCESSO DE UNIFICAÇÃO
 Exemplo de unificação com functor
triângulo(ponto(1, 1), A, ponto(2, 3))
triângulo(X, ponto(4, Y), ponto(2, Z))
1
Os termos unificam pois – NESTA ORDEM:
1. triângulo = triângulo
2. ponto(1,1) = X
3. A = ponto(4, Y)
4. ponto(2, 3) = ponto(2, Z)
5. 3 = Z
PROF. CESAR A. TACLA UTFPR/CURITIBA
15
UNIFICAÇÃO: UTILIDADE
 PROLOG
 pode ser interpretado
 declarativa,
 procedimental e
 operacionalmente.
 a utilidade da unificação passa por estes conceitos.
PROF. CESAR A. TACLA UTFPR/CURITIBA
16
UNIFICAÇÃO: UTILIDADE
 Semântica declarativa de uma cláusula
 P :- Q, R
 a leitura declarativa é: P segue de Q e R
 Semântica procedimental de uma cláusula
 Para solucionar o problema P (ou atingir o objetivo P)
 primeiramente solucione o subproblema Q (ou sub-objetivo Q)
 depois solucione o subproblema R (ou sub-objetivo R)
PROF. CESAR A. TACLA UTFPR/CURITIBA
17
UNIFICAÇÃO: UTILIDADE
 A semântica declarativa diz que um objetivo G é
verdadeiro sse:
 há uma cláusula C no programa e
 há uma instância I da cláusula C tal que
 a cabeça de I é idêntica a G
 todos os objetivos no corpo de I são verdadeiros (satisfazíveis)
PROF. CESAR A. TACLA UTFPR/CURITIBA
18
UNIFICAÇÃO: UTILIDADE
Exemplo, dadas as cláusulas:
1. temFilho(X, Y) :- progenitor(X, Y).
2. progenitor(joao, maria).
?temFilho(joao, Z)
objetivo G a ser provado
Objetivo G unifica com a cabeça de C1
temFilho(joao, Z) :- progenitor(joao, Z)
instância de C1 pela unificação X/joao e Y/Z
progenitor(joao, Z) é um novo objetivo
Progenitor(joao, maria) unifica com progenitor(joao, Z)
pela substituição de Z/maria , logo G é verdadeiro quando Z/Maria
PROF. CESAR A. TACLA UTFPR/CURITIBA
19
UNIFICAÇÃO: UTILIDADE
Semântica Operacional
PROF. CESAR A. TACLA UTFPR/CURITIBA
20
BUSCA POR SOLUÇÕES
PROF. CESAR A. TACLA UTFPR/CURITIBA
21
BUSCA POR SOLUÇÕES EM PROLOG
 Na busca de solução aos problemas
 PROLOG utiliza uma árvore de busca (search tree) explorando o corpo
das cláusulas em profundidade.
 Dado um objetivo G
 procura uma cláusula cuja cabeça unifique com G por uma substituição θ
 As partes do corpo da cláusula passam a ser novos objetivos
 para a primeira subcláusula do corpo, procura uma cláusula...
 Por isto, a estratégia de busca é DEPTH-FIRST
PROF. CESAR A. TACLA UTFPR/CURITIBA
22
EXEMPLO DE ÁRVORE DE BUSCA
base de conhecimentos
1.
2.
3.
θ = substituição
temFilho(X,Y) :- progenitor(X,Y).
progenitor(joao,maria).
progenitor(joao,ana).
?temFilho(joao,Y).
objetivo G1 a ser provado
?progeniror(joao, Y) unifica com cláus. 2
θ=Y/maria
progenitor(joao, maria)
Como é um fato, para a busca – G2 foi provado
θ=Y/maria
maria é uma substituição que satisfaz G2 e G1.
PROF. CESAR A. TACLA UTFPR/CURITIBA
backtracking
?temFilho(joao,Y) unifica com cláus. 1
θ=X/joao
temFilho(joao, Y) :- progenitor(joao, Y)
novo G2 a ser provado
?progenitor(joao, Y) unifica com cláus. 3
θ=Y/ana
progenitor(joao, ana)
Como é um fato, para a busca – G2 foi provado
com uma solução alternativa
θ=Y/ana
ana é uma substituição que satisfaz G2 e G1.
23
EXEMPLO DE ÁRVORE DE BUSCA
?temFilho(joao,Y).
Claus. 1: temFilho(X,Y)
θ=X/joao
progenitor(joao, Y)
Claus. 2: progenitor(joao,
maria)
θ=Y/maria
Claus. 3: progenitor(joao,
maria)
θ=Y/ana
progenitor(joao, maria)
progenitor(joao, ana)
backtracking
Exercício: implemente a KB do slide anterior em PROLOG, ligue o trace e
compare com a árvore de busca acima. Explique cada passo mostrado no trace
(ex140-00-arvoreDeBusca.pl).
PROF. CESAR A. TACLA UTFPR/CURITIBA
24
ESTRATÉGIA DE BUSCA DE SOLUÇÃO
 Assuma que o objetivo a provar (goal) é:
 ? G1, G2, ..., Gn
 O motor de inferência pesquisa a base de conhecimento (de cima para
baixo) até encontrar uma regra cuja cabeça unifique com G1. Essa
unificação produz uma substituição (o unificador mais geral ) θ
 Se C :- P1, ..., Pm é a cláusula encontrada. θ é tal que C θ = G1 θ .
 O novo objetivo a provar é agora ? P1θ, ..., Pmθ, G2θ, ..., Gnθ
 Se a cláusula encontrada é um fato F. θ é tal que F θ = G1 θ .
 O novo objectivo a provar é agora ? G2θ, ..., Gnθ
 A prova termina quando já não há mais nada a provar (o goal é vazio).
O interpretador responde à questão inicial indicando a substituição a
que têm que ser sujeitas as variáveis presentes na questão inicial, para
produzir
PROF. CESAR A. TACLA UTFPR/CURITIBA
seção extraída de Maria J. Frade, Univ. do Minho
25
Download