Uma razão pela qual vemos complexidades de aproximação diferentes para problemas de NP-completo é que as condições necessárias para NP-completo constituem uma medida granular muito grossa da complexidade de um problema. Você pode estar familiarizado com a definição básica de um problema sendo NP-complete:Π
- Π está em NP e
- Para todos os outros problemas no NP, podemos transformar uma instância de em uma instância de em tempo polinomial, de modo que seja uma instância sim de se e somente se for uma instância sim de .ΞxΞyΠyΠxΞ
Considere a condição 2: tudo o que é necessário é que possamos pegar e transformá-lo em algum que preserva a resposta sim / não "de bit único". Não há condições sobre, por exemplo, o tamanho relativo das testemunhas para sim ou não (ou seja, o tamanho da solução no contexto de otimização). Portanto, a única medida usada é o tamanho total da entrada, que apenas fornece uma condição muito fraca para o tamanho da solução. Portanto, é bastante "fácil" transformar um em um .xyΞΠ
Podemos ver a diferença em vários problemas NP-completos, observando a complexidade de alguns algoritmos simples. -Coloring tem uma força bruta (onde é o tamanho da entrada). Para -Dominating Set, uma abordagem de força bruta assume . Estes são, em essência, os melhores algoritmos exatos que temos. -Vertex Cover, no entanto, possui um algoritmo simples (escolha uma aresta, ramo no qual o nó de extremidade incluir, marque todas as áreas cobertas, continue até você não ter arestas desmarcadas ou pressionar seu orçamento dekO(kn)nkO(nk)kO(2knc)ke bactrack). Sob reduções de um-tempo em tempo polinomial (reduções de Karp, ou seja, o que estamos fazendo na condição 2 acima), esses problemas são equivalentes.
Quando começamos a abordar a complexidade com ferramentas ainda um pouco mais delicadas (complexidade de aproximação, complexidade parametrizada, outras que não consigo pensar), as reduções que usamos se tornam mais estritas, ou melhor, mais sensíveis à estrutura da solução, e as diferenças começam a aparecer; -Vertex Cover (como Yuval mencionou) tem uma aproximação 2 simples (mas não possui um FPTAS, a menos que algumas classes de complexidade colapsem ), -Dominating Set possui um algoritmo de aproximação (mas não -proximação para alguns ), e aproximação realmente não faz sentido para a versão direta do -Coloring.kk(1+logn)(clogn)c>0k