网站大量收购闲置独家精品文档,联系QQ:2885784924

第八讲贪心算法一种求解最优化问题的有效算法精要.ppt

第八讲贪心算法一种求解最优化问题的有效算法精要.ppt

  1. 1、本文档共52页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* * * * * * * * * * * * * 每个点v创建一个makeset While循环中,对每条边的两个节点进行检查, 如果FIND(x) ==FIND(y),表示在同一颗树中,也就是说,树中已经有了这条边,或者会构成回路,所以不能加入。 * * * * * * N[w]存储的是w点与前一个点y之间的邻接关系 C[w]存储的是与y点邻接的w点的路径长度,每个与y邻接的点都计算一遍。 令y∈Y 使得 C[y] 最小:查询所有Y中的y点的C[y]最小值 * * * * * * * * * * * Algorithms Design Techniques and Analysis 例子 6 1 2 3 5 4 1 2 13 11 3 9 7 4 6 (1,2) (1,3) (4,6) (5,6) (2,3) (4,5) (3,4) (2,4) (3,5) 1 2 3 4 6 7 9 11 13 6 1 2 3 5 4 !构成回路, 这条边被丢弃. Success! Algorithms Design Techniques and Analysis Kruskal算法的执行 数据结构来表示森林: 为有效地实现此算法,我们需要某种机制来检测加入边后是否构成回路。让它在算法的每个时刻来表示森林,并且在向T中添加边时动态检测是否有回路生成。 这种数据结构的一个合适选择是4.3节讨论过的不相交集表示法 开始时,图的每个顶点由一棵包含一个顶点的树表示 在算法的执行过程中,森林中的每个连通分量由一棵树来表示。 Algorithms Design Techniques and Analysis 算法8.3 KRUSKAL 输入:包含n个顶点的含权连通无向图G=(V,E)。 输出: 由G生成的最小耗费生成树T组成的边的集合。 1. 按非降序权重将E中的边排序 2.for 每条边v∈V 3. MAKESET{v} 4.end for 5.T={} 6.while |T|n-1 7. 令 (x,y)为E中的下一条边. 8. if FIND(x) ?FIND(y) then {检查x,y是否在同一颗树中} 9. 将(x,y) 加入 T 10 UNION(x,y) 11 end if 12. end while Algorithms Design Techniques and Analysis 正确性 引理8.2: 在含权无向图中,算法KRUSKAL正确地找出最小生成树。 反证法:假设KRUSKAL生成的不是最小生成树 1).设KRUSKAL生成的树为G0 2).假设存在Gmin使得cost(Gmin)cost(G0)?? 则在Gmin中存在u,v不属于G0 3).将u,v加入G0中可得一个环,且u,v不是该环的最长边(这是因为u,v∈Gmin) 4).这与KRUSKAL每次生成最短边矛盾 5).故假设不成立,命题得证. Proof P241(or P153) Algorithms Design Techniques and Analysis 算法分析 第1步和第2步分别花费O(mlogm) 和Θ(n), 这里 m = |E|. 第7步好执行n-1次总共要Θ(n)时间。合并运算执行n-1次,查找运算最多2m次. 第5步花费Θ(1),再加上第9步最多执行m次,它的总花费是O(m). 由定理4.3,这两个运算的总花费是O(mlog*n). 。这样算法总的运行时间取决于排序步,也就是O(mlogm) p153 Algorithms Design Techniques and Analysis 8.4 最小耗费生成树 (Prim算法) 基本思想 设G=(V,E),为了简便起见,V取整数集合 {1,2,…,n}. 算法从建立两个顶点集合开始: X={1}和Y={2,…,n} 。接着生长一棵生成树,每次一条边。 在每一步,它找出一条权重最小的边(x,y) ,这里x∈X,y ∈Y并且把y从Y移到X。重复这一步直到Y为空。 Algorithms Design Techniques and Analysis Prim算法 此算法概况如下: T?{}; X?{1}; Y?V-{1} while Y ?{} 设(x,y)是最小权重的边,其中x∈X and y∈Y X?X∪{y} Y?Y-{y} T?T∪{(x,y)} end while Algorithms Design Techniques and Analysis 例子 6 1 2 3 5 4 1 2 13 11 3 9 7 4 6 Success! Algorithms Design Tech

文档评论(0)

宝贝计划 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档