In computer science, iterative compression is an algorithmic technique for the design of fixed-parameter tractable algorithms, in which one element is added to the problem in each step, and a small solution for the problem prior to the addition is used to help find a small solution to the problem after the step. The technique was invented by Reed, Smith and Vetta to show that the problem of odd cycle transversal was solvable in time, for a graph with vertices, edges, and odd cycle transversal number. Odd cycle transversal is the problem of finding the smallest set of vertices of a graph that include at least one vertex from every odd cycle; its parameterized complexity was a longstanding open question. This technique later proved very useful in showing fixed-parameter tractability results. It is now considered to be one of the fundamental techniques in the area of parameterized algorithmics. Iterative compression has been used successfully in many problems, for instance odd cycle transversal and edge bipartization, feedback vertex set, cluster vertex deletion and directed feedback vertex set. It has also been used successfully for exact exponential time algorithms for independent set.
Technique
Iterative compression applies, for instance, to parameterized graph problems whose inputs are a graph and a natural number, and where the problem is to test the existence of a solution of size. Suppose that the problem is closed under induced subgraphs and that there exists an efficient subroutine that determines whether a solution of size can be compressed to a smaller solution of size. If these assumptions are met, then the problem can be solved by adding vertices one at a time to an induced subgraph, and finding the solution to the induced subgraph, as follows:
Start with a subgraph induced by a vertex set of size, and a solution that equals itself.
While, perform the following steps:
*Let be any vertex of, and add to
*Test whether the -vertex solution to can be compressed to a -vertex solution.
*If it cannot be compressed, abort the algorithm: the input graph has no -vertex solution.
*Otherwise, set to the new compressed solution and continue the loop.
This algorithm calls the compression subroutine a linear number of times. Therefore, if the compression variant is solvable in fixed-parameter tractable time, i.e., f · nc for some constant c, then the iterative compression procedure solving the entire problem runs in f · nc+1 time. The same technique can be applied to finding sets of edges for graph properties closed under subgraphs, or for other properties beyond graph theory. When the value of the parameter is unknown, it can be found by using an outer level of exponential search or sequential search for the optimal choice of, with each step of the search based on the same iterative compression algorithm.
Applications
In their original paper Reedet al. showed how to make a graph bipartite by deleting at most k vertices in time O. Later, a simpler algorithm was given, also using iterative compression, by Lokshstanov, Saurabh and Sikdar. In order to compress a deletion set of size to a deletion set of size, their algorithm tests all of the partitions of into three subsets: the subset of that belongs to the new deletion set, and the two subsets of that belong to the two sides of the bipartite graph that remains after deleting. Once these three sets have been selected, the remaining vertices of a deletion set can be found from them by applying a max-flow min-cut algorithm. Vertex cover is another example for which iterative compression can be employed. In the vertex cover problem, a graph and a natural number are taken as inputs and the algorithm must decide whether there exists a set of vertices such that every edge is incident to a vertex in. In the compression variant of the problem, the input is a set of vertices that are incident to all edges of the graph, and the algorithm must find a set of size with the same property, if it exists. One way to do this is to test all choices of which subset of is to be removed from the cover and reintroduced back into the graph. Such a choice can only work if no two removed vertices are adjacent, and for each such choice, the subroutine must include in the cover all the vertices outside that are incident to an edge that becomes uncovered by this removal. Using this subroutine in an iterative compression algorithm gives a simple algorithm for vertex cover.