V - the type of the verticesE - the type of the edgespublic class AHURootedTreeIsomorphismInspector<V,E> extends Object implements IsomorphismInspector<V,E>
The original algorithm was first presented in "Alfred V. Aho and John E. Hopcroft. 1974. The Design and Analysis of Computer Algorithms (1st ed.). Addison-Wesley Longman Publishing Co., Inc., Boston, MA, USA."
This implementation runs in linear time (in the number of vertices of the input trees) while using a linear amount of memory.
Note: If the input graph is directed, it effectively considers only the subtree reachable from the specified root.
For an implementation that supports unrooted trees see
AHUUnrootedTreeIsomorphismInspector.
For an implementation that supports rooted forests see AHUForestIsomorphismInspector.
Note: This inspector only returns a single mapping (chosen arbitrarily) rather than all possible mappings.
| Constructor and Description |
|---|
AHURootedTreeIsomorphismInspector(Graph<V,E> tree1,
V root1,
Graph<V,E> tree2,
V root2)
Construct a new AHU rooted tree isomorphism inspector.
|
| Modifier and Type | Method and Description |
|---|---|
IsomorphicGraphMapping<V,E> |
getMapping()
Get an isomorphism between the input trees or
null if none exists. |
Iterator<GraphMapping<V,E>> |
getMappings()
Get an iterator over all calculated (isomorphic) mappings between two graphs.
|
boolean |
isomorphismExists()
Check if an isomorphism exists.
|
public AHURootedTreeIsomorphismInspector(Graph<V,E> tree1, V root1, Graph<V,E> tree2, V root2)
tree1 - the first rooted treeroot1 - the root of the first treetree2 - the second rooted treeroot2 - the root of the second treeNullPointerException - if tree1 or tree2 is nullNullPointerException - if root1 or root2 is nullIllegalArgumentException - if tree1 or tree2 is emptyIllegalArgumentException - if root1 or root2 is an invalid vertexpublic Iterator<GraphMapping<V,E>> getMappings()
getMappings in interface IsomorphismInspector<V,E>public boolean isomorphismExists()
isomorphismExists in interface IsomorphismInspector<V,E>public IsomorphicGraphMapping<V,E> getMapping()
null if none exists.null is none existsCopyright © 2019. All rights reserved.