Title:

Efficient algorithms for listing combinatorial structures

This thesis studies the problem of designing efficient algorithms for listing combinatorial structures. The main notion of efficiency that we use is due to Johnson, Yannakakis, and Papadimitriou. It is called polynomial delay. A listing algorithm is said to have delay d if and only if it satisfies the following conditions whenever it is run with any input p: 1. It executes at most d(p) machine instructions before either producing the first output or halting. 2. After any output it executes at most d(p) machine instructions before either producing the next output or halting. An algorithm is said to have polynomial delay if its delay is bounded from above by a polynomial in the length of the input. In the thesis we also define a weaker notion of efficiency which we call cumulative polynomial delay. There are some families of combinatorial structures for which it is easy to design a polynomial delay listing algorithm. For example, it is easy to design a polynomial delay algorithm that takes as input a unary integer n and lists all nvertex graphs. In this thesis we focus on more difficult problems such as the following. Problem 1  Listing unlabeled graphs  Design a polynomial delay algorithm that takes as input a unary integer n and lists exactly one representative from each isomorphism class in the set of nvertex graphs. Problem 2  Listing Hamiltonian graphs  Design a polynomial delay algorithm that takes as input a unary integer n and lists all Hamiltonian nvertex graphs. We start the thesis by developing general methods for solving listing problems such as 1 and 2. Then we apply the methods to specific combinatorial families obtaining various listing algorithms including the following. 1. A polynomial space polynomial delay listing algorithm for unlabeled graphs 2. A polynomial space polynomial delay listing algorithm for any first order one property* 3. A polynomial delay listing algorithm for Hamiltonian graphs 4. A polynomial space polynomial delay listing algorithm for graphs with cliques of specified sizes 5. A polynomial space cumulative polynomial delay listing algorithm for kcolorable graphs. * A first order graph property is called a one property if and only if it is the case that almost every graph has the property.
