Complexidade computacional

P, NP, reduções, certificados, autorredução e casos especiais tratáveis.

TLDR

Perguntar sobre esta página

ChatGPTClaudePerplexityGrokGeminiCopiar e abrirDeepSeekCopiar e abrir

Numa mochila, verificar uma seleção proposta exige somar os pesos e os valores e compará-los com os limites. Encontrar essa seleção pode exigir muito mais trabalho do que a verificação. A teoria da complexidade distingue problemas que sabemos resolver em tempo polinomial dos que admitem respostas verificáveis nesse tempo.

A versão do problema, a representação dos números e a direção de uma redução fazem parte da análise. Um certificado curto não demonstra que sabemos encontrar a resposta rapidamente, apenas que sabemos reconhecê-la quando a vemos.

Decisão, certificados e classes

Um problema de decisão responde sim ou não. Na mochila, “há uma seleção de peso no máximo WW e valor pelo menos KK?” é decisão; “qual é o maior valor?” é otimização.

P contém problemas de decisão resolvidos em tempo polinomial no tamanho da representação da entrada. NP contém os que admitem um certificado de tamanho polinomial verificável em tempo polinomial. Para uma mochila, o certificado é a lista de objetos; somar pesos e valores e comparar os limites verifica-o.

P⊆NPP\subseteq NP, pois podemos ignorar o certificado e resolver. Não sabemos se P=NPP=NP. NP não significa “não polinomial”, porque há problemas em NP que pertencem a P.

Um problema é NP-difícil se todo o problema de NP se reduz a ele em tempo polinomial. É NP-completo se também pertence a NP. A definição de NP-completo aplica-se a decisão; a versão de otimização correspondente costuma ser descrita como NP-difícil.

co-NP contém os complementos dos problemas de NP. Uma fórmula não ser uma tautologia tem um certificado curto: uma atribuição que a torna falsa. Por isso TAUTOLOGY pertence a co-NP. Isto não prova que pertence ou não pertence a NP.

Problemas indecidíveis, como parar ou não para programas gerais, são outra questão: não há algoritmo que resolva todas as entradas. NP-completude trata problemas decidíveis e o tempo necessário para os resolver.

Direção de uma redução

Escrevemos A≤pBA\le_p B quando há uma transformação polinomial ff tal que

x∈A  ⟺  f(x)∈B.x\in A\iff f(x)\in B.

Se soubéssemos resolver BB, resolveríamos AA transformando a entrada e chamando esse algoritmo. Para provar que um novo problema BB é difícil, reduzimos um problema difícil conhecido para BB. Mostrar B≤pAB\le_p A só mostra que BB não é mais difícil que AA segundo essa transformação.

Uma prova precisa da construção, do tamanho/custo e das duas implicações. Enumerar 2n2^n atribuições para produzir uma transformação não é uma redução polinomial, mesmo que a expressão final pareça simples, porque a enumeração já custa exponencial.

De circuitos para fórmulas

CIRCUIT-SAT é um problema NP-completo conhecido: pergunta se algum valor das entradas de um circuito booleano faz a saída verdadeira. Este resultado de base permite iniciar a cadeia de reduções. Introduz uma variável para cada fio e restrições que representam cada porta. Para z=x∧yz=x\land y, usa

(¬z∨x)∧(¬z∨y)∧(z∨¬x∨¬y).(\neg z\lor x)\land(\neg z\lor y)\land(z\lor\neg x\lor\neg y).

As cláusulas dizem que zz verdadeiro exige as duas entradas verdadeiras e que ambas verdadeiras exigem zz verdadeiro. Acrescenta a cláusula que impõe a saída. Há um número constante de cláusulas por porta, portanto o tamanho cresce linearmente com o circuito. Não precisamos de expandir uma tabela de verdade para todas as entradas.

Para uma cláusula longa de cinco literais, introduz auxiliares:

(ℓ1∨ℓ2∨y1)∧(¬y1∨ℓ3∨y2)∧(¬y2∨ℓ4∨ℓ5).(\ell_1\lor\ell_2\lor y_1)\land(\neg y_1\lor\ell_3\lor y_2)\land(\neg y_2\lor\ell_4\lor\ell_5).

Ela é satisfazível para alguma escolha de y1,y2y_1,y_2 exatamente quando a cláusula original é verdadeira. A transformação preserva satisfazibilidade, não a equivalência para todas as atribuições das variáveis novas. A generalização acrescenta um número linear de cláusulas e transforma CNF-SAT em 3-CNF-SAT. Uma cláusula com um ou dois literais pode repetir literais até ter três posições, sem mudar a condição de verdade.

De satisfazibilidade para clique

Uma clique de tamanho kk é um conjunto de kk vértices em que cada par tem uma aresta. Para uma fórmula CNF com qq cláusulas, cria um vértice por ocorrência de literal. Liga dois vértices se vêm de cláusulas diferentes e os literais não são contraditórios. Pede clique de tamanho qq.

Se a fórmula é satisfazível, escolhe em cada cláusula um literal verdadeiro. Esses qq vértices são compatíveis dois a dois e formam uma clique. Reciprocamente, uma clique de tamanho qq escolhe exatamente um literal de cada cláusula, pois não há arestas dentro da mesma. Não escolhe um literal e a sua negação; podemos torná-los todos verdadeiros e satisfazer as cláusulas.

Por exemplo, (x∨y)∧(¬x∨z)∧(¬y∨z)(x\lor y)\land(\neg x\lor z)\land(\neg y\lor z) admite escolher as ocorrências x,z,zx,z,z. As duas ocorrências de zz são vértices diferentes, de cláusulas diferentes, e podem estar ligadas. Não fundas ocorrências só porque têm o mesmo texto.

Com rr ocorrências, há rr vértices e no máximo O(r2)O(r^2) arestas. O certificado de clique lista qq vértices e é verificável em tempo polinomial. A redução dá a dificuldade; a verificação dá a pertença a NP.

De clique para cobertura de vértices

Uma cobertura de vértices contém pelo menos um extremo de cada aresta. Um conjunto independente não tem arestas entre os seus vértices. CC é cobertura de GG se e só se V∖CV\setminus C é independente em GG.

Uma clique de tamanho kk em GG é independente de tamanho kk no complemento G‾\overline G. Logo existe clique de tamanho kk em GG se e só se existe cobertura de tamanho no máximo n−kn-k em G‾\overline G. O complemento liga exatamente os pares distintos que não estavam ligados em GG. A construção custa O(n2)O(n^2).

A direção e o complemento são decisivos. Procurar diretamente uma cobertura de GG de tamanho n−kn-k corresponderia a um conjunto independente de GG, não a uma clique.

De 3-SAT para três cores

3-COLORABILITY pergunta se um grafo não dirigido admite uma coloração com no máximo três cores. Uma lista de cores verifica-se em O(n+m)O(n+m): confirma a cor de cada vértice e que cada aresta tem extremos diferentes. O problema pertence, portanto, a NP. Para provar a dificuldade, transformamos uma fórmula 3-SAT num grafo.

Cria primeiro um triângulo com vértices T,F,BT,F,B. Os três precisam de cores distintas, às quais damos esses mesmos nomes. Para cada variável xx, cria vértices xx e ¬x\neg x, liga-os entre si e liga ambos a BB. Só podem ter as cores TT e FF, em sentidos opostos, representando uma atribuição booleana.

Para cada cláusula (ℓ1∨ℓ2∨ℓ3)(\ell_1\lor\ell_2\lor\ell_3), acrescenta seis vértices novos O1,O2,O3,I1,I2,I3O_1,O_2,O_3,I_1,I_2,I_3 e estas arestas:

LigaçõesRestrição que impõem
I1I2I_1I_2, I2I3I_2I_3, I3I1I_3I_1O triângulo interno usa as três cores
IiOiI_iO_i, para i=1,2,3i=1,2,3Cada interno difere do externo correspondente
OiTO_iT e OiℓiO_i\ell_i, para i=1,2,3i=1,2,3Cada externo difere de TT e do seu literal

Nesta construção, os externos ligam-se ao vértice TT. Fixar este nome evita trocar o papel das cores na prova.

Se os três literais forem falsos, cada OiO_i é adjacente a TT e FF, logo fica forçado a BB. Nenhum IiI_i pode então usar BB, e um triângulo não admite apenas duas cores, por isso a cláusula falsa impede colorir o grafo.

Se algum literal, por exemplo ℓ1\ell_1, for verdadeiro, dá FF a O1O_1 e BB aos outros dois externos. São escolhas válidas, mesmo que os outros literais também sejam verdadeiros. Dá BB a I1I_1 e T,FT,F aos dois restantes. Todas as arestas têm cores diferentes nos extremos. Qualquer cláusula verdadeira pode, assim, ser completada.

Uma atribuição que satisfaz a fórmula colore os vértices das variáveis e completa cada cláusula. Reciprocamente, qualquer coloração define uma atribuição, e nenhuma cláusula pode ter todos os literais falsos. Temos as duas implicações da redução. Com vv variáveis e qq cláusulas, há 3+2v+6q3+2v+6q vértices e O(v+q)O(v+q) arestas; a construção é linear. Assim, 3-COLORABILITY é NP-completo.

O número cromático χ(G)\chi(G) é o menor número de cores de uma coloração válida. Uma clique de tamanho kk exige kk cores. Se Δ(G)\Delta(G) é o maior grau, colorir sequencialmente com uma cor livre usa no máximo Δ(G)+1\Delta(G)+1 cores num grafo simples, pois cada vértice tem no máximo Δ(G)\Delta(G) vizinhos. Isso é um limite superior, não uma garantia de mínimo. Num triângulo, χ=3\chi=3 e Δ=2\Delta=2: nem sequer Δ\Delta cores chegam sempre.

Um caso que fica em P: 2-SAT

Para cada variável cria os vértices xx e ¬x\neg x. Uma cláusula (a∨b)(a\lor b) equivale a ¬a⇒b\neg a\Rightarrow b e ¬b⇒a\neg b\Rightarrow a; acrescenta essas duas arestas.

A fórmula é insatisfazível se alguma variável e a sua negação estiverem na mesma SCC. Nesse caso, escolher qualquer valor força o outro por implicações. Se nenhuma coincide, a condensação é um DAG e podemos escolher valores segundo uma ordem das componentes, dando a cada literal o valor complementar da sua negação. A regra concreta de comparação depende de como numeramos as componentes; verifica-a contra a ordem topológica usada.

Para uma regra independente da numeração das SCC, escolhe uma ordem topológica da condensação e dá a cada componente a sua posição crescente. Atribui xx a verdadeiro se a componente de xx estiver depois da de ¬x\neg x. Cada variável e a sua negação recebem valores opostos.

Esta regra respeita as implicações. Suponhamos que a⇒ba\Rightarrow b tem aa verdadeiro e bb falso. Há também a aresta ¬b⇒¬a\neg b\Rightarrow\neg a, pois cada cláusula acrescenta as duas. As posições teriam de satisfazer

pos⁡(¬a)<pos⁡(a)≤pos⁡(b)<pos⁡(¬b)≤pos⁡(¬a),\operatorname{pos}(\neg a)<\operatorname{pos}(a)\le\operatorname{pos}(b)<\operatorname{pos}(\neg b)\le\operatorname{pos}(\neg a),

o que é impossível. Logo nenhuma cláusula fica falsa. Numa cláusula unitária (x)(x), vista como (x∨x)(x\lor x), a aresta ¬x→x\neg x\to x coloca xx depois da sua negação e atribui-lhe verdadeiro, como esperado.

O grafo tem 2n2n vértices e 2q2q arestas para qq cláusulas, e as SCC dão decisão em O(n+q)O(n+q). 2-SAT está em P; 3-SAT é NP-completo. Isto não prova uma separação entre as classes, porque continua em aberto se P=NPP=NP.

Autorredução: do decisor à solução

Um decisor responde sim ou não; um construtor devolve o objeto. Para a mochila de decisão com limite KK, cada pergunta ao decisor fixa um objeto como dentro ou fora e ajusta capacidade e limite: perguntar com o objeto ii incluído equivale a decidir (W−wi,K−vi)(W-w_i,K-v_i) no resto; excluído equivale a (W,K)(W,K). Conserva a escolha que mantém a resposta afirmativa. Com nn chamadas, recupera a seleção sem enumerar subconjuntos.

Para HAM-CYCLE, usa apenas o decisor comum que recebe um grafo. Se GG tem ciclo hamiltoniano, percorre as arestas por ordem: para cada aresta ee, pergunta se G−eG-e ainda tem ciclo hamiltoniano. Se sim, remove ee em definitivo; se não, conserva ee. O invariante é que o grafo corrente continua hamiltoniano. No fim, nenhuma aresta pode sair sem destruir essa propriedade, e um grafo hamiltoniano minimal com nn vértices é exatamente um ciclo de nn arestas. Se o decisor for polinomial, a construção com mm chamadas também é.

Certificados e instâncias especiais

Para dois grafos simples não dirigidos, um certificado de isomorfismo é uma bijeção π\pi entre os vértices. Verifica primeiro que cada imagem é válida e ocorre uma só vez. Depois, para cada par distinto u,vu,v, exige

uv∈E(G)  ⟺  π(u)π(v)∈E(H).uv\in E(G)\iff\pi(u)\pi(v)\in E(H).

A equivalência exclui também arestas extra em HH. Com matrizes de adjacência, há O(n2)O(n^2) pares a comparar. A lista da bijeção ocupa O(nlog⁡(n+1))O(n\log(n+1)) bits e o verificador é polinomial. Isto situa isomorfismo em NP; não prova pertença a P nem NP-completude.

PARTITION pergunta se um multiconjunto de inteiros positivos pode ser dividido em partes de igual soma. Para transportar a dificuldade de SUBSET-SUM, recebe A e alvo inteiro T≥0T\ge0, calcula s=∑As=\sum A e acrescenta b=∣s−2T∣b=|s-2T| quando b>0b>0. A nova metade é (s+b)/2(s+b)/2.

  • Se s>2Ts>2T, a metade é s−Ts-T. Um subconjunto de soma T, junto com b=s-2T, atinge essa metade. Inversamente, retirar b do lado que o contém deixa soma T.
  • Se s<2Ts<2T, a metade é T. O subconjunto original de soma T forma um lado; o seu complemento junto com b=2T-s forma o outro. Inversamente, o lado que não contém b é um subconjunto de A com soma T.
  • Se s=2Ts=2T, nada se acrescenta: a instância original já pede partes com soma T.

Por exemplo, A=[3,1,4,2,2] tem soma 12. Para T=3, acrescentamos 6 e obtemos partes [3,6] e [1,4,2,2], ambas de soma 9. Para T=6, nada se acrescenta e [3,1,2] e [4,2] já dão uma partição.

A construção usa somas e um novo inteiro de comprimento polinomial na entrada. Um certificado marca as ocorrências de cada parte e verifica as duas somas em tempo polinomial nos bits. Com a NP-completude conhecida de SUBSET-SUM, a redução e o certificado provam que PARTITION é NP-completa.

SUBGRAPH-ISOMORPHISM pergunta se um padrão HH ocorre como subgrafo de GG. É NP-completa por redução a partir de CLIQUE, ou seja CLIQUE ≤p\le_p SUBGRAPH-ISOMORPHISM: o padrão é o grafo completo KkK_k e o grafo maior é a entrada de CLIQUE. Há clique de tamanho kk se e só se KkK_k ocorre como subgrafo.

Em árvores, a cobertura ótima de vértices tem dois estados por vértice. Enraíza a árvore e define C1(u)C_1(u) como o mínimo da subárvore quando escolhemos uu, e C0(u)C_0(u) quando o excluímos:

C1(u)=1+∑v filho de umin⁡(C0(v),C1(v)),C0(u)=∑v filho de uC1(v).C_1(u)=1+\sum_{v\text{ filho de }u}\min(C_0(v),C_1(v)),\qquad C_0(u)=\sum_{v\text{ filho de }u}C_1(v).

Se uu não é escolhido, cada filho tem de cobrir a aresta que os liga. Se é escolhido, essa aresta já está coberta e cada filho pode usar o estado mais barato. Nas folhas, os valores são 1 e 0. Processar de baixo para cima visita cada aresta uma vez, dando O(n)O(n) tempo e espaço; a resposta é o mínimo dos dois estados da raiz.

Outras restrições também podem tornar o problema tratável. Com apenas kk objetos excecionais e kk constante, enumerar os 2k2^k subconjuntos excecionais e completar cada resto com o método polinomial da parte regular dá tempo polinomial para cada kk fixo: no caso de pesos iguais, o resto escolhe os valores mais altos que cabem após ordenar, em O(nlog⁡n)O(n\log n). Se o resto exigisse DP com tabela em WW, o total seria apenas pseudopolinomial em WW, não polinomial no tamanho binário. As hipóteses de kk fixo e de resto polinomial fazem parte do resultado.

Garantia de aproximação

Os algoritmos executados estão em aproximações com garantia. Aqui fica só o vocabulário. Para custos positivos e fator ρ≥1\rho\ge1, uma aproximação de minimização garante C≤ρC∗C\le\rho C^*. Para maximização garante C≥C∗/ρC\ge C^*/\rho. Deve também produzir uma solução admissível e correr em tempo polinomial. Uma heurística sem prova pode funcionar bem, mas não tem automaticamente essa garantia.

Um esquema de aproximação permite escolher ε>0\varepsilon>0 e fator 1+ε1+\varepsilon. Num PTAS, o tempo é polinomial no tamanho da entrada para cada ε\varepsilon fixo; num FPTAS, é polinomial também em 1/ε1/\varepsilon. A precisão pode aumentar o custo, e essa dependência faz parte do resultado.

Exercícios

Do decisor à seleção

Uma mochila 0-1 com pesos positivos e valores não negativos tem resposta afirmativa para capacidade W e limite K. Tens um decisor polinomial para essa versão de decisão. Explica como recuperar uma seleção de valor pelo menos K com no máximo n chamadas, sem enumerar os 2^n subconjuntos.

Pista

Força cada objeto a entrar e pergunta se o resto ainda permite atingir K.

Mais uma pista

Conserva o objeto quando a resposta continua afirmativa; caso contrário, exclui-o e continua.

Solução

Percorre os objetos por ordem. Se o objeto i não cabe na capacidade restante W, exclui-o. Caso contrário, pergunta ao decisor sobre os objetos ainda por decidir, com capacidade W−w_i e limite max(0,K−v_i). Uma resposta afirmativa permite incluir i e atualizar W e K; uma resposta negativa obriga a excluí-lo. Os objetos já fixados não entram nessa instância. Cada passo conserva a existência de uma conclusão válida. Quando K≤0, a seleção já basta. São no máximo n chamadas, cada uma polinomial, mais trabalho linear de reconstrução.

Confere a tua resposta:

  • Usei no máximo n chamadas ao decisor.
  • Fixei cada objeto pela resposta afirmativa.
  • Contei o custo total sem enumerar subconjuntos.

Erros frequentes

Enumerar atribuições para construir a transformação já custa exponencial. A autorredução reutiliza o decisor em vez de resolver o problema de raiz.

Voltar à explicação
Recuperar um ciclo por remoções

Tens apenas o decisor comum HAM-CYCLE(G). Um grafo G com n vértices tem ciclo hamiltoniano. Explica como obter o ciclo com m chamadas, removendo arestas.

Pista

Pergunta se o grafo sem uma aresta continua hamiltoniano.

Mais uma pista

Se sim, remove-a em definitivo; se não, conserva-a. O grafo corrente continua sempre hamiltoniano.

Solução

Percorre as m arestas. Para cada e, pergunta ao decisor sobre G-e. Se a resposta for afirmativa, faz G=G-e; senão, mantém e. No fim, nenhuma aresta pode sair sem destruir a propriedade, e um grafo hamiltoniano minimal com n vértices é um ciclo de n arestas. São m chamadas ao decisor comum, sem oráculo de arestas obrigatórias.

Confere a tua resposta:

  • Usei só o decisor comum sobre grafos.
  • Removi cada aresta dispensável.
  • Terminei com n arestas em ciclo.

Erros frequentes

Perguntar por pares (grafo, aresta obrigatória) inventa um decisor novo. A remoção testa o mesmo decisor sobre outro grafo.

Voltar à explicação
Um verificador que só confere arestas

G é o caminho 1–2–3; H é o triângulo 1–2–3–1. Um verificador aceita a permutação identidade porque cada aresta de G tem uma imagem em H. Explica o erro, corrige o verificador para grafos simples não dirigidos e justifica a pertença de isomorfismo a NP.

Solução

A identidade preserva 12 e 23, mas H tem também 13. Em G, esse par não é adjacente; os grafos não são isomorfos.

Verifica primeiro que a lista é uma bijeção. Depois exige, para cada par distinto u,v, que seja aresta de G se e só se as imagens formarem aresta de H. Com matrizes de adjacência, são O(n2)O(n^2) comparações. A lista ocupa O(nlog⁡(n+1))O(n\log(n+1)) bits.

O certificado e o verificador são polinomiais. Isso prova pertença a NP, sem fornecer um algoritmo polinomial para encontrar a bijeção ou decidir que nenhuma existe.

Confere a tua resposta:

  • Rejeitei a identidade pela aresta extra 13.
  • Exigi bijeção e equivalência de adjacência.
  • Contei O(n²) comparações e distingui verificar de decidir.
Voltar à explicação
Construir e verificar PARTITION

SUBSET-SUM recebe A=[3,1,4,2,2] e alvo T=3. Usa b=∣s−2T∣b=|s-2T|, com s a soma de A, para construir uma instância de PARTITION. Dá uma partição e explica como recuperar de qualquer partição um subconjunto de A de soma T. Indica o certificado e o custo da verificação com inteiros em binário.

Solução

Temos s=12 e b=6. Acrescentamos uma nova ocorrência de 6; a soma passa a 18. Uma partição é [3,6] e [1,4,2,2], ambas de soma 9.

Se A tem subconjunto de soma 3, juntá-lo à nova ocorrência dá soma 9 e o complemento também soma 9. Reciprocamente, no lado que contém a nova ocorrência, retirá-la deixa soma 3 em A. As ocorrências identificam os elementos, mesmo com valores repetidos.

O certificado marca o lado de cada ocorrência. Somamos e comparamos as duas partes. São O(n) adições; com entradas de até B bits, os acumuladores usam O(B+log⁡(n+1))O(B+\log(n+1)) bits. A construção e o verificador são polinomiais no tamanho binário. O verificador prova pertença a NP; a redução é o passo que transporta a dificuldade.

Confere a tua resposta:

  • Acrescentei 6 e dei partes de soma 9.
  • Recuperei um subconjunto original de soma 3.
  • Justifiquei as duas direções e o custo em bits.
Voltar à explicação
Dois estados por vértice

Enraíza o caminho 1–2–3–4 em 1. Calcula das folhas para a raiz C0(u)C_0(u) e C1(u)C_1(u) para excluir ou escolher u. Reconstrói uma cobertura ótima e justifica as recorrências. Por que a combinação usa tempo linear numa árvore?

Solução

Os pares (C0,C1)(C_0,C_1) são: em 4, (0,1); em 3, (1,1); em 2, (1,2); em 1, (2,2). O mínimo é 2. Escolher 1 permite excluir 2, obrigando a escolher 3; 4 fica excluído. A cobertura é {1,3}\{1,3\}.

Se u é excluído, todos os filhos são escolhidos para cobrir as arestas u–filho. Se é escolhido, essas arestas já estão cobertas e somamos o mínimo dos dois estados de cada filho. As subárvores não têm arestas entre si. Cada aresta participa uma vez nas somas, dando tempo e memória O(n).

Confere a tua resposta:

  • Calculei os pares (0,1), (1,1), (1,2), (2,2).
  • Reconstruí uma cobertura de tamanho 2.
  • Justifiquei os dois estados e o tempo linear.
Voltar à explicação
Uma redução que não prova dificuldade

Para provar que NOVO é NP-completo, alguém mostra NOVO ≤p SAT e dá um verificador polinomial. O que fica provado e que passo falta?

Pista

Pergunta que problema conseguirias resolver se tivesses um algoritmo para SAT.

Mais uma pista

A transformação permite resolver NOVO usando SAT. Para dificuldade, precisas de resolver SAT usando NOVO.

Solução

O verificador prova NOVO ∈ NP. A redução NOVO ≤p SAT mostra que um solver de SAT resolveria NOVO, mas não prova que NOVO seja NP-difícil. Falta uma redução de um problema NP-completo conhecido para NOVO, por exemplo SAT ≤p NOVO, com construção polinomial e equivalência nos dois sentidos. Problemas fáceis também podem reduzir-se a SAT.

Confere a tua resposta:

  • Reconheci a pertença a NP.
  • Expliquei a direção errada para dificuldade.
  • Pedi uma redução conhecida→NOVO com as duas implicações.

Erros frequentes

Inverter verbalmente a seta não constrói uma redução inversa, e pertencer a NP não implica ser NP-completo.

Voltar à explicação
Das componentes à atribuição

Considera (x∨y)∧(¬x∨y)∧(x∨¬y). Constrói as seis implicações, identifica as SCC e encontra uma atribuição pela ordem topológica da condensação. Confirma-a na fórmula original.

Pista
Cada cláusula (a∨b) dá ¬a→b e ¬b→a.
Mais uma pista

As duas últimas cláusulas ligam x e y nos dois sentidos, e também as suas negações. A primeira liga a componente negativa à positiva.

Solução

As implicações são ¬x→y, ¬y→x, x→y, ¬y→¬x, ¬x→¬y e y→x. Há duas SCC: x,y e ¬x,¬y. As arestas entre elas vão da negativa para a positiva. Como cada literal positivo aparece depois da sua negação na ordem topológica, x e y ficam verdadeiros. As três cláusulas dão, respetivamente, verdadeiro∨verdadeiro, falso∨verdadeiro e verdadeiro∨falso, todas verdadeiras.

Confere a tua resposta:

  • Obtive as SCC {x,y} e {¬x,¬y}.
  • Ordenei a componente negativa antes da positiva.
  • Atribuí verdadeiro a x e y e verifiquei as três cláusulas.

Erros frequentes

Os números atribuídos às SCC por uma implementação não são necessariamente posições topológicas. Compará-los sem conhecer a sua ordem pode inverter todos os valores e produzir uma atribuição falsa.

Voltar à explicação
Verificar as duas direções do dispositivo

Usa o dispositivo da redução de 3-SAT, com externos O_i ligados a T e ao literal ℓ_i, e internos I_i que formam um triângulo e se ligam aos O_i. Completa a coloração quando os literais têm cores T,F,F. Depois prova que não pode ser completada quando têm F,F,F.

Pista

Um externo deve diferir das cores dos seus dois vizinhos fixos.

Mais uma pista

Com literal falso, o externo não pode ser T nem F. Com literal verdadeiro, pode ser F ou B.

Solução

Para T,F,F, escolhe externos F,B,B. O triângulo interno pode ter B,T,F, respetivamente: cada interno difere do seu externo e os internos diferem entre si. Para F,F,F, todos os externos ficam forçados a B, porque se ligam a T e F. Todos os internos ficariam restritos a T e F, mas um triângulo precisa de três cores. Não existe coloração neste segundo caso.

Confere a tua resposta:

  • Completei o caso T,F,F com externos F,B,B e internos B,T,F.
  • Mostrei que F,F,F força todos os externos a B.
  • Expliquei por que o triângulo interno ficaria sem uma das três cores.

Erros frequentes

Dar F a um externo ligado a um literal F violaria essa aresta. Uma coloração válida num só caso não prova a redução: também é necessário excluir todas as colorações quando a cláusula é falsa.

Voltar à explicação

À tua maneira

Aparência

Modo de cor
Tema
Cor de destaque

Leitura

Fonte de leitura

Álgebra, lógica e uma ideia de cada vez.

Código

Fonte do código

Navegação

Cursor de leitura, sem edição. h, j, k, l movem; / pesquisa nesta página. v seleciona caracteres; V seleciona linhas; y copia. Tab permite destacar ou comentar. Espaço ou Enter abre blocos recolhíveis. Nos cartões, h, j, k, l mudam o foco.

CSS personalizado

Ativa uma sugestão ou guarda o teu CSS. Só muda este navegador.

Usa --page, --text e --accent para acompanhar o tema.

Seletores e recuperação

.site-header, .prose, .course-card, [data-reading-history], [data-playground] e .page-actions.

Abre a aparência com a tecla vírgula ou no rodapé. Se o CSS esconder os controlos, abre esta página sem CSS personalizado.

Pesquisar

Escreve para pesquisar em todo o site.

para escolher · Enter para abrir · Esc para fechar

Copiar fórmula

A cópia automática não está disponível. Copia o LaTeX abaixo.

Pesquisar nesta página

Enter procura · n / N repetem · Esc cancela. Ctrl / Cmd K pesquisa todo o site.

Atalhos de teclado

Clica numa tecla para a mudar. Esc cancela. Backspace desativa.

PesquisarCtrl / Cmd K

Os atalhos não interferem enquanto escreves. Tab e Enter funcionam sempre.