论文标题
用几个终端解决施泰纳树问题
Solving the Steiner Tree Problem with few Terminals
论文作者
论文摘要
Steiner树问题是网络设计,路由和VLSI设计中的一个众所周知的问题。给定图形,边缘成本和一组专用顶点(终端),施泰纳树问题要求输出以最低成本连接所有终端的子图。 Dijkstra-Steiner算法是通过动态编程解决Steiner树问题的最先进算法。该算法通过系统地搜索较小的实例(基于终端的子集),并在这些较小的实例中结合施泰纳树,从而构建了整个实例的施泰纳树。该搜索在很大程度上依赖于指导启发式功能以修剪搜索空间。但是,为了确保正确性,该算法仅允许有限的启发式功能,即满足所谓一致性条件的启发式功能。在本文中,我们增强了Dijkstra-Steiner算法,并建立了一种称为DS*的重新审视算法。 DS*算法允许随着启发式方法放宽启发式函数的先前情况,因此允许任意下限。值得注意的是,我们现在可以使用基于线性编程的下限。此外,我们在某种情况下捕获了对启发式功能的新要求,我们称之为可接受性。我们表明,使用可接受的启发式功能时,可接受性确实比一致性弱,并确定DS*算法的正确性。我们实现DS*并将其与现代预处理结合,从而产生了开源求解器(DS* solve)。最后,我们将其在标准基准测试中的性能进行比较,并观察到竞争行为。
The Steiner tree problem is a well-known problem in network design, routing, and VLSI design. Given a graph, edge costs, and a set of dedicated vertices (terminals), the Steiner tree problem asks to output a sub-graph that connects all terminals at minimum cost. A state-of-the-art algorithm to solve the Steiner tree problem by means of dynamic programming is the Dijkstra-Steiner algorithm. The algorithm builds a Steiner tree of the entire instance by systematically searching for smaller instances, based on subsets of the terminals, and combining Steiner trees for these smaller instances. The search heavily relies on a guiding heuristic function in order to prune the search space. However, to ensure correctness, this algorithm allows only for limited heuristic functions, namely, those that satisfy a so-called consistency condition. In this paper, we enhance the Dijkstra-Steiner algorithm and establish a revisited algorithm, called DS*. The DS* algorithm allows for arbitrary lower bounds as heuristics relaxing the previous condition on the heuristic function. Notably, we can now use linear programming based lower bounds. Further, we capture new requirements for a heuristic function in a condition, which we call admissibility. We show that admissibility is indeed weaker than consistency and establish correctness of the DS* algorithm when using an admissible heuristic function. We implement DS* and combine it with modern preprocessing, resulting in an open-source solver (DS* Solve). Finally, we compare its performance on standard benchmarks and observe a competitive behavior.