ArticleslgStudy

computer science

Iterative compression

Iterative compression is a computer science topic covered in the lgStudy science library. This page brings together a partial reference excerpt, illustrations, worked examples, real-world applications and a short study plan, so you can understand Iterative compression rather than just read about it. In short: In computer science, iterative compression is an algorithmic technique for the design of fixed-parameter tractable algorithms, in which one element (such as a vertex of a graph) 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 odd cy…

Key takeaways

  • Iterative compression belongs to computer science; place it in that map before memorising details.
  • Learn the definition first, then one example that makes the definition concrete.
  • Connect Iterative compression to a quantity you can measure, compute or draw — that is where exam questions come from.
  • Reproduce the core statement of Iterative compression from memory before moving on to harder problems.

Reference excerpt

In computer science, iterative compression is an algorithmic technique for the design of fixed-parameter tractable algorithms, in which one element (such as a vertex of a graph) 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 odd cycle transversal problem was solvable in time O(3k kmn), for a graph with n vertices, m edges, and odd cycle transversal number k. Odd cycle transversal is the problem of finding the smallest set of vertices of a graph that includes 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 (see below) and edge bipartization, feedback vertex set, and cluster vertex deletion. 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 G = (V,E) and a natural number k, and where the problem is to test the existence of a solution (a set of vertices) of size ≤ k. Suppose that the problem has the following properties:

It is closed under induced subgraphs: If a solution of size ≤ k exists in a given graph, then a solution of this size or smaller also exists in every induced subgraph). If X is a solution, and X' is a set of vertices containing X, then X' is also a solution. There exists an efficient subroutine which, given a solution Y of size k + 1 determines whether it can be compressed to a solution of size k. That is, it finds a solution of size k or determines that no such solution exists. 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 S of size k, and a solution X that equals S itself. (If X is not a solution to S then no solution exists.) While S ≠ V, perform the following steps: Let v be any vertex of V \ S, and add v to S Test whether the (k + 1)-vertex solution Y = X ∪ {v} to S can be compressed to a k-vertex solution. If it cannot be compressed, abort the algorithm: the input graph has no k-vertex solution. Otherwise, set X 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(k) · nc for some constant c, then the iterative compression procedure solving the entire problem runs in f(k) · nc+1 time. The same technique can be applied to finding sets of edges for graph properties closed under subgraphs (rather than induced subgraph), or for other properties beyond graph theory. When the value of the parameter k is unknown, it can be found by using an outer level of exponential search or sequential search for the optimal choice of k, with each step of the search based on the same iterative compression algorithm.

Applications An odd cycle transversal of a graph is a set of vertices which can be deleted to make the graph bipartite. In their original paper, Reed et al. gave an iterative compression algorithm to determine if a graph has an odd cycle transversal of size at most k, in time O(3k kmn). Later, a simpler algorithm was given, also using iterative compression, by Lokshstanov, Saurabh and Sikdar. In order to compress a deletion set Y of size k + 1 to a deletion set X of size k, their algorithm tests all of the 3k+1 partitions of Y into three subsets: the subset of Y that belongs to the new deletion set, and the two subsets of Y that belong to the two sides of the bipartite graph that remains after deleting X. Once these three sets have been selected, the remaining vertices of a deletion set X (if it exists) 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 G = (V,E) and a natural number k are taken as inputs and the algorithm must decide whether there exists a set X of k vertices such that every edge is incident to a vertex in X. In the compression variant of the problem, the input is a set Y of k + 1 vertices that are incident to all edges of the graph, and the algorithm must find a set X of size k with the same property, if it exists. One way to do this is to test all 2k + 1 choices of which subset of Y 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 Y that are incident to an edge that becomes uncovered by this removal. Using this subroutine in an iterative compression algorithm gives a simple O(2k n2) algorithm for vertex cover.

See also Kernelization, a different design technique for fixed-parameter tractable algorithms

References

Worked examples

Example 1 — a first encounter with Iterative compression

Start with the simplest possible case. Write down what Iterative compression claims or describes in one sentence, then invent the smallest concrete situation in which that sentence is true. In computer science, the smallest case is usually a single object, a single equation or a single measurement. Check that every symbol or term in your sentence has a meaning in that case.

Example 2 — changing one variable

Take the situation from Example 1 and change exactly one quantity: double it, halve it, or set it to zero. Predict what should happen to Iterative compression before you calculate. Comparing your prediction with the result is the fastest way to find out whether you understand the idea or only the words.

Example 3 — an exam-style question

Typical questions about Iterative compression ask you to (a) state it precisely, (b) apply it to given data, and (c) explain a limitation. Practise writing all three answers in under five minutes; the third part is what separates a full-mark answer from an average one.

Applications of Iterative compression

In research
Iterative compression appears in computer science research whenever the underlying quantities have to be modelled precisely. Papers usually cite it as a starting assumption and then explore where it breaks down.
In technology and industry
Engineering practice reuses Iterative compression in design rules, simulations and safety margins. Knowing the idea lets you read a specification sheet and understand why the numbers look the way they do.
In the classroom
Iterative compression is common in secondary-school and first-year university syllabi. It links to neighbouring topics Analysis of algorithms, Graph algorithms, Parameterized complexity, so understanding it makes those chapters shorter.
In everyday life
Look for Iterative compression outside the textbook — in sport, cooking, traffic, electronics or the sky above you. An example you found yourself is remembered far longer than one you were given.

Affiliate

Preply — study more efficiently by working with a personal tutor. 50% off.

How to study Iterative compression in 20 minutes

  1. Read the reference excerpt below once, without taking notes.
  2. Close the page and write down what Iterative compression means in your own words.
  3. Compare your version with the excerpt and mark what you missed.
  4. Work through the three examples above with pen and paper.
  5. Explain Iterative compression out loud to somebody else — or to Teacher Smith in the lgStudy chat.

Frequently asked questions

What is Iterative compression in simple terms?

In computer science, iterative compression is an algorithmic technique for the design of fixed-parameter tractable algorithms, in which one element (such as a vertex of a graph) 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 s…

Why does Iterative compression matter?

Because it connects several computer science ideas at once: it gives you a definition you can apply, a quantity you can calculate, and a way to check whether a result is plausible.

How should I study Iterative compression?

Read the excerpt, restate it from memory, then work through the examples and applications listed on this page. The five-step study plan above takes about twenty minutes.

What does this page cover?

It gives you a compact reference excerpt plus original lgStudy explanations, examples, applications and study material on Iterative compression.

Tags

  • Analysis of algorithms
  • Graph algorithms
  • Parameterized complexity

Keep exploring