•	P and NP
•	P corresponds to a class of problems that can be solved in polynomial time
•	NP corresponds to a class of problems whose solution can be checked in polynomial time.
•	P=NP?
•	We know that P is a subset of NP
•	Whether NP is also a subset of P, is not known.
•	Probably false, but nobody has been able to prove.
•	NP-complete problems.
•	A problem PI1 is NP complete, if every problems in NP can be reduced to PI1 in polynomial time.
•	That means if you solved PI1, you solved every problem in NP.
•	First problem that was proven to be NP-complete was CNF satisfiability. Given a logical expression in conjunctive normal form, is there an assignment for the logical variables for which the expression will evaluate to true.
•	Cook (UofToronto) proved that CNF-satisfiability is NP-complete
•	Since then 1000’s of problems have been shwon to be NP-complete.
•	The task of proving that a problem is NP-complete is much simpler than faced by Cook.
•	You can pick another problem PI2 that is known to be NP-complete and show that PI2 can be reduced to PI1, then PI1 is NP-complete.
•	If you can show that one NP-complete problem PI can be solved in polynomial time, you have proven that P=NP. Because all the other problems can be reduced (using a polynomial reduction) to PI and solved in polynomial time.
•	If you prove that one problem in NP has a lower bound which is exponential (non-polynomial) then you have proved that P != NP.
•	Guranteed question.
•	Shortest path
•	n! possibilities pick the one that is shortest
•	n! solution is not acceptable for even moderate size graphs