Computational complexity

C.-H. L. Ong

Sixteen-hour lecture course. Final-year computer science undergraduate

Aim

This course gives an introduction to the key ideas and techniques in computational complexity.

Syllabus

Reducibility among computational problems. Randomized problems. Polynomial time combinatorial problems. NP-completeness. Simple polynomial transformations. Pseudo-polynomial time algorithms. Approximation algorithms. Complexity classes beyong NP. Undecidability. The halting problem.

Synopsis

Reading list

[1] D. P. Bovet and P. Crescenzi. Introduction to the Theory of Complexity. Prentice International Series in Computer Science. Prentice Hall, 1994.

[2] J. L. Balcazar, J. Diaz, and J. Gabarro. Structural Complexity I. Springer-Verlag, 1995.

[3] T. H. Cormen, C. E. Leiserson, and R. L. Rivest. Introduction to Algorithms. MIT Press, 1990.

[4] M. R. Garey and D. S. Johnson. Computers and Intractability: A guide to the Theory of NP-Completeness. Freeman, 1979.

[5] D. Harel. Algorithmcs: The Spirit of Computing. Addison-Wesley, 2nd edition, 1992.

[6] J. E. Hopcroft and J. D. Ullman. Introduction to Automata Theory, Languages and Computation. Addison-Wesley, 1979.

[7] R. Motwani and P. Raghavan. Randomized Algorithms. Cambridge University Press, 1995.

[8] C. H. Papadimitriou. Computational Complexity. Addison-Wesley, 1994.

[9] M. Sipser. Introduction to the Theory of Computation. PWS Publishing Company, January 1997.


Course material

Handouts

Hardcopies of the above are available from the Reception. Here is a list of Additions, Corrections and Typos. [Last updated on 4 March 1999] A revised version (28 Map 1999) of this year's notes is available.

The above documents are in PostScript which can be read using ftp-able software such as Acrobat Reader produced by Adobe.

[Last updated on 4 March 1999 by Luke Ong]