The purpose of this undergraduate course is to introduce fundamental techniques and viewpoints for the design and the analysis of efficient computer algorithms, and to study important specific algorithms. The course relies heavily on mathematics and mathematical thinking in two ways: first as a way of proving properties about particular algorithms such as termination, and correctness; and second, as a way of establishing bounds on the worst case (or average case) use of some resource, usually time, by a specific algorithm. The course covers some randomized algorithms as well as...
Lecture 28: Gusfield recaps NP-completeness.
The professor discusses coping with NP-complete problems: approximation algorithms and lowering the exponent of exponential-time algorithms.
Published 12/03/10
Lecture 27 covers the major theorems of NP-completeness, P = NP question, and how to prove a new problem in NP-complete.
Published 12/01/10
In Lecture 26, Gusfield gives correct, formal definitions of P and NP, ending with a brief definition of NP-complete problems (languages).
Published 11/29/10