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?
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)
Also: see the note in 22.5 that describes three papers for further reading, including a survey of the topic.