Resolução e Estratégias de Controle - DC

Propaganda
RESOLUÇÃO GERAL
Com o objetivo de aplicar resolução a cláusulas contendo variáveis, é
necessário encontrar uma substituição que possa ser aplicada à cláusulas
pais que contenham literais complementares.
Notação: representar uma cláusula por um conjunto de literais (com a
disjunção entre as literais do conjunto subentendida).
Sejam as cláusulas candidatas a serem pais dadas por {Li} e {Mi} e
vamos assumir que as variáveis ocorrendo nessas duas cláusulas tenham
sido "standardized apart".
Suponhamos que {li} seja um subconjunto de {Li} e que {mi} seja um
subconjunto de {Mi} tal que um "unificador mais geral" s existe para a
união dos conjuntos {li} e {mi} (isto é {li} e {mi} unificam)
Dizemos que as duas cláusulas {Li} e {Mi} resolvem que que a nova
cláusula
{{Li}  {li}}s  {{Mi}  {mi}}s
é o resolvente das duas cláusulas.
Se duas cláusulas resolvem, elas podem ter mais do que um resolvente,
porque pode existir mais de uma maneira de escolher {li} e {mi}. Em
qualquer caso, pode existir no máximo um número finito de resolventes.
C1: p(X,f(a))  p(X,f(Y))  q(Y)
C2: p(Z,f(a))  q(Z)
com {li} = {p(X,f(a))} e {mi} = {p(Z,f(a))} obtemos o resolvente:
p(Z,f(Y))  q(Y)  q(Z)
com {li} = {p(X,f(a)),p(X,f(Y))} e {mi} = {p(Z,f(a))} obtemos o
resolvente: q(a)  q(Z)
1
C1
C2
R1
R2
R3
R4
p(X,f(a))  p(X,f(Y))  q(Y)
p(Z,f(a))  q(Z)
p(Z,f(Y))  q(Y)  q(Z)
q(Z)  q(a)
p(X,f(a))  p(X,f(Z))  p(Z,f(a))
p(Z,f(a))  q(a) q(Z)
p(X,f(a)) p(Z,f(a))
p(X,f(a))
p(X,f(Y)) p(Z,f(a))
q(Y)
q(Z)
p(X,f(Y)) p(Z,f(a))
USANDO RESOLUÇÃO
O interesse em prova de teorema não é limitado a aplicações
matemáticas. Investigação de aplicações em recuperação da informação,
raciocínio de senso comum e programação automática. Em um problema
típico de prova de teorema, tem-se:
S: conjunto de wffs a partir do qual deseja-se provar alguma meta
W(wff).
Sistemas baseados em resolução são projetados para a produção de
provas por contradição ou refutação.
Numa resolução por refutação, primeiro nega-se a wff meta e então
adiciona-se a negação ao conjunto S. Esse conjunto expandido é então
convertido em um conjunto de cláusuas e a resolução é usada para derivar
a contradição, representada pela cláusula nil.
Justificativa: Seja W uma wff que segue logicamente de um conjunto S
de wffs. Por definição, toda interpretação que satisfaz S satisfaz W
também. Nenhuma interpretação que satisfaz S pode satisfazer W e
portanto, nenhuma interpretação pode satisfazer a união de S e {W}.
Um conjunto de wffs que não pode ser satisfeito por nenhuma
interpretação é chamado insatisfatível. Assim, se W segue logicamente de
S, o conjunto S  {W} é insatisfatível.
Pode ser mostrado que se resolução for repetidamente aplicada a um
conjunto de cláusulas insatisfatíveis, eventualmente a cláusula vazia, nil,
será produzida. Assim, se W segue logicamente de S, então resolução erá
eventualmente, produzir a cláusula vazia, a partir da representação clausal
de S  {W}. De maneira análoga, pode ser mostrado que, se a cláusula
vazia é produzida a partir da representação clausal de S  {W}, então
W segue logicamente de S.
2
Exemplo:
(1) (X)(r(X)  l(X))
(2) (X)(d(X)  l(X))
(3) (X)(d(X)  i(X))
e que se queira provar (4) (X)(i(X)  r(X)). O conjunto de cláusulas
correspondente às expressões de (1) a (3) é:
(1)r(X)  l(X)
(2)d(Y)  l(Y)
(3a) d(a)
(3b) i(a)
onde as variáveis foram padronizadas à parte e a é uma constante de
Skolem. A negação do teorema a ser provado, convertido à forma clausal
é:
(4) i(Z)  r(Y)
A prova do teorema usando resolução por refutação envolve a geração de
resolventes a partir do conjunto de cláusulas 13 e 4, adicionando esses
resolventes ao conjunto e continuar até que a cláusula vazia seja
produzida. Uma possível prova (existe mais do que uma) produz a
seguinte seqüência de resolventes:
(5)
(6)
(7)
(8)
r(a)
l(a)
d(a)
nil
(3b) & 4
5&1
6&2
7 & (3a)
Lembrar que: usualmente existirão várias resoluções aplicadas. Isso,
entretanto, não previne a aplicação da resolução apropriada, mesmo após
a aplicação de algumas irrelevante.
Suponha que se inicie com o conjunto S de cláusulas, chamado de
conjunto base. O algoritmo básico para sistemas de produção por
refutação pode então ser escrito como:
3
procedure resolution
1. CLAUSES  S
2. until nil CLAUSES do
begin
3.selecionar 2 cláusulas distintas de CLAUSES, Ci e Cj, que sejam
resolvíveis
4. calcular um resolvente rij de ci e cj
5. CLAUSES  conjunto obtido via adição de rij a CLAUSES
end
ESTRATÉGIAS DE CONTROLE PARA MÉTODOS DE RESOLUÇÃO
A decisão de quais 2 cláusulas em CLAUSES resolver (3.) e qual
resolução dessas cláusulas realizar (4.) são feitas pela estratégia de
controle. Várias estratégias de controle para a seleção de cláusulas foram
desenvolvidas para resolução.
Com o objetivo de manter o controle de quais resoluções foram
selecionadas e evitar duplicar esforços, é conveniente para a estratégia de
controle usar uma estrutura chamada "grafo de derivação". Os nós de tal
grafo são rotulados com cláusulas. Inicialmente existe um nó para cada
uma das cláusulas do conjunto base.
Quando duas cláusulas ci e cj produzem o resolvente rij, um novo nó é
criado, rotulado rij, com arcos unindo-o aos nós ci e cj. Usando a
terminologia de árvores, dizemos que ci e cj são os "pais"de rij e que rij é
descendente de ci e cj.
Uma resolução por refutação pode ser representada como uma árvore de
refutação (dentro do grafo de derivação) tendo um nó raiz rotulado nil. A
estratégia de controle busca pela refutação através do crescimento do
grafo de derivação, até que a árvore seja produzida com o nó raiz rotulado
pela cláusula nil.
Uma estratégia de controle para um sistema de refutação é completa se o
seu uso resulta em um procedimento que irá encontrar uma contradição
(eventualmente) sempre onde existir uma.
Em aplicações de AI, estratégias completas não são tão importantes
quanto aquelas que encontram refutações eficientemente.
4
ESTRATÉGIA BREADTH-FIRST (LARGURA PRIMEIRO)
Na estratégia breadth-first, todos os resolventes do primeiro nível são
calculados primeiro, então os do segundo nível e assim por diante.
Um resolvente do primeiro nível é obtido entre duas cláusulas do
conjunto base; um resolvendo no i-ésimo nível é aquele cujo pai em nível
mais profundo é um resolvente do nível (i-1).
A estratégia breadth-first é completa mas grosseiramente ineficiente.
i(Z)  r(Z)
i(a)
i(Z)  l(Z)
r(a)
l(a)
r(X)  l(X)
d(a)
l(a)
i(Z)  r(Z)
d(Y)  l(Y)
l(a)
r(Y)  d(Y)
i(Z)  d(Z)
d(a)
r(a)
i(a)
nil
ESTRATÉGIA CONJUNTO SUPORTE
A refutação via conjunto suporte é aquela onde pelo menos um pai de
cada resolvente é selecionado dentre as cláusulas que resultam da
negação da wff meta ou de seus descendentes (o conjunto suporte).
Pode ser mostrado que a refutação conjunto suporte existe sempre que
qualquer refutação exsite e que, portanto, o conjunto suporte pode ser
constituído como base de uma estratégia completa. Estratégias conjunto
suporte são, usualmente, mais eficientes que aquelas "breadth-first".
Comparando ambas figuras dá para verificar que o conjunto suporte
produz menos cláusulas a cada nível, do que a resolução breadth-first
irrestrita.
5
A estratégia do conjunto suporte resulta em crescimento mais demorado
do conjunto de cláusulas e, assim, ajuda na moderação da explosão
combinatória.
Usualmente essa contenção de crescimento do conjunto de cláusulas mais
do que compensa o fato que uma estratégia restritiva, tal como a do
conjunto suporte, frequentemente aumenta a profundidade na qual a
cláusula vazia é produzida primeiro.
negação do goal

i(Z)  r(Z)
i(a)
r(X)  l(X)
r(a)
i(Z)  l(Z)
l(a)
i(Z)  l(Z)
d(a)
i(a)
d(Y)  l(Y)
d(a)
l(a)
d(a)
d(a)
nil
árvore de resolução-refutação
6
ESTRATÉGIA DO INPUT LINEAR
É aquela onde cada resolvente tem pelo menos um dos pais pertencentes
ao conjunto básico (base set).
i(a)
r(a)
l(a)
i(Z)  r(Z)
r(X)  l(X)
i(Z)  l(Z)
l(a)
d(Y)  l(Y)
i(Z)  l(Z)
i(Z)  d(Z)
d(a)
l(a)
i(Y)  d(Y)
r(a)
i(a)
nil
Em níveis subsequentes, a estratégia do input linear reduz o número de
cláusulas produzidas. A estratégia do input linear não é completa.
Existem casos em que a refutação existe mas a estratégia não a encontra.
Por exemplo , no seguinte caso:
q(U)  p(a)
q(W)  p(W)
q(X)  p(X)
q(Y)  p(Y)
que é um conjunto claramente insatisfatível, como mostra a árvore de
refutação a seguir (que poderia ter sido obtida via estratégia ancestralfiltrado - próxima estratégia). A forma de refutação input-linear exige que
um dos pais de nil deve ser um elemento do conjunto base. No exemplo
seguinte a cláusula nil nunca conseguirá ser obtida se essa exigência for
satisfeita.
Apesar da falta de completeza, a estratégia do input linesr é
frequentemente usada devido à sua simplicidade e eficiência.
7
q(Y)  p(Y)
q(X)  p(X)
q(W)  p(W)
p(X)
q(W)
q(U)  p(a)
p(a)
nil
na estratégia linear um dos pais de nil deve
estar no conjunto base
cláusula da base
Árvore de Refutação
ESTRATÉGIA DO ANCESTRAL FILTRADO
A forma de refutação do ancestral filtrado é aquela na qual cada
resolvente tem um pai que está ou no conjunto base ou é um ancestral do
outro pai. Essa estratégia é completa. Na figura anterior, a cláusula p(X) é
usada como um "ancestral". Pode ser mostrado que a completeza da
estratégia é preservada se os ancestrais que são usados são limitados a
merges (merge é um resolvente que herda uma literal de cada pai, de tal
maneira que esta literal é 'mergeada' em uma única, pelo mgu).
ESTRATÉGIA DA PREFERÊNCIA POR UNITS
Esta é uma modificação da estgratégia do conjunto-suporte, na qual, ao
invés de preencher cada nível de maneira breadth-first, tenta-se selecionar
8
uma cláusula com uma única literal (chamada unit), como um dos pais na
resolução.
Toda a vez que "units" são usadas em resolução, os resolventes têm
menos literais do que seus pais.
Esse processo ajuda a focalizar a busca na direção da produção de uma
cláusula vazia e, assim, aumenta a eficiência. A árvore de refutação a
seguir é uma que pode ter sido produzida por uma estratégia de
preferência por units.
i(Z)  r(X)
i(a)
r(X)  l(X)
r(a)
d(Y)  l(Y)
l(a)
d(a)
d(a)
nil
COMBINAÇÃO DE ESTRATÉGIAS
É possível combinar estratégias de controle. As estratégias não dizem
sobre a ordem na qual as resoluções são realizadas. Uma ordem
inapropriada não previne que se encontre a refutação. Este fato não
significa, entretanto, que a ordem na resolução, não tenha efeito na
eficiência do processo. Pelo contrário, uma ordem apropriada na
realização das resoluções pode prevenir a geração de um grande número
de cláusulas não necessárias.
A estratégia de preferência por units é um exemplo de estratégia de
ordenação. Outras estratégias baseadas no número de literais em uma
cláusula e na complexidade dos termos em uma cláusula são também
consideradas. A ordem na qual resoluções são realizadas é crucial à
eficiência de sistemas de resolução
9
Download