32
Union-Find A data structure for maintaining a collection of disjoint sets Course: Data Structures Lecturers: Haim Kaplan and Uri Zwick June 2010

Union-Find A data structure for maintaining a collection of disjoint sets

  • Upload
    nelly

  • View
    70

  • Download
    0

Embed Size (px)

DESCRIPTION

Union-Find A data structure for maintaining a collection of disjoint sets. Course: Data Structures Lecturers: Haim Kaplan and Uri Zwick June 2010. Union-Find. Make( x ): Create a set containing x Union( x , y ): Unite the sets containing x and y - PowerPoint PPT Presentation

Citation preview

Page 1: Union-Find  A data structure for  maintaining a collection  of disjoint sets

Union-Find A data structure for

maintaining a collection of disjoint setsCourse: Data Structures

Lecturers: Haim Kaplan and Uri ZwickJune 2010

Page 2: Union-Find  A data structure for  maintaining a collection  of disjoint sets

Union-Find• Make(x): Create a set containing x • Union(x,y): Unite the sets containing x and y

• Find(x): Return a representative of the set containing x

Variation:• Make and Union specify a name for new set• Find(x) returns name of set containing x

Find(x)=Find(y) iff x and y are currently in same set

Page 3: Union-Find  A data structure for  maintaining a collection  of disjoint sets

Union Find

a

c

b

d e

Page 4: Union-Find  A data structure for  maintaining a collection  of disjoint sets

Union-Find

MakeLinkFind

O(1)O(log n)

O(1)

Amortized

O(1)O(1)

O(log n)

O(1)O(1)

O(α(n))

AmortizedWorstCase

Link(x,y): Unite the sets containing the representatibe elements x and y

Union(x,y) → Link(Find(x),Find(y))

Page 5: Union-Find  A data structure for  maintaining a collection  of disjoint sets

Important aplication:Incremental Connectivity

A graph on n vertices is build by adding edges

At each stage we may want to know whether two given vertices are already connected

1

3

7

5

6

4

2

union(1,2) union(2,7) Find(1)=Find(6)? union(3,5) …

Page 6: Union-Find  A data structure for  maintaining a collection  of disjoint sets

Fun aplication: Generating mazes

1 2 3 4

5 6 7 8

9 10 11 12

13 14 15 16

make(1)make(2)

make(16)

Choose edges in random order and remove them if they connect two different regions

find(6)=find(7) ?union(6,7)

find(7)=find(11) ?union(7,11)…

Page 7: Union-Find  A data structure for  maintaining a collection  of disjoint sets

Fun aplication: Generating mazes

1 2 3 4

5 6 7 8

9 10 11 12

13 14 15 16

Page 8: Union-Find  A data structure for  maintaining a collection  of disjoint sets

Generating mazes – a larger example

Construction time -- O(n2 α(n2))

n

Page 9: Union-Find  A data structure for  maintaining a collection  of disjoint sets

More serious aplications:

• Maintaining an equivalence relation• Incremental connectivity in graphs• Computing minimum spanning trees• …

Page 10: Union-Find  A data structure for  maintaining a collection  of disjoint sets

Implementation using linked listsEach set is represented as a linked list

Each element has a pointer to the list

size klastfirst

a …

Set

x z c

Find(x) – O(1) time

Page 11: Union-Find  A data structure for  maintaining a collection  of disjoint sets

Union using linked lists

size k1

lastfirst

a …x z c

Union(x) – O(min{k1,k2}) time

size k2

lastfirst

b c y

Concatenate the two listsChange “set pointers” of shorter list

Page 12: Union-Find  A data structure for  maintaining a collection  of disjoint sets

Union FindRepresent each set as a rooted tree

Union by rank Path compression

The parent of a vertex x is denoted by p[x]

x

Find(x) traces the path from x to the root

p[x]

Page 13: Union-Find  A data structure for  maintaining a collection  of disjoint sets

Union by rank

0 r1

r2 r r

r+1

r1< r2

Union by rank on its own gives O(log n) find timeA tree of rank r contains at least 2r elements

If x is not a root, then rank(x)<rank(p[x])

Page 14: Union-Find  A data structure for  maintaining a collection  of disjoint sets

Path Compression

Page 15: Union-Find  A data structure for  maintaining a collection  of disjoint sets

Union Find - pseudocode

Page 16: Union-Find  A data structure for  maintaining a collection  of disjoint sets

Union-Find

make link find

O(1) O(1) O(log n)

make link find

O(1) O(α(n)) O(α(n))

Worst case

Amortized

Page 17: Union-Find  A data structure for  maintaining a collection  of disjoint sets

Nesting / Repeated application

Page 18: Union-Find  A data structure for  maintaining a collection  of disjoint sets

Ackermann’s function

Page 19: Union-Find  A data structure for  maintaining a collection  of disjoint sets

Ackermann’s function (modified)

Page 20: Union-Find  A data structure for  maintaining a collection  of disjoint sets

Inverse functions

Page 21: Union-Find  A data structure for  maintaining a collection  of disjoint sets

Inverse Ackermann function

is the inverse of the function

The first “column”

A “diagonal”

Page 22: Union-Find  A data structure for  maintaining a collection  of disjoint sets

Amortized analysis

Amortized cost of i-th operation

Actual cost ofi-th operation

Potential afteri-th operation

Page 23: Union-Find  A data structure for  maintaining a collection  of disjoint sets

Amortized analysis (cont.)

Total actual cost

Page 24: Union-Find  A data structure for  maintaining a collection  of disjoint sets

Level and Index

Back to union-find…

Page 25: Union-Find  A data structure for  maintaining a collection  of disjoint sets

Potentials

Page 26: Union-Find  A data structure for  maintaining a collection  of disjoint sets

Bounds on level

Claim Proof

Definition

Page 27: Union-Find  A data structure for  maintaining a collection  of disjoint sets

Bounds on index

Page 28: Union-Find  A data structure for  maintaining a collection  of disjoint sets

Amortized cost of make

Actual cost: O(1)

: 0

Amortized cost: O(1)

Page 29: Union-Find  A data structure for  maintaining a collection  of disjoint sets

Amortized cost of link

The potentials of y and z1,…,zk can only decrease

Actual cost: O(1)yx

…z1 zk

The potentials of x is increased by at most (n)

(n)

Amortized cost: O((n))

Page 30: Union-Find  A data structure for  maintaining a collection  of disjoint sets

Amortized cost of find

x

p[x]

y=p’[x] rank[x] is unchangedrank[p[x]] is increased

level(x) is either unchanged or is increased

If level(x) is unchanged, then index(x) is either unchanged or is increased

If level(x) is increased, then index(x) is decreased by at most rank[x]–1

is either unchanged or is decreased

Page 31: Union-Find  A data structure for  maintaining a collection  of disjoint sets

Amortized cost of find

x=x0

xi

xl

xj

Suppose that:

(x) is decreased !

Page 32: Union-Find  A data structure for  maintaining a collection  of disjoint sets

Amortized cost of find

x=x0

xi

xlxj

The only nodes that can retain their potential are:the first, the last and the last node of each level

Actual cost: l +1 ((n)+1) – (l +1)

Amortized cost: (n)+1