Class GraphMatcher


public class GraphMatcher extends Object
An implementation of graph isomorphism for Graph equality. The underlying algorithm is exponential but will only enter a non-deterministic polynomial part when there are a lot of difficult to distinguish anonymous nodes connected to each other by statements with the same property(s). Non-pathological examples, where most nodes have some properties that help distinguish them from other nodes, will experience nearly linear performance.
  • Method Details

    • equals

      public static boolean equals(Graph m1, Graph m2)
      Are the two models isomorphic? The isomorphism is defined as a bijection between the anonymous variables such that the statements are identical. This is described in
    • hashCode

      public static int hashCode(Graph g)
    • match

      public static Node[][] match(Graph m1, Graph m2)
      Return an isomorphism between the two models. This function is nondeterministic in that it may return a different bijection on each call, in cases where there are multiple isomorphisms between the models.
      null on failure or an array of related pairs (arrays of length 2) of anonymous nodes. match(m1,m2)[i][0] is from m1, and match(m1,m2)[i][1] is the corresponding node in m2.