Introduction to NP-completeness