Steiner trees have been extensively studied in the context of
weighted graphs. The prototype is, arguably, the
Steiner tree problem in graphs. Let be an undirected graph with non-negative edge weights c and let be a subset of vertices, called
terminals. A
Steiner tree is a tree in
G that spans
S. There are two versions of the problem: in the
optimization problem associated with Steiner trees, the task is to find a minimum-weight Steiner tree; in the
decision problem the edge weights are integers and the task is to determine whether a Steiner tree exists whose total weight does not exceed a predefined
natural number k. The decision problem is one of
Karp's 21 NP-complete problems; hence the optimization problem is
NP-hard. Steiner tree problems in graphs are applied to various problems in research and industry, including multicast routing and bioinformatics. A special case of this problem is when
G is a
complete graph, each vertex corresponds to a point in a
metric space, and the edge weights
w(
e) for each
e ∈
E correspond to distances in the space. Put otherwise, the edge weights satisfy the
triangle inequality. This variant is known as the
metric Steiner tree problem. Given an instance of the (non-metric) Steiner tree problem, we can transform it in polynomial time into an equivalent instance of the metric Steiner tree problem; the transformation preserves the approximation factor. While the Euclidean version admits a PTAS, it is known that the metric Steiner tree problem is
APX-complete, i.e., unless
P = NP, it is impossible to achieve approximation ratios that are arbitrarily close to 1 in polynomial time. There is a polynomial-time algorithm that
approximates the minimum Steiner tree to within a factor of \ln(4) + \varepsilon\approx1.386; however, approximating within a factor 96/95\approx 1.0105 is NP-hard. For the restricted case of Steiner Tree problem with distances 1 and 2, a 1.25-approximation algorithm is known. Karpinski and
Alexander Zelikovsky constructed PTAS for the dense instances of Steiner Tree problems. In a special case of the graph problem, the Steiner tree problem for
quasi-bipartite graphs,
S is required to include at least one endpoint of every edge in
G. The Steiner tree problem has also been investigated in higher dimensions and on various surfaces. Algorithms to find the Steiner minimal tree have been found on the sphere, torus,
projective plane, wide and narrow cones, and others. Other generalizations of the Steiner tree problem are the '''
k-edge-connected Steiner network problem
and the k-vertex-connected Steiner network problem'
, where the goal is to find a k
-edge-connected graph or a k''-vertex-connected graph rather than any connected graph. A further well-studied generalization is the
survivable network design problem (SNDP) where the task is to connect each vertex pair with a given number (possibly 0) of edge- or vertex-disjoint paths. The Steiner problem has also been stated in the general setting of metric spaces and for possibly infinitely many points. ==Approximating the Steiner tree==