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竞赛冠军算法;在中小型实例上,本算法亦能与这些算法相竞争。