数据结构(牛小飞)5最小生成树课件.ppt
《数据结构(牛小飞)5最小生成树课件.ppt》由会员分享,可在线阅读,更多相关《数据结构(牛小飞)5最小生成树课件.ppt(29页珍藏版)》请在三一办公上搜索。
1、最小生成树,生成树和生成森林,最小生成树,小结和作业,最小生成树生成树和生成森林最小生成树小结和作业,生成树,一、定义图G的生成树是G的极小连通子图,即包含G中的所有顶点(n)和n-1条边的连通子图,生成树一、定义,生成树,V1,V2,V4,V8,V5,V3,V6,V7,V1,V2,V3,V4,V5,V8,V6,V7,深度优先:,广度优先:,生成树V1V2V3V4V5V8V6V7V1V2V4V8V5V,生成树,二、算法图的遍历算法访问了图中的每个顶点一次且仅一次。访问某个顶点的邻接点时,要经过与这两个顶点相关联的边。,因此,图的遍历算法可以产生一颗生成树:所有的顶点和经过的边。,生成树二、算法
2、因此,图的遍历算法可以产生一颗生成树:所有的顶,生成树算法,void DFSTree(Graph G,int v,CSNode T)v.visit=true;first=true;for(w=FirstAdjVex(G,v);w=0;w=NextAdjVex(G,v,w)if(!w.visit)p=new CSNode(v);if(first)T.lchild=p;first=false;else q.nextsibling=p;q=p;DFSTree(G,w.q);,算法以孩子兄弟链表作为生成森林的存储结构,生成树算法void DFSTree(Graph G,int,生成森林,一、定义 非连
3、通图G的每个连通分量的生成树,构成了图G的生成森林,生成森林一、定义,生成森林,8,1,2,3,4,5,6,7,0,a,b,c,h,d,e,k,f,g,非连通图G:,G的深度优先搜索生成森林:,a,c,h,d,f,e,k,b,g,生成森林abchdekfg81234567081234567,生成森林算法,算法以孩子兄弟链表作为生成森林的存储结构,void DFSForest(Graph G,CSNode T)T=null;for(v=0;v=G.vexnum;+v)v.visit=false;for(v=0;v=G.vexnum;+v)if(!v.visit)p=new CSNode(v)if
4、(!T)T=p;else q.nextsibling=p;q=p;DFSTree(G,v,p);,生成森林算法算法以孩子兄弟链表作为生成森林的存储结构void,最小生成树,假设要在 n 个城市之间建立通讯联络网,则连通 n 个城市只需要修建 n-1条线路,如何在最节省经费的前提下建立这个通讯网?,问题:,最小生成树 假设要在 n 个城市之间建立通讯联络网,则,最小生成树,连通网:n个城市和城市间可能的通信线路,网的顶点:表示城市,网的边:表示两个城市之间的线路,网的边上的权值:通信代价,最小生成树连通网:n个城市和城市间可能的通信线路网的顶点:表,最小生成树,最小生成树22614v4v5v1v
5、3v2v6v7124527,最小生成树,构造网的一棵最小生成树,即:在e条带权的边中选取n-1条边(不构成回路),使“权值之和”为最小。,该问题等价于:,特点:1.最小生成树中边的条数为|V|-1。2.最小生成树无圈。3.最小生成树是包含所有顶点的的最小的树。,最小生成树 构造网的一棵最小生成树,即:在e条带权的边,最小生成树,算法三:克鲁斯卡尔算法Kruskal,算法二:普里姆算法Prim,算法一:破圈法,最小生成树算法三:克鲁斯卡尔算法Kruskal算法二:普里姆,破圈法,一、基本思想1、将所有的边按权重从大到小排列。2、对每条边e尝试下面的操作,直到G中的边数=n-1:如果删除e,图G仍
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 牛小飞 最小 生成 课件
链接地址:https://www.31ppt.com/p-2062528.html