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