欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    数据结构并查集教学资料ppt电子教案课件.ppt

    • 资源ID:2905155       资源大小:1.42MB        全文页数:40页
    • 资源格式: PPT        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    数据结构并查集教学资料ppt电子教案课件.ppt

    并查集,回顾,并查集(union-find set)是一种用于分离集合操作的抽象数据类型。它所处理的是“集合”之间的关系设想需要对不相交集合(disjoin set)进行两种操作:(1)检查某元素属于哪个集合(2)合并两个集合。执行N次合并和M(M=N)次查询,并查集可以实现O(1)的平摊复杂度!,并查集的实现,1)用一棵树来代表一个集合,集合里的每个元素都是树的一个节点。2)用树根来唯一标示这棵树(这个集合)3)那个元素作为根无所谓,只要属于同一集合的根相同4)所有的这些集合构成了一个森林,路径压缩,找到根节点之后,将路径上的节点都直接链接到根节点,这样在下次查找时,便可以减少查找次数,这一优化称为路径压缩。,并查集的拓展,记录更多的信息比如:两个结点的相对关系信息的表示:表示并查集的森林的边带上权(偏移量),食物链,动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形。A吃B,B吃C,C吃A。现有N个动物,以1N编号。每个动物都是A,B,C中的一种,但是我们并不知道它到底是哪一种。有人用两种说法对这N个动物所构成的食物链关系进行描述:第一种说法是1XY,表示X和Y是同类。第二种说法是2XY,表示X吃Y。此人对N个动物,用上述两种说法,一句接一句地说出K句话,这K句话有的是真的,有的是假的。当一句话满足下列三条之一时,这句话就是假话,否则就是真话。,1)当前的话与前面的某些真的话冲突,就是假话;2)当前的话中X或Y比N大,就是假话;3)当前的话表示X吃X,就是假话。你的任务是根据给定的N(1=N=50,000)和K句话(0=K=100,000)输出假话的总数。,合并同类?查找两种动物是否属于同一个集合(表示它们是同类)?那X吃Y怎么表示?3类动物3个集合?怎么确定XY是哪一类?,我们用偏移量offset(a,b)表示a和b的关系,offset(a,b)=0表示a和b是同类,offset(a,b)=1表示a吃b,offset(a,b)=2表示b吃a。那么对任意种类东西c,显然offset(a,b)=(offset(a,c)+offset(c,b)%3这个关系式表明,a和b的关系可以通过a和根的关系以及b和根的关系推断出来。,由上述结论得:同一集合内任意元素关系可推出(即关系已知)将确定关系的两个动物,合并为一个集合若两个动物不在同一个集合,那么关系未知,偏移量的更新,路径压缩!offset(a)表示a与其父节点的关系设原faa=p,路径压缩使faa=rootoffset(a,root)=(offset(a,p)+offset(p,root)%3即offset(a)=(offset(a)+offset(p)%3,线段树,部分引用pku_郭炜的ppt,线段树,树:是一棵树,而且是一棵二叉树。线段:树上的每个节点对应于一个区间。同一层的节点所代表的区间,相互不会重叠。同一层节点所代表的区间,加起来是个连续的区间。叶子节点的区间是单位长度,不能再分了。,线段树是一棵二叉树,树中的每一个结点表示了一个区间a,b。a,b通常是整数。每一个叶子节点表示了一个单位区间。对于每一个非叶结点所表示的结点a,b,其左儿子表示的区间为a,(a+b)/2,右儿子表示的区间为(a+b)/2+1,b(除法去尾取整)。,区间1,9的线段树,线段树的平分构造,实际上是用了二分的方法。若根节点对应的区间是a,b,那么它的深度为log2(b-a+1)+1(向上取整)叶子节点的数目和根节点表示区间的长度相同.,区间分解,分解的规则就是:如果有某个节点代表的区间,完全属于待分解区间,则该节点为“终止”节点,不再继续往下分解所有“终止”节点所代表的区间都不重叠,且加在一起就恰好等于整个待分解区间。,区间1,9的线段树上,区间2,8的分解,区间分解的时候,每层最多2个“终止节点”,所以终止节点总数也是log(n)量级的,X代表终止节点。上述情况不可能发生,线段树的特征,1、线段树的深度不超过log2(n)+1(向上取整,n是根节点对应区间的长度)2、线段树上,任意一个区间被分解后得到的“终止节点”数目都是log(n)量级。线段树上更新叶子节点和进行区间分解时间复杂度都是O(log(n)的这些结论为线段树能在O(log(n)的时间内完成一个区间的建树,插入数据,更新数据、查找、统计等工作,提供了理论依据,敌兵布阵,一个正整数N(N=50000),表示敌人有N个工兵营地,接下来有N个正整数,第i个正整数ai代表第i个工兵营地里开始时有ai个人(1=ai=50)。接下来每行有一条命令,命令有4种形式:(1)Add i j,i和j为正整数,表示第i个营地增加j个人(j不超过30)(2)Sub i j,i和j为正整数,表示第i个营地减少j个人(j不超过30);(3)Query i j,i和j为正整数,i=j,表示询问第i到第j个营地的总人数;每组数据最多有40000条命令,建立,点更新,区间更新,查询,线段树适用于多次查询用线段树解题,关键是要想清楚每个节点要存哪些信息(当然区间起终点,以及左右子节点指针是必须的),以及这些信息如何高效更新,维护,查询。不要一更新就更新到叶子节点,那样更新效率最坏就可能变成O(n)的了。,树状数组,对于序列a,我们设一个数组CCi=ai 2k+1+aik为i在二进制下末尾0的个数2k就是i 保留最右边的1,其余位全变0i从1开始算!C即为a的树状数组对于i,如何求2k?,通常我们用lowbit(x)表示x对应的2k lowbit(x)=x&(-x),Ci=ai-lowbit(i)+1+aiC1=A1C2=A1+A2C3=A3C4=A1+A2+A3+A4C5=A5C6=A5+A6C7=A7C8=A1+A2+A3+A4+A5+A6+A7+A8C16=A1+A2+A3+A4+A5+A6+A7+A8+A9+A10+A11+A12+A13+A14+A15+A16,图示,设sum(k)=a1+a2+ak则ai+ai+1+aj=sum(j)-sum(i-1)根据C的构成规律,可以发现sum(k)可以表示为:sum(k)=Cn1+Cn2+Cnm其中nm=k ni-1=ni-lowbit(ni),ni-lowbit(ni)是什么样子?就是ni的二进制去掉最右边的1k 的二进制里最多有几个1?log2k(向上取整)个sum(k)最多log2k(向上取整)项,所以本次求和的复杂度就是log2k,如果ai更新了,那么以下的几项都需要更新:Cn1,Cn2,Cnm其中,n1=i,ni+1=ni+lowbit(ni)同理,总的来说更新一个元素的时间,也是logN的,ai更新-Ci必须更新Ci更新-Ci+lowbit(i)必须更新:Ci+lowbit(i)=a(i+lowbit(i)lowbit(i+lowbit(i)+1+.+ai+lowbit(i)证明i+lowbit(i)lowbit(i+lowbit(i)+1=i,就证明Ci+lowbit(i)要更新lowbit(i)显然比lowbit(i+lowbit(i)要小所以i+lowbit(i)lowbit(i+lowbit(i)+1=i,下面要证明,若Ci更新,则对任何k,(ik i+lowbit(i),Ck都不需要更新(即Ck不包含ai)Ck=ak-lowbit(k)+1+ak只要证明k-lowbit(k)+1比i大即可因ik i+lowbit(i),假设i的最右边的1是从右到左从0开始数的第n位,那么i+lowbit(i)就是将i的低n位全变成1后,再加1。那么k一定是从第n位到最高位都和i相同,但是低n位比i大(即k低n位中有1,因i低n位全是0)k-lowbit(k)+1就是k去掉最右边的1,然后再加1,那当然还是比i大,树状数组适合单个元素经常修改而且还反复要求部分的区间的和的情况。上述问题虽然也可以用线段树解决,但是用树状数组来做,编程效率和程序运行效率都更高(时间复杂度相同,但是树状数组常数小),模版,敌兵布阵用树状数组实现更好,

    注意事项

    本文(数据结构并查集教学资料ppt电子教案课件.ppt)为本站会员(文库蛋蛋多)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开