Complexidade computacional
P, NP, reduções, certificados, autorredução e casos especiais tratáveis.
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 e valor pelo menos ?” é 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.
, pois podemos ignorar o certificado e resolver. Não sabemos se . 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 quando há uma transformação polinomial tal que
Se soubéssemos resolver , resolveríamos transformando a entrada e chamando esse algoritmo. Para provar que um novo problema é difícil, reduzimos um problema difícil conhecido para . Mostrar só mostra que não é mais difícil que segundo essa transformação.
Uma prova precisa da construção, do tamanho/custo e das duas implicações. Enumerar 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 , usa
As cláusulas dizem que verdadeiro exige as duas entradas verdadeiras e que ambas verdadeiras exigem 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:
Ela é satisfazível para alguma escolha de 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 é um conjunto de vértices em que cada par tem uma aresta. Para uma fórmula CNF com 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 .
Se a fórmula é satisfazível, escolhe em cada cláusula um literal verdadeiro. Esses vértices são compatíveis dois a dois e formam uma clique. Reciprocamente, uma clique de tamanho 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, admite escolher as ocorrências . As duas ocorrências de 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 ocorrências, há vértices e no máximo arestas. O certificado de clique lista 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. é cobertura de se e só se é independente em .
Uma clique de tamanho em é independente de tamanho no complemento . Logo existe clique de tamanho em se e só se existe cobertura de tamanho no máximo em . O complemento liga exatamente os pares distintos que não estavam ligados em . A construção custa .
A direção e o complemento são decisivos. Procurar diretamente uma cobertura de de tamanho corresponderia a um conjunto independente de , 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 : 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 . Os três precisam de cores distintas, às quais damos esses mesmos nomes. Para cada variável , cria vértices e , liga-os entre si e liga ambos a . Só podem ter as cores e , em sentidos opostos, representando uma atribuição booleana.
Para cada cláusula , acrescenta seis vértices novos e estas arestas:
| Ligações | Restrição que impõem |
|---|---|
| , , | O triângulo interno usa as três cores |
| , para | Cada interno difere do externo correspondente |
| e , para | Cada externo difere de e do seu literal |
Nesta construção, os externos ligam-se ao vértice . Fixar este nome evita trocar o papel das cores na prova.
Se os três literais forem falsos, cada é adjacente a e , logo fica forçado a . Nenhum pode então usar , 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 , for verdadeiro, dá a e aos outros dois externos. São escolhas válidas, mesmo que os outros literais também sejam verdadeiros. Dá a e 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 variáveis e cláusulas, há vértices e arestas; a construção é linear. Assim, 3-COLORABILITY é NP-completo.
O número cromático é o menor número de cores de uma coloração válida. Uma clique de tamanho exige cores. Se é o maior grau, colorir sequencialmente com uma cor livre usa no máximo cores num grafo simples, pois cada vértice tem no máximo vizinhos. Isso é um limite superior, não uma garantia de mínimo. Num triângulo, e : nem sequer cores chegam sempre.
Um caso que fica em P: 2-SAT
Para cada variável cria os vértices e . Uma cláusula equivale a e ; 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 a verdadeiro se a componente de estiver depois da de . Cada variável e a sua negação recebem valores opostos.
Esta regra respeita as implicações. Suponhamos que tem verdadeiro e falso. Há também a aresta , pois cada cláusula acrescenta as duas. As posições teriam de satisfazer
o que é impossível. Logo nenhuma cláusula fica falsa. Numa cláusula unitária , vista como , a aresta coloca depois da sua negação e atribui-lhe verdadeiro, como esperado.
O grafo tem vértices e arestas para cláusulas, e as SCC dão decisão em . 2-SAT está em P; 3-SAT é NP-completo. Isto não prova uma separação entre as classes, porque continua em aberto se .
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 , cada pergunta ao decisor fixa um objeto como dentro ou fora e ajusta capacidade e limite: perguntar com o objeto incluído equivale a decidir no resto; excluído equivale a . Conserva a escolha que mantém a resposta afirmativa. Com chamadas, recupera a seleção sem enumerar subconjuntos.
Para HAM-CYCLE, usa apenas o decisor comum que recebe um grafo. Se tem ciclo hamiltoniano, percorre as arestas por ordem: para cada aresta , pergunta se ainda tem ciclo hamiltoniano. Se sim, remove em definitivo; se não, conserva . O invariante é que o grafo corrente continua hamiltoniano. No fim, nenhuma aresta pode sair sem destruir essa propriedade, e um grafo hamiltoniano minimal com vértices é exatamente um ciclo de arestas. Se o decisor for polinomial, a construção com chamadas também é.
Certificados e instâncias especiais
Para dois grafos simples não dirigidos, um certificado de isomorfismo é uma bijeção entre os vértices. Verifica primeiro que cada imagem é válida e ocorre uma só vez. Depois, para cada par distinto , exige
A equivalência exclui também arestas extra em . Com matrizes de adjacência, há pares a comparar. A lista da bijeção ocupa 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 , calcula e acrescenta quando . A nova metade é .
- Se , a metade é . 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 , 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 , 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 ocorre como subgrafo de . É NP-completa por redução a partir de CLIQUE, ou seja CLIQUE SUBGRAPH-ISOMORPHISM: o padrão é o grafo completo e o grafo maior é a entrada de CLIQUE. Há clique de tamanho se e só se ocorre como subgrafo.
Em árvores, a cobertura ótima de vértices tem dois estados por vértice. Enraíza a árvore e define como o mínimo da subárvore quando escolhemos , e quando o excluímos:
Se 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 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 objetos excecionais e constante, enumerar os subconjuntos excecionais e completar cada resto com o método polinomial da parte regular dá tempo polinomial para cada fixo: no caso de pesos iguais, o resto escolhe os valores mais altos que cabem após ordenar, em . Se o resto exigisse DP com tabela em , o total seria apenas pseudopolinomial em , não polinomial no tamanho binário. As hipóteses de 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 , uma aproximação de minimização garante . Para maximização garante . 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 e fator . Num PTAS, o tempo é polinomial no tamanho da entrada para cada fixo; num FPTAS, é polinomial também em . 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.
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.
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 comparações. A lista ocupa 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.
Construir e verificar PARTITION
SUBSET-SUM recebe A=[3,1,4,2,2] e alvo T=3. Usa , 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 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.
Dois estados por vértice
Enraíza o caminho 1–2–3–4 em 1. Calcula das folhas para a raiz e 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 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 é .
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.
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.
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
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.
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.