Class JGraphUnionFind

java.lang.Object
com.jgraph.algebra.JGraphUnionFind

public class JGraphUnionFind extends Object
Implements a union find structure that uses union by rank and path compression. The union by rank guarantees worst case find time of O(log N), while Tarjan shows that in combination with path compression (halving) the average time for an arbitrary sequence of m >= n operations is O(m*alpha(m,n)), where alpha is the inverse of the Ackermann function, defined as follows: alpha(m,n) = min{i >= 1 | A(i, floor(m/n)) > log n} for m >= n >= 1 Which yields almost constant time for each individual operation.
  • Field Details

    • nodes

      protected Map nodes
      Maps from elements to nodes
  • Constructor Details

    • JGraphUnionFind

      public JGraphUnionFind(Object[] elements)
      Constructs a union find structure and initializes it with the specified elements.
      Parameters:
      elements -
  • Method Details

    • getNode

      public JGraphUnionFind.Node getNode(Object element)
      Returns the node that represents element.
    • find

      Returns the set that contains node. This implementation provides path compression by halving.
    • union

      public void union(JGraphUnionFind.Node a, JGraphUnionFind.Node b)
      Unifies the sets a and b in constant time using a union by rank on the tree size.
    • differ

      public boolean differ(Object a, Object b)
      Returns true if element a and element b are not in the same set. This uses getNode and then find to determine the elements set.
      Parameters:
      a - the first element to compare
      b - the second element to compare
      Returns:
      Returns true if a and b are in the same set
      See Also: