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á .Ck1−2−k
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:1−2−3=7/8(7/8)mx1,…,xnx1,…,xi−1S=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,…,xi−1xiS0(C)+S1(C)=2S(C)
- Suponha que contenha literais não atribuídos, incluindo . Então , e . Portanto
CkxiS(C)=1−2−kS0(C)=1−2−(k−1)S1(C)=1
S0(C)+S1(C)=[1−2⋅2−k]+1=2(1−2−k)=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=2SS0≥SS1≥SSS
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)mC1−2−0=0(7/8)m
Dado que existe um algoritmo determinístico, por que estamos interessados no aleatório? Existem várias razões:
- O algoritmo aleatório é muito mais simples.
- O algoritmo aleatório é potencialmente mais rápido.
- 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