com.google.javascript.jscomp.graph
Interface UnionFind<E>

Type Parameters:
E - element type
All Known Implementing Classes:
StandardUnionFind

public interface UnionFind<E>

Union-Find is a classical algorithm used to find connected components in graph theory.

Each equivalence class has a representative element that is chosen arbitrarily and is used to determine if two elements are members of the same class.

See algorithmist for more detail.


Method Summary
 void add(E e)
          Adds the given element to a new set if it is not already in a set.
 Collection<Set<E>> allEquivalenceClasses()
          Returns an immutable collection containing all equivalence classes.
 boolean areEquivalent(E a, E b)
          Returns true if a and b belong to the same equivalence class.
 Set<E> elements()
          Returns an unmodifiable set of all elements added to the UnionFind.
 E find(E e)
          Returns the representative of the equivalence class of e.
 Set<E> findAll(E value)
          Returns the elements in the same equivalence class as value.
 E union(E a, E b)
          Unions the equivalence classes of a and b and returns the representative of the resulting equivalence class.
 

Method Detail

add

void add(E e)
Adds the given element to a new set if it is not already in a set.

Throws:
UnsupportedOperationException - if the add operation is not supported by this union-find.

union

E union(E a,
        E b)
Unions the equivalence classes of a and b and returns the representative of the resulting equivalence class. The elements will be added if they are not already present.

Throws:
UnsupportedOperationException - if the add operation is not supported by this union-find.

find

E find(E e)
Returns the representative of the equivalence class of e.


areEquivalent

boolean areEquivalent(E a,
                      E b)
Returns true if a and b belong to the same equivalence class.

Throws:
IllegalArgumentException - if any argument is not an element of this structure.

elements

Set<E> elements()
Returns an unmodifiable set of all elements added to the UnionFind.


allEquivalenceClasses

Collection<Set<E>> allEquivalenceClasses()
Returns an immutable collection containing all equivalence classes. The returned collection represents a snapshot of the current state and will not reflect changes made to the data structure.


findAll

Set<E> findAll(E value)
Returns the elements in the same equivalence class as value.

Returns:
an unmodifiable view. As equivalence classes are merged, this set will reflect those changes.
Throws:
IllegalArgumentException - if a requested element does not belong to the structure.