Sometimes there is an efficient solution to this problem but in general it is very hard.There are literally hundreds of problems that can be put in this hard class, from areas including optimization, scheduling, cryptography, theorem proving, combinatorics, etc.