Class AHURootedTreeIsomorphismInspector<V,E>
- Type Parameters:
V
- the type of the verticesE
- the type of the edges
- All Implemented Interfaces:
IsomorphismInspector<V,E>
public class AHURootedTreeIsomorphismInspector<V,E> extends java.lang.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.
- Author:
- Alexandru Valeanu
-
Constructor Summary
-
Method Summary
Modifier and Type Method Description IsomorphicGraphMapping<V,E>
getMapping()
Get an isomorphism between the input trees ornull
if none exists.java.util.Iterator<GraphMapping<V,E>>
getMappings()
Get an iterator over all calculated (isomorphic) mappings between two graphs.boolean
isomorphismExists()
Check if an isomorphism exists.
-
Constructor Details
-
AHURootedTreeIsomorphismInspector
Construct a new AHU rooted tree isomorphism inspector. Note: The constructor does NOT check if the input trees are valid.- Parameters:
tree1
- the first rooted treeroot1
- the root of the first treetree2
- the second rooted treeroot2
- the root of the second tree- Throws:
java.lang.NullPointerException
- iftree1
ortree2
isnull
java.lang.NullPointerException
- ifroot1
orroot2
isnull
java.lang.IllegalArgumentException
- iftree1
ortree2
is emptyjava.lang.IllegalArgumentException
- ifroot1
orroot2
is an invalid vertex
-
-
Method Details
-
getMappings
Get an iterator over all calculated (isomorphic) mappings between two graphs.- Specified by:
getMappings
in interfaceIsomorphismInspector<V,E>
- Returns:
- an iterator over all calculated (isomorphic) mappings between two graphs
-
isomorphismExists
public boolean isomorphismExists()Check if an isomorphism exists.- Specified by:
isomorphismExists
in interfaceIsomorphismInspector<V,E>
- Returns:
- true if there is an isomorphism, false if there is no isomorphism
-
getMapping
Get an isomorphism between the input trees ornull
if none exists.- Returns:
- isomorphic mapping,
null
is none exists
-