Se um problema for NP-Hard, significa que existe uma classe de instâncias desse problema que são NP-Hard. É perfeitamente possível que outras classes específicas de instâncias sejam solucionáveis em tempo polinomial.
Considere, por exemplo, o problema de encontrar uma coloração tridimensional de um gráfico . É um problema conhecido do NP-Hard. Agora imagine que suas instâncias estão restritas a gráficos que são, por exemplo, árvores. Claramente, você pode encontrar facilmente uma cor 3 de uma árvore em tempo polinomial (na verdade, você também pode encontrar uma cor 2).
Considere problemas de decisão por um segundo. Um método para provar a dureza de um problema de decisão é conceber uma redução polinomial (Karp) de outro problema Q que é conhecido por NP-Hard. Nesta redução, você mostra que existe uma função f que mapeia cada instância q do problema Q para uma instância do problema P, de modo que:
q é uma instância yes para QPQfqQPq é um exemplo sim por P . Isso implica que a solução de f ( q ) deve ser "pelo menos tão difícil" quanto a solução de q .Q⟺f(q)Pf(q)q
Observe como ele não é necessário para a imagem de ser igual ao conjunto das instâncias de P . Portanto, é perfeitamente possível que o problema P restrito a algum subconjunto de instâncias não seja difícil.fPP
Para retornar à sua pergunta original:
- O problema de atribuição pode ser resolvido em tempo polinomial, ou seja, uma solução para cada instância do problema de atribuição pode ser calculada em tempo polinomial.
- ILP é NP-Hard: em geral, pode ser difícil calcular uma solução para um problema de ILP, ou seja, há casos de ILP que são difíceis.
- Algumas instâncias específicas de ILP podem ser resolvidas em tempo polinomial.