第5讲-算法基础.pptxVIP

  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文档。上传文档
查看更多
第5讲 算法基础;求解问题的步骤 建立问题的数学模型 找出解决问题的基本操作--算法的设计 算法足够快?符合对内存空间的要求?--算法性能的分析 如果算法不够快或存储空间不足,则需要找出根源,然后设计新的算法,如此循环,直到获得满意的算法。 ;问题描述 给定N个对象,每个对象可用一个整数标记。两个对象可以相连,假设“相连”具有自反性、对称性和传递性: 自反性: p和p是相连的。 对称性:如果p和q是相连的,那么q和p也是相连的。 传递性:如果p和q是相连的且q和r是相连的,则p和r也是相连的。 ;动态连通性问题;动态连通性问题的应用 计算机网络:每个对象为一台计算机,判定两台计算机之间是否需要架设一条新的连接才能进行通信,或者是通过已有的连接在两者之间建立通信线路。 社交网络:每个对象为一个朋友,判定两个朋友之间是否在同一个社交圈? 数学集合:判定两个元素是否属于同一个集合。如果不属于同一个集合,将这两个元素所属的集合合并为一个集合。 …… ;问题分析与建模 对象表示:用整数0~N-1标记(Map); 问题关键:定义一种数据结构表示对象之间已知的相连 基于此数据结构实现高效的 union(),find(), connected()等操作。;数据结构 定义长度为N的整型数组id,数组下标i(0≤i≤N-1)代表对象i; id[p]为对象p所属的连通分量编号。 当且仅当id[p]等于id[q]时,p和q是连通的。 id[4]=8,id[5]=5,4和5不连通的 ;0;算法分析: 每次find()操作速度很快,只需要访问数组一次。 每次union()操作需要调用两个find()操作,检查id[ ]数组的全部N个元素并改变它们中的1~N-1个元素的值,因此union()操作访问数组的次数在N+3~2N+1之间。 假如解决动态连通性问题最后只得到一个连通分量,那么至少需要调用N-1次union()操作,则需要访问数组的次数约为N2,当N很大时, union()操作运行效率很低! ;提高union()操作的速度(quick-union) ;提高union()操作的速度(quick-union) 数据结构:每个连通分量用一棵树来表示 定义长度为N的整型数组id,数组下标i(0≤i≤N-1)代表对象i; 数组 id表示森林; 当 id[p]等于p,则 p为连通树的根; 当p和q的根结点相同,则p和q在同一棵连通子树上,它们是连通的。 ;算法分析: find()操作访问数组的次数为p结点的深度的2倍+1。在最好的情况下,find()操作只需要访问数组一次(根结点);在最坏情况下,需要访问数组2N-1次。(结点的深度是该结点到根结点的简单路径上的边数) 每次union()操作需要调用两个find()操作,最多再加一次访问数组,即修改根结点。 要想保证find()操作不出现最坏情况,就要避免连通树退化成一条链的情况,在 union()操作时,将高度小的树合并到高度大的树上。 算法还可以再进一步改进,在find()时,在检查结点的同时压缩它们的路径,将它们直接链接到根结点。;加权quick-union() (weighted QU) 记录每一棵树的高度,union()操作总是将高度较小的树连接到高度较大的树上。;动态连通性问题;?;9;/algs4/assignments/percolation.html 渗透模型(Percolation model):N*N网格,每个site是开放的(open)或关闭(blocked)的。 open site可以渗透到相连的4个方向(上下左右)的open site。 full open site 是open site,同时可以从最顶的open site通过相连的4个方向(上下左右)的open site渗透到这个位置。 当一个系统是渗透系统,表示能从最顶层open site渗透到最底层的open site,也就是说,最底层存在full open site。;研究人员对以下问题感兴趣:如果site为open的概率为p(因此为blocked的概率为1- p),那系统是渗透系统的概率是多少? 当p等于0时,系统不渗透; 当p等于1时,系统肯定渗透。 ;蒙特卡罗模拟(Monte Carlo simulation) 创建N*N的网格,site 编号为0~N2-1,初始化所有site都是关闭(blocked)的。 重复以下操作,直到系统渗透为止: 随机寻找一个关闭的site打开 当系统渗透,打开的site数量与总sites数量的比值就是阈值p*的估计。 关键问题:如何判定系统渗透了? ;动态连通性问题-渗透模型;动态连通性问题-渗透模型;问题求解的关键 问题建模:数据结构直接影响算法的效率,数据结构和算法的设

文档评论(0)

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

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

1亿VIP精品文档

相关文档