Embora, para alguns problemas populares, seja de fato verdade, acho que ambas as suposições são - dependendo do que você define como um problema de otimização - não são verdadeiras.
Primeiro, algumas definições: a maioria dos problemas de otimização não faz parte do NP . Por exemplo, para o problema da mochila : não se pode explorar o não-determinismo para construir a bolsa mais valiosa, simples porque os diferentes ramos não-determinísticos não têm memória compartilhada. NP também é definido como "polinomialmente verificável" (verificando um certificado) [1, p. 34]
. Nesse caso, o certificado é, por exemplo, uma bolsa : uma cadeia de bits em que, se o i- ésimo bit estiver definido, isso implica que o i- ésimo item faça parte da bolsa. Você pode realmente verificar em tempo polinomial se essa bolsa é mais valiosa do que um determinado limite (essa é a variante de decisão), mas você não pode, tanto quanto sabemos, com base em uma única bolsa (um número polinomial de bolsas), decidir se essa bolsa é a mais valiosa de todas as bolsas possíveis. Essa é uma diferença vital entre, por exemplo, NP e EXP : no EXP , você pode enumerar todas as sacolas possíveis e fazer a contabilidade sobre qual sacola é a melhor.
A variante de decisão dos problemas de otimização é, em alguns casos, parte do NP , é preciso fazer uma distinção clara entre o sabor da maximização e o sabor da decisão . No sabor da decisão, a pergunta é: " Dado um problema de otimização e um limite de utilidade, existe uma solução com um utilitário maior ou igual a esse limite " (ou ligeiramente modificado para um problema de minimização).
Presumo também que por NP você quer dizer a parte (hipotética) de NP que não faz parte do P . Se P = NP , é claro que o NP-completo ainda existe, mas será igual a P (coincide apenas com P para algumas noções de redução, como reduções polinomiais de muitas e uma por @ AndrásSalamon), o que não é tão impressionante ( e reduziria a " lacuna " que você está afirmando na sua pergunta).
Percebo cada vez mais que os problemas mais discretos são NP-completos.
Agora que resolvemos isso: existem muitos problemas de otimização em P : problema de caminho mais curto , problema de fluxo máximo (para capacidades integrais), árvore de abrangência mínima e correspondência máxima . Embora esses problemas possam parecer "triviais para resolver" para você, ainda são problemas de otimização e, em muitos casos, a construção (e a comprovação da correção) não é tão fácil. Portanto, a alegação não contém todos os problemas discretos como NP-completos. Dado que P não é igual a NP , esses problemas não podem ser NP completos .
Além disso, pode-se percorrer a hierarquia polinomial , essa hierarquia fornece uma maneira de construir um problema de decisão que está em , mas, dado um problema de decisão, você pode (quase) sempre construir um problema de otimização que é pelo menos tão difícil ( se a variante de otimização fosse menos difícil, seria possível resolver a variante de decisão chamando a variante de otimização primeiro e depois tomar uma decisão com base no resultado desse algoritmo).ΣPi
Considerando que otimizar problemas contínuos é quase sempre facilmente alcançável.
Um problema contínuo popular que é difícil para NP é a programação quadrática .
Na programação quadrática, procura-se um vetor que:x⃗
x⃗ T⋅Q⋅x⃗ 2+c⃗ T⋅x⃗
é minimizado:
A⋅x⃗ ≤b⃗
Na verdade, a programação linear também tem sido considerada difícil para NP , mas com heurísticas com desempenho muito bom (o método Simplex ). O algoritmo do Karmarkar é no entanto, em P .
A partir do momento em que o problema de otimização lida com objetos não convexos, em geral será difícil - se não impossível - encontrar um algoritmo eficiente.
Bibliografia
[1]
Complexidade Computacional, uma abordagem moderna , Sanjeev Arora e Boaz Barak