下载此文档

集训队讲座第十讲并查集的深化与扩展.ppt


文档分类:高等教育 | 页数:约49页 举报非法文档有奖
1/49
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/49 下载此文档
文档列表 文档介绍
集训队讲座--第十讲并查集的深化与扩展(Merge_Find_Set)Index~1:并查集的概念。2:并查集的优化。3:并查集的扩展。4:并查集的应用:LCATarjan算法。5:区间最优值RMQ算法。概念与实现方式概念:并查集——不相交集合每棵树一个集合,根为集合标识。树的形态并不重要,重要的是有哪些节点实现方式:一维数组的“森林表示法”。几个定义:祖先,父亲,子孙~生活中的集合~并查集的基本操作MakeSet(x):建立一个新集合x。x应该不在现有的任何一个集合中出现。Find(S,x):返回x所在集合的代表元素。Merge(x,y):把x所在的集合和y所在的集合合并。不可忽视的弊端:无法高效的找寻儿子节点!!!并查集的优化1:启发式并查集:让深度较小的树成为深度较大的树的子树~2:路径压缩:找到最久远的祖先时“顺便”把它的子孙直接连接到它上面~启发式并查集1564维护一个dep[]数组记入元素代表的有向树的深度。每次合并操作将深度较小的集合合并到深度较大的集合中,并维护dep数组。237Dep[1]==2dep[4]==3启发式并查集boolMerge(intx,inty){ x=find(x); y=find(y); if(x!=y)returnfalse; if(dep[x]<dep[y])tree[x]=y; elseif(dep[x]>dep[y])tree[y]=x; elsetree[x]=y,dep[y]++; returntrue;}路径压缩49611110812202116612182**********路径压缩的实现递归式:intfind(intx){ if(tree[x]==-1) returnx; returntree[x]=find(tree[x]);}

集训队讲座第十讲并查集的深化与扩展 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数49
  • 收藏数0 收藏
  • 顶次数0
  • 上传人1485173816
  • 文件大小2 MB
  • 时间2019-07-22
最近更新