Eu gostaria de documentar algum progresso parcial - aparentemente promissor até agora - em direção a um algoritmo de tempo polinomial. UPDATE : Adicionados alguns detalhes para explicar uma falha apontada por @David (obrigado!).
A abordagem é reduzir isso a uma instância de MIN-ONES EVEN-3 CSPs (MOEC), que passa a ser um problema solucionável em tempo polinomial. A prova da redução é um pouco confusa, mas espero que exista!
Uma instância do MOEC é uma família de subconjuntos de tamanhos de um universo de variáveis e um número . A questão é se existe uma atribuição de peso satisfatória no máximo , onde uma atribuição é uma função do universo para , o peso de uma atribuição é o número de variáveis que ele atribui uma e um a atribuição é satisfatória se, para cada subconjunto de variáveis , a atribuição (digamos ) tiver a propriedade de:k k { 0 , 1 } { x , y , z } f3kk{ 0 , 1 }{ x , y, z}f
f(x)+f(y)+f(z)=0(mod 2) .
Você pode visualizar isso como 3-SAT com uma noção diferente de satisfação - escolha nenhuma ou escolha duas. Ficarei um pouco relaxado sobre a instância do MOEC, pois permitirei, além dos comuns, implicações, disjunções de comprimento dois e a restrição . Acredito que essas simples adições manterão o tempo polinomial do problema.( x = 1 )3(x=1)
Digamos que estamos reduzindo o problema da cadeia de adição para o número . A variável definida para essa redução é a seguinte:n
Para cada , a variável N i . Vou re-escrever a variável N N como N . Para cada par i , j , de modo que 1 ≤ i , j ≤ k , introduza as variáveis P i j e Q i j . 1≤i≤nNiNnNi,j1≤i,j≤kPijQij
Introduza os seguintes subconjuntos, para cada , de modo que k = i + j :i,j,kk=i+j
{Pij,Qij,Nk}
e as seguintes implicações:
e
P i j ⇒ N jPij⇒NiPij⇒Nj
e as seguintes restrições:
.(N1=1),(N=1)
Finalmente, precisamos adicionar restrições que garantam que pelo menos uma das variáveis seja selecionada quando uma variável N "correspondente" (perdoe o abuso de notação) for atribuída. Isto pode ser feito adicionando o habitual ou restrição sobre toda P i j tal que i + j soma para o N -variável em questão. Porém, precisamos encontrar uma maneira de recodificar isso na estrutura do MOEC.PNPiji+jN
Então, deixe-me descrever uma maneira geral de dizer, considerando um conjunto de variáveis:
,(X,l1,l2,…,lt)
como a restrição "se uma atribuição é gratificante e conjuntos a um, em seguida, exatamente um dos l i 's deve ser definido como um pela atribuição", podem ser codificados com a sintaxe MOEC. Observe que isso é suficiente para nossos requisitos, simplesmente introduzimos as restrições:Xli
.(Nk,{Pij | i+j=k})
A codificação é feita da seguinte maneira. Seja a árvore binária completa enraizada nas folhas t . Introduzir uma nova variável t d i para todos 1 ≤ d ≤ log t e 1 ≤ i ≤ G ( d ) , em que G ( d ) indica o número de nodos de T X em profundidade d .TXtTdi1≤d≤logt1≤i≤L(d)L(d)TXd
Para cada nó , se p e q ser seus filhos na árvore, introduzir o mesmo 3-restrição:Tdipq
{Tdi,p,q}
Isso significa que, se uma variável correspondente a um nó estiver configurada como true, exatamente um de seus filhos também deverá ser configurado como true. Agora adicione as implicações:
e
( d log t , j ) ⇒ l j (vírgula para maior clareza).(X⇒T11)(dlogt,j)⇒lj
Essa combinação de restrições e implicações do EVEN-3 é equivalente à restrição que desejamos codificar.
Intuitivamente, o que está acontecendo é que as duas últimas restrições acionam exatamente as reações necessárias para construir uma cadeia de adição. Em particular, vamos olhar para a 's que são atribuídos um por uma atribuição satisfazendo - a alegação é de que eles vão formar uma cadeia de adição para N : uma vez que a atribuição é forçado a definir N para um, deve haver pelo menos um P i j que foi definido como um, e as implicações forçam N i e N jNiNNPijNiNjser atribuído um, e isso vai até o fim (tenho certeza de que isso pode ser formalizado com indução, embora ainda não tenha elaborado esse nível de detalhe). Observe que uma atribuição de saturação que é ideal no número de atribuídas não ajustará true para dois pares ( r , s ) e ( r ′ , s ′ ) , pelo motivo de as variáveis P virem com o adicional bagagem das implicações, e as variáveis Q não (elas existem para garantir a satisfação do MESMO-3 - em uma cláusula em que N i é verdadeiro e PPij(r,s)(r′,s′)PQNi não é verdade, ainda precisamos escolher algo para satisfazer essa cláusula, e por razões que são fáceis de ver, isso não pode ser uma variável universal através cláusulas).Pij
Portanto, acredito que uma cadeia de adição corresponde a uma tarefa satisfatória e vice-versa. Deixe-me descrever uma parte disso formalmente: dada uma cadeia de adição, construímos uma tarefa que é satisfatória. Para começar, f sets tudo N i é o recurso na cadeia para um, e o outro N i 's para zero. Além disso, se k apresenta na cadeia de adição, em seguida, para cada N k , deixe de i k , j k ser os elementos da cadeia de tal modo que i k + j k = j . Então f defineffNiNikNkik,jkik+jk=jf para um (e Q i k j k a zero), e todos ( i , j ) de tal forma que i ≠ i k e j ≠ j k e i + j = k , f conjuntos Q i j para uma (e P i j para zero). Para todos os k que não aparecem na cadeia de adição, para todos os i , j de modo que iPikjkQikjk(i,j)i≠ikj≠jki+j=kfQijPijki,j , defina todas as Q i j e P i j como zero (observe que a consistência decorre do fato de que dois números são somados de apenas uma maneira). Cada cláusula envolvendo um N i na cadeia é satisfeita porque, quer uma P-variável ou Q-variável que corresponde ao que foi definido como um (e aviso que exactamente um deles são definidos para um para cada par ( i , j ) ). Para todas as outras cláusulas, tudo é definido como zero. É fácil verificar que as implicações são válidas.i+j=kQijPijNi(i,j)
ttQxxé incorrido na cadeia mais longa de qualquer maneira, e o restante se compara favoravelmente. No entanto, eu tenho que escrever isso com cuidado, e posso estar vendo coisas da síndrome pós-meia-noite!