前几天看ZOJ的一场Monthly,里面有一道和SteinerTree很相近的一道题,之后敲了一下,顺便把SteinerTree整理一下。
首先由我们知道的东西引入:
一个图的最小生成树即这个图上所有点(设集合为G)生成的边权值和最小的树,我们可以知道这个树上任意两点是可到达的,这个可以用prime或者kruskal实现。下面,假如我们只要求G的一个真子集里面的所有点连通,那么我们发现一些边权是没有用的、可以去掉,这样,将指定点集合中的所有点连通,且总边权值和最小的生成树称谓MinimalSteinerTree(最小斯坦纳树),可以看出,最小生成树是最小斯坦纳树的一种特殊情况。
SteinerTree是组合优化学的著名问题,而且是离散数学中几个NP问题之一,可是很多离散书中提都不提.....SteinerTree对于求解数学模型,优化最小网络很有用。
求解方法:
首先,我们从prime的思想出发,如果求最小斯坦纳树,那么只要求对应点集为最小生成树即可,而