糯米

TI DaVinci, gstreamer, ffmpeg
随笔 - 167, 文章 - 0, 评论 - 47, 引用 - 0
数据加载中……

Minimal Steiner Tree 简介

MinimalSteinerTree 的意思是:
在图中找出一个生成树,需要将指定的数个点连接,边权总值最小。
最小生成树是 MinimalSteinerTree 的一种特殊情况。
此问题是NP完全问题。
在POJ 3123中的标程给出了一个递归的算法来解决这个问题。

首先用floyd算法求出两两之间的最短路径。
然后把所有点都两两链接起来,权值就是它们的最短路径。
假设指定必须连接的点有N个。
那么MinimalSteinerTree 树中的内点最多有N-2个。
在纸上画一下就知道了,内点最多的情况就是树为满二叉树的情况。
而由于之前的floyd算法。把整个图给“缩”了一下。
所以树最多有N-2+N个点。
枚举所有可能的点集。对每个点集求最小生成树。取最小值即可。

另外一种方法是使用动态规划,详情请见这里

posted on 2011-02-24 00:19 糯米 阅读(2411) 评论(1)  编辑 收藏 引用 所属分类: POJAlgorithm

评论

# re: Minimal Steiner Tree 简介  回复  更多评论   

博主,假设有一张图,是完全二叉树的情况,有 8 个叶子节点,这样内点是 7 个啊,为什么说是 N - 2 呢?盼解答。
2012-02-11 16:24 | EUYUIL

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理