java.lang.Object
org.jgrapht.alg.util.UnionFind<T>
- Type Parameters:
T- element type
public class UnionFind<T>
extends java.lang.Object
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 Type Method Description voidaddElement(T element)Adds a new element to the data structure in its own set.Tfind(T element)Returns the representative element of the set that element is in.protected java.util.Map<T,T>getParentMap()protected java.util.Map<T,java.lang.Integer>getRankMap()booleaninSameSet(T element1, T element2)Tests whether two elements are contained in the same set.intnumberOfSets()Returns the number of sets.voidreset()Resets the UnionFind data structure: each element is placed in its own singleton set.intsize()Returns the total number of elements in this data structure.java.lang.StringtoString()Returns a string representation of this data structure.voidunion(T element1, T element2)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
public java.lang.String 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.- Overrides:
toStringin classjava.lang.Object- Returns:
- string representation of this data structure
-