java.lang.Object
org.jgrapht.alg.util.UnionFind<T>
- Type Parameters:
T
- element type
An implementation of Union
Find data structure. Union Find is a disjoint-set data structure. It supports two operations:
finding the set a specific element is in, and merging two sets. The implementation uses union by
rank and path compression to achieve an amortized cost of $O(\alpha(n))$ per operation where
$\alpha$ is the inverse Ackermann function. UnionFind uses the hashCode and equals method of the
elements it operates on.
- Author:
- Tom Conerly
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionvoid
addElement
(T element) Adds a new element to the data structure in its own set.Returns the representative element of the set that element is in.boolean
Tests whether two elements are contained in the same set.int
Returns the number of sets.void
reset()
Resets the UnionFind data structure: each element is placed in its own singleton set.int
size()
Returns the total number of elements in this data structure.toString()
Returns a string representation of this data structure.void
Merges the sets which contain element1 and element2.
-
Constructor Details
-
UnionFind
Creates a UnionFind instance with all the elements in separate sets.- Parameters:
elements
- the initial elements to include (each element in a singleton set).
-
-
Method Details
-
addElement
Adds a new element to the data structure in its own set.- Parameters:
element
- The element to add.
-
getParentMap
- Returns:
- map from element to parent element
-
getRankMap
- Returns:
- map from element to rank
-
find
Returns the representative element of the set that element is in.- Parameters:
element
- The element to find.- Returns:
- The element representing the set the element is in.
-
union
Merges the sets which contain element1 and element2. No guarantees are given as to which element becomes the representative of the resulting (merged) set: this can be either find(element1) or find(element2).- Parameters:
element1
- The first element to union.element2
- The second element to union.
-
inSameSet
Tests whether two elements are contained in the same set.- Parameters:
element1
- first elementelement2
- second element- Returns:
- true if element1 and element2 are contained in the same set, false otherwise.
-
numberOfSets
public int numberOfSets()Returns the number of sets. Initially, all items are in their own set. The smallest number of sets equals one.- Returns:
- the number of sets
-
size
public int size()Returns the total number of elements in this data structure.- Returns:
- the total number of elements in this data structure.
-
reset
public void reset()Resets the UnionFind data structure: each element is placed in its own singleton set. -
toString
Returns a string representation of this data structure. Each component is represented as $\left{v_i:v_1,v_2,v_3,...v_n\right}$, where $v_i$ is the representative of the set.
-