算法最短路最小生成树讲解.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文档。上传文档
查看更多
Prim算法O(|V|2), O(|E|log|V|) 输入: G=(V,E,w)无向连通; 输出: G的MST 维护S?V, 初始任取V中一点r 当S!=V, 取S到V-S的最小权边(u,v), 将v加入S. key[u]记u到S的最小距离, G[u]记u与S最小距离对应点 1. 初始G[u]=NIL, key[r]=0, 其它key[u]=INF, Q=V, S空 2. 当Q非空 3. 取出Q中u使得key[u]最小, 加入S 4. 对u的每个邻居v, 5. 若 v?Q 且 w[u,v] key[v] 6. 则 key[v] = w[u,v], G[v] = u Q一般数组O(|V|2+|E|), Q优先队列O(|V|log|V|+|E|log|E|) Kruskal算法 输入: G=(V,E,w)无向连通; 输出: G的MST 维护A,Q?E, 初始A为空集, Q=E升序 当Q非空, 取Q最小权边(u,v), 若可行, 加入A. Kruskal算法细节 输入: G=(V,E,w)无向连通; 输出: G的MST 维护A,Q?E, 初始A为空集, Q=E升序 当Q非空, 取Q最小权边(u,v), 若可行, 加入A. 1. A为空, Q=E按边权升序排列, 每个点是一颗树 2. 当Q非空 3. 顺序取Q中边(u,v) 4. 若u,v在不同树中, 5. 则添(u,v)到A, 合并u,v所在树, 6. 输出A 并查集算法, O(|E|log|E|+|E|log|V|)=O(|E|log|V|) 并查集算法(Make-set, Find-set) Make(x) 1 p[x]=x 2 rank[x]=0 Union(x,y) 1 Link(Find(x), Find(y)) Link(x,y) //合并两树根 1 若 rank[x]rank[y] 2 则 p[y]=x 3 否则 p[x]=y 4 若 rank[x]=rank[y] 5 则 rank[y]=rank[y]+1 Find(x) 1 若 x?p[x], 则 2 p[x] = Find(p[x]) 3 返回 p[x] 路径压缩(pc)技术 p[x]: x的父亲; rank[x]: x的阶; Find(x): 找x的根 n个节点, m次操作. 不计pc: O(mlogn); 计pc: O(m ?(n)) 树根阶r ? 节点数 ?2r. 加入并查集结构的Kruskal算法 1. A为空, Q=E按边权升序排列, 每个点是一颗树 2. 当Q非空 3. 顺序取Q中边(u,v) 4. 若u,v在不同树中, 则添(u,v)到A, 合并u,v所在树, 5. 输出A 1. A为空, Q=E按边权升序排列, ?x Make(x) 2. 当Q非空 3. 顺序取Q中边(u,v) 4. 若Find(u)?Find(v), 则添(u,v)到A, Union(u,v), 5. 输出A Kruskal: 取边, 查找, 合并 Q={31, 46, 25, 36, 34, 23, 14, 12, 35, 56} 2:0 3:0 4:0 5:0 6:0 1:0 2:0 5:1 查找合并 (3,1) (4,6) (2,5) 3:0 1:1 4:0 6:1 4:0 6:2 3:0 1:1 查并(3,6) 查(3,4) 4:0 6:2 3:0 1:1 5:1 查并(2,3) 4:0 6:2 3:0 1:1 2:0 5:1 查(1,2) 4:0 6:2 3:0 1:1 2:0 Pass compression 最短路问题 输入: 带权有向图或无向图 G = (V,E,w), 权代表距离 输出: 节点之间的最短距离(路径) 例: 找下图中V1到V2的最短距离, 最短路径 OSP: 一条最短路径, 其任意子段都是最短路径 全点对(all-pair)最短路,Floyd-Warshall,O(|V|3), 单源(single source)最短路, Dijkstra, O(|E|log|V|), 带负权, Bellman-Ford, O(|V||E|) ?(u,v): u,v之间最短路径的距离 V1 V5 V4 V2 V3 V6 10 10 100 20 50 20 50 30 5 10

文档评论(0)

shuwkb + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档