UNIFICAÇÃO EM PROLOG

25
1 PROF. CESAR A. TACLA UTFPR/CURITIBA UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ PR BUSCA DE SOLUÇÕES EM PROLOG Resolução em PROLOG: Unificação e substituição

Transcript of UNIFICAÇÃO EM PROLOG

Page 1: UNIFICAÇÃO EM PROLOG

1 PROF. CESAR A. TACLA UTFPR/CURITIBA

UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ

PR

BUSCA DE SOLUÇÕES EM PROLOG

Resolução em PROLOG: Unificação e substituição

Page 2: UNIFICAÇÃO EM PROLOG

2 PROF. CESAR A. TACLA UTFPR/CURITIBA

HISTÓRICO

UNIFICAÇÃO EM PROLOG

Page 3: UNIFICAÇÃO EM PROLOG

3 PROF. CESAR A. TACLA UTFPR/CURITIBA

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

Page 4: UNIFICAÇÃO EM PROLOG

4 PROF. CESAR A. TACLA UTFPR/CURITIBA

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.

Page 5: UNIFICAÇÃO EM PROLOG

5 PROF. CESAR A. TACLA UTFPR/CURITIBA

INTERPRETAÇÃO PROCEDIMENTAL

Page 6: UNIFICAÇÃO EM PROLOG

6 PROF. CESAR A. TACLA UTFPR/CURITIBA

INTERPRETAÇÃO PROCEDIMENTAL DA LÓGICA

Page 7: UNIFICAÇÃO EM PROLOG

7 PROF. CESAR A. TACLA UTFPR/CURITIBA

NEGAÇÃO POR FALHA

Page 8: UNIFICAÇÃO EM PROLOG

8 PROF. CESAR A. TACLA UTFPR/CURITIBA

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).

% 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).

ex075-00-closed-world-assumption.pl

Page 9: UNIFICAÇÃO EM PROLOG

9 PROF. CESAR A. TACLA UTFPR/CURITIBA

NEGAÇÃO POR FALHA

Operador \+

\+ objetivo é satisfeito quando PROLOG não consegue demonstrar o

objetivo – negação por falha.

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

ex080-00-negacaoPorFalha.pl

Page 10: UNIFICAÇÃO EM PROLOG

10 PROF. CESAR A. TACLA UTFPR/CURITIBA

UNIFICAÇÃO

Page 11: UNIFICAÇÃO EM PROLOG

11 PROF. CESAR A. TACLA UTFPR/CURITIBA

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.

Page 12: UNIFICAÇÃO EM PROLOG

12 PROF. CESAR A. TACLA UTFPR/CURITIBA

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

Page 13: UNIFICAÇÃO EM PROLOG

13 PROF. CESAR A. TACLA UTFPR/CURITIBA

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.

Page 14: UNIFICAÇÃO EM PROLOG

14 PROF. CESAR A. TACLA UTFPR/CURITIBA

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.

Page 15: UNIFICAÇÃO EM PROLOG

15 PROF. CESAR A. TACLA UTFPR/CURITIBA

PROCESSO DE UNIFICAÇÃO

Exemplo de unificação com functor

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

1

triângulo(ponto(1, 1), A, ponto(2, 3)) triângulo(X, ponto(4, Y), ponto(2, Z))

Page 16: UNIFICAÇÃO EM PROLOG

16 PROF. CESAR A. TACLA UTFPR/CURITIBA

UNIFICAÇÃO: UTILIDADE

PROLOG

pode ser interpretado

declarativa,

procedimental e

operacionalmente.

a utilidade da unificação passa por estes conceitos.

Page 17: UNIFICAÇÃO EM PROLOG

17 PROF. CESAR A. TACLA UTFPR/CURITIBA

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)

Page 18: UNIFICAÇÃO EM PROLOG

18 PROF. CESAR A. TACLA UTFPR/CURITIBA

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)

Page 19: UNIFICAÇÃO EM PROLOG

19 PROF. CESAR A. TACLA UTFPR/CURITIBA

UNIFICAÇÃO: UTILIDADE

progenitor(joao, Z) é um novo objetivo

Exemplo, dadas as cláusulas:

1. temFilho(X, Y) :- progenitor(X, Y).

2. progenitor(joao, maria).

?temFilho(joao, Z)

objetivo G a ser provado

temFilho(joao, Z) :- progenitor(joao, Z)

instância de C1 pela unificação X/joao e Y/Z

Progenitor(joao, maria) unifica com progenitor(joao, Z)

pela substituição de Z/maria , logo G é verdadeiro quando Z/Maria

Objetivo G unifica com a cabeça de C1

Page 20: UNIFICAÇÃO EM PROLOG

20 PROF. CESAR A. TACLA UTFPR/CURITIBA

UNIFICAÇÃO: UTILIDADE

Semântica Operacional

Page 21: UNIFICAÇÃO EM PROLOG

21 PROF. CESAR A. TACLA UTFPR/CURITIBA

BUSCA POR SOLUÇÕES

Page 22: UNIFICAÇÃO EM PROLOG

22 PROF. CESAR A. TACLA UTFPR/CURITIBA

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

Page 23: UNIFICAÇÃO EM PROLOG

23 PROF. CESAR A. TACLA UTFPR/CURITIBA

EXEMPLO DE ÁRVORE DE BUSCA

1. temFilho(X,Y) :- progenitor(X,Y).

2. progenitor(joao,maria).

3. progenitor(joao,ana).

base de conhecimentos

?temFilho(joao,Y).

objetivo G1 a ser provado

?temFilho(joao,Y) unifica com cláus. 1

θ=X/joao

temFilho(joao, Y) :- progenitor(joao, Y)

novo G2 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.

?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.

θ = substituição

backtr

ackin

g

Page 24: UNIFICAÇÃO EM PROLOG

24 PROF. CESAR A. TACLA UTFPR/CURITIBA

EXEMPLO DE ÁRVORE DE BUSCA

?temFilho(joao,Y).

progenitor(joao, Y)

progenitor(joao, maria) progenitor(joao, ana)

Claus. 1: temFilho(X,Y)

θ=X/joao

Claus. 2: progenitor(joao,

maria)

θ=Y/maria

Claus. 3: progenitor(joao,

maria)

θ=Y/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).

Page 25: UNIFICAÇÃO EM PROLOG

25 PROF. CESAR A. TACLA UTFPR/CURITIBA

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

seção extraída de Maria J. Frade, Univ. do Minho