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.
翻译:斯坦纳树问题要求在给定图中寻找一棵包含所有指定终点的最小权重树,这是一个在众多实际应用中出现的经典问题。过去十年间涌现出大量相关算法,其中最具代表性的是2014年第11届DIMACS挑战赛和2018年第3届PACE竞赛中提出的方法。本文提出一种新颖的分区合并算法,用以高效求解大型图中的这一NP难问题。该算法首先将输入图分解为若干小片段,随后逐层构建完整图结构。本质上,该方法通过在每个层级进行局部搜索得到的信息汇聚到最终图中。我们在广泛的基准实例上对算法进行评估,结果表明该算法在大型实例上优于DIMACS与PACE竞赛的优胜者,在中小型实例上与其性能相当。