图的连通性问题_第1页
图的连通性问题_第2页
图的连通性问题_第3页
图的连通性问题_第4页
图的连通性问题_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

图的连通性问题第1页,课件共16页,创作于2023年2月£7.4图的连通性问题£7.4.1无向图的连通分量和生成树广度优先生成树:在连通图中,由广度优先搜索得到的生成树。(1)连通图在对无向图进行遍历时,对于连通图,仅需从图中任一顶点出发,进行深度优先搜索或广度优先搜索,便可访问到图中所有结点。深度优先生成树:在连通图中,由深度优先搜索得到的生成树。(2)非连通图在对无向图进行遍历时,对于非连通图,需从多个顶点出发进行搜索,而每一次从一个新的起始点出发进行搜索过程中得到的顶点访问序列恰为其各个连通分量中的顶点集。生成森林:在非连通图中,每个连通分量中的顶点集和遍历时走过的边一起构成若干棵生成树,这些连通分量的生成树组成非连通图的生成森林。

深度优先生成森林:在非连通图中,由深度优先搜索得到的生成森林。

广度优先生成森林:在非连通图中,由广度优先搜索得到的生成森林。第2页,课件共16页,创作于2023年2月图7.11生成树和生成森林A1L2F6C7M3J4B5D8E9G10K11I13H12

(c) 图7.3(a)G3的深度优先生成森林(a)无向图G3

G3ABCDE

FGH

IKLM

J第3页,课件共16页,创作于2023年2月(连通网的)最小生成树

假设要在n个城市之间建立通讯联络网,则连通n个城市只需要修建n-1条线路,如何在最节省经费的前提下建立这个通讯网?问题:第4页,课件共16页,创作于2023年2月构造网的一棵最小生成树,即:在e条带权的边中选取n-1条边(不构成回路),使“权值之和”为最小。算法二:(克鲁斯卡尔算法)该问题等价于:算法一:(普里姆算法)第5页,课件共16页,创作于2023年2月

取图中任意一个顶点v作为生成树的根,之后往生成树上添加新的顶点w。在添加的顶点w和已经在生成树上的顶点v之间必定存在一条边,并且该边的权值在所有连通顶点v和w之间的边中取值最小。之后继续往生成树上添加顶点,直至生成树上含有n-1个顶点为止。普里姆算法的基本思想:第6页,课件共16页,创作于2023年2月abcdegf195141827168213127例如:aedcbgf148531621所得生成树权值和=14+8+3+5+16+21=67第7页,课件共16页,创作于2023年2月在生成树的构造过程中,图中n个顶点分属两个集合:已落在生成树上的顶点集U

和尚未落在生成树上的顶点集V-U

,则应在所有连通U中顶点和V-U中顶点的边中选取权值最小的边。

一般情况下所添加的顶点应满足下列条件:UV-U第8页,课件共16页,创作于2023年2月设置一个辅助数组,对当前V-U集中的每个顶点,记录和顶点集U中顶点相连接的代价最小的边:struct{VertexTypeadjvex;//U集中的顶点序号

VRTypelowcost;//边的权值}closedge[MAX_VERTEX_NUM];第9页,课件共16页,创作于2023年2月abcdegf195141827168213127aedcbaaa19141814例如:e12ee8168d3dd7213c55

19mm14m18195712mmm53mmmm73821m1412m8m16mmm21m2718mmm1627第10页,课件共16页,创作于2023年2月voidMiniSpanTree_P(MGraphG,VertexTypeu){//用普里姆算法从顶点u出发构造网G的最小生成树

k=LocateVex(G,u);

for(j=0;j<G.vexnum;++j)//辅助数组初始化

if(j!=k)

closedge[j]={u,G.arcs[k][j].adj};

closedge[k].lowcost=0;//初始,U={u}

for(i=0;i<G.vexnum;++i){}继续向生成树上添加顶点;第11页,课件共16页,创作于2023年2月

k=minimum(closedge);

//求出加入生成树的下一个顶点(k)

printf(closedge[k].adjvex,G.vexs[k]);//输出生成树上一条边

closedge[k].lowcost=0;//第k顶点并入U集

for(j=0;j<G.vexnum;++j)//修改其它顶点的最小边

if(G.arcs[k][j].adj<closedge[j].lowcost)closedge[j]={G.vexs[k],G.arcs[k][j].adj};

第12页,课件共16页,创作于2023年2月具体做法:先构造一个只含n个顶点的子图SG,然后从权值最小的边开始,若它的添加不使SG中产生回路,则在SG上加上这条边,如此重复,直至加上n-1条边为止。考虑问题的出发点:为使生成树上边的权值之和达到最小,则应使生成树中每一条边的权值尽可能地小。克鲁斯卡尔算法的基本思想:第13页,课件共16页,创作于2023年2月abcdegf195141827168213127aedcbgf148531621例如:7121819第14页,课件共16页,创作于2023年2月算法描述:构造非连通图ST=(V,{});k=i=0;//k计选中的边数

while(k<n-1){++i;

检查边集E中第i条权值最小的边(u,v);

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论