图论基础教学资料ppt电子教案课件.ppt

  1. 1、本文档共28页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
图论基础教学资料ppt电子教案课件

* * * * * * 图论基础 图的概念 定义 一个图G是指一个二元组(V(G),E(G)) 其中: 是非空有限集,称为顶点集,其中元素称为图G的顶点 E(G)是顶点集V(G)中的无序或有序的元素对 组成的集合,即称为边集,其中元素称为边 赋权图 定义 若图 的每一条边e 都赋以一个实数w(e),称w(e)为边e的权,G 连同边上的权称为赋权图。 图论算法所研究的往往和权值有关 图的顶点度 定义 在无向图G中,与顶点v关联的边的数目,称为顶点v的度或次数,记为d(v) 在有向图中,从顶点v引出的边的数目称为顶点v的出度,记为d+(v),从顶点v引入的边的数目称为v的入度,记为d -(v). 称d(v)= d+(v)+d -(v)为顶点v的度或次数 图的矩阵表示 对无向图 ,其邻接矩阵 ,其中: 对有向赋权图 , 其邻接矩阵 图的邻接表表示 如图G2的邻接表为: 2 5 3 4 1 5 4 3 5 3 3 4 1 2 2 1 2 1 2 3 4 5 ① ② G2 ③ ④ ⑤ 邻接表实现 链表? 没有必要! vector? 可行!动态花销较大! 数组模拟? 灵活!效率高! 邻接表-vector vectorpairint,int e[N]; 初始化: For(int i=0;iN;i++) e[i].clear(); 插入有向边a-b,权值为c e[a].push_back(make_pair(b,c)); 优点:方便 数组模拟 typedef struct {int v,next,val;} edge; edge e[MAXM]; int p[MAXN],eid; void init(){memset(p,-1,sizeof(p));eid=0;} void insert(int from,int to,int val) { e[eid].v=to; e[eid].val=val; e[eid].next=p[from]; p[from]=eid++; } 最短路问题 单源点:求赋权图中从给定点到其余顶点的最短路 多源点:求赋权图中任意两点间的最短路. 多源最短路—Floyd  从任意一条单边路径开始。所有两点之间的距离是边的权,如果两点之间没有边相连,则权为无穷大。  对于每一对顶点 u 和 v,看看是否存在一个顶点 w 使得从 u 到 w 再到 v 比己知的路径更短。如果是更新它。 ?for(k=1;k=n;k++) ???????for(i=1;i=n;i++) ???????????for(j=1;j=n;j++) ?????????????????if(map[i][k]+map [k][j]map[i][j]) ?????????????????????map[i][j]=map[i][k]+map[k][j]; map[i,j]:=min{map[i,k]+map[k,j],map[i,j]} 熟悉的式子! Floyd是一种动态规划算法!! c [i, j, k]表示从i 到j 的最短路径的长度,其中k 表示该路径中的最大顶点 中间顶点不超过k 的i 到j 的最短路径有两种可能:该路径含或不含中间顶点k。若不含,则该路径长度应为c[i, j, k-1],否则长度为 c[i, k, k-1] +c [k, j, k-1]。c[i, j, k]可取两者中的最小值。 状态转移:c[i, j, k]=min{c[i, j, k-1], c [i, k, k-1]+c [k, j, k-1]} zoj 1082 要在N个人中传播谣言,每个人传播谣言给他可以联系的人都有个时间,求从哪个人开始传播谣言并使谣言传遍所有人的时间最短。 单源最短路 Dijkstra SPFA Dijkstra+堆优化 复杂度 O(n^2) O(km) O(nlgn) 处理负边 不能 能 不能 适用 稠密图 稀疏图 稠密图 单源最短路—SPFA ?初始时将源加入队列。 每次从队列中取出一个元素,并对所有与他相邻的点进行松弛,若某个相邻的点松弛成功,则将其入队。 直到队列为空时算法结束。 SPFA 在形式上和宽度优先搜索非常类似,不同的是宽度优先搜索中一个点出了队列就不可能重新进入队列,但是SPFA中一个点可能在出队列之后再次被放入队列,也 就是一个点改进过其它的点之后,过了一段时间可能本身被改进,于是再次用来改进其它的点,这样反复迭代下去。 图的生成树 在一个连通图G中,如果取它的全部顶点和一部分边构成一个子图G’,即:V(

文档评论(0)

skvdnd51 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档