public class AdaptiveIsomorphismInspectorFactory
extends java.lang.Object
Note that the concrete implementations are package-private and should not be created directly. If you are the maintainer of the package, you can add new implementation classes, and add them to the "check-list". The current algorithms do not support graphs with multiple edges (Multigraph / Pseudograph)
GraphIsomorphismInspector
Modifier and Type | Field and Description |
---|---|
static int |
GRAPH_TYPE_ARBITRARY |
static int |
GRAPH_TYPE_MULTIGRAPH |
static int |
GRAPH_TYPE_PLANAR |
static int |
GRAPH_TYPE_TREE |
Constructor and Description |
---|
AdaptiveIsomorphismInspectorFactory() |
Modifier and Type | Method and Description |
---|---|
protected static void |
assertUnsupportedGraphTypes(Graph g)
Checks if one of the graphs is from unsupported graph type and throws
IllegalArgumentException if it is.
|
protected static int |
checkGraphsType(Graph graph1,
Graph graph2) |
protected static <V,E> GraphIsomorphismInspector |
createAppropriateConcreteInspector(int graphType,
Graph<V,E> graph1,
Graph<V,E> graph2,
EquivalenceComparator<? super V,? super Graph<V,E>> vertexChecker,
EquivalenceComparator<? super E,? super Graph<V,E>> edgeChecker)
Checks the graph type, and accordingly decides which type of concrete
inspector class to create.
|
static <V,E> GraphIsomorphismInspector |
createIsomorphismInspector(Graph<V,E> graph1,
Graph<V,E> graph2)
Creates a new inspector, letting this class determine what is the most
efficient algorithm and using default equivalence comparators.
|
static <V,E> GraphIsomorphismInspector |
createIsomorphismInspector(Graph<V,E> graph1,
Graph<V,E> graph2,
EquivalenceComparator<? super V,? super Graph<V,E>> vertexChecker,
EquivalenceComparator<? super E,? super Graph<V,E>> edgeChecker)
Creates a new inspector, letting this class determine what is the most
efficient algorithm.
|
static <V,E> GraphIsomorphismInspector |
createIsomorphismInspectorByType(int type,
Graph<V,E> graph1,
Graph<V,E> graph2)
Creates a new inspector for a particular graph type (planar / tree /
other) using default equivalence comparators.
|
static <V,E> GraphIsomorphismInspector |
createIsomorphismInspectorByType(int type,
Graph<V,E> graph1,
Graph<V,E> graph2,
EquivalenceComparator<? super V,? super Graph<V,E>> vertexChecker,
EquivalenceComparator<? super E,? super Graph<V,E>> edgeChecker)
Creates a new inspector for a particular graph type (planar / tree /
other).
|
protected static <V,E> GraphIsomorphismInspector |
createTopologicalExhaustiveInspector(Graph<V,E> graph1,
Graph<V,E> graph2,
EquivalenceComparator<? super V,? super Graph<V,E>> vertexChecker,
EquivalenceComparator<? super E,? super Graph<V,E>> edgeChecker) |
public static final int GRAPH_TYPE_ARBITRARY
public static final int GRAPH_TYPE_PLANAR
public static final int GRAPH_TYPE_TREE
public static final int GRAPH_TYPE_MULTIGRAPH
public static <V,E> GraphIsomorphismInspector createIsomorphismInspector(Graph<V,E> graph1, Graph<V,E> graph2, EquivalenceComparator<? super V,? super Graph<V,E>> vertexChecker, EquivalenceComparator<? super E,? super Graph<V,E>> edgeChecker)
graph1
- graph2
- vertexChecker
- may be nulledgeChecker
- may be nullpublic static <V,E> GraphIsomorphismInspector createIsomorphismInspector(Graph<V,E> graph1, Graph<V,E> graph2)
same as calling createIsomorphismInspector(graph1,graph2,null,null);
graph1
- graph2
- public static <V,E> GraphIsomorphismInspector createIsomorphismInspectorByType(int type, Graph<V,E> graph1, Graph<V,E> graph2, EquivalenceComparator<? super V,? super Graph<V,E>> vertexChecker, EquivalenceComparator<? super E,? super Graph<V,E>> edgeChecker)
type
- - AdaptiveIsomorphismInspectorFactory.GRAPH_TYPE_XXXgraph1
- graph2
- vertexChecker
- - can be nulledgeChecker
- - can be nullpublic static <V,E> GraphIsomorphismInspector createIsomorphismInspectorByType(int type, Graph<V,E> graph1, Graph<V,E> graph2)
same as calling createAppropriateConcreteInspector(graph1,graph2,null,null);
type
- - AdaptiveIsomorphismInspectorFactory.GRAPH_TYPE_XXXgraph1
- graph2
- protected static <V,E> GraphIsomorphismInspector createAppropriateConcreteInspector(int graphType, Graph<V,E> graph1, Graph<V,E> graph2, EquivalenceComparator<? super V,? super Graph<V,E>> vertexChecker, EquivalenceComparator<? super E,? super Graph<V,E>> edgeChecker)
graph1
- graph2
- vertexChecker
- edgeChecker
- protected static void assertUnsupportedGraphTypes(Graph g) throws java.lang.IllegalArgumentException
graph1
- graph2
- java.lang.IllegalArgumentException
protected static <V,E> GraphIsomorphismInspector createTopologicalExhaustiveInspector(Graph<V,E> graph1, Graph<V,E> graph2, EquivalenceComparator<? super V,? super Graph<V,E>> vertexChecker, EquivalenceComparator<? super E,? super Graph<V,E>> edgeChecker)