Mathematical Programming Computation

, Volume 9, Issue 2, pp 231–296 | Cite as

SCIP-Jack—a solver for STP and variants with parallelization extensions

  • Gerald Gamrath
  • Thorsten Koch
  • Stephen J. Maher
  • Daniel Rehfeldt
  • Yuji Shinano
Full Length Paper

Abstract

The Steiner tree problem in graphs is a classical problem that commonly arises in practical applications as one of many variants. While often a strong relationship between different Steiner tree problem variants can be observed, solution approaches employed so far have been prevalently problem-specific. In contrast, this paper introduces a general-purpose solver that can be used to solve both the classical Steiner tree problem and many of its variants without modification. This versatility is achieved by transforming various problem variants into a general form and solving them by using a state-of-the-art MIP-framework. The result is a high-performance solver that can be employed in massively parallel environments and is capable of solving previously unsolved instances.

Mathematics Subject Classification

90C10 90C27 

1 Introduction

The Steiner tree problem in graphs (STP) is one of the classical \(\mathcal {NP}\)-hard problems [1]. Given an undirected connected graph \(G=(V,E)\), costs \(c: E \rightarrow \mathbb {Q}_{\ge 0}\) and a set \(T \subseteq V\) of terminals, the problem is to find a tree \(S\subseteq G\) of minimum cost that spans T.

Practical applications of the STP can be found for instance in the design of fiber-optic networks [2]. However, it is more common that practical applications are formulated as a particular variant of the STP [3, 4, 5, 6].

The announcement of the 11th DIMACS Challenge initiated our work with an investigation into the STP solver Jack-III, described in [7]. The model and code of Jack-III provided a base for the development of a general STP solver—being able to solve many of the problem variants. However, Jack-III is more than 15 years old. As such, many modern developments regarding STP solution methods and MIP solving techniques are not available. Our approach to address this limitation of Jack-III includes the combination of the model used in [7] with the start-of-the-art MIP-framework SCIP  [8, 9]. Employing SCIP naturally facilitated the incorporation of many algorithm developments from the past two decades and provided a platform for the development of new methods.

A major contribution of this paper is the development of a general Steiner tree problem solver. This achievement stands in contrast to the many problem-specific solvers observed within the literature. Furthermore, SCIP provides a massively parallel MIP-framework that is employed with this general solver. Thereupon, bolstered by algorithmic improvements, the developed solver is able to solve several previously unsolved benchmark instances. Detailing the approach delineated above, the remainder of this paper will be structured as follows:
  • Section 2 demonstrates the impact of transitioning from a simple, ad hoc created branch-and-cut code to the use of a full fledged, state-of-the-art MIP-framework.

  • Section 3 shows how to employ the versatility of MIP models to not only solve a whole class of related problem variants, but—in combination with further algorithmic advances—be competitive with or even superior to problem-specific state-of-the-art solvers.

  • Finally, in Sect. 4 the potential from using hundreds of CPU cores to solve a single problem is illustrated.

The results achieved in this paper demonstrate the value of revisiting topics after some time. In our case this occurred in two steps: first, prior to the DIMACS Challenge, with the developments delineated above, and second, after the completion of the Challenge, when further algorithmic methods were devised and implemented to considerably enhance the performance of SCIP-Jack. Further examples of revisiting research topics can be found in [10, 11].

In general, it can be stated that a branch-and-cut based Steiner tree solver has three major components. First, preprocessing is extremely important. Apart from some instances either specifically constructed or insightfully handpicked to defy presolving techniques, such as the PUC [12] and I640 [13] test sets, preprocessing is often able to significantly reduce instances. Results presented in the PhD theses of Polzin [14] and Daneshmand [15] report an average reduction in the number of edges of \(78\,\%\), with many instances being solved completely by presolving. In computational experiments performed for this paper, reduction rates of more than \(90\,\%\) for some Steiner problem variants (e.g., for the maximum-weight connected subgraph problem) are obtained.

Second, heuristics are needed to find good or even optimal solutions and help find strong upper and lower bounds quickly. In our experiments, for more than \(90\,\%\) of the instances that were not already solved during preprocessing the final solution was found by a heuristic. Furthermore, heuristics can be especially important for hard instances, for which the dual bound often stays substantially below the optimum for a long time.

Finally, the core of the approach is constituted by the branch-and-cut procedure used to compute lower bounds and prove optimality. The results of [14] show that many STP instances can already be solved by reduction- and heuristic-based approaches [14]. However, the failure of the state-of-the-art solver described in [14] to solve a number of hard instances that defy preprocessing highlights the importance of strong branch-and-cut procedures.

2 From simple hand tailored to off-the-shelf state-of-the-art

The model employed in the solver SCIP-Jack uses the flow-balance directed cut formulation described in [7]. This formulation provides a tight linear programming (LP) relaxation. It is built upon the directed equivalent of the STP, the Steiner arborescence problem (SAP): Given a directed graph \(D=(V,A)\), a root \(r \in V\), costs \(c: A \rightarrow \mathbb {Q}_{\ge 0}\) and a set \(T \subseteq V\) of terminals, a directed tree \((V_S,A_S) \subseteq D\) of minimum cost is required such that for all \(t \in T\), \((V_S,A_S)\) contains exactly one directed path from r to t. Each STP can be transformed to an SAP by replacing each edge with two anti-parallel arcs of the same cost and distinguishing an arbitrary terminal as the root. This procedure results in a one-to-one correspondence between the respective solution sets, see [16] for a proof.

An integer program for the SAP can be obtained by introducing a variable \(y_a\) for each arc \(a\in A\) with the interpretation \(y_a=1\) if a is in the Steiner arborescence, and \(y_a=0\) otherwise. These considerations set the stage for the following formulation:

Formulation 1

Flow Balance Directed Cut Formulation
$$\begin{aligned} \min {c}^T y\end{aligned}$$
(1)
$$\begin{aligned} y(\delta ^+(W))\ge & {} 1, \qquad \qquad \text {for all }\, W\subset V, r\in W, (V{\setminus } W)\cap T\ne \emptyset \end{aligned}$$
(2)
$$\begin{aligned} y(\delta ^-(v))&\left\{ \begin{array}{l} = \\ = \\ \le \end{array}\right.&\begin{array}{l} 0 \text { if } v=r,\\ 1 \text { if } v\in T{\setminus }{r},\\ 1 \text { if } v\in N, \end{array} \qquad \text {for all } v \in V \end{aligned}$$
(3)
$$\begin{aligned} y(\delta ^-(v))\le & {} y(\delta ^+(v)), \qquad \text {for all } v\in N\end{aligned}$$
(4)
$$\begin{aligned} y(\delta ^-(v))\ge & {} y_a, \qquad \text {for all } a\in \delta ^+(v),\quad v\in N\end{aligned}$$
(5)
$$\begin{aligned} 0\le y_a\le & {} 1, \qquad \text {for all } a\in A\end{aligned}$$
(6)
$$\begin{aligned} y_a\in & {} \{0,1\}, \qquad \text {for all } a\in A \end{aligned}$$
(7)

where \(N=V{\setminus } T\), \(\delta ^+(X):=\{(u,v)\in A| u\in X, v\in V{\setminus } X\}\), \(\delta ^-(X):= \delta ^+(V {\setminus } X)\) for \(X\subseteq V\); i.e., \(\delta ^+(X)\) is the set of all arcs going out of, and \(\delta ^-(X)\) the set of all arcs going into X.

Constraints (4) strengthen the LP-relaxation of Formulation 1, see [13]. However, the remaining additional constraints (3), (5), and (67) do not improve the value of the LP-relaxation; although they nevertheless lead to an empirical speed-up in practical solving [14]. Further details of Formulation 1 are given in [7].

Since the model potentially contains an exponential number of constraints a separation routine is employed. Violated constraints, are separated during the execution of the branch-and-cut algorithm. Jack-III employed this problem formulation along with a model-specific branch-and-bound search. Strong branching [17] was used with a depth-first search node selection.

The implementation of SCIP-Jack is based on the academic MIP solver SCIP  [8, 9]. Besides being one of the fastest non-commercial MIP solvers [18], SCIP is a general branch-and-cut framework. The plugin-based design of SCIP provides a simple method of extension to handle a variety of specific problem classes.

In the case of SCIP-Jack, the first plugins implemented were a reader to read problem instances and problem data to store the graph and build the model within SCIP. Within these plugins it was possible to re-use the reading methods and data structures of Jack-III. However, each of these had to be extended as part of the implementation in SCIP-Jack. The heart of the new implementation is a constraint handler that checks solutions for feasibility and separates any violated model constraints. Again, separation methods of the more than 15-year old code are re-used in SCIP-Jack, while SCIP provides a filtering of cuts to improve numerical stability and dynamic aging of the generated cuts. Additionally, the general-purpose separation methods that exist within SCIP are used, which include Gomory and mixed-integer rounding cuts.

Jack-III includes many STP-specific preprocessing techniques, as described in [7]. However, for SCIP-Jack only the Degree-Test (DT) [19] method has been reused. All other tests were replaced by more efficient variants, which have emerged in the decade following the release of Jack-III, cf. [14]. Moreover, after the DIMACS Challenge work on reduction techniques continued and various new reduction methods were developed for several of the Steiner problem variants described in this paper. They are a pivotal factor in the improved performance of SCIP-Jack as compared to its predecessor participating in the Challenge—the main motivation behind the development of the new methods was to enhance SCIP-Jack  [16]. Due to the large number of presolving techniques and their complexity it is not possible to provide individual descriptions within the frame of this paper. The reader is referred to [16] for detailed information. The preprocessing techniques implemented in SCIP-Jack are listed in Table 2 according to the abbreviations used in [16]; the full names of the preprocessing techniques can be found in Sect. B of the appendix. Supplementary to the presolving techniques, a Steiner problem specific propagator is implemented that fixes edges during the branch-and-cut according to the same criteria used in the dual-ascent (DA) reduction method [13, 14].

For the branch-and-bound search a straightforward STP-specific branching-rule has been implemented. Specifically, instead of branching on variables, i.e., in the case of the STP on arcs, vertex branching [20] is employed. This has been identified empirically by the authors of this publication to be stronger than the generic branching rules natively implemented in SCIP. During the branch-and-bound procedure, vertex branching selects a Steiner vertex to be rendered a terminal in one child node and excluded in the second child.

Determining such a Steiner vertex is achieved by means of the following criterion. Let \(y \in {[0,1]}^A\) be an LP solution at the current node during branch-and-cut. Select a vertex \(v_i \in V {\setminus } T\) to branch upon, such that
$$\begin{aligned} \left| \sum _{a \in \delta ^-(v_i)} y_a - 0.5 ~\right| \end{aligned}$$
(8)
is minimal among all Steiner vertices.

The node selection is organized by SCIP and is performed with respect to a best estimate criterion—interleaved with best bound and depth-first search phases [21].

One dual and several primal STP-specific heuristics have been implemented in SCIP-Jack—the dual-ascent heuristic (DA), the repetitive shortest path heuristic (RSPH), in the form proposed in [22], an improvement heuristic (VQ) [23], the reduction-based heuristics prune (P) and ascend-and-prune (AP) [14], and a new recombination heuristic (RC).

The dual-ascent algorithm was introduced in [24]. It exhibits a time complexity of \(O(|E| \min \{|V||T|,|E|\})\), see [14], but is usually faster than this bound might suggest; efficient implementations can be found in [13, 25]. In SCIP-Jack the implementation of [25] is used. At termination, dual-ascent provides a dual solution to a reduced version of Formulation 1 that contains only the constraints (2) and (67). This solution involves directed paths along arcs of reduced cost 0 from the root to each other terminal. The heuristic is executed prior to the branch-and-cut procedure and includes all cuts corresponding to the dual solution found by DA. Due to strong duality, the objective value of the first LP solved during branch-and-cut corresponds to the objective value of the dual solution found by DA.

On the primal side, SCIP-Jack includes the well-known repetitive shortest paths heuristic. Starting with a single vertex, the heuristic iteratively connects the current subtree to a nearest terminal by a shortest path. This procedure is reiterated until all terminals are spanned. The heuristic is implemented in Jack-III, but in its original form detailed by [26]. In SCIP-Jack an empirically faster version based on Dijkstra’s algorithm [22] is implemented. In addition to being used as an initial heuristic, the RSPH is also employed, with altered costs, during the branch-and-cut. Specifically, given an LP optimal solution \(y \in \mathbb {Q}^A\), the heuristic is called with the costs \((1 - y_a) \cdot c_a\) for all \(a \in A\). Thus, a stimulus for the heuristic to choose arcs contained in the LP solution is provided. Moreover, the heuristic is started from several distinct vertices, making it empirically much stronger (by default 100 start vertices for the initial call at the root node, 50 at the beginning of the processing of each other branch-and-bound node and 15 for calls within the cut loop). Terminals are preferred as start points, but vertices that exhibit a high (fractional) out-degree in the incumbent LP solution are also selected. The heuristic is called before and after the processing of a (branch-and-bound) node, after each cut loop and after each LP solving during a cut loop.

The improvement heuristic VQ is a combination of the three local search heuristics vertex insertion, key-path exchange, and key-vertex elimination as described in [23]. The basic idea of vertex insertion (denoted by V) is to connect further vertices to an existing Steiner tree in such a way that expensive edges can be removed. Key-vertices with respect to a tree S are either terminals or vertices of degree at least three in S. Correspondingly, a key-path is a path in S with a key-vertex at both endpoints, but without any intermediary key-vertices. A key-path exchange attempts to replace existing key-paths by others that are less costly. Similarly, for key-vertex elimination in each step a non-terminal key-vertex and all adjoining key-paths (except for the key-vertices at their respective ends) are extracted and an attempt is made to reconnect the disconnected subtrees at a lower cost. As in [23], the combination of key-path exchange and key-vertex elimination is denoted by Q. VQ is called for a newly found solution whenever the latter is among the five best known solutions.

The prune heuristic comes with a less customary approach obtained by building upon bound-based reductions introduced in [14] that were afterwards slightly improved in [16]. While for the original bound-based reductions an upper bound is provided by the weight of a given Steiner tree, in the prune heuristic the bound is reduced such that in each iteration a certain proportion of edges and vertices is eliminated. Thereupon, all exact reductions methods are executed on the reduced graph, motivated by the assumption that the (possibly inexact) eliminations performed by the bound-based method will allow for further (exact) reductions. To avoid infeasibility, a Steiner tree is initially computed by using RSPH and afterwards the elimination of any of its vertices by the bound-based method is being prohibited. Within SCIP-Jack the heuristic is called whenever a new best solution has been found.

Another powerful heuristic approach is borne by the combination of the prune heuristic and dual-ascent: the ascend-and-prune [14] method. Ascend-and-prune is motivated by the assumption that certain similarities exist between an optimal Steiner tree and the LP solution that is identified by the reduced costs provided by dual-ascent. Thereupon, the heuristic attempts to find an optimal solution on the graph constituted by the undirected edges corresponding to zero-reduced-cost paths from the root to all additional terminals. On this subgraph a solution is computed by first employing an (exact) reduction package and then using the prune heuristic. Within SCIP-Jack, ascend-and-prune is performed after each execution of dual-ascent, in particular prior to the initiation of the branch-and-cut procedure.

Finally, the recombination of given solutions to find improved primal bounds is performed by the RC heuristic. In the following, RC is described in the context of an STP, but it can be naturally extended to cover all Steiner tree problem variants discussed in this paper. First, the set of solutions to be considered for recombination is defined by \(\mathcal {L}\); in the case of SCIP-Jack\(\mathcal {L}\) comprises the best found solutions and its cardinality is bounded from above by 50.

The heart of RC is the n-merging (\(n \ge 2\)) operation subsequently defined for a given solution \(S_0\) to an STP \(P = (V, E, T, c)\): \(S_0\) is merged with pseudo-randomly selected \(n-1\) solutions \(S_1,\ldots ,S_n\) out of \(\mathcal {L} {\setminus } \{S_0\}\) to form a new STP \(\tilde{P}\) consisting of all edges and vertices that are part of at least one of the n solutions. By applying the reduction techniques provided by SCIP-Jack to \(\tilde{P}\), a reduced problem \(\tilde{P}'\) is obtained. Thereupon, a solution to \(\tilde{P}'\) is computed in several steps. First, it is observed that each edge e in \(\tilde{P}'\) corresponds to a set of ancestor edges \(E^{e} \subseteq E\). Denoting the edges of a solution \(S_i\) by \(E_{S_i}\) gives the definition:
$$\begin{aligned} \alpha (e) = \frac{\sum _{i=0}^{n} |E^{e} \cap E_{S_i}|}{|E^{e}|}. \end{aligned}$$
Next, the cost of each edge e in \(\tilde{P}'\) is multiplied by a pseudo-randomized number that is anti-proportional to \(\alpha (e)\) (i.e., the number increases as \(\alpha (e)\) decreases). This edge cost multiplication approach is a more general variant of a procedure suggested in [27]. The latter approach recombines two solutions without employing reduction techniques. Using the new edge cost, RSPH is employed to obtain a solution \(\tilde{S}'\) to \(\tilde{P}'\). For the starting points of RSPH, vertices \(v_i\) are used such that \( \sum _{ e \in \delta _{\tilde{P}'}(v_i) } \alpha (e)\) is maximized. Next, after retrieving the original arc costs, VQ is applied on \(\tilde{S}'\). Finally, \(\tilde{S}'\) is retransformed to the original solution space.

The RC heuristic is clustered around the n-merging operation: Given a new solution S, in one run consecutively six 2-, two 3- and one 4-merge operations are performed. When a solution \(S'\) is generated during an n-merging with a smaller cost than S, the solution S is replaced by \(S'\), which is attempted to be added to \(\mathcal {L}\). Moreover, in this case the n-merging is performed again in a new run that is started after the conclusion of the current run. The total number of runs is limited to ten. RC is called whenever r new solutions have been found compared to its last execution. Initially, r is set to 4 and modified throughout the solution process, setting \(r := 0\) if a solution has been improved during the execution of RC and \(r:=\min \{r+1, 4\}\) otherwise.

By the combination of the previously described heuristics the ability to generate good primal solutions quickly is considerably improved, as compared to employing SCIP-Jack without Steiner problem specific heuristics. Furthermore, this combination is able to eventually find optimal solutions to most problems.

2.1 Computational experiments

Several thousand instances of 15 Steiner tree problem variants were collected as part of the DIMACS Challenge. To show the performance of the developed general Steiner tree problem solver, computational experiments on ten variants of the STP will be presented.

All computational experiments described were performed on a cluster of Intel Xeon X5672 CPUs with 3.20 GHz and 48 GB RAM, running Kubuntu 14.04. A development version of SCIP 3.2.1 was used and SoPlex  [28] version 2.2.1 was employed as the underlying LP solver. Moreover, the overall run time for each instance was limited by 2 h. If an instance was not solved to optimality within the time limit, the gap is reported, which is defined as \(\frac{|\text {pb}-\text {db}|}{\max \{|\text {pb}|,|\text {db}|\}}\) for final primal bound (pb) and dual bound (db). The average gap is obtained as an arithmetic mean. The averages of the number of nodes and the solving time are computed by taking the shifted geometric mean [21] with a shift of 10.0 and 1.0, respectively.

Prior to the discussion of the different STP variants solved by SCIP-Jack in the following section, the solver performance will be demonstrated on pure STP instances. To this end, six STP test sets have been selected for computational experiments. Five of them, X [7] E [29], I640 [13], PUC [12], and ALUE [7], are test sets from SteinLib. First, the three X instances include complete graphs with Euclidean distances corresponding to geographical locations (in Berlin, Brazil, and worldwide). In contrast, the E and I640 test sets contain randomly generated instances. The (sparse) E test set has proved to be solvable within short time limits by state-of-the-art solvers [14]. However, the I640 set—whose instances were selected to defy preprocessing—contains several problems that have remained unsolved until today. Similarly, many unsolved instances still remain in the PUC test set, which contains artificially designed problems such as instances composed of combinations of odd wheels and odd circles. As opposed to the previous three test sets, the ALUE instances are not artificially designed, but derive from a VLSI application and contain grid graphs with rectangular holes. The final test set is vienna-i-simple [2], which contains real-world instances generated from telecommunication networks that have already been preprocessed by the Degree-Test described in [19].
Table 1

Computational results for STP instances

   

Optimal

Timeout

Test set

#

Solved

\(\varnothing \) nodes

\(\varnothing \) time [s]

\(\varnothing \) nodes

\(\varnothing \) gap (%)

X

3

3

1.0

0.3

E

20

20

1.4

1.0

ALUE

15

12

1.7

12.4

1.0

1.7

I640

100

78

17.7

9.3

85.3

0.8

PUC

50

8

406.8

36.9

121.9

3.5

vienna-i-simple

85

69

2.7

149.2

1.8

0.0

A summary of the computational performance of SCIP-Jack on the five STP test sets is presented in Table 1. Each line in the table shows aggregated results for the test set specified in the first column. The second column, labeled #, lists the number of instances in the test set, the third column states how many of them were solved to optimality within the time limit. The average number of branch-and-bound nodes and the average running time in seconds of these instances are presented in the next two columns, named optimal. The last two columns, labeled timeout, show the average number of branch-and-bound nodes and the average gap for the remaining instances, i.e., all instances that hit the time limit. In the next section, similar tables will be presented for different STP variants. If all instances of a particular variant are solved to optimality within the time limit, the timeout columns are omitted. Detailed instance-wise computational results of all experiments can be found in Appendix C.

The instances from the X test set is solved without any branching and in very short run times; even the largest instance, consisting of more than 200,000 edges, requires only one second. Similarly, SCIP-Jack solves the entire, mostly sparse, E test set to optimality within an average time of 1.0 s. The only instance requiring branching is e18, which also exhibits a run time much longer than any other of that test set, 104.5 s. The, similarly sparse, VLSI-derived ALUE instances are harder to solve for SCIP-Jack: three problems remain unsolved with gaps of 1.4, 1, 5, and 2.3%, while the solved instances require an average run time of 12.4 s. For only three of the instances branching is performed, and none requires more than five nodes.

SCIP-Jack exhibits a distinctively disparate behavior on the I640 test set: While more than half of the instances are solved within a few seconds, 22 problems remain unsolved after 2 h. As compared with the previous instances the number of branch-and-bound nodes is much higher—up to 4481.

The PUC test set proves to be much more difficult for SCIP-Jack. This is unsurprising since more than half of the instances in this set still remain unsolved. SCIP-Jack only solves eight of 50 instances and none at the root node. More than half of the unsolved instance are still processing the root node when terminated. Finally, 80% of the vienna instances set are solved by SCIP-Jack within the time limit, with none of the remainder exhibiting an optimality gap of more than 0.01%. As compared to the PUC test set, the number of branch-and-bound nodes is much smaller and more than half of the instances can be solved in the root.

The results demonstrate an improvement of SCIP-Jack in two dimensions. First, compared to Jack-III, SCIP-Jack empirically yields significantly better results, as exemplified by the E test set. While Jack-III and SCIP-Jack both manage to solve all instances in relatively short times, there is a large difference in the run times achieved by each. Jack-III needs more than one second for all but one instance. The hardest instance, e18, requires more than 11 min. In contrast, SCIP-Jack solves all but three instances in less than a second, with a maximum runtime (for e18) of about 2 min. On average, SCIP-Jack is more than two orders of magnitude faster on the E test set than Jack-III.

The drastically stronger performance of SCIP-Jack in comparison with Jack-III comes hardly as a surprise. While the main component of Jack-III, the separation algorithm, is being reused within SCIP-Jack, a variety of powerful new methods, as described heretofore, is clustered around it. The new reduction techniques alone, for instance, are more than ten times faster than those implemented in Jack-III and nevertheless notably stronger.
Table 2

Problem variants solved by SCIP-Jack

Variant

Abbreviation

Preprocessing

Heuristics

Steiner tree in graphs

STP

DT, NV/SL, SD/SDC, NTD\(_{3,4}\), BND, DA

P, AP, RSPH, VQ, RC

Steiner arborescence

SAP

BR, RPT, CT, SDC, PNT, BND, DA

AP, RSPH, RC

Rectilinear Steiner minimum tree

RSMTP

DT, NV/SL, SD/SDC, NTD\(_{3,4}\), BND, DA

P, AP, RSPH, VQ, RC

Node-weighted Steiner tree

NWSTP

DA

AP, RSPH, RC

Prize-collecting Steiner tree

PCSTP

UNT/DT, SD/SDC, NTD\(_3\), NV/SL, BND, DA

P, AP, RSPH, VQ, RC

Rooted prize-collecting Steiner tree

RPCSTP

UNT/DT, SD/SDC, NTD\(_3\), NV/SL, BND, DA

P, AP, RSPH, VQ, RC

Maximum-weight connected subgraph

MWCSP

UNPV/BT, CNS, NNP, NPV\(_{2,3,4,5}\), DA

AP, RSPH, RC

Degree-constrained Steiner tree

DCSTP

None

RSPH, RC

Group Steiner tree

GSTP

DT, NV/SL, SD/SDC, NTD\(_{3,4}\), BND, DA

P, AP, RSPH, VQ, RC

Hop-constrained directed Steiner tree

HCDSTP

CBND, HBND

RSPH, RC

The second dimension is seen when comparing the performance of the current version of SCIP-Jack with its predecessor participating in the DIMACS Challenge, cf. [30]. In particular, computational experiments demonstrate that the current version is significantly stronger. Taking the example of the I640 test set, one sees additional 13 instances being solved to optimality within 2 h. Also, the run time for several instances (such as i640-043) is reduced by a factor of more than a hundred.

The improvement of the current version of SCIP-Jack as compared with the previous version that competed in the DIMACS Challenge can be put down to several major algorithmic improvements. First, the implementation of new or enhanced problem-specific preprocessing methods, such as the dual-ascent reductions [31]. Second, the implementation of the new heuristics dual-ascent, and, on the primal side, prune, ascend-and-prune, and an improved version of the recombination heuristic. Third, the implementation of a problem-specific propagator and branching rule.

However, while the current version of SCIP-Jack proves to be competitive with the best exact results obtained at the DIMACS Challenge, it falls short of matching the fastest STP solver described in the literature [14, 31]. Apart from very easy instances, such as in X, and the hard PUC test set, for which SCIP-Jack yields comparable results, the solver described in [14] (which uses the commercial CPLEX 12.61) is more than an order of magnitude faster for most instances [31].

3 From single problem to class solver

SCIP-Jack is developed as a general STP solver—being able to solve many problem variants. An overview of the problem variants solved by SCIP-Jack is given in Table 2. This table also presents the heuristics (see Sect. 2) and presolving techniques (see Table 14) that are applied to each of the problem variants. Specific transformation approaches have been employed in order to solve each variant by SCIP-Jack. Each of these transformations will be described in detail. Throughout this section the weights of an (undirected) edge e and an (directed) arc a are denoted by \(c_e\) and \(c_a\) respectively and the weight of a vertex v by \(p_v\).

3.1 The Steiner arborescence problem

As SCIP-Jack transforms each Steiner tree problem to a Steiner arborescence problem (SAP), the branch-and-cut framework can be used for general SAPs with only minor modifications. Slightly modified forms of the RSPH, AP, and RC heuristics can also be used for SAP instances. However, due to the missing bi-direction with equal cost, the VQ heuristic cannot be applied. As to presolving techniques, besides DA, specific SAP reduction methods have been implemented—as described in [16].

Computational results Computational experiments have been performed on two test sets of Steiner arborescence problems. These instances are derived from a genetic application [32]. The results are summarized in Table 3. The test sets contain small SAP instance, with the largest consisting of 602 nodes, 1716 edges and 86 terminals. Because of their size, SCIP-Jack solves all instances within fractions of a second without requiring any branching. Furthermore, the reduction techniques eliminate more than 90% of the arcs on average.
Table 3

Computational results for SAP instances

Test set

#

Solved

\(\varnothing \) nodes

\(\varnothing \) time [s]

gene

10

10

1.0

0.2

gene2002

9

9

1.0

0.1

3.2 The rectilinear Steiner minimum tree problem

The rectilinear Steiner minimum tree problem (RSMTP) can be described as follows: Given a number of \(n \in N\) points in the plane, find a shortest tree consisting only of vertical and horizontal line segments, containing all n points. The RSMTP is \(\mathcal {NP}\)-hard, as proved in [33], and has been the subject of various publications, see [34, 35, 36]. In addition to this two-dimensional variant, a generalization of the problem to the d-dimensional case, with \(d \ge 3\), will be considered. The presented computational experiments include instances that derive from a cancer research application [3] and exhibit up to eight dimensions.

Hanan [37] reduced the RSMTP to the Hanan-grid obtained by constructing vertical and horizontal lines through each given point of the RSMTP. It is proved in [37] that there is at least one optimal solution to an RSMTP that is a subgraph of the grid. Hence, the RSMTP can be reduced to an STP. Subsequently, this construction and its multi-dimensional generalization [38] is exploited in order to adapt the RSMTP to be solved by SCIP-Jack. Given a d-dimensional, \(d \in \mathbb {N} {\setminus } \{1\}\), RSMTP represented by a set of \(n \in N\) points in \(\mathbb {Q}^d\), the first step involves building a d-dimensional Hanan-grid. By using the resulting Hanan-grid an STP \(P = (V,E,T,c)\) can be constructed, which is handled equivalently to a usual STP problem by SCIP-Jack.

It certainly bears mentioning that this simple Hanan-grid based approach is not expected to be competitive with highly specialized solvers such as GeoSteiner [34] in the case \(d=2\). However, a motivation for the implementation in SCIP-Jack is to address the obvious lack of solvers—specialized or general—that can provide solutions to RSMTP instances in dimensions \(d \ge 3\). Still, it is not practical to apply the grid transformation for large instances in high dimension, as the number of both vertices and edges increases exponentially with the dimension.

A variant of the RSMTP is the obstacle-avoiding rectilinear Steiner minimum tree problem (OARSMTP). This problem requires that the minimum-length rectilinear tree does not pass through the interior of any specified axis-aligned rectangles, denoted as obstacles. SCIP-Jack is easily extended to solve the OARSMTP with a simple modification to the Hanan grid approach applied to the RSMTP. This modification involves removing all vertices that are located in the interior of an obstacle together with their incident edges as well as all edges crossing an obstacle. There was no competition for this variant in the DIMACS Challenge and for the OARSMTP, unlike the RSMTP, optimal solutions to all instances submitted to the Challenge have already been published. While SCIP-Jack is capable of solving all instances submitted to the DIMACS Challenge, computational experiments for this problem variant have been omitted.

Computational results The experiments on the RSMTP involve solving five of the test sets submitted to the DIMACS Challenge. These test sets contain instances ranging from less than 10 to 10,000 points and from 2 to 8 dimensions. Specifically, the test sets used in the presented experiments include the two-dimensional estein instances with up to 60 nodes, the solids test set with three-dimensional instances whose terminals are the vertices of the five platonic solids, and the real-world derived cancer instances in up to eight dimensions. Computational results are summarized in Table 4 with the detailed results listed in the appendix.

The vast majority of the estein40 and estein50 instances can be solved to optimality, 14 and 13 out of 15 respectively. For all but one of these instances, the optimal solution was found at the root node. Also, none of the unsolved instances exhibits an optimality gap above 0.7% at the time limit. However, as the number of terminals increases, so does the run time and the number of unsolved instances: only six of the estein60 instances can be solved within 2 h, requiring more than twice as much time on average than the estein50 problems. The optimality gap of the unsolved instances ranges from 0.1 to 1.6%. Only one of the estein60 instances requires branching—using 82 branch-and-bound nodes.

The results in Table 4 show the capabilities of SCIP-Jack to solve instances in three dimensions. Specifically, all but one of the solids instances are solved to optimality. The unsolved instance, dodecahedron, is terminated after 2 h with an optimality gap of 0.5% and 8435 branch-and-bound nodes. All other instances are solved in less than a second.

Finally, the cancer instances demonstrate the ability of SCIP-Jack to handle and solve RMST problems with up to eight dimensions. SCIP-Jack solves 13 of 14 instances to optimality at the root node. The remaining instance hits the memory limit after presolving—with SCIP-Jack computing a primal, but no dual bound. To the best of the authors’ knowledge, SCIP-Jack is the first solver to solve any of the cancer instances to optimality. Remarkably, more than half of the instances can be solved during preprocessing, including the cancer13_8D instance with more than a million arcs (in its transformed shape). Furthermore, only two of the solved instances require more than 4 s to achieve optimality. As compared to the previous version of SCIP-Jack competing in the DIMACS Challenge, cf. [30], the run times have considerably improved, mainly due to the enhanced reduction techniques (most notably DA), but also due to the new heuristics (most notably ascend-and-prune). For example, the cancer4_6D instance was not solved within 12 h with the previous version, while the new version of SCIP-Jack now proves optimality in less than 15 min.
Table 4

Computational results for RSMTP instances

   

Optimal

Timeout

Test set

#

Solved

\(\varnothing \) nodes

\(\varnothing \) time [s]

\(\varnothing \) nodes

\(\varnothing \) gap (%)

sestein40

15

14

1.0

255.9

144.0

0.2

estein50

15

13

1.4

1868.0

31.8

0.4

estein60

15

6

1.0

5396.6

3.9

0.7

solids

5

4

4.9

0.2

8435.0

0.5

cancer

14

13

1.0

3.0

1.0

100.0

3.3 The node-weighted Steiner tree problem

The node-weighted Steiner tree problem (NWSTP) is a generalization of the Steiner tree problem in graphs where the edges and, additionally, the vertices are assigned non-negative weights. The objective is to connect all terminals while minimizing the weight summed over both vertices and edges spanned by the corresponding tree.

The NWSTP is formally stated by: Given an undirected graph \(G=(V,E)\), node costs \(p: V \rightarrow \mathbb {Q}_{\ge 0}\), edge costs \(c: E \rightarrow \mathbb {Q}_{\ge 0}\) and a set \(T \subseteq V\) of terminals, the objective is to find a tree \(S = (V_S,E_{S})\) that spans T while minimizing
$$\begin{aligned} C(S) := \sum _{e \in E_{S}} c_e + \sum _{v \in V_S} p_v. \nonumber \end{aligned}$$
The NWSTP can be transformed to an SAP by substituting each edge by two anti-parallel arcs. Then, observing that in a tree there cannot be more than one arc going into the same vertex, the weight of each vertex is added to the weight of each of its incoming arcs.

Transformation 1

(NWSTP to SAP) Given an NWSTP \(P=(V,E,T,c,p)\) construct an SAP \(P'=(V',A',T',c',r')\) as follows:
  1. 1.

    Set \(V' := V\), \(T':=T\), \(A':=\lbrace (v,w) \in V' \times V' : \lbrace v,w \rbrace \in E \rbrace \).

     
  2. 2.

    Define \(c': A' \rightarrow \mathbb {Q}_{\ge 0}\) by \(c'_a = c_{\lbrace v,w \rbrace } + p_w\), for \(a = (v,w) \in A'\).

     
  3. 3.

    Choose a root \(r' \in T'\) arbitrarily.

     

Lemma 1

(NWSTP to SAP) Let \(P=(V,E,T,c,p)\) be an NWSTP and \(P' = (V',A',T',c')\) an SAP obtained by applying Transformation 1 on P. Denote by \(\mathcal {S}\) and \(\mathcal {S'}\) the set of solutions to P and \(P'\) respectively. Then \(\mathcal {S'}\) can be bijectively mapped onto \(\mathcal {S}\) by applying
$$\begin{aligned}&V_S:= \lbrace v \in V:~v \in V'_{S'}\rbrace \end{aligned}$$
(9)
$$\begin{aligned}&E_S:= \lbrace \lbrace v,w \rbrace \in E : ~ (v,w) \in A'_{S'} \text { or } (w,v) \in A'_{S'} \rbrace \end{aligned}$$
(10)
for \(S' = (V'_{S'},A'_{S'}) \in \mathcal {S'}\) and it holds:
$$\begin{aligned} c'(A'_{S'}) + p_{r'} = c(E_S) + p(V_S). \end{aligned}$$
(11)

The resulting SAP can be directly solved by SCIP-Jack. However, due to efficiency reasons only a subset of the heuristics and reduction techniques are employed, see Table 2.

Computational results Two NWSTP instances derived from a computational biology application are part of the DIMACS Challenge. The two instances differ drastically in their size. The first has more than 200,000 nodes—55,000 of them terminals—and almost 2.5 million edges, while the smaller instance comprises merely 386 nodes, 1477 edges, and 35 terminals.

The size of the first instance proves to be prohibitive for SCIP-Jack. The memory requirements of this instance quickly exceeds the limits of SCIP-Jack when applying the default settings on a modest machine. To evaluate the ability of SCIP-Jack to solve this particular instance, a runtime of 72 h was used on a machine with 386 GB memory. To render the presolving more effective, modified versions of the STP tests NVO, SD and NTD\(_3\) were employed to solve the NWSTP instance (in addition to the default preprocessing). After the application of the reduction techniques, the resulting graph contains 187,933 nodes and 986,703 edges. This equates to a 8.6 and 60.4% decrease in the number of nodes and edges respectively. SCIP-Jack fails to solve this instance to optimality, but it does achieve a nearly-optimal primal bound of 656,970.94 with an optimality gap of 0.0049%. The much smaller second instance is solved by SCIP-Jack at the root node within 0.1 s.

3.4 The prize-collecting Steiner tree problem

In contrast to the classical Steiner tree problem, the required tree for the prize-collecting Steiner tree problem (PCSTP) needs only to span a (possibly empty) subset of the terminals. However, a non-negative penalty is charged for each terminal not contained in the tree. Hence, the objective is to find a tree of minimum weight, given by both the sum of its edge costs and the penalties of all terminals not spanned by the tree. A profound discussion on the PCSTP is given in [4] that details real-world applications and introduces a sophisticated specialized solver.

A formal definition of the problem is stated as: given an undirected graph \(G=(V,E)\), edge-weights \(c: E \rightarrow \mathbb {Q}_{\ge 0}\) and node-weights \(p: V \rightarrow \mathbb {Q}_{\ge 0}\), a tree \(S = (V_S,E_{S})\) in G is required such that
$$\begin{aligned} P(S):= \sum _{e \in E_{S}} c_e + \sum _{v \in V {\setminus } V_S} p_v \end{aligned}$$
(12)
is minimized.

Prior to the discussion of the prize-collecting Steiner tree problem, a variation is introduced, the rooted prize-collecting Steiner tree problem (RPCSTP). The RPCSTP incorporates the additional condition that one distinguished node r, denoted the root, must be part of every feasible solution to the problem. It is assumed that \(p_r = 0\). The RPCSTP can be transformed into an SAP as follows:

Transformation 2

(RPCSTP to SAP)

Given an RPCSTP \(P=(V,E,p,r)\) construct an SAP \(P'=(V',A',T',c',r')\) as follows:
  1. 1.

    Set \(V' := V\), \(A':=\lbrace (v,w) : \lbrace v,w \rbrace \in E \rbrace \), \(r':=r\) and \(c': A' \rightarrow \mathbb {Q}_{\ge 0}\) with \(~c'_a = c_{\{ v,w \} } \) for \(a = (v,w) \in A'\).

     
  2. 2.

    Denote the set of all \(v \in V\) with \(p_v > 0\) by \(T = \{ t_1,\ldots ,t_s\}\). For each node \(t_i \in T\), a new node \(t_i'\) and an arc \(a = (t_i,t_i')\) with \(c'_a = 0\) is added to \(V'\) and \(E'\) respectively.

     
  3. 3.

    Add arcs \((r',t'_i)\) for each \(i \in \{ 1,\ldots ,s\}\), setting their respective weight to \(p_{t_i}\).

     
  4. 4.

    Define the set of terminals \(T':=\{{t'}_1,\ldots ,{t'}_s\}\).

     
After Transformation 2, for each terminal \(t_i'\) of the SAP \(P'\) there are exactly two incoming arcs \((t_i,{t_i}')\) and \((r',t')\). Thereupon, each solution \(S' = (V'_{S'}, A'_{S'}) \in P'\) that contains \(t_i\) must also contain \((t_i,{t_i}')\), more succinctly:
$$\begin{aligned} \forall i \in \{1,\ldots ,s\}: t_i \in V'_{S'} \Longrightarrow (t_i,{t_i}') \in A'_{S'} \end{aligned}$$
(13)
Condition (13) is satisfied by all optimal solutions to \(P'\) and each feasible solution can be easily modified to accomplish this, concomitantly improving its solution value. Transformation 2 is presented in [39], but without using condition (13). The latter gives rise to a one-to-one correspondence of the solution sets, stated in the following lemma (Fig. 1).

Lemma 2

(RPCSTP to SAP) Let \(P' = (V',A',T',c')\) be an SAP obtained from an RPCSTP \(P = (V,E,c,p)\) by applying Transformation 2. Denote by \(\mathcal {S}\) and \(\mathcal {S'}\) the set of solutions to P and \(P'\), satisfying condition (13), respectively. \(P'\) can be mapped bijectively onto P by
$$\begin{aligned}&V_S := \lbrace v \in V:~v \in V'_{S'}\rbrace \end{aligned}$$
(14)
$$\begin{aligned}&E_S :=\lbrace \lbrace v,w \rbrace \in E : ~ (v,w) \in A'_{S'}\quad \text { or }\; (w,v) \in A'_{S'} \rbrace \end{aligned}$$
(15)
for \(S' = (V'_{S'},A'_{S'}) \in \mathcal {S'}\). The solution value is preserved.
Fig. 1

Illustration of a rooted prize-collecting Steiner tree instance with root r (left), the equivalent SAP problem obtained by Transformation 2 (middle), and a solution to the SAP instance with value 8.6 (right). a RPCSTP instance. b Transformed instance. c Feasible solution

Transformation 2 can be extended to cover the PCSTP by the inclusion of an artificial root node \(r'\) and arcs \((r', t_i)\) of cost 0. However, only one of these arcs can be part of a feasible solution. This requirement is enforced by the following constraint:
$$\begin{aligned} \sum _{a \in \delta ^+(r'), c'_a=0 } y_a = 1. \end{aligned}$$
(16)
Furthermore, to allow a bijection between the original and the transformed problem, for all \(t_i\) included in a solution the arc \((r', t_i)\) with the smallest index i is required to be part of the solution. This condition can be expressed by using the following set of constraints:
$$\begin{aligned} \sum _{a \in \delta ^-(t_j) } y_a + y_{(r',t_i)}\le 1\quad i = 1,\ldots ,s;\quad j = 1,\ldots ,i-1. \end{aligned}$$
(17)
An SAP that requires the conditions (13), (16) and (17) is referred to as root constrained Steiner arborescence problem (rcSAP). The constraints (16) and (17) can be incorporated into the cut-formulation (Formulation 1) without further alterations and each solution can be modified in order to meet condition (13). Although additional \(\frac{s(s-1)}{2}\) constraints are introduced to fulfill (17), the solving time is considerably reduced by adding the constraints, as they exclude a plethora of symmetric solutions.

Transformation 3

(PCSTP to rcSAP)

Given an PCSTP \(P=(V,E,c,p)\) construct an rcSAP \(P'=(V',A',T',c',r')\) as follows:
  1. 1.

    Add a vertex \(v_0\) to V and set \(r:=v_0\).

     
  2. 2.

    Apply Transformation 2 to obtain \(P'=(V',A',T',c',r')\).

     
  3. 3.

    Add arcs \(a = (r',t_i)\) with \(c'_a := 0\) for each \(t_i \in T\).

     
  4. 4.

    Add constraints (16) and (17).

     

Lemma 3

(PCSTP to rcSAP) Let \(P = (V,E,c,p)\) be an PCSTP and \(P' = (V',A',T',c',r')\) the corresponding rcSAP obtained by applying Transformation 3. Denote by \(\mathcal {S}\) and \(\mathcal {S'}\) the sets of solutions to P and \(P'\) respectively. Each solution \(S' \in \mathcal {S'}\) can be bijectively mapped to a solution \(S \in \mathcal {S}\) defined by:
$$\begin{aligned}&V_S := \lbrace v \in V:~v \in V'_{S'}\rbrace \end{aligned}$$
(18)
$$\begin{aligned}&E_S :=\lbrace \lbrace v,w \rbrace \in E : ~ (v,w) \in A'_{S'}\quad \text { or }\; (w,v) \in A'_{S'} \rbrace . \end{aligned}$$
(19)
The solution value is preserved.

For the PCSTP and RPCSTP a vast number of reduction techniques—described in [16]—are employed by SCIP-Jack, see Table 2. Furthermore, all heuristic used for the STP can be deployed, albeit with some alterations. For the RSPH in the case of a transformed PCSTP, i.e. an rcSAP, instead of commencing from different vertices, the starting point is always the (artificial) root. In each run all arcs between the root and non-terminals (denoted by \((r',t)\) in Transformation 3) are temporarily removed, except for one. A tree is then computed on this new graph, by using the same process as the original constructive heuristic. Instead of starting from a new terminal as done by customary RSPH, a different arc \((r',t)\) is chosen to remain in the graph.

Finally, the VQ heuristic requires an adaption for both the RPCSTP and the PCSTP: All terminals are temporarily removed from the (transformed) graph and VQ is executed with all \(t_i\), as defined in Transformations 2 and 3, marked as key vertices.

Computational results Table 5 shows aggregated results for three of the PCSTP test sets provided for the DIMACS Challenge. All but two JMP instances are solved during preprocessing in at most 0.1 s. The remaining problems require no more than 0.2 s. Similarly, reduction techniques alone can solve 72 of the 80 CRR instances. However, the hardest (and considerably larger) instances take comparably longer—up to 3.7 s—to be solved to optimality. The third test set, PUCNU, is derived from the PUC test set for the STP. SCIP-Jack is already unable to solve many of the original instances and the PCSTP versions also prove to be hard. However, ten of the instances are solved to optimality, with only four instances requiring branching. The remaining eight instances terminate with optimality gaps in the range 1.0–2.8%.

Comparing the above results with those obtained by the previous version of SCIP-Jack, a significant improvement is observed. Specifically, the JMP and CRR instances can be solved more than 10 times faster on average, with the longest single run time of the previous version being almost 1000 s. This is compared to 3.7 s for the current version of SCIP-Jack. Moreover, three additional PUCNU instances can be solved within the time limit. A notable result is that SCIP-Jack now exhibits a better performance for 10 of the 12 JMP, CRR and PUCNU instances that were part of the exact DIMACS competition than any other participating solver at the time of the competition.
Table 5

Computational results for PCSTP instances

   

Optimal

Timeout

Test set

#

Solved

\(\varnothing \) nodes

\(\varnothing \) time [s]

\(\varnothing \) nodes

\(\varnothing \) gap (%)

JMP

34

34

1.0

0.0

CRR

80

80

1.0

0.4

PUCNU

18

10

11.4

53.5

50.7

1.9

The improved performance of SCIP-Jack can be traced to the vastly stronger new reduction techniques. However, it is also due to the new heuristics P and AP, and the general improvements of SCIP-Jack, such as the new propagator and the dual-ascent algorithm, which allows to start the branch-and-cut with a strong lower bound.

The average results for the RPCSTP instances are displayed in Table 6. Remarkably, the maximum run time observed is 0.7 s. While in the DIMACS Challenge SCIP-Jack already took first place in the exact solving category of the RPCTSP, the current version requires significantly less time to solve the Challenge instances—being on average more than a factor of 25 faster for the cologne1 test set and more than a factor of 75 for the cologne2 set. This improvement is the result of the vastly improved preprocessing techniques, which alone manage to solve all cologne1 and cologne2 instances to optimality.
Table 6

Computational results for RPCSTP instances

   

Optimal

Test set

#

Solved

\(\varnothing \) nodes

\(\varnothing \) time [s]

cologne1

14

14

1.0

0.2

cologne2

15

15

1.0

0.6

3.5 The maximum-weight connected subgraph problem

At first glance, the maximum-weight connected subgraph problem (MWCSP) bears little resemblance to the Steiner problems introduced so far: given an undirected graph (VE) with (possibly negative) node weights p, the objective is to find a tree that maximizes the sum of its node weights. However, it is possible to transform this problem into a prize-collecting Steiner tree problem. One transformation is given in [5]. In this paper, an alternative transformation is presented that leads to a significant reduction in the number of terminals for the resulting PCSTP.

In the following it is assumed that at least one vertex is assigned a negative cost and at least one vertex is assigned a positive cost. Without this assumption the problem becomes trivial to solve.

Transformation 4

(MWCSP to rcSAP)

Let \(P=(V,E,p)\) be an MWCSP, construct an rcSAP \(P''=(V'',A'',T'',c'',r'')\):
  1. 1.

    Set \(V' := V\), \(A':=\lbrace (v,w) : \lbrace v,w \rbrace \in E \rbrace \).

     
  2. 2.

    \(c': A' \rightarrow \mathbb {Q}_{\ge 0}\) such that for \(a = (v,w) \in A'\):

    \(c'_a =\left\{ \begin{array}{l@{\quad }l} -p_w, &{} \text {if } p_w < 0 \\ 0, &{} \text{ otherwise } \end{array}\right. \)

     
  3. 3.

    \(p': V' \rightarrow \mathbb {Q}_{\ge 0}\) such that for \(v \in V'\):

    \( p'(v) =\left\{ \begin{array}{l@{\quad }l} p_v, &{} \text {if } p_v > 0 \\ 0, &{} \text {otherwise} \end{array}\right. \)

     
  4. 4.

    Perform Transformation 3 to \((V',A',c',p')\), but in step 2 instead of constructing a new arc set, \(A'\) is being used. The resulting rcSAP gives us \(P''=(V'',A'',T'',c'',r'')\).

     

Lemma 4

(MWCSP to rcSAP) Let \(P=(V,E,p)\) be an MWCSP and \(P''=(V'',A'',T'',c'',r'')\) an rcSAP obtained from P by Transformation 4. Then each solution \(S''\) to \(P''\) can be bijectively mapped to a solution S to P. The latter is obtained by:
$$\begin{aligned}&V_S := \lbrace v \in V:~v \in V''_{S''}\rbrace \end{aligned}$$
(20)
$$\begin{aligned}&E_S:=\lbrace \lbrace v,w \rbrace \in E : ~ (v,w) \in A''_{S''} \text { or } (w,v) \in A''_{S''} \rbrace \end{aligned}$$
(21)
Furthermore, for the objective value C(S) of S and the objective value \(C''(S'')\) of \(S''\) the following equality holds:
$$\begin{aligned} C(S) = \sum _{v \in V : p_v > 0} p_v - C''(S''). \end{aligned}$$
(22)
Table 7

Number of terminals after transformation for test set ACTMOD

Instance

Transformation 4

Transformation from [5]

drosophila001

71

5226

drosophila005

194

5226

drosophila0075

250

5226

HCMV

55

3863

lymphoma

67

2034

metabol_expr_mice_1

150

3523

metabol_expr_mice_2

85

3514

metabol_expr_mice_3

114

2853

Since most of the vertex weights are non-positive for all real-world DIMACS instances, Transformation 4 results in problems with significantly less terminals compared to the transformation described in [5]. The differences in the number of terminals resulting from the two transformations are presented in Table 7. Even if the number of positive weight vertices is high in the original problem, after presolving it is typically much smaller, since adjacent non-negative vertices can be contracted [16].

For the MWCSP the computational settings of SCIP-Jack are similar to those of the (R)PCSTP. However, the VQ heuristic is not enabled since it cannot easily be adapted to handle anti-parallel arcs of different weight.

Computational results Computational experiments have been performed on the two MWCSP test sets that were part of the DIMACS Challenge. The first is the real-world derived ACTMOD test set (which contains eight instances), and second is the artificially created JMPALMK set (which contains 72 instances). The results, illustrated in Table 8, demonstrate the ability of SCIP-Jack to effectively handle real-world MWCSP instances of up to 93,000 edges in very short time: all eight instances can be solved within 1.4 s, in an average of less than half a second. The speedup of SCIP-Jack as compared to its DIMACS Challenge predecessor is impressive, ranging from a factor of ten to more than 4000. Furthermore, each instance is solved at least four times faster than by any solver during the DIMACS competition. A salient example is the drosophila001 instance which requires only 0.8 s with SCIP-Jack, but at least 21.6 s with any of the participating solvers at the time of the DIMACS competition. The drastically reduced run time of SCIP-Jack is mainly due to new reduction techniques, but also the dual-ascent algorithm is a notable factor.

The effectiveness of Transformation 4 is demonstrated by the performance of SCIP-Jack on the ACTMODPC test set, which consists of the ACTMOD problems transformed to PCSTP by the transformation described in [5]. Compared to the original ACTMOD test set the run time of SCIP-Jack increases for each instance of the ACTMODPC set; one cause of this increase is the DA method becoming less efficient due to a far higher amount of terminals in the transformed SAP. As such, Transformation 4 is a valuable addition to SCIP-Jack.

The results on the JMPALMK test set once again bespeak the strength of reduction techniques implemented in SCIP-Jack. All instances are solved during presolving, in an average of less than 0.1 s.
Table 8

Computational results for MWCSP instances

Test set

#

Solved

\(\varnothing \) nodes

\(\varnothing \) time [s]

ACTMOD

8

8

1.0

0.4

JMPALMK

72

72

1.0

0.0

3.6 The degree-constrained Steiner tree problem

The degree-constrained Steiner tree problem (DCSTP) is an STP with additional degree constraints on the vertices, described by a function \(b: V \rightarrow \mathbb {N}\). The objective is to find a minimum cost Steiner tree \(S = (V_S,E_S)\) such that \(\delta _S(v) \le b(v)\) is satisfied for all \(v \in V_S\). A comprehensive discussion of the DCSTP, including its applications in biology, can be found in [6].

The implementation in SCIP-Jack to solve the DCSTP involves the extension of Formulation 1 by an additional (linear) degree constraint for each vertex. Since the degree restriction does not comply with any reduction techniques of SCIP-Jack, problem-specific preprocessing has not been performed on these instances. Only the constructive heuristic is used, albeit in a modified form. The implemented constructive heuristic performs the following two checks while choosing a new (shortest) path to be added to the current tree. First, whether attaching this path would violate any degree constraints. Second, whether after having added this path at least one additional edge could be added (or all terminals are spanned). If no such path can be found, a vertex of the tree is pseudo randomly chosen that allows to add at least one adjacent edge. Next, such an edge leading to a vertex of high degree and being of small cost is chosen.

Computational results Computational experiments are performed on the 20 instances in the TreeFam test set of the DIMACS Challenge with a time limit of 2 h. All instances come with degree bounds of at most 3 and their underlying graphs are complete.
Table 9

Computational results for DCSTP instances

   

Optimal

Timeout

Test set

#

Solved

\(\varnothing \) nodes

\(\varnothing \) time [s]

\(\varnothing \) nodes

\(\varnothing \) gap (%)

TreeFam

20

7

90.6

10.3

760.6

14.3

The results from computational experiments on these instances are illustrated in Table 9. SCIP-Jack finds the optimal solution to five instances and proves the infeasibility of another two. The remaining 13 instances cannot be solved by SCIP-Jack within the time limit. The gap is reduced to less than or equal to 1% for seven of these instances. However, the gaps of the remaining six instances range from 4.5 to as much as 55.0%.

As compared to what can be observed for other Steiner problem variants in this paper, the average number of branch-and-bound nodes is high, with 90.6 nodes for the solved and 758.6 for the unsolved instances.

Similar to the preceding variants, the current version of SCIP-Jack demonstrates improved performance over the previous version at the DIMACS competition. In particular, the insatisfiability of two instances can now be proven and both the run time for the solved instances and the gap for the remainder are significantly reduced: by a factor of more than 10 and by a factor of up to 100, respectively. This results in a reduction of the average gap (one of the criteria in the DIMACS Challenge) from 37.4 at the time of the competition to 9.3 with the latest SCIP-Jack version. Note that the winner of this category reached an average gap of 19.1 in the competition. The improved solving behavior of SCIP-Jack on the DCSTP can be attributed to general enhancements such as the new propagator, see Sect. 2.

3.7 The group Steiner tree problem

The group Steiner tree problem (GSTP) is another generalization of the Steiner tree problem that originates from VLSI design [20]. For the GSTP the concept of terminals as a set of vertices to be interconnected is extended to a set of vertex groups: given an undirected graph \(G=(V,E)\), edge costs \(c: E \rightarrow \mathbb {Q}_{\ge 0}\) and a series of vertex subsets \(T_1,\ldots ,T_s \subseteq V\), \(s \in \mathbb {N}\), a minimum cost tree spanning at least one vertex of each subset is required. By interpreting each terminal t as a subset \(\{t\}\), every STP can be considered as a GSTP, the latter likewise being \(\mathcal {NP}\)-hard. On the other hand, it is possible to transform each GSTP instance \((V,E,T_1,\ldots ,T_s,c)\) to an STP by using the following scheme:
Table 10

Computational results for GSTP instances

   

Optimal

Timeout

Test set

#

Solved

\(\varnothing \) nodes

\(\varnothing \) time [s]

\(\varnothing \) nodes

\(\varnothing \) gap (%)

GSTP1

8

6

14.9

25.0

355.9

3.9

GSTP2

10

0

48.6

3.2

Transformation 5

(GSTP to STP) Given an GSTP \(P=(V,E,T_1,\ldots T_s, c)\) construct an STP \(P'=(V',E',T',c')\) as follows:
  1. 1.

    Set \(V' := V\), \(E':=E\), \(T' = \emptyset \), \(c':=c\), \(K:=\sum _{e \in E} c_e + 1\).

     
  2. 2.

    For \(i = 1,\ldots ,s\) add a new node \(t'_i\) to \(V'\) and \(T'\) and for all \(v_j \in T_i\) add an edge \(e = \{ t'_i,v_j\}\), with \(c'_{e} := K\).

     

Let \((V,E,T_1,\ldots T_s, c)\) be a GSTP and \(P' = (V',A',T',c')\) an STP obtained by applying Transformation 5 on P. A solution \(S'\) to \(P'\) can then be reduced to a solution S to P by deleting all vertices and edges of S not in (VE). The GSTP P can in this way be solved on the STP \(P'\) as shown in [20, 40].

This approach has already been deployed by [41] to solve group Steiner tree problems and demonstrated to be competitive with specialized solvers at the time of publishing. In the case of SCIP-Jack, to solve a GSTP, Transformation 5 is applied and the resulting problem is treated as a customary STP that is solved without any alteration. An alternative approach would be to employ GSTP-specific heuristics or reduction techniques [42].

Computational results Computational experiments were performed on two test sets of unpublished group Steiner tree instances derived from a real-world wire routing problem. The results from these experiments are presented in Table 10. SCIP-Jack solves all but two of the first test set, with run times ranging from 3.3 to 563 s. Four of the instances solved to optimality only require a single node, with the remaining instances solved in 219 and 61 nodes, respectively. The two unsolved instances gstp34f2 and gstp39f2 exhibit optimality gaps of 2.7 and 5.1% respectively. The same performance is not observed for the second test set. None of the instances, are solved within the time limit and the optimality gaps range from 0.9 to 7.8%.

3.8 The hop-constrained directed Steiner tree problem

The hop-constrained directed Steiner tree problem (HCDSTP) searches for an SAP with the additional constraint that the number of selected arcs must not exceed a predetermined bound, called hop limit. The cut formulation (Formulation 1) used by SCIP-Jack is simply extended to cover this variation by adding one extra linear inequality bounding the sum of all binary arc variables. It should be noted that in the literature the term “hop-constrained Steiner tree” often refers to a problem for which the number of arcs in the path from the root to any terminal within a feasible solution is limited by a predefined bound [43], which differs from the definition used in this paper.

The hop limit brings significant ramifications for the preprocessing and heuristics approaches in its wake. Customarily, many presolving techniques for Steiner tree problems remove or include edges from the graph if a less costly path can be found, regardless whether this procedure leads to a solution with more edges. For the HCDSTP such techniques can therefore produce infeasibility. However, a number of HCDSTP-specific bound-based reduction techniques can be applied, as described in [16].

Similar to the presolving techniques, the heuristics implemented in SCIP-Jack for the other variants do not take into account the hop limit. As such, any identified solution may not be feasible. Therefore, a simple variation of the constructive heuristic is used for the HCDSTP: each arc a, having original costs \(c_a\), is assigned the new cost \(c'_a := 1 + \lambda \frac{c_a}{c_{max}}\), with \(\lambda \in \mathbb {Q}_{+}\) and \(c_{max} := \max _{a \in A} c_a\). Initially \(\lambda \) is set to 3 but its value is decreased or increased after each iteration of the constructive heuristic, depending on whether the last computed solution exceeds or is below the hop limit, respectively. This modification to \(\lambda \) is performed relative to the deviation of the number of edges from the hop limit.

Computational results Three different test sets, consisting of the gr12, gr14 and gr16 instances, are used for the computational experiments. All three test sets were used in the evaluation of the DIMACS Challenge. SCIP-Jack is able to solve all gr12 instances at the root node in less than 100 s. The performance worsens for the gr14 test set, with 12 of 21 instances being solved to optimality within the time limit. The unsolved instances terminate with optimality gaps ranging from 2.4 to 17.9%, after 8.8 nodes on average. Similarly, the optimally solved instances require—with 433.9 s—much more time than the previous problems (in gr12).

Finally, more than half of the gr16 instances were terminated due to insufficient memory. Therefore, to solve these instances a different machine was used, consisting of Intel Xeon E5-2697 CPUs with 2.70 GHz and 128 GB RAM. Although this machine can boast more RAM than the machines of the cluster used for the other computational experiments reported in this paper (see Sect. 2.1), it is notably slower.

The results for the gr16 test set are significantly worse than for the other two sets. Specifically, all instances terminate within the time limit with an optimality gap of at least 27.4%. For these larger instances, SCIP-Jack terminates within the cut loop at the root LP for all but one instance. Besides the size of the problems, a possible cause of this performance is the lack of stronger HCDSTP-specific reduction techniques and heuristics in SCIP-Jack.
Table 11

Computational results for HCDSTP instances

   

Optimal

Timeout

Test set

#

Solved

\(\varnothing \) nodes

\(\varnothing \) time [s]

\(\varnothing \) nodes

\(\varnothing \) gap (%)

gr12

19

19

1.0

4.0

gr14

21

12

6.2

396.6

8.8

10.2

gr16

20

0

1.1

81.3

3.9 Using CPLEX as underlying LP solver

As an extension of SCIP, SCIP-Jack provides a branch-and-cut search, but requires an external LP solver for solving the linear programming relaxations. For all results previously presented the LP solver SoPlex—the default LP solver employed by SCIP—has been used for this purpose. However, SCIP provides interfaces to many different commercial and academic LP solvers. This section discusses the impact of exchanging the academic LP solver SoPlex for the commercial solver CPLEX  12.6.

The comparison between using the LP solvers of CPLEX and SoPlex in SCIP-Jack is performed by selecting one test set for each previously discussed Steiner tree problem variant. An exception is made for those problem variants that can be trivially solved after presolving—such as the SAP and MWCSP. This test set selection is made to provide instances for which the reduction techniques still leave large problems, to highlight the impact of the LP solver in the branch-and-cut algorithm (Table 11).

Table 12 illustrates the comparative performance of SCIP-Jack/CPLEX. The test set and the problem variant are listed in columns one and two. Columns three and four show the number of solved instances and the shifted geometric mean of the running time on the test set for SCIP-Jack using SoPlex as LP solver. The next two columns show the corresponding information for SCIP-Jack/CPLEX. Finally, the last two columns provide the relative change in the number of solved instances and the average time. The last row of the table considers all instances of the six test sets jointly.

Table 12 reveals that the number of solved instance is significantly increased when CPLEX is used. This phenomenon becomes notably pronounced for the estein60 instances, for which more than 90% of time is spent in the LP solver. Specifically, the number of solved instances doubles. Even more salient is the behavior on the GSTP2 test set, with six instances solved to optimality by SCIP-Jack/CPLEX, but not a single one by SCIP-Jack/SoPlex.

The comparison between CPLEX and SoPlex shows that the solving time for most of the instances is significantly smaller when the former is used as LP solver of SCIP-Jack. The only exception to this pattern is the TreeFam class on which SCIP-Jack/SoPlex is around 6% faster than SCIP-Jack/CPLEX.

Table 12

Results of using CPLEX as LP solver for SCIP-Jack

  

SCIP-Jack

SCIP-Jack/CPLEX

Relative change (%)

Test set

Type

Solved1

\(\varnothing \) time [s]

Solved

\(\varnothing \) time [s]

Solved

\(\varnothing \) time

vienna-i-simple

STP

68

298.6

75

218.9

\(+\)10.3

\(-26.7\)

estein60

RSMTP

6

6307.2

12

2672.5

\(+\)100

\(-57.6\)

PUCNU

PCSTP

10

127.0

10

56.3

\(-55.7\)

TreeFam

DCSTP

7

730.1

7

773.0

\(+5.9\)

GSTP2

GSTP

0

7200.1

6

2394.4

\(-66.7\)

gr14

HCDSTP

12

1134.9

14

523.7

\(+\)16.7

\(-53.9\)

all

 

103

866.5

124

501.0

\(+\)20.4

\(-42.2\)

In summary, the results show a considerable potential to speed up SCIP-Jack by using a faster LP solver.

4 From single core to distributed parallel

SCIP has two parallel extensions, ParaSCIP  [44] and FiberSCIP  [45], which are built by using the Ubiquity Generator Framework (UG) [45]. In order to parallelize a problem-specific solver (such as SCIP-Jack), users of SCIP can simply modify their developed plugins by adding a small glue code and linking to one of the UG libraries for SCIP (UG can be used with different state-of-the-art MIP solvers). This glue code consists of an additional class with a function that issues calls to include all SCIP plugins required for the sequential version of the code. Importantly, no modification to the sequential version of the problem-specific solver is required.

In this way, users obtain their own problem-specific parallel optimization solver that can perform a parallel tree search on a distributed memory computing environment. The main features of UG are: several ramp-up mechanisms (the ramp-up is the process from the beginning of the computation until all available solvers become busy), a dynamic load balancing mechanism for parallel tree search and a check-pointing and restarting mechanism. More details about the parallelization provided by UG can be found in [44, 45].

This section presents computational results for the PUC test set from SteinLib. However, it must be noted that the parallel version of SCIP-Jack can handle all of the variants presented throughout this paper. The main purpose of the parallel runs is to provide optimal solutions to as many instances as possible. As mentioned above, the parallelization of a problem-specific solver only requires a small glue code. As such, the parallel version of SCIP-Jack is identical to the sequential version. By pursuing this simple approach, large supercomputing resources can be employed to apply SCIP-Jack to solve computationally difficult Steiner tree problems. For the computations, various clusters and supercomputers were used as they were available. The largest computation performed for these experiments involved up to 864 cores, which was only required for eight instances (bip52p, bip62u, bipa2p, bipa2u, cc11-2p, cc12-2p, cc3-12p, hc9p). However, all other computations were conducted with 192 or less solvers. Since these experiments were performed with the goal to solve previously unsolved instances and cluster and supercomputer time was limited, CPLEX 12.6 was used as the underlying LP solver to reduce the expected run times, see Sect. 3.9. As a reference to the scalability of ParaSCIP, the largest computation previously performed was an 80,000 cores run on Titan at ORNL [46]. It is expected that SCIP-Jack can also run on such a large scale computing environment, although at this stage only relatively small scale computational experiments have been conducted.
Table 13

Primal bound improvements on the PUC instances

Instance

\(|V |\)

\(|E |\)

\(|T |\)

Best

SCIP-Jack

Instance

\(|V |\)

\(|E |\)

\(|T |\)

Best

SCIP-Jack

bip42p

1200

3982

200

24,657

24,657\(^{*}\)

cc3-5u

125

750

13

36

36\(^{*}\)

bip42u

1200

3982

200

236

236\(^{*}\)

cc5-3p

243

1215

27

7299

7299\(^{*}\)

bip52p

2200

7997

200

24,535

24,526

cc5-3u

243

1215

27

71

71\(^{*}\)

bip52u

2200

7997

200

234

234

cc6-2p

64

192

12

3271

3271\(^{*}\)

bip62p

1200

10,002

200

22,870

22,843

cc6-2u

64

192

12

32

32\(^{*}\)

bip62u

1200

10,002

200

220

219

cc6-3p

729

4368

76

20,456

20,270\(^{*}\)

bipa2p

3300

18,073

300

35,379

35,326

cc6-3u

729

4368

76

197

197\(^{*}\)

bipa2u

3300

18,073

300

341

338

cc7-3p

2187

15,308

222

57,088

57,117

bipe2p

550

5013

50

5616

5616\(^{*}\)

cc7-3u

2187

15,308

222

552

552

bipe2u

550

5013

50

54

54\(^{*}\)

cc9-2p

512

2304

64

17,296

17,199

cc10-2p

1024

5120

135

35,379

35,227

cc9-2u

512

2304

64

167

167\(^{*}\)

cc10-2u

1024

5120

135

342

343

hc10p

1024

5120

512

60,494

59,797

cc11-2p

2048

11,263

244

63,826

63,636

hc10u

1024

5120

512

581

575

cc11-2u

2048

11,263

244

614

618

hc11p

2048

11,264

1024

119,779

119,689

cc12-2p

4096

24,574

473

121,106

122,099

hc11u

2048

11,264

1024

1154

1151

cc12-2u

4096

24,574

473

1179

1184

hc12p

4096

24576

2048

236,949

236,080

cc3-10p

1000

13,500

50

12,860

12,837

hc12u

4096

24,576

2048

2275

2262

cc3-10u

1000

13,500

50

125

126

hc6p

64

192

32

4003

4003\(^{*}\)

cc3-11p

1331

19,965

61

15,609

15,648

hc6u

64

192

32

39

39\(^{*}\)

cc3-11u

1331

19,965

61

153

153

hc7p

128

448

64

7905

7905\(^{*}\)

cc3-12p

1728

28,512

74

18,838

18,997

hc7u

128

448

64

77

77\(^{*}\)

cc3-12u

1728

28,512

74

186

187

hc8p

256

1024

128

15,322

15,322\(^{*}\)

cc3-4p

64

288

8

2338

2338\(^{*}\)

hc8u

256

1024

128

148

148\(^{*}\)

cc3-4u

64

288

8

23

23\(^{*}\)

hc9p

512

2304

256

30,258

30,242

cc3-5p

125

750

13

3661

3661\(^{*}\)

hc9u

512

2304

256

292

292

Table 13 shows the results on the instances of the PUC test set as of 17th April 2015. This table lists the number of nodes, edges, and terminals, as well as the best primal bound known at the beginning of the DIMACS Challenge (August 2014), and the primal solution value obtained in experiments with the parallel version of SCIP-Jack. Prior to the experiments performed using SCIP-Jack, 32 instances of the PUC test set remained unsolved. Three of these instances have been solved by SCIP-Jack to proven optimality, which have been underlined and marked with an asterisk in Table 13. For a further 16 instances, SCIP-Jack improved the best known solution. All instances for which the best known primal bound has been improved are marked in bold. Finally, all previously solved instances of the PUC test set have also been solved by SCIP-Jack to proven optimality, which have been marked by an asterisk (without underline).

The instances presented in Table 13 differ widely in their solving behavior. Using the cc6-3u instance as an example, one obtains greater insight into the typical solving procedure when applying ParaSCIP. The cc6-3u instance was solved to optimality for the first time by SCIP-Jack and ParaSCIP. In order to solve this instance again in a single run without restarting, SCIP-Jack was run on the HLRN-III supercomputer consisting of a Cray XC30. This experiment was performed by using nodes equipped with two 12-core Intel Xeon Haswell CPUs sharing 64 GB of RAM and with a CPU clock of 2.5 GHz. By deploying 3072 MPI processes, the optimal solution with an objective value of 197 was proven in 961 s after having processed 123,210 branch-and-bound nodes. While the lower bound was already within a distance of one to the optimal objective value after 20 s, the primal bound dropped to 198 only after 100 s.

The above results demonstrate an overall strong performance of the parallel version of SCIP-Jack in solving computationally difficult STP instances.

5 Conclusions

This paper shows the multilayered impact of embedding a 15-year old Steiner tree branch-and-cut procedure into a state-of-the-art MIP framework and clustering new solving methods around it. First, the amount of problem-specific code is drastically reduced. At the same time the number of general solution methods available, e.g., cutting planes, has increased and will be kept up-to-date just by the continuous improvements in the framework. Furthermore, the opportunity to solve instances in a massively parallel distributed memory environment has been added at minimal cost. Attempts were made to solve open instances from the difficult PUC test set by using these massively parallel extensions. As a result, SCIP-Jack was not only able to solve three previously unsolved instances, but improve the best known solution for another 16.

The use of a general MIP solver allows a significant amount of flexibility in the model to be solved. SCIP-Jack is able to support solving ten variants of the Steiner tree problem with nearly the same code, and the support of further restrictions in the model is straightforward. On top of this versatility, the powerful solving framework for the underlying IP formulation combined with problem-specific methods such as reduction techniques allows SCIP-Jack to be highly competitive with problem-specific state-of-the-art solvers.

Yet, there certainly is potential for future work to improve the performance and scope of the solver. First, already implemented routines such as the branching rule could be improved. Second, additional reduction techniques and heuristics for specific Steiner tree problem variants could be implemented. Finally, SCIP-Jack could be extended to cover further Steiner problem variants described in the literature. By using the plugin structure of SCIP, the inclusion of some of these enhancements is expected in the future.

Ultimately, this paper has described the creation of a highly competitive exact solving framework of outstanding versatility that can veritably be designated as a Steiner class solver. Furthermore, to the best of our knowledge this is the first time that a powerful exact Steiner tree solver has been made available in source code to the scientific community. The SCIP Optimization Suite [9] already contains a previous version of our solver and the current version of SCIP-Jack is planned to be part of the next release of SCIP. We hope that the availability of such a device will foster the use of Steiner trees in modeling real-world phenomena.

Footnotes

Notes

Acknowledgements

The work for this article has been conducted within the Research Campus Modal funded by the German Federal Ministry of Education and Research (fund number 05M14ZAM). It has been further supported by a Google Faculty Research Award. The authors would like to thank the referees for constructive criticism and helpful comments on the paper. We are thankful to The Institute of Statistical Mathematics (ISM), Tokyo, and the HLRN-III facility at ZIB, Berlin, for providing supercomputing resources and their respective staff for their helpful support. Furthermore, we are thankful to Cees Duin for sending us a hard copy of his PhD thesis. This research used resources of the Oak Ridge Leadership Computing Facility, which is a DOE Office of Science User Facility supported under Contract DE-AC05-00OR22725.

References

  1. 1.
    Karp, R.: Reducibility among combinatorial problems. In: Miller, R., Thatcher, J. (eds.) Complexity of Computer Computations, pp. 85–103. Springer, Boston, MA (1972)CrossRefGoogle Scholar
  2. 2.
    Leitner, M., Ljubić, I., Luipersbeck, M., Prossegger, M., Resch, M.: New real-world instances for the Steiner tree problem in graphs. Technical report, ISOR, Uni Wien (2014)Google Scholar
  3. 3.
    Chowdhury, S.A., Shackney, S., Heselmeyer-Haddad, K., Ried, T., Schffer, A.A., Schwartz, R.: Phylogenetic analysis of multiprobe fluorescence in situ hybridization data from tumor cell populations. Bioinformatics 29(13), 189–198 (2013)CrossRefGoogle Scholar
  4. 4.
    Ljubić, I.: Exact and memetic algorithms for two network design problems. PhD thesis, Technische Universität Wien (2004)Google Scholar
  5. 5.
    Dittrich, M.T., Klau, G.W., Rosenwald, A., Dandekar, T., Müller, T.: Identifying functional modules in protein–protein interaction networks: an integrated exact approach. Bioinformatics 24(13), 223–231 (2008)CrossRefGoogle Scholar
  6. 6.
    Liers, F., Martin, A., Pape, S.: Steiner trees with degree constraints: structural results and an exact solution approach. Technical report, Department Mathematik (2014)Google Scholar
  7. 7.
    Koch, T., Martin, A.: Solving Steiner tree problems in graphs to optimality. Networks 32, 207–232 (1998)MathSciNetCrossRefMATHGoogle Scholar
  8. 8.
    Achterberg, T.: SCIP: solving constraint integer programs. Math. Program. Comput. 1(1), 1–41 (2009)MathSciNetCrossRefMATHGoogle Scholar
  9. 9.
    Gamrath, G., Fischer, T., Gally, T., Gleixner, A.M., Hendel, G., Koch, T., Maher, S.J., Miltenberger, M., Müller, B., Pfetsch, M.E., Puchert, C., Rehfeldt, D., Schenker, S., Schwarz, R., Serrano, F., Shinano, Y., Vigerske, S., Weninger, D., Winkler, M., Witt, J.T., Witzig, J.: The SCIP Optimization Suite 3.2. Technical Report 15-60, ZIB, Takustr.7, 14195 Berlin (2016)Google Scholar
  10. 10.
    Borndörfer, R., Hoàng, N.D., Karbstein, M., Koch, T., Martin, A.: How many Steiner terminals can you connect in 20 years? In: Jünger, M., Reinelt, G. (eds.) Facets of Combinatorial Optimization, pp. 215–244. Springer, Berlin, Heidelberg (2013)CrossRefGoogle Scholar
  11. 11.
    Koch, T., Martin, A., Pfetsch, M.E.: Progress in academic computational integer programming. In: Jünger, M., Reinelt, G. (eds.) Facets of Combinatorial Optimization, pp. 483–506. Springer, Berlin, Heidelberg (2013)CrossRefGoogle Scholar
  12. 12.
    Rosseti, I., de Aragão, M., Ribeiro, C., Uchoa, E., Werneck, R.: New benchmark instances for the Steiner problem in graphs. In: Extended Abstracts of the 4th Metaheuristics International Conference (MIC’2001), pp. 557–561, Porto (2001)Google Scholar
  13. 13.
    Duin, C.: Steiner problems in graphs. PhD thesis, University of Amsterdam (1993)Google Scholar
  14. 14.
    Polzin, T.: Algorithms for the Steiner problem in networks. PhD thesis, Saarland University (2004)Google Scholar
  15. 15.
    Daneshmand, S.V.: Algorithmic approaches to the Steiner problem in networks. PhD thesis, Universität Mannheim (2004)Google Scholar
  16. 16.
    Rehfeldt, D.: A generic approach to solving the Steiner tree problem and variants. Master’s thesis, Technische Universität Berlin (2015)Google Scholar
  17. 17.
    Applegate, D.L., Bixby, R.E., Chvátal, V., Cook, W.J.: On the solution of traveling salesman problems. Documenta Mathematica Journal der Deutschen Mathematiker-Vereinigung Extra Volume ICM III, 645–656 (1998)MathSciNetMATHGoogle Scholar
  18. 18.
    Mittelmann, H.: Benchmarks for optimization software. http://plato.asu.edu/bench.html. Last accessed 9 March 2015
  19. 19.
    Beasley, J.E.: An algorithm for the Steiner problem in graphs. Networks 14(1), 147–159 (1984)MathSciNetCrossRefMATHGoogle Scholar
  20. 20.
    Hwang, F., Richards, D.S., Winter, P.: The Steiner tree problem. Annals of Descrete Mathematics, vol. 53. Elsevier, AmsterdamGoogle Scholar
  21. 21.
    Achterberg, T.: Constraint integer programming. PhD thesis, Technische Universität Berlin (2007)Google Scholar
  22. 22.
    de Aragao, M.P., Werneck, R.F.: On the implementation of MST-based heuristics for the Steiner problem in graphs. In: Proceedings of the 4th International Workshop on Algorithm Engineering and Experiments, pp. 1–15. Springer, Berlin, Heidelberg (2002)Google Scholar
  23. 23.
    Uchoa, E., Werneck, R.F.F.: Fast local search for Steiner trees in graphs. In: Blelloch, G.E., Halperin, D. (eds.) ALENEX, pp. 1–10. SIAM, Society for Industrial and Applied Mathematics, Philadelphia, PA (2010)Google Scholar
  24. 24.
    Wong, R.: A dual ascent approach for Steiner tree problems on a directed graph. Math. Program. 28, 271–287 (1984)MathSciNetCrossRefMATHGoogle Scholar
  25. 25.
    Pajor, T., Uchoa, E., Werneck, R.F: A Robust and Scalable Algorithm for the Steiner Problem in Graphs. Preprint, arXiv:1412.2787
  26. 26.
    Takahashi, H.: An approximate solution for the Steiner problem in graphs. Math. Jpn. 24, 573–577 (1980)MathSciNetMATHGoogle Scholar
  27. 27.
    Ribeiro, C.C., Uchoa, E., Werneck, R.F.: A hybrid GRASP with perturbations for the Steiner problem in graphs. INFORMS J. Comput. 14(3), 228–246 (2002)MathSciNetCrossRefMATHGoogle Scholar
  28. 28.
    Wunderling, R.: Paralleler und objektorientierter Simplex-Algorithmus. PhD thesis, Technische Universität Berlin (1996)Google Scholar
  29. 29.
    Beasley, J.: An SST-based algorithm for the Steiner problem in graphs. Networks 19, 1–16 (1989)MathSciNetCrossRefMATHGoogle Scholar
  30. 30.
    Gamrath, G., Koch, T., Maher, S.J., Rehfeldt, D., Shinano, Y.: SCIP-Jack—a solver for STP and variants with parallelization extensions. 11th DIMACS Competition workshop paper (2014)Google Scholar
  31. 31.
    Polzin, T., Vahdati-Daneshmand, S.: The Steiner tree challenge: an updated study (2014). Unpublished manuscript at http://dimacs11.zib.de/downloads.html
  32. 32.
    Johnston, J., Kelley, R., Crawford, T., Morton, D., Agarwala, R., Koch, T., Schäffer, A., Francomano, C., Biesecker, L.: A novel nemaline myopathy in the Amish caused by a mutation in troponin T1. Am. J. Hum. Genet. 67(4), 814–821 (2000)Google Scholar
  33. 33.
    Garey, M., Johnson, D.: The rectilinear Steiner tree problem is NP-complete. SIAM J. Appl. Math. 32, 826–834 (1977)MathSciNetCrossRefMATHGoogle Scholar
  34. 34.
    Warme, D., Winter, P., Zachariasen, M.: Exact algorithms for plane Steiner tree problems: a computational study. In: Du, D.Z., Smith, J., Rubinstein, J. (eds.) Advances in Steiner Trees, pp. 81–116. Kluwer, Dordrecht (2000)Google Scholar
  35. 35.
    Zachariasen, M., Rohe, A.: Rectilinear group Steiner trees and applications in VLSI design. Technical Report 00906, Institute for Discrete Mathematics (2000)Google Scholar
  36. 36.
    Emanet, N.: The Rectilinear Steiner Tree Problem. Lambert Academic Publishing (2010)Google Scholar
  37. 37.
    Hanan, M.: On Steiner’s problem with rectilinear distance. SIAM J. Appl. Math. 14(2), 255–265 (1966)MathSciNetCrossRefMATHGoogle Scholar
  38. 38.
    Snyder, T.L.: On the exact location of Steiner points in general dimension. SIAM J. Comput. 21(1), 163–180 (1992)MathSciNetCrossRefMATHGoogle Scholar
  39. 39.
    Rehfeldt, D., Koch, T.: Transformations for the prize-collecting Steiner tree problem and the maximum-weight connected subgraph problem to SAP. Technical Report 16-36, ZIB, Takustr.7, 14195 Berlin (2016)Google Scholar
  40. 40.
    Vo, S.: A survey on some generalizations of Steiner’s problem. In: 1st Balkan Conference on Operational Research Proceedings, vol. 1, pp. 41–51 (1988)Google Scholar
  41. 41.
    Duin, C.W., Volgenant, A., Vo, S.: Solving group Steiner problems as Steiner problems. Eur. J. Oper. Res. 154(1), 323–329 (2004)MathSciNetCrossRefMATHGoogle Scholar
  42. 42.
    Ferreira, C.E., de Oliveira Filho, F.M.: New reduction techniques for the group Steiner tree problem. SIAM J. Optim. 17(4), 1176–1188 (2006)MathSciNetCrossRefMATHGoogle Scholar
  43. 43.
    Voß, S.: The Steiner tree problem with hop constraints. Ann. Oper. Res. 86, 321–345 (1999)MathSciNetCrossRefMATHGoogle Scholar
  44. 44.
    Shinano, Y., Achterberg, T., Berthold, T., Heinz, S., Koch, T.: ParaSCIP: a parallel extension of SCIP. In: Bischof, C., Hegering, H.G., Nagel, W., Wittum, G. (eds.) Competence in High Performance Computing 2010, pp. 135–148. Springer, Berlin, Heidelberg (2012)Google Scholar
  45. 45.
    Shinano, Y., Heinz, S., Vigerske, S., Winkler, M.: FiberSCIP—a shared memory parallelization of SCIP. Technical Report 13–55, ZIB, Takustr.7, 14195 Berlin (2013)Google Scholar
  46. 46.
    Shinano, Y., Achterberg, T., Berthold, T., Heinz, S., Koch, T., Winkler, M.: Solving open MIP instances with ParaSCIP on supercomputers using up to 80,000 cores. In: 2016 IEEE International Parallel and Distributed Processing Symposium, pp. 770–779 (2016)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg and The Mathematical Programming Society 2016

Authors and Affiliations

  • Gerald Gamrath
    • 1
  • Thorsten Koch
    • 1
  • Stephen J. Maher
    • 1
  • Daniel Rehfeldt
    • 1
  • Yuji Shinano
    • 1
  1. 1.Zuse Institute BerlinBerlinGermany

Personalised recommendations