While a spanning tree spans all vertices of a given graph, a Steiner tree spans a given subset of
vertices. In the Steiner minimal tree problem, the vertices are divided into two parts: terminals
and nonterminal vertices. The terminals are the given vertices which must be included in the
solution. The cost of a Steiner tree is defined as the total edge weight. A Steiner tree may contain
some nonterminal vertices to reduce the cost. Let V be a set of vertices. In general, we are given
a set L ⊂ V of terminals and a metric defining the distance between any two vertices in V . The
objective is to find a connected subgraph spanning all the terminals of minimal total cost. Since
the distances are all nonnegative in a metric, the solution is a tree structure. Depending on the
given metric, two versions of the Steiner tree problem have been studied.