- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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*的估计。
关键问题:如何判定系统渗透了?
;动态连通性问题-渗透模型;动态连通性问题-渗透模型;问题求解的关键
问题建模:数据结构直接影响算法的效率,数据结构和算法的设
您可能关注的文档
最近下载
- 0102、U9 cloud供应链-采购管理.pptx VIP
- 上海市各机构名称英译.docx VIP
- 0303、U9 cloud财务-应收管理.pptx VIP
- 0302、U9 cloud财务-应付管理.pptx VIP
- 0304、U9 cloud财务-总账管理.pptx VIP
- 数据通信与计算机网络(第3版)全套PPT课件.pptx
- 0105、U9 cloud供应链-多组织供应链协同.pptx VIP
- 第5课 走近科学家 第3课时(课件)2025-2026学年道德与法治三年级上册统编版.pptx VIP
- 临床药物治疗学第四节.pdf VIP
- 2025年湖南中医药高等专科学校单招职业技能测试必刷测试卷最新.docx VIP
文档评论(0)