数据结构教学课件6p幻灯片.ppt

  1. 1、本文档共59页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
邻接表法广度优先: void BFSL(int k) /* 用adjlist存储 */ { int i; edgenode *p; SETNULL(Q); printf(输出序号为%d的顶点: %c\n,k,adjlist[k].vertex); /* 访问出发点vk */ visited[k]=1; /* 标记vk已经访问过 */ ENQUEUE (Q,k); /* 顶点vk的序号k入队 */ while(!EMPTY(Q)) /* 队列非空执行 */ { i= DEQUEUE(Q);/* 队头元素顶点序号出队 */ p=adjlist[i].link; while (p!=NULL) { if(!visited[p-adjvex]) { printf(输出序号为%d的顶点: %c\n,p-adjvex,adjlist[p-adjvex].vertex); visited[p-adjvex] =1; ENQUEUE(Q,p-adjvex); } p=p-next; } } } 深度优先生成树与广度优先生成树 说明 一个图可以有许多棵不同的生成树 所有生成树具有以下共同特点: 生成树的顶点个数与图的顶点个数相同 生成树是图的极小连通子图 一个有n个顶点的连通图的生成树有n-1条边 生成树中任意两个顶点间的路径是唯一的 在生成树中再加一条边必然形成回路 含n个顶点n-1条边的图不一定是生成树 生成树 连通图G的一个子图如果是一棵包含G的所有顶点的树,则该子图称为G的生成树(Spanning Tree) 。 6.4最小生成树 问题提出 要在n个城市间建立通信联络网, 顶点——表示城市 权——城市间建立通信线路所需花费代价 希望找到一棵生成树,它的每条边上的权值之和(即建立 该通信网所需花费的总代价)最小———最小代价生成树 问题分析 1 6 5 4 3 2 7 13 17 9 18 12 7 5 24 10 n个城市间,最多可设置n(n-1)/2条线路 n个城市间建立通信网,只需n-1条线路 问题转化为:如何在可能的线路中选择n-1条,能把 所有城市(顶点)均连起来,且总耗费 (各边权值之和)最小 定义:连通网络的所有生成树中边上权值之和最小的生成树称为最小生成树(Minimun Spanning Tree) MST性质: 假设G=(V, E)是一个连通网络,U为顶点集V的一个非空子集。若边(u,v)是所有的一个端点在U中(即u∈U),另一个端点不在U中(即v∈V-U)的这些边里面,权值最小的一条,则一定存在一棵G的最小生成树包括此边(u,v)。 构造最小生成树方法 方法一:普里姆(Prim)算法 算法思想:设G=(V, E)是连通网,T=(U,TE)是G的最小生成树,其中U是T的顶点集,TE是T的边集,U和TE的初值均为空集。 初始令U={u0},(u0?V), TE=? 在所有u?U,v?V-U的边(u,v)?E中,找一条代价最小的边(u0,v0) 将(u0,v0)并入集合TE,同时v0并入U 重复上述操作直至U=V为止,则T=(V,TE)为G的最小生成树 用Prim算法构造最小生成树的过程 生成树T的边集数组数组变化过程 方法二:克鲁斯卡尔(Kruskal)算法 算法思想:设连通网G=(V,E),令最小生成树T=(U,TE) 初始状态U=V,TE=? 将图G中的边按权值从小到大的顺序依次选取,若选取的边使生成树T不形成回路,则把它并入TE中,保留作为T的一条边;若选取的边使生成树T形成回路,则将其舍弃。 依此类推,直至TE中包含n-1条边为止,此时的T 即为最小生成树。 用Kruskal算法构造最小生成树的过程 7.5 拓扑排序 问题提出:学生选修课程问题 顶点——表示课程 有向边——表示先决条件,若课程i是课程j的先决条件,则图中有边i,j 学生应按怎样的顺序学习这些课程,才能无矛盾、顺利地完成学业——拓扑排序 定义 AOV网——用顶点表示活动,用有向边表示活动的先后关系的有向图称为顶点活动网(Activity On Vertex network),简称AOV网 若vi,vj是图中有向边,则vi是vj的直接前驱;vj是vi的直接后继 AOV网中不允许有回路 6.5 最短路经 最短路径问题通常是指如何从图中某一顶点(称为源点)到达另一顶点(称为终点)的多条路径中,找到一条路径,使得此路径上经过的各边上的权值总和达到最小。 最短路径问题通常可以分成四种不同情况: 单源点、单目标点最短路径问题; 单源点、多目标点最短路径问题; 多源点、单目标点最短路径问题; 多源点、多目标点最短

文档评论(0)

开心农场 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档