不久前学习了斯坦纳树,今天决定记录下。以便日后忘了,好回忆起来。
1. 什么是斯坦纳树?
斯坦纳树问题是组合优化学科中的一个问题。将指定点集合中的所有点连通,且边权总和最小的生成树称为最小斯坦纳树(Minimal Steiner Tree),其实最小生成树是最小斯坦纳树的一种特殊情况。而斯坦纳树可以理解为使得指定集合中的点连通的树,但不一定最小。
2. 如何求解最小斯坦纳树?
可以用DP求解,dp[i][state]表示以i为根,指定集合中的点的连通状态为state的生成树的最小总权值。
转移方程有两重:
第一重,先通过连通状态的子集进行转移。
dp[i][state]=min{ dp[i][subset1]+dp[i][subset2] }