16
1 Disjoint Set Data Disjoint Set Data Structure Structure

1 Disjoint Set Data Structure. 2 Disjoint Sets What are Disjoint Sets? Tree Representation Basic Operations Parent Array Representation Simple Find and

Embed Size (px)

Citation preview

Page 1: 1 Disjoint Set Data Structure. 2 Disjoint Sets What are Disjoint Sets? Tree Representation Basic Operations Parent Array Representation Simple Find and

1

Disjoint Set Data StructureDisjoint Set Data Structure

Page 2: 1 Disjoint Set Data Structure. 2 Disjoint Sets What are Disjoint Sets? Tree Representation Basic Operations Parent Array Representation Simple Find and

2

Disjoint SetsDisjoint Sets

What are Disjoint Sets? Tree Representation Basic Operations Parent Array Representation Simple Find and Simple Union Disjoint Sets Class Some Applications

Page 3: 1 Disjoint Set Data Structure. 2 Disjoint Sets What are Disjoint Sets? Tree Representation Basic Operations Parent Array Representation Simple Find and

3

A set S is a collection of elements of the same type

We assume that the elements are the numbers 1,2,.. n. In practice, these numbers may be indices to a symbol table containing the names of the sets.

Disjoint sets are collections of elements with no common elements between the sets. If Si and Sj, i j are two sets, then Si Sj = Ø

Examples: S1 = {1,7,8,9}, S2 = {5,2,10}, S3 = {3,4,6}

What are Disjoint Sets?What are Disjoint Sets?

Page 4: 1 Disjoint Set Data Structure. 2 Disjoint Sets What are Disjoint Sets? Tree Representation Basic Operations Parent Array Representation Simple Find and

4

One possible representation is a tree where a set can be identified by a parent node and children nodes.

In this representation, children point to their parents, rather than the reverse:

S1 = {1,7,8,9} S2 = {5,2,10} S3 = {3,4,6}

Union-Find Data StructureUnion-Find Data Structure:Tree Tree RepresentationRepresentation

1

987 102

5

64

3

Page 5: 1 Disjoint Set Data Structure. 2 Disjoint Sets What are Disjoint Sets? Tree Representation Basic Operations Parent Array Representation Simple Find and

5

Find(i):

Given the element (i), find the set containing (i), i.e. find the root of the tree.

Union(i,j):

Given two disjoint sets Si and Sj, obtain a set containing the elements in both sets, i.e.,

Si Sj

Basic OperationsBasic Operations

Page 6: 1 Disjoint Set Data Structure. 2 Disjoint Sets What are Disjoint Sets? Tree Representation Basic Operations Parent Array Representation Simple Find and

6

n disjoint nodes can be represented as n disjoint sets where each node is its own parent, i.e. p[i] = -1:

Parent Array RepresentationParent Array Representation

1 32 n

1 2 3 n

-1 -1 -1 -1

i

p[i]

Page 7: 1 Disjoint Set Data Structure. 2 Disjoint Sets What are Disjoint Sets? Tree Representation Basic Operations Parent Array Representation Simple Find and

7

Find(i):

Finding out which subset we are in is simple, for we keep traversing up the parent pointers until we hit the root.

Basic OperationsBasic Operations

Page 8: 1 Disjoint Set Data Structure. 2 Disjoint Sets What are Disjoint Sets? Tree Representation Basic Operations Parent Array Representation Simple Find and

8

The value in p[i] represents the parent of node (i). For the sets S1,S2,S3 shown before, we have:

Algorithm for Simple find:

Find the set containing node (i) = find the parent of (i):

int find(int i)

{ while (p[i] >= 0) i = p[i];

return i;

}

Simple FindSimple Find

1 2 3 4 5 6 7 8 9 10

-1 5 -1 3 -1 3 1 1 1 5

i

p[i]

find (1) 1find (4) 3find (10) 5

Page 9: 1 Disjoint Set Data Structure. 2 Disjoint Sets What are Disjoint Sets? Tree Representation Basic Operations Parent Array Representation Simple Find and

9

Union(i,j):

Making a union between two subsets is also easy. Just make the root of one of two trees point to the other, so now all elements have the same

root and thus the same subset name.   

Basic OperationsBasic Operations

Page 10: 1 Disjoint Set Data Structure. 2 Disjoint Sets What are Disjoint Sets? Tree Representation Basic Operations Parent Array Representation Simple Find and

10

Simple (disjoint) Union:

Make set (i) the child of set (j) = union (i,j)

Simple UnionSimple Union

1

987

102

5

1

987

102

5Example:union(5,1)

Page 11: 1 Disjoint Set Data Structure. 2 Disjoint Sets What are Disjoint Sets? Tree Representation Basic Operations Parent Array Representation Simple Find and

11

The parent array would change to:

Algorithm:

void union (int i, int j)

{ p [i] = j ; }

Simple UnionSimple Union

1 2 3 4 5 6 7 8 9 10

-1 5 -1 3 1 3 1 1 1 5

i

p[i]

Page 12: 1 Disjoint Set Data Structure. 2 Disjoint Sets What are Disjoint Sets? Tree Representation Basic Operations Parent Array Representation Simple Find and

12

class Sets {

private: int *p, n;

public: Sets(int Size): n(Size) // Constructor {

p = new int[n+1]; for (int i=0; i<=n; i++) p[i] = -1;

}

Disjoint sets classDisjoint sets class

Page 13: 1 Disjoint Set Data Structure. 2 Disjoint Sets What are Disjoint Sets? Tree Representation Basic Operations Parent Array Representation Simple Find and

13

~Sets() // Destructor

{ delete [ ] p; }

void SimpleUnion(int i, int j);

int SimpleFind(int i);

};

Disjoint sets classDisjoint sets class

Page 14: 1 Disjoint Set Data Structure. 2 Disjoint Sets What are Disjoint Sets? Tree Representation Basic Operations Parent Array Representation Simple Find and

14

// Make set(i) the child of set(j)void Sets::SimpleUnion(int i, int j) { p[i] = j; }

// Find the parent set of subset(i)int Sets::SimpleFind(int i) { while (p[i]>=0) i = p[i];

return i; }

Disjoint sets classDisjoint sets class

Page 15: 1 Disjoint Set Data Structure. 2 Disjoint Sets What are Disjoint Sets? Tree Representation Basic Operations Parent Array Representation Simple Find and

15

Union: takes constant time, i.e., O(1) Find: Suppose we do the following sequence of

unions:

union(1,2) , union(2,3),...., union(n-1,n)

The time of find parent of node (i) will be i.

To process all finds, we need

(1+2+....+n) steps = O(n2)

Hence, the average find cost is O(n)

AnalysisAnalysis

n

n-1

2

1

Page 16: 1 Disjoint Set Data Structure. 2 Disjoint Sets What are Disjoint Sets? Tree Representation Basic Operations Parent Array Representation Simple Find and

16

Representation of disjoint collections of data

Representation of Trees, Forests and Graphs

Some ApplicationsSome Applications