CSI 5165 - Combinatorial Algorithms - Fall 2003

Professor :  Lucia Moura
Course Material:  Course Description and Outline (first handout).
References and resources
Lecture schedule
Last year's projects
Lectures notes: Lect 1-2(ps, pdf), Lect 3-4 (ps,pdf), Lect 5-6 (ps,pdf), Lect 7-9 (ps, pdf) Lect 10-11 (ps,pdf). 
Assignments: A1 (ps,pdf), A2 (ps,pdf), A3 (ps,pdf).

My list of suggested projects.

Brief Description: The main theme of the course is algorithms for the generation, enumeration and search of combinatorial objects.
Combinatorial objects/structures include: sets, lists, strings, permutations, graphs and set systems. 
  • Basic algorithms for ordering, ranking and unranking of basic combinatorial objects.
  • Exhaustive search and exhaustive generation algorithms (backtracking, branch-and bound).
  • Heuristic search algorithms (hill climbing, simulated annealing, tabu search, genetic algorithms).
  • Computing isomorphism. Isomorph-free generation. (isomorphism of graphs and set systems; computing invariants and certificates; exhaustive generation of complete (isomorph-free) lists of combinatorial objects.)
The basic material can be found in the textbook: 
D. Kreher and D. Stinson, "Combinatorial Algorithms: generation, enumeration and search", CRC Press, 1998.
Advanced topics will be complemented with papers/book chapters.
Focus of the course: Combinatorial problems arise in all areas of computer science, engineering and mathematics. Students will learn fundamental and advanced techniques for search and generation problems and choose a topic of their interest for a project. Ideally the project will be on the use of these techniques to solve problems on the student's area of research/interest. A typical project will involve reading research papers, and designing/implementing algorithms.

Any questions about the course contents or the use of these techniques in specific problems/areas? Please, contact the instructor: lucia@site.uottawa.ca.