摘要: 不相交集合数据结构保持一组不相交的动态集合,集合中每一个元素有一个对象表示,或称其为代表。其主要操作有三个, Make_Set(x) ; 对集合x进行初始化,每一个元素就是一个对象。 Union(X,Y) ; 将包含集合X,Y的动态集合合并为一个新的集合; Find_Set(x) ; 返回包含x的集合的代表; 不相交集合的一个应用,确定无向连通图中的连通子图的个数。可以采用链表形式,数组形式,和有根树的方式表示。 基本过程是 Connected_Components (G) //G 表示无向图 Connected_Components (G) {   for each vertex v ∈ V(G); // V(G) 表示G中的所有点定点    do Make_Set(v);   for each edge(u,v)∈ E(G); //E(G) 表示G中的所有边     do if(Find_Set(u) != Find_Set(v))        then Union(u,v); } 阅读全文
posted @ 2011-07-21 10:05 ProgrammingEveryday 阅读(414) 评论(0) 推荐(0) 编辑