- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
最小生成树论文
最小生成树论文
摘要:最小生成树是图论的经典问题,求最小生成树以及求最小生成树的权值和得到了足够关注,而很少人去研究最小生成树是否唯一。对于给定的图而言,因为最小生成树的权值和是确定的,所以最小生成树不唯一当且仅当最小生成树的形状不唯一。本文提出判断最小生成树是否唯一的三种方法并且对它们给予分析和评价。
关键词:最小生成树;唯一;prim算法;kruskal算法;次小生成树
minimum spanning tree if the unique
wu yuliang,kong fanlong
(central china normal university,wuhan430079,china)
abstract:minimum spanning tree is a classic problem of graph theory,find the minimum spanning tree minimum spanning tree,and find the weight and get enough attention,and few people to study the minimum spanning tree is unique.for a given graph is concerned,because the weights and the minimum spanning tree is determined,so the minimum spanning tree is not unique and only if the shape of the minimum spanning tree is not unique.determine whether the proposed minimum spanning tree,and the only three ways to give their analysis and evaluation.
keywords:minimum spanning tree;unique;prim algorithm;kruskal algorithm;small spanning tree
一、三种方法判断最小生成树(mst)是否唯一
prim算法提出的方法
prim算法的基本思想是:首先选取图中的任意一个顶点v作为树的根加入生成树的集合q中,之后不断往生成树(集合q中)添加顶点w,顶点w满足与集合q中的某个顶点之间有边,且该边上的权值是此时所有连接集合q中的结点与不在集合q中的结点的边中权值最小的,如此加入n-1个结点后,就形成了mst。
w时(第一点除外),顶点w都满足与集合q中的某个顶点有当时最小权的边,把集合q中的那个顶点看作顶点w的前驱结点。那么到算法结束时,我们都能得到每个点(第一个点除外)的前驱结点,将(第一个点除外)与它的前驱结点相连,就有n-1条边了,最小生成树构造完成。
primmst(g,r)//求图g的以r为根的mst,通过求每个点的前驱结点来求mst
{//初始化,q←{r},除r外的所有前驱结点都为r且与q的最短距离都是与r的距离。
initcandidateset(…);
for(k=0;k }
union(e[k].u,e[k].v);//将两端点所在集合合并为一个集合
e[num++]=k;//记录k为mst中的边
}
}
mst唯一;//若没发mst不唯一的情况,则mst唯一。
}
次小生成树是所有生成树中权值和第二小的生成树。判断最小生成树是否唯一可以转化到判断次小生成树的权值和是否与最小生成树的权值和相等的问题上来。如果权值和相等,那么最小生成树不唯一,否则唯一。
求次小生成树的基本思想是:先求最小生成树,然后枚举最小生成树的每一条边(总共有n-1条),删去后再求最小生成树,这样得到的所有生成树中最小的就是次小生成树。
sst(g)
{
sum1=kruskalmst(g);//最小
for(sum2=maxint,i=0;in-1;i++)//枚举删去mst中的每一条边
{
j=kruskalmst(g-e[i]);//去掉mst中的第i条边后再求最小生成树
if(jsum2) sum2=j;//更新次小生成树的权值和
}
if(sum1==sum2) mst不唯一
else mst唯一
}
首先从时空复杂度分析这三种方法:第一种方法只是用prim算法求了两次mst,所以跟prim算法的时空复杂度是一样的,都是o(n^2)。在第二种方法中,kruskal的时间复杂度的瓶颈在于对边排序,后面对边扫描是o(e),而判断mst是否唯一时,排序是一样的,只是扫描时,每次加入一条边时都要向后判断是否存在一条与其权值相等且连接相同两集合的边
文档评论(0)