[algorithm] How to prove that a problem is NP complete?