The Steiner tree problem, which asks for a minimum weighted tree spanning a given set of terminal vertices in a given graph, is a classic problem arising in numerous practical applications. Many algorithms about this problem emerged in the past decade, especially presented in the 11th DIMACS Challenge in 2014 and the 3rd PACE Competition in 2018. In this paper, we present a novel partition-and-merge algorithm for effectively solving this NP-hard problem in large graphs. The algorithm first breaks the input graph into small fragments and then gradually builds up the graph in a level-by-level manner. Intuitively, the method aggregates information that is found by local search at each level into the final graph. We assess the algorithm on a wide range of benchmark instances, showing that the algorithm outperforms the winners of DIMACS and PACE challenges on large instances and competes favorably with them on small or middle-sized instances.
翻译:暂无翻译