第五章 树4.pptVIP

  • 13
  • 0
  • 约5.13千字
  • 约 23页
  • 2018-05-22 发布于河南
  • 举报
第五章 树4

并查集Union-Find Sets or DisJoint Sets 在一些应用问题中,需要将n个不同的元素划分为一组不相交的集合,在划分过程中需要反复查询某个元素归属于那个集合。并查集就是一种适合于描述这类问题的抽象数据类型。 并查集主要支持以下三种操作: ? Union (Root1, Root2) //并操作; ? Find (x) //搜索操作; ? UFSets (s) //构造函数。 一般情形,并查集主要涉及两种数据类型:集合名类型和集合元素的类型。 用父指针数组表示的并查集类定义 Find和Union的操作简单,但性能不好。假设最初n个元素构成n棵树组成的森林,parent[i]=-1。做处理Union(n-2,n-1), …, Union(1,2), Union(0,1)后,将产生如图所示的退化的树。 Union操作的加权规则 为避免产生退化的树,改进方法是先判断两集合中元素的个数,如果以i为根的树中的结点个数少于以j为根的树中的结点个数,即parent[i] parent[j],则让j成为i的双亲,否则,让i成为j的双亲。此即Union的加权规则。 Union操作的折叠规则 为进一步改进树的性能,可以使用如下折叠规则来“压缩路径”。即:如果j是从i到根的路径上的一个结点,且parent[j]?root[i],则把parent[j]置为root[i

文档评论(0)

1亿VIP精品文档

相关文档