Árvores de resolução SLD - WordPress.com...2017/08/04  · Estratégia de controle do Prolog A...

30
Conferência Árvores de resolução SLD O Docente: MSc. Angel Alberto Vazquez Sánchez Inteligência Artificial

Transcript of Árvores de resolução SLD - WordPress.com...2017/08/04  · Estratégia de controle do Prolog A...

Page 1: Árvores de resolução SLD - WordPress.com...2017/08/04  · Estratégia de controle do Prolog A regra de computação do PROLOG utiliza uma função de seleção que toma sempre

Conferência

Árvores de resolução SLD

O Docente: MSc. Angel Alberto Vazquez Sánchez

Inteligência Artificial

Page 2: Árvores de resolução SLD - WordPress.com...2017/08/04  · Estratégia de controle do Prolog A regra de computação do PROLOG utiliza uma função de seleção que toma sempre

Objetivo

● Construir uma árvore de resolução SLD a partir de um objetivo do PROLOG, aplicando o Princípio de Resolução SLD e a estratégia de busca do PROLOG para a resolução de problemas.

Page 3: Árvores de resolução SLD - WordPress.com...2017/08/04  · Estratégia de controle do Prolog A regra de computação do PROLOG utiliza uma função de seleção que toma sempre

Bibliografía

● Elaine Rich y Kevin Knight, Inteligencia Artificial.● Stuart J. Russell and Peter Norvig, Artificial Intelligence A

Modern Approach.● Ivan Bratko, PROLOG Programming for Artificial Intelligence.

Page 4: Árvores de resolução SLD - WordPress.com...2017/08/04  · Estratégia de controle do Prolog A regra de computação do PROLOG utiliza uma função de seleção que toma sempre

Introdução

● Qual destes mecanismos utiliza PROLOG para dar resposta a uma pergunta?– Backtracking– Unificação– Árvore de Resolução

● Hoje veremos o pedestal de uma coluna lógico-matemático de ditas árvores de resolução e uma declaração formal matemática de quão mesmos ilustrará melhor o processo.

Page 5: Árvores de resolução SLD - WordPress.com...2017/08/04  · Estratégia de controle do Prolog A regra de computação do PROLOG utiliza uma função de seleção que toma sempre

Semântica processual

● Desenvolveu-se uma forma do princípio de resolução denominada Princípio de Resolução SLD.

● Aplicável a qualquer conjunto de cláusulas. ● Programa lógico aparecem sozinho cláusulas definidas.

Uma cláusula é definida se contiver no máximo um literal positivo (um ou menos literais não negados). Também lhe chama cláusula do Horn.

Page 6: Árvores de resolução SLD - WordPress.com...2017/08/04  · Estratégia de controle do Prolog A regra de computação do PROLOG utiliza uma função de seleção que toma sempre

Cláusula definida

● Uma cláusula definida tem em geral a forma:

L ¬L1 ... ¬Ln (1)∨ ∨ ∨

Li (1 ≤ i ≤ n) literais positivos.● Pelo cálculo proposicional sabemos que tal fórmula é

equivalente a:

L1 L2... Ln L (2)∧ ∧ ⇒

Page 7: Árvores de resolução SLD - WordPress.com...2017/08/04  · Estratégia de controle do Prolog A regra de computação do PROLOG utiliza uma função de seleção que toma sempre

Semântica processual

Pelo cálculo proposicional com a variante notational é equivalente a:

L L⇐ 1, L2, ... , Ln (3)a qual lhe denominará cláusula de programa ou regra, onde:● L: cabeça da cláusula (está formada por um solo

literal positivo)● L1, ..., Ln: corpo da cláusula.

Page 8: Árvores de resolução SLD - WordPress.com...2017/08/04  · Estratégia de controle do Prolog A regra de computação do PROLOG utiliza uma função de seleção que toma sempre

Semântica processual

L ← L1, L2, ... , Ln (3)● Se n=0 então (3) é L. (Feito)● Se falta a cabeça L, então (3) é a cláusula ← L1,

L2, ... , Ln. (Objetivo)

En PROLOG:

⇐ é :-

, é ∧; é ∨

Exemplo:Feito R(a,b).Regra R(X,Y):-S(X,b),Y(c,Y).Objetivo :- R(X,a).

Page 9: Árvores de resolução SLD - WordPress.com...2017/08/04  · Estratégia de controle do Prolog A regra de computação do PROLOG utiliza uma função de seleção que toma sempre

Princípio de Resolução SLD

As siglas SLD fazem alusão a 3 coisas:● a S à regra de Seleção, ● a L à resolução Linear e ● a D às cláusulas Definidas.

Page 10: Árvores de resolução SLD - WordPress.com...2017/08/04  · Estratégia de controle do Prolog A regra de computação do PROLOG utiliza uma função de seleção que toma sempre

Princípio de Resolução SLD

Um programa (lógico) é um conjunto finito de cláusulas de programa. Exemplo:

pai(a,b).

pai(a, c).

pai(b,e).

pai(b,f).

avo(X,Y):– pai(X,Z), pai(Z,Y).

Page 11: Árvores de resolução SLD - WordPress.com...2017/08/04  · Estratégia de controle do Prolog A regra de computação do PROLOG utiliza uma função de seleção que toma sempre

Princípio de Resolução SLD

Uma regra de computação é uma função que seleciona de qualquer conjunto finito de fórmulas elementares ou átomos, um átomo denominado o átomo selecionado.

● É o ato de aplicar um umg, escolher um predicado e substitui-lo por seu resolvente .

Page 12: Árvores de resolução SLD - WordPress.com...2017/08/04  · Estratégia de controle do Prolog A regra de computação do PROLOG utiliza uma função de seleção que toma sempre

O que é um umg?

Unificador mais geral (umg):● Se o argumento do objetivo for um átomo

umg = {átomoObjetivo/VCN, …}

● Se o argumento do objetivo for uma variável:

umg = {VCN/VarObjetivo}

Var. cláusula.

Identificador da cláusula.

# iteração de instanciação.

Page 13: Árvores de resolução SLD - WordPress.com...2017/08/04  · Estratégia de controle do Prolog A regra de computação do PROLOG utiliza uma função de seleção que toma sempre

¿Qué es un resolvente?

● Resolvente (Rsv): Substituir o umg no corpo da regra.

Exemplo:

C1 avo(X,Y):-progenitor(X,Z), progenitor(Z,Y).

O1 :- avo(alberto,A).

umg = {alberto/XC11,YC11/A}

Rsv :- progenitor(alberto,ZC11),

progenitor(ZC11,YC11)

Page 14: Árvores de resolução SLD - WordPress.com...2017/08/04  · Estratégia de controle do Prolog A regra de computação do PROLOG utiliza uma função de seleção que toma sempre

Exemplo

Seja P o seguinte programa lógico:

C1: pai(a,b).

C2: pai(a,c).

C3: pai(b,e).

C4: pai(b,f).

C5: avo(X,Y):-pai(X,Z), pai(Z,Y).

Para o objetivo ?- avo(X,e)

Como resolve PROLOG?

Page 15: Árvores de resolução SLD - WordPress.com...2017/08/04  · Estratégia de controle do Prolog A regra de computação do PROLOG utiliza uma função de seleção que toma sempre

Árvore de Resolução

avo(X,e).

{XC51/X, e/YC51}

pai(X,ZC51),pai(ZC51,e).

{aC12/X, b/ZC12}

pai(b,e).{a/X}Solución

PROLOG responderíaX = a

Page 16: Árvores de resolução SLD - WordPress.com...2017/08/04  · Estratégia de controle do Prolog A regra de computação do PROLOG utiliza uma função de seleção que toma sempre

Backtracking

O que aconteceria se dá Backtracking?

Forçaria-se a procurar mais solucione e se gerariam outros ramos ao unificar pelos restantes 3 fatos da base de conhecimento, solo que a única solução seria X=a porque daria falha em cada um dos ramos ao final.

Page 17: Árvores de resolução SLD - WordPress.com...2017/08/04  · Estratégia de controle do Prolog A regra de computação do PROLOG utiliza uma função de seleção que toma sempre

Árvore de Resolução

● A raiz da árvore é o objetivo.● Em cada nível da árvore se substitui o objetivo situado mais à

esquerda com o corpo da primeira cláusula que unifique com dito objetivo.

● Os ramos da árvore se etiquetarão com o umg correspondente.

Page 18: Árvores de resolução SLD - WordPress.com...2017/08/04  · Estratégia de controle do Prolog A regra de computação do PROLOG utiliza uma função de seleção que toma sempre

Árvore de Resolução

● O processo termina com êxito quando se chegar à cláusula vazia.

● Quando o objetivo situado mais à esquerda fracassa se retrocede ao nível anterior para procurar outra alternativa para o objetivo situado mais à esquerda no nível anterior.

● O processo de dedução fracassa se se chega à raiz da árvore através do retrocesso e não há nenhuma outra alternativa que explorar.

Page 19: Árvores de resolução SLD - WordPress.com...2017/08/04  · Estratégia de controle do Prolog A regra de computação do PROLOG utiliza uma função de seleção que toma sempre

Estratégias de busca

● Percorrido 1ro em profundidade. ● Percorrido 1ro ao largo. ● Buscas heurísticas.

Page 20: Árvores de resolução SLD - WordPress.com...2017/08/04  · Estratégia de controle do Prolog A regra de computação do PROLOG utiliza uma função de seleção que toma sempre

Percorrido 1ro em profundidade.

Page 21: Árvores de resolução SLD - WordPress.com...2017/08/04  · Estratégia de controle do Prolog A regra de computação do PROLOG utiliza uma função de seleção que toma sempre

Percorrido 1ro ao largo.

Page 22: Árvores de resolução SLD - WordPress.com...2017/08/04  · Estratégia de controle do Prolog A regra de computação do PROLOG utiliza uma função de seleção que toma sempre

Buscas heurísticas.

● Considera o problema concreto que se está resolvendo, utiliza coloque-reglas ou “regras de olho” para selecionar o seguinte nodo que terá que desenvolver.

● Exemplos: – Escolher o tumor com a cláusula que tenha o menor número de

literais. – Dar pesos (ponderativos) às regras para indicar sua utilidade e

escolher a de valor mais alto.

Page 23: Árvores de resolução SLD - WordPress.com...2017/08/04  · Estratégia de controle do Prolog A regra de computação do PROLOG utiliza uma função de seleção que toma sempre

Estratégia de controle do Prolog

● A regra de computação do PROLOG utiliza uma função de seleção que toma sempre o átomo mais à esquerda do objetivo.

● Esta regra de computação não afeta a plenitude da Resolução-SLD.

● A estratégia de primeiro busca em profundidade com backtracking sim altera a plenitude da Resolução-SLD, pois em ocasiões a busca se aprofunda por um ramo infinito, existindo solução por outro ramo da árvore de dedução.

Page 24: Árvores de resolução SLD - WordPress.com...2017/08/04  · Estratégia de controle do Prolog A regra de computação do PROLOG utiliza uma função de seleção que toma sempre

Importante recordar

● A regra de computação é a que se ocupa de selecionar um átomo de um objeto.

● A estratégia de busca é a que se ocupa de selecionar a cláusula com a qual vai se unificar.

Page 25: Árvores de resolução SLD - WordPress.com...2017/08/04  · Estratégia de controle do Prolog A regra de computação do PROLOG utiliza uma função de seleção que toma sempre

Finalmente

Começa na raiz da árvore e percorre o ramo situado à esquerda até que:

1. Obtenha-se a cláusula nula.

2. Detecte-se um ramo inadmissível.

3. O ramo não se possa estender mais porque não se podem formar mais resolventes.

Page 26: Árvores de resolução SLD - WordPress.com...2017/08/04  · Estratégia de controle do Prolog A regra de computação do PROLOG utiliza uma função de seleção que toma sempre

Resumem

● Na classe de hoje se pôde ver que a estratégia de busca que utiliza PROLOG para a resolução de problemas é “primeiro em profundidade com backtraking”. Para realizar a mesma constrói uma árvore gerada a partir do objetivo a alcançar e o conjunto de cláusulas da BC utilizando o Princípio de Resolução SLD, pelo qual é denominada árvore de resolução SLD.

Page 27: Árvores de resolução SLD - WordPress.com...2017/08/04  · Estratégia de controle do Prolog A regra de computação do PROLOG utiliza uma função de seleção que toma sempre

Estúdio independiente

1. Seja P o seguinte programa lógico no PROLOG.

pai(a,b).

pai(a,c).

pai(b,e).

mae(b,f).

avo(X,Y) :- pai(X,Z), pai(Z,Y).

e o objetivo: :-avo(a,e).

Construa a árvore de dedução aplicando princípio de resolução SLD.

Page 28: Árvores de resolução SLD - WordPress.com...2017/08/04  · Estratégia de controle do Prolog A regra de computação do PROLOG utiliza uma função de seleção que toma sempre

Estúdio independiente

2. Dado o programa P:

pl(b).

p(c,X).

q(a).

q(X) : – p(X,X), pl(X).

Construa a árvore de resolução a partir do objetivo :-q(c).

Page 29: Árvores de resolução SLD - WordPress.com...2017/08/04  · Estratégia de controle do Prolog A regra de computação do PROLOG utiliza uma função de seleção que toma sempre

Estúdio independiente

3. Seja o programa lógico:

aresta(c,a).

aresta(a,b).

aresta(d,e).

aresta(a,d).

caminho(X,Y) :- aresta(X,Z), aresta(Z,Y).

Responda segundo Prolog e faça a árvore de dedução em cada caso.

a) ?- aresta(a,X).

b) ?- caminho(a,e).

c) ?- aresta(c,X), aresta(X, Y).

Page 30: Árvores de resolução SLD - WordPress.com...2017/08/04  · Estratégia de controle do Prolog A regra de computação do PROLOG utiliza uma função de seleção que toma sempre

Conclução