您好、欢迎来到现金彩票网!
当前位置:PC蛋蛋 > 最小生成树 >

用kruskal算法构造例3的最小生成树是什么意思

发布时间:2019-06-10 15:59 来源:未知 编辑:admin

  假设连通网N=(V,{E})。则令最小生成树的初始状态为只有n个顶点而无边的非连通图T=(V,{}),图中每个顶点自成一个连通分量。在E中选择最小代价的边,若该边依附的顶点落在T中不同的连通分量中,则将该边加入到T中,否则舍去此边而选择下一条代价最小的边,依次类推,直到T中所有顶点都在同一连通分量上为止。

  图中先将每个顶点看作独立的子图,然后查找最小权值边,这条边是有限制条件的,边得两个顶点必须不在同一个图中,如上图,第一个图中找到最小权值边为(v1,v3),且满足限制条件,继续查找到边(v4,v6),(v2,v5),(v3,v6),当查找到最后一条边时,仅仅只有(v2,v3)满足限制条件,其他的如(v3,v4),(v1,v4)都在一个子图里面,不满足条件,至此已经找到最小生成树的所有边。

  由于我们要查找边权值最小的边,那么我们的第一步应该把边权值排序,这样就可以很快查找到权值最小的边,为了简化程序设计,我们不使用其他的数据结构,仅仅设立一个结构体数组来存储边,用一个标记数组来标记哪些边已经被选择(实际程序设计的时候没有用到标记数组);

  解决了边得存储和排序问题,现在是算法最关键的就是怎么判断边的两个顶点不在一个子图里面,一个简单的办法是设立一个辅助数组f[n],初始化如下:

  如此初始化是为了让每个顶点各自为一个图,如果找到一条边(i,j)那么做如下标记:(i

  上面的标记过程也给了我们怎么判断两个顶点是否在一个图中找到了方法,即判断其父节点是否相同,相同则是在一个图里;

http://caviarchef.com/zuixiaoshengchengshu/23.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有