|
Problem description and solving approach The Steiner tree problem in graphs (SPG) can be described as follows: Given an undirected connected graph
and a set
The solving approach of SCIP-Jack can be dissected into three major components: First, problem specific preprocessing is extremely important. Apart from some pathological instances specifically constructed to defy presolving techniques, preprocessing is often able to significantly reduce instances or even solve them. Second, heuristics are needed, especially for hard instances, to find good or even optimal solutions. Finally, the core of our approach is constituted by a branch-and-cut procedure used to compute lower bounds and prove optimality. The problem can be formulated using the directed equivalent of the SPG, the Steiner arborescence problem (SAP): Given a directed graph
where Since the model potentially contains an exponential number of constraints, a separation approach is employed. Violated constraints are separated during the execution of the branch-and-cut algorithm. In addition to Steiner problems in graphs there exist several variations. The following Steiner problem variants can be solved by SCIP-JACK, by transforming them to a Steiner arborescence problem, and in some cases introducing additional constraints: -Steiner arborescence problems, -rectilinear Steiner minimum tree problems, -node-weighted Steiner tree problems, -prize-collecting Steiner tree problems, -rooted prize-collecting Steiner tree problems, -maximum-weight connected subgraph problems, -degree-constrained Steiner tree problems, -group Steiner tree problems, and -hop-honstrained directed Steiner tree problems. A far more intricate description of SCIP-Jack and its various components can be found in "A generic approach to solving the Steiner tree problem and variants" by D. Rehfeldt. |