15. NP-Completeness
[SQEAKING] [RUSTLING] [CLICKING] MICHAEL SIPSER: Welcome, everyone, back to theory of computation. So we are now at lecture number 15. And this is an important lecture. Well, all of our lectures are important, but this is going to introduce one of the major topics that we're going to see going on in various forms through the rest of the semester, which is the notion of a complete problem. In this case, it's going to be an NP complete problem. And I think some of you have probably heard of that concept already. Maybe you've seen it in some courses or other, but we're going to do that in a rather careful and formal way over the next couple of lectures. So we are following up on our previous discussions about complexity, time complexity. We defined the time and not deterministic time complexity classes, as you may remember, the classes P and NP, talked about the P versus NP problem, looked at some interesting algorithms for showing problems in P called dynami...