In \cite{siebert2019linear} the authors present a set of integer programs (IPs) for the Steiner tree problem, which can be used for both, the directed and the undirected setting of the problem. Each IP finds an optimal Steiner tree with a specific structure. A solution with the lowest cost, corresponds to an optimal solution to the entire problem. The authors show that the linear programming relaxation of each IP is integral and, also, that each IP is polynomial in the size of the instance, consequently, they can be solved in polynomial time. The main issue is that the number of IPs to solve grows exponentially with the number of terminal nodes, which makes this approach impractical for large instances. In this paper, we propose a local search procedure to solve the directed Steiner tree problem using the approach presented in \cite{siebert2019linear}. In order to do this, we present a dynamic programming algorithm to solve each IP efficiently. Then we provide a characterization of the neighborhood of each tree structure. Finally, we use the proposed algorithm and the neighborhood characterization to solve the problem using a simulated annealing framework. Computational experiments show that the quality of the solutions delivered by our approach is better than the ones presented in the literature for the directed Steiner tree problem.

## Article

View A Simulated Annealing Algorithm for the Directed Steiner Tree Problem