南邮ACM算法与数据结构设计(2010-2011-2第6讲)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
陈老师(南邮ACM竞赛教练)
南京邮电大学计算机学院
联系方式 电话:138-139-30027 电邮:acm@njupt.edu.cn
ACM算法与数据结构设计
班 级 :仙林校区ACM选修班 上课地点和时间
理论:教2-402:星期3 (18:30开始)
实践:(仙林)计算中心
第6讲:ACM竞赛之图论模型与算法
C6
第6讲:ACM竞赛之图论模型与算法
6.2 拓扑排序
1、拓扑序列和拓扑排序 一个拓扑序列是AOV网中顶点的线性序列,使得对 图中任意二个顶点i和j,若在网中,i领先于j,则在线性 序列中i是j的前驱结点。
用拓扑排序可以做以下两件事情:
(1)测试AOV网的可行性;(是否存在回路) (2)对可行的AOV网求出其拓扑序列。
C1
C3,C4 C3,C8 C0 C7
C1
C4 AOV网示例
第6讲:ACM竞赛之图论模型与算法
6.2 拓扑排序
AOV网中的领先关系是一种拟序关系,即具有传递性和 反自反性。 传递性:活动的领先关系是可以传递的。如C0领先于C7, C7领先于C8,C0也领先于C8。 反自反性:不允许一个活动在开始之前就完成。要求 AOV网是一个有向无回路图。 C7 C8 C0 C2 C1 C4 C5 C3
第6讲:ACM竞赛之图论模型与算法
6.3 最小代价生成树
0 5 2 6 4 6 4 5 1 5 0 3 2 1 3 4 5
6 1 3
5
1
2 4 5
3 2
普里姆算法构造最小代价生成树的过程
第6讲:ACM竞赛之图论模型与算法
6.3 最小代价生成树
2. 克鲁斯卡尔算法
选边准则: 在E中选择一条代价最小的边(u,v),并将其从E中删除; 若在T中加入边(u,v)以后不形成回路,则将其加进T中 (这就要求u和v分属于生成森林的两棵不同的树上,由 于边(u,v)的加入,这两棵树连成一棵树),否则继续选 下一条边。 直到E’中包含n-1条边,T=(V,E’)是图G的一棵最小代 价生成树。
第6讲:ACM竞赛之图论模型与算法
6.1 并查集
第6讲:ACM竞赛之图论模型与算法
6.1 并查集
int UFSet::Find(int i)const { for (;parent[i]>=0;i=parent[i]) ; return i; } void UFSet::Union(int x,int y) { parent[x]=y; }
第6讲:ACM竞赛之图论模型与算法
6.2 拓扑排序
2、拓扑排序步骤 拓扑排序算法: (1)在图中找一个入度为零的顶点,输出之; (2)从图中删除该顶点及其所有出边; (3)重复(1)、(2),直到所有顶点都输出,或图中剩下的 顶点再也没有入度为零的顶点(存在有向回路)为止。
C7
C0 C2 C1 C4
通常,一个工程(如软件开发、施工、生产流程等)可以分
成若干子工程(称为活动)。要完成整个工程,就要完成所有 活动。而活动的执行通常有某些先决条件的,即一些活动必 须先于另一些活动完成。 用有向图可以表示活动的领先关系。
顶点:表示活动。
有向边:表示先决条件。 AOV网(Activity On Vertices,顶点活动网络):有向图G中, 若用顶点代表活动,有向边表示活动之间的领先关系,则称 图G为AOV网络。
注意:一个AOV网络的拓扑序列不是唯一的
第6讲:ACM竞赛之图论模型与算法
6.2 拓扑排序
2、拓扑排序步骤 拓扑排序算法 (1)在图中找一个入度为零的顶点,输出之; (2)从图中删除该顶点及其所有出边; (3)重复(1)、(2),直到所有顶点都输出,或图中剩下的 顶点再也没有入度为零的顶点(存在有向回路)为止。 注意: (1)从图中删除一个顶点及其所有出边时,会产生新的入 度为0的顶点; (2)入度为0的顶点的输出次序无关紧要。 因此算法实现时,可以用堆栈或队列保存新产生的入度为0 的顶点;
第6讲:ACM竞赛之图论模型与算法
6.4 最短路问题:Djikstra算法
一维数组d d[i]中存放从源点v0到i的当前最短路径的长度,该路径上除 顶点i自身外,其余顶点都属于S,并且这是所有这些路径中 的最短者。(用来描述从源点v0 到i的最短路径上权值的上 界,称为最短路径估计(shortest-path estimate)) 一维整型数组path path[i]给出从v0到顶点i的最短路径上,位于顶点i前面的那个 顶点。 例如,从v0到v1的最短路径为(v0,v2,v3,v1),则path[1]=3, path[3]=2,path[2]=0 一维布尔数组s 若s[i]为true,表示顶点i在S中,否则表示i在V-S中。
Find(i):返回包含元素i的子集合标识
Union(x,y):合并子集x和y。 }
第6讲:ACM竞赛之图论模型与算法
6.1 并查集
第6讲:ACM竞赛之图论模型与算法
6.1 并查集
class UFSet { public: UFSet(int mSize); ~UFSet() { delete[]parent; } int Find(int i)const; void Union(int x, int y); private: int *parent; int size; }; UFSet::UFSet(int mSize) { size=mSize; parent=new int [size]; for (int i=0;i<size; i++) parent[i]=-1; }
对一个有n个元素的并查集,可以证明当采用改进的Union算法 后,每棵树的高度将不超过log2n+1
第6讲:ACM竞赛之图论模型与算法
6.1 并查集:改进Union和Find
//拆开规则 int UFSet::Find2(int i) { int r,t,l; for (r=i;parent [r]>=0; r=parent[r]); if (i!=r) //压缩路径 for (t=i;parent [t]!=r; t=l) { l=parent[t]; parent[t]=r; }; return r; }
第6讲:ACM竞赛之图论模型与算法
6.1 并查集
ADT UFset{ 数据: 设V={0,1,..,n-1},一个并查集为包含m(m>0)个元素的集 合{ V1,V2,…,Vm} ,其中V1,V2,…,Vm是V的子集, V1V2,…,Vm=V且Vi∩Vj= ,当ij,i,j=1,…,m。 运算: Create():构造每个子集合只包含一个元素的并查集.
第6讲:ACM竞赛之图论模型与算法
6.1 并查集
设有元素集合S={0,1,2,3,4,5,6},它们用序号惟一标识。S上 有等价对R={0~1,2~3,3~0,4~5,6~5}。该等价关系将集 合S分成两个等价类:{0,1,2,3}和{4,5,6}。
ห้องสมุดไป่ตู้
第6讲:ACM竞赛之图论模型与算法
6.2 拓扑排序
第6讲:ACM竞赛之图论模型与算法
6.4 最短路问题:Djikstra算法
迪杰斯特拉(Dijkstra)算法思想 初始状态时,集合S中只有一个源点,设为顶点v0。首先 产生从源点v0到它自身的路径,其长度为0,将v0加入S。
算法的每一步上,按照最短路径值的非减次序,产生下
一条最短路径,并将该路径的终点tV-S加入S。 直到S=V时算法结束。
第6讲:ACM竞赛之图论模型与算法
6.2 拓扑排序
1、拓扑序列和拓扑排序
C7
C0
C8
C6
左图中的两个拓扑序列为:
C0,C1,C2,C3,C4,C5,C7,C8,C6
C2
C1
C3
C5
C0,C7,C8,C1,C4,C2,C3,C6,C5
如按拓扑次序学习课程,能
保证学任何课程时,其他先 修课均已学过。
C4
第6讲:ACM竞赛之图论模型与算法
6.1 并查集:改进Union和Find
//加权规则 void UFSet::Union2( int x,int y) //结点少的树并入结点多的书 { int temp=parent[x]+parent[y]; //树根的parent域存储树中元素个数的负值 if (parent[x]>parent[y]) { //y的结点多,x链至y parent[x]=y; parent[y]=temp; } else { parent[y]=x;parent[x]=temp; } }
单源最短路径问题是:给定带权的有向图G=(V,E),给定源 点V0V,求从V0到V中其余各顶点的最短路径。
第6讲:ACM竞赛之图论模型与算法
6.4 最短路问题:Djikstra算法
迪杰斯特拉(Dijkstra)算法思想
首先求得长度最短的一条最短路径, 再求得长度次短的一条最短路径
依此类推,直到从源点到其它所有顶点之间的最短路径
都已求得为止。
Edsger Wybe Dijkstra
第6讲:ACM竞赛之图论模型与算法
6.4 最短路问题:Djikstra算法
迪杰斯特拉(Dijkstra)算法思想 把V分成两组 (1)S:存放已求得最短路径的顶点的集合 (2)V-S=T:尚未确定最短路径的顶点集合 将T中顶点按最短路径非递减的次序加入到S中。 保证 (1)从源点V0到S中各顶点的最短路径长度都不大于从V0 到T中任何顶点的最短路径长度 (2)每个顶点对应一个距离值 S中顶点:从V0到此顶点的最短路径长度 T中顶点:从V0到此顶点的只包括S中顶点作中间顶点 的最短路径长度
第6讲:ACM竞赛之图论模型与算法
6.2 拓扑排序
AOV网络举例:计算机专业学生学习的课程。
课程代号
C0
课程名称
高等数学
先修课程
无
C1
C2 C3
C++
离散数学 数据结构
无
C0,C1 C1,C2
C7 C0 C2
C8 C6 C3 C5
C4
C5 C6 C7 C8
高级语言
编译方法 操作系统 普通物理 计算机原理
第6讲:ACM竞赛之图论模型与算法
6.3 最小代价生成树
1 1
2
0
3
3 0
7
2
1
2 1
7
2
1
3
1
5 3
3 0
0
7
2
2
1
3
3
5
2
第6讲:ACM竞赛之图论模型与算法
6.3 最小代价生成树
1.普里姆算法(Prim) 设G=(V,E)是带权的连通图,T=(V’,E’)是正在构造中 的生成树。初始状态下,这棵生成树只有一个顶点,没 有边,即V’={v0},E’={ },v0是任意选定的起始顶点。 从初始状态开始,重复执行下列运算: 在所有uV’,vV-V’的边(u,v),(u,v)E 中找一条 代价最小的边(u’,v’), 边(u’,v’)并入集合E’,将顶点v’并入集合V’。 直到V=V’为止。 这时E’中必有n-1条边,T=(V’,E’)是图G的一棵最小 代价生成树。
第6讲:ACM竞赛之图论模型与算法
6.3 最小代价生成树
第6讲:ACM竞赛之图论模型与算法
6.4 最短路问题
在生活中常常遇到这样的问题 两地之间是否有路可通? 在有几条通路的情况下,哪一条路最短? 这就是路由选择。 例如:邮政自动分拣机的路选装置、计算机网络中的 路由选择等
第6讲:ACM竞赛之图论模型与算法
6.4 最短路问题
两种最常见的最短路径算法:
求单源最短路径的迪杰斯特拉(Djikstra)算法 求所有顶点之间的最短路径的弗洛伊德( Floyd)算法。 注意:这里所指的路径长度是指路径上的边所带的权值 之和,而不是前面定义的路径上的边的数目。
第6讲:ACM竞赛之图论模型与算法
6.4 最短路问题:Djikstra算法
C8
C6 C3 C5
第6讲:ACM竞赛之图论模型与算法
6.3 最小代价生成树
问题的引入:在n个城市之间架设通信线路。已知每两 个城市间架设线路的代价,问如何选择n-1条线路,可以 使总代价最小?
一个连通图的生成树是一个极小连通子图,它包括图中 全部顶点,并且有尽可能少的边。 一棵生成树的代价是各条边上的代价之和。 一个网络的生成树中具有最小代价的生成 树称为该网络 的最小代价生成树。 构造最小代价生成树的两种算法: 普里姆算法(Prim) 克鲁斯卡尔算法(Kruskal)
6.1 并查集
并查集是由一组互不相交的集合组成的一个集合结构,并在 此集合上定义了运算Union和Find。这就是说,并查集中的 元素本身是集合,它们是某个集合的子集,并查集是由这些 集合组成的集合结构。 设有集合V={0,1, …,n-1},V1,V2,…,Vm是V的子集, V1V2,…,Vm=V,且Vi ∩ Vj= ,当i j,i,j=1,…,m, 集合s={ V1,V2,…,Vm}是V的一个划分,即并查集UFset。 例如 V={0,1,2,3,4,5,6},s={V1,V2,V3},其中,V1 ={0}, V2 ={1,2,3,4},V3 ={5,6},集合s是一个并查集。
南京邮电大学计算机学院
联系方式 电话:138-139-30027 电邮:acm@njupt.edu.cn
ACM算法与数据结构设计
班 级 :仙林校区ACM选修班 上课地点和时间
理论:教2-402:星期3 (18:30开始)
实践:(仙林)计算中心
第6讲:ACM竞赛之图论模型与算法
C6
第6讲:ACM竞赛之图论模型与算法
6.2 拓扑排序
1、拓扑序列和拓扑排序 一个拓扑序列是AOV网中顶点的线性序列,使得对 图中任意二个顶点i和j,若在网中,i领先于j,则在线性 序列中i是j的前驱结点。
用拓扑排序可以做以下两件事情:
(1)测试AOV网的可行性;(是否存在回路) (2)对可行的AOV网求出其拓扑序列。
C1
C3,C4 C3,C8 C0 C7
C1
C4 AOV网示例
第6讲:ACM竞赛之图论模型与算法
6.2 拓扑排序
AOV网中的领先关系是一种拟序关系,即具有传递性和 反自反性。 传递性:活动的领先关系是可以传递的。如C0领先于C7, C7领先于C8,C0也领先于C8。 反自反性:不允许一个活动在开始之前就完成。要求 AOV网是一个有向无回路图。 C7 C8 C0 C2 C1 C4 C5 C3
第6讲:ACM竞赛之图论模型与算法
6.3 最小代价生成树
0 5 2 6 4 6 4 5 1 5 0 3 2 1 3 4 5
6 1 3
5
1
2 4 5
3 2
普里姆算法构造最小代价生成树的过程
第6讲:ACM竞赛之图论模型与算法
6.3 最小代价生成树
2. 克鲁斯卡尔算法
选边准则: 在E中选择一条代价最小的边(u,v),并将其从E中删除; 若在T中加入边(u,v)以后不形成回路,则将其加进T中 (这就要求u和v分属于生成森林的两棵不同的树上,由 于边(u,v)的加入,这两棵树连成一棵树),否则继续选 下一条边。 直到E’中包含n-1条边,T=(V,E’)是图G的一棵最小代 价生成树。
第6讲:ACM竞赛之图论模型与算法
6.1 并查集
第6讲:ACM竞赛之图论模型与算法
6.1 并查集
int UFSet::Find(int i)const { for (;parent[i]>=0;i=parent[i]) ; return i; } void UFSet::Union(int x,int y) { parent[x]=y; }
第6讲:ACM竞赛之图论模型与算法
6.2 拓扑排序
2、拓扑排序步骤 拓扑排序算法: (1)在图中找一个入度为零的顶点,输出之; (2)从图中删除该顶点及其所有出边; (3)重复(1)、(2),直到所有顶点都输出,或图中剩下的 顶点再也没有入度为零的顶点(存在有向回路)为止。
C7
C0 C2 C1 C4
通常,一个工程(如软件开发、施工、生产流程等)可以分
成若干子工程(称为活动)。要完成整个工程,就要完成所有 活动。而活动的执行通常有某些先决条件的,即一些活动必 须先于另一些活动完成。 用有向图可以表示活动的领先关系。
顶点:表示活动。
有向边:表示先决条件。 AOV网(Activity On Vertices,顶点活动网络):有向图G中, 若用顶点代表活动,有向边表示活动之间的领先关系,则称 图G为AOV网络。
注意:一个AOV网络的拓扑序列不是唯一的
第6讲:ACM竞赛之图论模型与算法
6.2 拓扑排序
2、拓扑排序步骤 拓扑排序算法 (1)在图中找一个入度为零的顶点,输出之; (2)从图中删除该顶点及其所有出边; (3)重复(1)、(2),直到所有顶点都输出,或图中剩下的 顶点再也没有入度为零的顶点(存在有向回路)为止。 注意: (1)从图中删除一个顶点及其所有出边时,会产生新的入 度为0的顶点; (2)入度为0的顶点的输出次序无关紧要。 因此算法实现时,可以用堆栈或队列保存新产生的入度为0 的顶点;
第6讲:ACM竞赛之图论模型与算法
6.4 最短路问题:Djikstra算法
一维数组d d[i]中存放从源点v0到i的当前最短路径的长度,该路径上除 顶点i自身外,其余顶点都属于S,并且这是所有这些路径中 的最短者。(用来描述从源点v0 到i的最短路径上权值的上 界,称为最短路径估计(shortest-path estimate)) 一维整型数组path path[i]给出从v0到顶点i的最短路径上,位于顶点i前面的那个 顶点。 例如,从v0到v1的最短路径为(v0,v2,v3,v1),则path[1]=3, path[3]=2,path[2]=0 一维布尔数组s 若s[i]为true,表示顶点i在S中,否则表示i在V-S中。
Find(i):返回包含元素i的子集合标识
Union(x,y):合并子集x和y。 }
第6讲:ACM竞赛之图论模型与算法
6.1 并查集
第6讲:ACM竞赛之图论模型与算法
6.1 并查集
class UFSet { public: UFSet(int mSize); ~UFSet() { delete[]parent; } int Find(int i)const; void Union(int x, int y); private: int *parent; int size; }; UFSet::UFSet(int mSize) { size=mSize; parent=new int [size]; for (int i=0;i<size; i++) parent[i]=-1; }
对一个有n个元素的并查集,可以证明当采用改进的Union算法 后,每棵树的高度将不超过log2n+1
第6讲:ACM竞赛之图论模型与算法
6.1 并查集:改进Union和Find
//拆开规则 int UFSet::Find2(int i) { int r,t,l; for (r=i;parent [r]>=0; r=parent[r]); if (i!=r) //压缩路径 for (t=i;parent [t]!=r; t=l) { l=parent[t]; parent[t]=r; }; return r; }
第6讲:ACM竞赛之图论模型与算法
6.1 并查集
ADT UFset{ 数据: 设V={0,1,..,n-1},一个并查集为包含m(m>0)个元素的集 合{ V1,V2,…,Vm} ,其中V1,V2,…,Vm是V的子集, V1V2,…,Vm=V且Vi∩Vj= ,当ij,i,j=1,…,m。 运算: Create():构造每个子集合只包含一个元素的并查集.
第6讲:ACM竞赛之图论模型与算法
6.1 并查集
设有元素集合S={0,1,2,3,4,5,6},它们用序号惟一标识。S上 有等价对R={0~1,2~3,3~0,4~5,6~5}。该等价关系将集 合S分成两个等价类:{0,1,2,3}和{4,5,6}。
ห้องสมุดไป่ตู้
第6讲:ACM竞赛之图论模型与算法
6.2 拓扑排序
第6讲:ACM竞赛之图论模型与算法
6.4 最短路问题:Djikstra算法
迪杰斯特拉(Dijkstra)算法思想 初始状态时,集合S中只有一个源点,设为顶点v0。首先 产生从源点v0到它自身的路径,其长度为0,将v0加入S。
算法的每一步上,按照最短路径值的非减次序,产生下
一条最短路径,并将该路径的终点tV-S加入S。 直到S=V时算法结束。
第6讲:ACM竞赛之图论模型与算法
6.2 拓扑排序
1、拓扑序列和拓扑排序
C7
C0
C8
C6
左图中的两个拓扑序列为:
C0,C1,C2,C3,C4,C5,C7,C8,C6
C2
C1
C3
C5
C0,C7,C8,C1,C4,C2,C3,C6,C5
如按拓扑次序学习课程,能
保证学任何课程时,其他先 修课均已学过。
C4
第6讲:ACM竞赛之图论模型与算法
6.1 并查集:改进Union和Find
//加权规则 void UFSet::Union2( int x,int y) //结点少的树并入结点多的书 { int temp=parent[x]+parent[y]; //树根的parent域存储树中元素个数的负值 if (parent[x]>parent[y]) { //y的结点多,x链至y parent[x]=y; parent[y]=temp; } else { parent[y]=x;parent[x]=temp; } }
单源最短路径问题是:给定带权的有向图G=(V,E),给定源 点V0V,求从V0到V中其余各顶点的最短路径。
第6讲:ACM竞赛之图论模型与算法
6.4 最短路问题:Djikstra算法
迪杰斯特拉(Dijkstra)算法思想
首先求得长度最短的一条最短路径, 再求得长度次短的一条最短路径
依此类推,直到从源点到其它所有顶点之间的最短路径
都已求得为止。
Edsger Wybe Dijkstra
第6讲:ACM竞赛之图论模型与算法
6.4 最短路问题:Djikstra算法
迪杰斯特拉(Dijkstra)算法思想 把V分成两组 (1)S:存放已求得最短路径的顶点的集合 (2)V-S=T:尚未确定最短路径的顶点集合 将T中顶点按最短路径非递减的次序加入到S中。 保证 (1)从源点V0到S中各顶点的最短路径长度都不大于从V0 到T中任何顶点的最短路径长度 (2)每个顶点对应一个距离值 S中顶点:从V0到此顶点的最短路径长度 T中顶点:从V0到此顶点的只包括S中顶点作中间顶点 的最短路径长度
第6讲:ACM竞赛之图论模型与算法
6.2 拓扑排序
AOV网络举例:计算机专业学生学习的课程。
课程代号
C0
课程名称
高等数学
先修课程
无
C1
C2 C3
C++
离散数学 数据结构
无
C0,C1 C1,C2
C7 C0 C2
C8 C6 C3 C5
C4
C5 C6 C7 C8
高级语言
编译方法 操作系统 普通物理 计算机原理
第6讲:ACM竞赛之图论模型与算法
6.3 最小代价生成树
1 1
2
0
3
3 0
7
2
1
2 1
7
2
1
3
1
5 3
3 0
0
7
2
2
1
3
3
5
2
第6讲:ACM竞赛之图论模型与算法
6.3 最小代价生成树
1.普里姆算法(Prim) 设G=(V,E)是带权的连通图,T=(V’,E’)是正在构造中 的生成树。初始状态下,这棵生成树只有一个顶点,没 有边,即V’={v0},E’={ },v0是任意选定的起始顶点。 从初始状态开始,重复执行下列运算: 在所有uV’,vV-V’的边(u,v),(u,v)E 中找一条 代价最小的边(u’,v’), 边(u’,v’)并入集合E’,将顶点v’并入集合V’。 直到V=V’为止。 这时E’中必有n-1条边,T=(V’,E’)是图G的一棵最小 代价生成树。
第6讲:ACM竞赛之图论模型与算法
6.3 最小代价生成树
第6讲:ACM竞赛之图论模型与算法
6.4 最短路问题
在生活中常常遇到这样的问题 两地之间是否有路可通? 在有几条通路的情况下,哪一条路最短? 这就是路由选择。 例如:邮政自动分拣机的路选装置、计算机网络中的 路由选择等
第6讲:ACM竞赛之图论模型与算法
6.4 最短路问题
两种最常见的最短路径算法:
求单源最短路径的迪杰斯特拉(Djikstra)算法 求所有顶点之间的最短路径的弗洛伊德( Floyd)算法。 注意:这里所指的路径长度是指路径上的边所带的权值 之和,而不是前面定义的路径上的边的数目。
第6讲:ACM竞赛之图论模型与算法
6.4 最短路问题:Djikstra算法
C8
C6 C3 C5
第6讲:ACM竞赛之图论模型与算法
6.3 最小代价生成树
问题的引入:在n个城市之间架设通信线路。已知每两 个城市间架设线路的代价,问如何选择n-1条线路,可以 使总代价最小?
一个连通图的生成树是一个极小连通子图,它包括图中 全部顶点,并且有尽可能少的边。 一棵生成树的代价是各条边上的代价之和。 一个网络的生成树中具有最小代价的生成 树称为该网络 的最小代价生成树。 构造最小代价生成树的两种算法: 普里姆算法(Prim) 克鲁斯卡尔算法(Kruskal)
6.1 并查集
并查集是由一组互不相交的集合组成的一个集合结构,并在 此集合上定义了运算Union和Find。这就是说,并查集中的 元素本身是集合,它们是某个集合的子集,并查集是由这些 集合组成的集合结构。 设有集合V={0,1, …,n-1},V1,V2,…,Vm是V的子集, V1V2,…,Vm=V,且Vi ∩ Vj= ,当i j,i,j=1,…,m, 集合s={ V1,V2,…,Vm}是V的一个划分,即并查集UFset。 例如 V={0,1,2,3,4,5,6},s={V1,V2,V3},其中,V1 ={0}, V2 ={1,2,3,4},V3 ={5,6},集合s是一个并查集。