最小生成树
考试要求: 掌握     
知识路径:  > 应用数学  > 图论应用  > 图论应用


 
       一个连通且无回路的无向图称为树。在树中度数为1的结点称为树叶,度数大于1的结点称为分枝点或内结点。
       给定图T,以下关于树的定义是等价的:
       (1)无回路的连通图。
       (2)无回路且e=v-1,其中e为边数,v为结点数。
       (3)连通且e=v-1。
       (4)无回路且增加一条新边,得到一个且仅一个回路。
       (5)连通且删去任何一个边后不连通。
       (6)每一对结点之间有一条且仅一条路。
       在带权的图G的所有生成树中,树权最小的那棵生成树,称作最小生成树。
       求连通的带权无向图的最小代价生成树的算法有普里姆(Prim)算法和克鲁斯卡尔(Kruskal)算法。
       普里姆算法
       设已知G=(VE)是一个带权连通无向图,顶点V={0,1,2,…,n-1}。设U是构造生成树过程中已被考虑在生成树上的顶点的集合。初始时,U只包含一个出发顶点。设T是构造生成树过程中已被考虑在生成树上的边的集合,初始时T为空。如果边(ij)具有最小代价,且iUjV-U,那么最小代价生成树应包含边(ij)。把j加到U中,把(ij)加到T中。重复上述过程,直到U等于V为止。这时,T即为要求的最小代价生成树的边的集合。
       普里姆算法的特点是当前形成的集合T始终是一棵树。因为每次添加的边是使树中的权尽可能小,因此这是一种贪心的策略。普里姆算法的时间复杂度为O(n2),与图中边数无关,所以适合于稠密图。
       克鲁斯卡尔算法
       设T的初始状态只有n个顶点而无边的森林T=(Vφ),按边长递增的顺序选择E中的n-1条安全边(uv)并加入T,生成最小生成树。所谓安全边是指两个端点分别是森林T里两棵树中的顶点的边。加入安全边,可将森林中的两棵树连接成一棵更大的树,因为每一次添加到T中的边均是当前权值最小的安全边,MST性质也能保证最终的T是一棵最小生成树。
       克鲁斯卡尔算法的特点是当前形成的集合T除最后的结果外,始终是一个森林。克鲁斯卡尔算法的时间复杂度为O(elog2e),与图中顶点数无关,所以较适合于稀疏图。
       
       求图的最小生成树
       例如,使用普里姆算法构造如上图所示的最小生成树的过程如下面5个图所示。
       
       使用普里姆算法构造最小生成树的过程(1)
       
       使用普里姆算法构造最小生成树的过程(2)
       
       使用普里姆算法构造最小生成树的过程(3)
       
       使用普里姆算法构造最小生成树的过程(4)
       
       使用普里姆算法构造最小生成树的过程(5)
 

更多复习资料
请登录电脑版软考在线 www.rkpass.cn

京B2-20210865 | 京ICP备2020040059号-5
京公网安备 11010502032051号 | 营业执照
 Copyright ©2000-2025 All Rights Reserved
软考在线版权所有