Search code examples
algorithmgraph-theorytreeapproximation

An approximate algorithm for finding Steiner Forest


Consider a weighted graph G=(V,E,w). We are given a family of subsets of vertices V_i.

A Steiner Forest is a forest that for each subset of vertices V_i connects all of the vertices in this subset with a tree.

Example: only one subset V_1 = V. In this case a Steiner forest is a spanning tree of the whole graph.

Example: a graph P4 (path with 4 vertices) and two subsets: V_1 = {v1, v4} and V_2 = {v2, v3}. The Steiner tree for this example is the whole graph.

Enough theory. Finding such a forest with minimal weight is difficult (NP-complete). Do you know any quicker approximate algorithm to find such a forest with non-optimal weight?


Solution

  • Chapter 20 of Approximation Algorithms by Vijay Vazirani describes a schema for generating a Steiner Forest. The analysis uses LP-duality, which he uses to determine the factor of the algorithm:

    (This is a factor-2 algorithm but in practice it probably fares quite well)

    Approximation Algorithms

    Also: see the note in 22.5 that describes three papers for further reading, including a survey of the topic.