Abstract:In this paper, we present a new framework that exploits combinatorial optimization for efficiently generating a large variety of combinatorial objects based on graphs, matroids, posets and polytopes. Our method relies on a simple and versatile algorithm for computing a Hamilton path on the skeleton of any 0/1-polytope ${\rm conv}(X)$, where $X\subseteq \{0,1\}^n$. The algorithm uses as a black box any algorithm that solves a variant of the classical linear optimization problem $\min\{w\cdot x\mid x\in X\}$, and the resulting delay, i.e., the running time per visited vertex on the Hamilton path, is only by a factor of $\log n$ larger than the running time of the optimization algorithm. When $X$ encodes a particular class of combinatorial objects, then traversing the skeleton of the polytope ${\rm conv}(X)$ along a Hamilton path corresponds to listing the combinatorial objects by local change operations, i.e., we obtain Gray code listings. As concrete results of our general framework, we obtain efficient algorithms for generating all ($c$-optimal) bases in a matroid; ($c$-optimal) spanning trees, forests, ($c$-optimal) matchings in a general graph; ($c$-optimal) vertex covers, ($c$-optimal) stable sets in a bipartite graph; as well as ($c$-optimal) antichains and ideals of a poset. The delay and space required by these algorithms are polynomial in the size of the matroid, graph, or poset, respectively, and these listings correspond to Hamilton paths on the corresponding combinatorial polytopes. We also obtain an $O(t_{\rm LP} \log n)$ delay algorithm for the vertex enumeration problem on 0/1-polytopes $\{x\in\mathbb{R}^n\mid Ax\leq b\}$, where $A\in \mathbb{R}^{m\times n}$ and $b\in\mathbb{R}^m$, and $t_{\rm LP}$ is the time needed to solve the linear program $\min\{w\cdot x\mid Ax\leq b\}$. This improves upon the 25-year old $O(t_{\rm LP}\,n)$ delay algorithm of Bussieck and Lübbecke.
What problem does this paper attempt to address?
The problem that this paper attempts to solve is to efficiently generate various combinatorial objects (such as objects in graphs, matroids, posets and polyhedra) through optimization techniques. Specifically, the paper proposes a new framework that utilizes combinatorial optimization methods to effectively generate multiple combinatorial objects based on graphs, matroids, posets and polyhedra. The core algorithm of this method can calculate the Hamiltonian path on the skeleton of the 0/1 - polyhedron, thereby obtaining the list of local change operations of these combinatorial objects, that is, generating the Gray code list.
### Main Contributions
1. **Efficient Generation of Combinatorial Objects**: The paper proposes a general framework that can efficiently generate multiple combinatorial objects, such as bases of matroids, spanning trees of graphs, matchings, vertex covers, stable sets, etc. The time complexity and space complexity of these generation algorithms are both polynomial - level.
2. **Hamiltonian Path and Gray Code**: The list of generated combinatorial objects corresponds to the Hamiltonian path on the corresponding combinatorial polyhedron, thereby achieving the Gray code list and ensuring local changes between consecutive objects.
3. **Connection between Optimization and Generation**: If an optimization problem can be solved efficiently, an efficient generation algorithm can be directly obtained. The delay time of the generation algorithm is only one logarithmic factor \(\log n\) more than the running time of the optimization algorithm.
4. **Specific Results**: The paper gives several specific application examples, such as generating all bases of matroids, spanning trees of graphs, matchings, vertex covers, etc., and in some cases improves the existing results.
### Technical Details
- **Encoding Method**: Use a bit - string \(X\subseteq\{0, 1\}^n\) of length \(n\) to encode different combinatorial objects.
- **0/1 - Polyhedron**: Consider the convex hull \(\text{conv}(X)\) of the set of bit - strings \(X\), which is a 0/1 - polyhedron. The edges of the polyhedron correspond to local change operations between combinatorial objects.
- **Basic Algorithm**: Algorithm \(P\) generates a Hamiltonian path by calculating the shortest prefix change and the minimum Hamming distance. The key steps of the algorithm include:
- Calculate the length \(\beta\) of the shortest prefix change.
- Find the unvisited vertex \(y\) with the minimum Hamming distance from the current vertex \(x\).
- Select a vertex \(y\) as the next vertex to be visited.
### Important Theorems
- **Theorem 1**: For any set \(X\subseteq\{0, 1\}^n\), any tie - breaking rule and initial vertex \(\tilde{x}\), algorithm \(P\) can calculate the Hamiltonian path on the skeleton of \(\text{conv}(X)\) starting from \(\tilde{x}\).
### Advantages and Limitations
- **Advantages**:
- Applicable to any 0/1 - polyhedron.
- Any tie - breaking rule can be used.
- It can start from any initial vertex.
- There is no need for polyhedron calculation, and it only depends on the combinatorial properties of bit - strings.
- **Limitations**:
- For unstructured combinatorial object classes, sometimes there are faster generation methods.
- Usually only a Hamiltonian path can be generated, rather than a Hamiltonian cycle.
### Application Examples
- **Spanning Trees**: Generate all spanning trees of a graph, and each spanning tree differs from its adjacent spanning tree only by the exchange of one edge.
- **Matchings**: Generate all matchings of a graph, and each matching differs from its adjacent matching only by the exchange of an alternating path or cycle.
- **Vertex Covers**: Generate all vertex covers of a graph, and each vertex cover differs from its adjacent vertex cover only by a connected symmetric difference operation.
In conclusion, this paper provides a general and efficient method for generating combinatorial objects by combining optimization problems with generation problems.