La clase NP completo incluye problemas cuya solución óptima es difícil de encontrar de manera eficiente, a pesar de que existe un algoritmo polinómico para verificar si una solución propuesta es correcta. Algunos problemas NP completos comunes son el problema del vendedor viajero, el problema de la mochila y las torres de Hanoi. Sus mejores algoritmos conocidos son no deterministas y no se ha encontrado una solución en un tiempo polinómico.