Do ponto de vista de alguém que escreve código para ganhar a vida, é importante ter uma boa familiaridade com a NP-completude:
1. Reconhecer quando você está latindo na árvore errada
Os problemas NP-completos são os mais fáceis dos problemas NP-difíceis e, no entanto, até onde sabemos, leva um tempo exponencial ao tamanho da entrada para resolver esse problema de decisão. Portanto, como uma questão prática, se você puder mostrar que o problema que está tentando resolver é difícil para o NP (normalmente, mostrando que uma solução eficiente para ele também daria uma solução eficiente para algum problema completo do NP), você sabe que você pode parar de procurar um algoritmo eficiente para resolvê-lo exatamente em geral. Em vez disso, você pode selecionar entre algoritmos conhecidos que prometem boas aproximações para problemas de otimização difíceis de NP e continuar com o restante do seu projeto.
2. Encontrando a árvore certa
Como os computadores costumam ser usados para atacar problemas difíceis de NP, foram desenvolvidos solucionadores especializados que podem resolver com eficiência algumas instâncias de problemas difíceis de NP. Reconhecer que seu problema é NP-completo é o primeiro passo para encontrar uma ferramenta existente (SAT, ILP, SMT, CSP, para citar algumas) que pode ajudá-lo a encontrar soluções exatas em alguns casos em que você teria que se contentar com um problema. aproximação.