NOIP图的基础算法.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
NOIP 图的常用算法简介 石门中学江涛 2009.10.4 目 录 图的表示 邻接矩阵、邻接链表、图的遍历 最小生成树算法 Prim算法、Kruskal算法 最短路径算法 Dijkstra算法、Bellman_Ford算法及SPFA算法、 Floyd算法 目 录 图的表示 邻接矩阵、邻接链表、图的遍历 最小生成树算法 Prim算法、Kruskal算法 最短路径算法 Dijkstra算法、Bellman_Ford算法及SPFA算法、 Floyd算法 图的表示-----邻接矩阵 顶点 给点编号为连续的整数 把顶点存放在数组中 边 邻接矩阵 布尔值(或边权值) - TRUE – 有边 FALSE – 无边 空间复杂度O(|V|2) 图的表示-----邻接链表 边 邻接链表 每一个顶点 有一个所有与之相邻的链表 每一条边 2 个(对无向图) 要在两个顶点的链表中都加入 空间复杂度O(|E|) 对稀疏图这种方式比较好 图的表示-----C/P语言程序实现 图的邻接链表的Pascal和C++实现 具体参见《NOIP基础数据结构》ppt 图的表示-----图的遍历 图的深度优先(Depth-First)遍历:邻接链表、C++ 图的表示-----图的遍历 图的深度优先(Depth-First)遍历:邻接链表、C++ 图的表示-----图的遍历 图的深度优先(Depth-First)遍历:邻接链表、Pascal 图的表示-----图的遍历 图的深度优先(Depth-First)遍历:邻接链表、Pascal 图的表示-----图的遍历 图的宽度优先(Breadth-First)遍历:邻接链表、C++ 图的表示-----图的遍历 图的宽度优先(Breadth-First)遍历:邻接链表、C++ 图的表示-----图的遍历 图的宽度优先(Breadth-First)遍历:邻接链表、C++ 图的表示-----图的遍历 图的宽度优先(Breadth-First)遍历实例示意: 目 录 图的表示 邻接矩阵、邻接链表、图的遍历 最小生成树算法 Prim算法、Kruskal算法 最短路径算法 Dijkstra算法、Bellman_Ford算法及SPFA算法、 Floyd算法 图的表示-----图的遍历 图的遍历:邻接链表 时间复杂度分析 每一个顶点访问一次 每条边访问两次 无向图每条边出现在两个链表中 O(|V| + |E|) O(|V|2) 对 稠密图 |E| ~ |V|2 O(|V|) 对 稀疏图 |E| ~ |V| 对稀疏图邻接链表的效果非常好! 最小生成树(MST)-----定义 生成树:一个|V|个点的图,取其中|V|-1条边,并连接所有的顶点,则组成原图的一个生成树。 属性:|v|-1条边、连通、无环。 最小生成树:加权图的最小生成树是一棵生成树,其所有边的权值之和不会大于其它任何生成树。 简单讲:找出连接所有点的最低成本路线 最小生成树(MST)-----实例一 局域网(net)[RQNOJ] 某局域网内有n(n=100)台计算机,由于建网时工作人员的疏忽,现在网内存在回路,造成网络卡的现象。 我们用f(i,j)表示i,j之间连接的畅通程度(f(i,j)=1000),f(i,j)值越小表示i,j之间连接越通畅,f(i,j)为0表示i,j之间无网线连接。现在我们需要除去一些连线,使得网络中没有回路,并且被除去网线的Σf(i,j)最大,请求出这个最大值。 最小生成树(MST)-----算法原理 环属性:一棵生成树上,增加一条边e,再删除e所在环上的最大边,会得到另一棵“更好”的生成树(如果e不是最大边) 最小生成树(MST)-----算法原理 剪切属性:在图中,剪切将顶点划分成两个不相交集合。交叉边为地些顶点在两个不同集合的边。对于任何一个剪切,各条最小的交叉边都属于某个MST,且每个MST中都包含一条最小交叉边。 最小生成树(MST)-----算法原理 最小边原则:图中权值最小的边(如果唯一的话)一定在最小生成树上。 唯一性:一棵生成树上,如果各边的权都不相同,则最小生成树是唯一的。反之不然。 思考:怎样图G判断只有一个MST? 最小生成树(MST)-----Prim算法 算法描述1: MST_Prim(G, r) (1)将G剪切成两个集合A、B,A中只有一个点r (2)取最小权的交叉边(x,y),x∈B, y∈B (3)将y加入A (4)如果已经加了n-1条边,结束。否则,转 (3) 算法证明: 根据剪切属性

文档评论(0)

白领文档(原创) + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档