Algoritmo randomizado para 3SAT

8

Existe um algoritmo aleatório muito simples que, dado um 3SAT, produz uma atribuição que satisfaz pelo menos 7/8 das cláusulas (na expectativa): escolha uma atribuição aleatória. Uma atribuição aleatória satisfaz cada cláusula com probabilidade 7/8 e, portanto, a linearidade da expectativa mostra que a fração esperada de cláusulas satisfeitas por uma atribuição aleatória é 7/8.

Isso pode ser feito de maneira determinística? Se sim, por que estamos interessados ​​no algoritmo aleatório?

Yuval Filmus
fonte

Respostas:

6

O algoritmo de atribuição aleatória pode ser des randomizado (tornado determinístico) usando o método das expectativas condicionais.

Deixe a instância 3SAT consistir nas cláusulas . Durante o algoritmo, atribuiremos valores a variáveis. A pontuação de uma cláusula é definida da seguinte forma:C1,,CmC

  • Se estiver satisfeito, sua pontuação será 1.C
  • Se não estiver satisfeito e tiver literais não atribuídos, sua pontuação será .Ck12k

Inicialmente, a pontuação de cada cláusula é e, portanto, a pontuação total é . Agora, atribuímos valores às variáveis em ordem. Suponha que atribuímos valores às variáveis e a pontuação total atual é . Deixe a pontuação total se atribuirmos os valores (respectivamente) a . Eu afirmo que para qualquer cláusula e, portanto, . De fato:123=7/8(7/8)mx1,,xnx1,,xi1S=S(C1)++S(Cm)S0,S10,1xiS0(C)+S1(C)=2S(C)CS0+S1=2S

  • Se estiver satisfeito (apenas ) ou não contiver então .Cx1,,xi1xiS0(C)+S1(C)=2S(C)
  • Suponha que contenha literais não atribuídos, incluindo . Então , e . Portanto CkxiS(C)=12kS0(C)=12(k1)S1(C)=1
    S0(C)+S1(C)=[122k]+1=2(12k)=2S(C).
  • Um argumento semelhante funciona quando contém . Cx¯i

Como , ou (possivelmente ambos). Portanto existe alguma atribuição de tal que após a atribuição, a nova pontuação é de pelo menos .S0+S1=2SS0SS1SSS

A pontuação inicial é o algoritmo garante que a pontuação nunca diminua. No final, a pontuação da cláusula é 1 se for satisfeita e caso contrário. Assim, a tarefa final satisfaz pelo menos cláusulas.(7/8)mC120=0(7/8)m

Dado que existe um algoritmo determinístico, por que estamos interessados ​​no aleatório? Existem várias razões:

  1. O algoritmo aleatório é muito mais simples.
  2. O algoritmo aleatório é potencialmente mais rápido.
  3. O algoritmo aleatório pode ser convertido em determinístico usando o método das expectativas condicionais; podemos pensar nisso como uma receita para construir um algoritmo determinístico.

De maneira mais geral, é conjecturado que todo algoritmo polytime aleatório para um problema de decisão possa ser des randomizado (essa é a conjectura ). Algoritmos aleatórios ainda serão interessantes por todos os motivos enumerados acima.P=BPP

Yuval Filmus
fonte