Árvores de resolução SLD - WordPress.com...2017/08/04 · Estratégia de controle do Prolog A...
Transcript of Árvores de resolução SLD - WordPress.com...2017/08/04 · Estratégia de controle do Prolog A...
Conferência
Árvores de resolução SLD
O Docente: MSc. Angel Alberto Vazquez Sánchez
Inteligência Artificial
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.
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.
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.
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.
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)∧ ∧ ⇒
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.
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).
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.
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).
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 .
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.
¿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)
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?
Á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
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.
Á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.
Á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.
Estratégias de busca
● Percorrido 1ro em profundidade. ● Percorrido 1ro ao largo. ● Buscas heurísticas.
Percorrido 1ro em profundidade.
Percorrido 1ro ao largo.
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.
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.
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.
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.
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.
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.
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).
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).
Conclução