数据结构并查集教学资料ppt电子教案课件.ppt
《数据结构并查集教学资料ppt电子教案课件.ppt》由会员分享,可在线阅读,更多相关《数据结构并查集教学资料ppt电子教案课件.ppt(40页珍藏版)》请在三一办公上搜索。
1、并查集,回顾,并查集(union-find set)是一种用于分离集合操作的抽象数据类型。它所处理的是“集合”之间的关系设想需要对不相交集合(disjoin set)进行两种操作:(1)检查某元素属于哪个集合(2)合并两个集合。执行N次合并和M(M=N)次查询,并查集可以实现O(1)的平摊复杂度!,并查集的实现,1)用一棵树来代表一个集合,集合里的每个元素都是树的一个节点。2)用树根来唯一标示这棵树(这个集合)3)那个元素作为根无所谓,只要属于同一集合的根相同4)所有的这些集合构成了一个森林,路径压缩,找到根节点之后,将路径上的节点都直接链接到根节点,这样在下次查找时,便可以减少查找次数,这一
2、优化称为路径压缩。,并查集的拓展,记录更多的信息比如:两个结点的相对关系信息的表示:表示并查集的森林的边带上权(偏移量),食物链,动物王国中有三类动物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)当前的话与前
3、面的某些真的话冲突,就是假话;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这个关
4、系式表明,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,线段树,树:是一棵树,而且是一棵二叉树。线段:树上的每个节点对应于一个区间。同一层的节点所代表的区
5、间,相互不会重叠。同一层节点所代表的区间,加起来是个连续的区间。叶子节点的区间是单位长度,不能再分了。,线段树是一棵二叉树,树中的每一个结点表示了一个区间a,b。a,b通常是整数。每一个叶子节点表示了一个单位区间。对于每一个非叶结点所表示的结点a,b,其左儿子表示的区间为a,(a+b)/2,右儿子表示的区间为(a+b)/2+1,b(除法去尾取整)。,区间1,9的线段树,线段树的平分构造,实际上是用了二分的方法。若根节点对应的区间是a,b,那么它的深度为log2(b-a+1)+1(向上取整)叶子节点的数目和根节点表示区间的长度相同.,区间分解,分解的规则就是:如果有某个节点代表的区间,完全属于待
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 教学 资料 ppt 电子 教案 课件
链接地址:https://www.31ppt.com/p-2905155.html