GraphTheory - Maple Programming Help

Online Help

All Products    Maple    MapleSim


Home : Support : Online Help : Mathematics : Discrete Mathematics : Graph Theory : GraphTheory Package : GraphTheory/CanonicalGraph

GraphTheory

  

CanonicalGraph

  

construct graph with canonical labeling

 

Calling Sequence

Parameters

Options

Details

Description

Examples

References

Compatibility

Calling Sequence

CanonicalGraph( G, opts )

Parameters

G

-

a graph

opts

-

(optional) equation of the form output = val

Options

• 

output=list or one of graph, labeling, or permutation 

  

the name graph, labeling, or permutation or a list of one or more of the names graph, labeling, and permutation. This option determines what is returned by CanonicalGraph. In all cases,

  

The option output=labeling returns a list L which is a rearrangement of the vertex list of G corresponding to a canonical labeling.

  

The option output=graph returns a graph whose edge set is identical to G, but whose vertex list is the rearrangement L.

  

The option output=permutation returns a list representing the permutation which, if applied to Vertices(G), produces L.

  

If output is a list of one or more of the symbols graph, labeling, or permutation, CanonicalGraph returns an expression sequence in which each element corresponds to what would be returned by invoking CanonicalGraph with the specified option in the order provided.

• 

storage=rectangular, sparse, or auto

  

This option controls whether the dense or sparse algorithm from the Nauty library is used. The values rectangular and sparse correspond to the dense and sparse algorithms, respectively, while the value auto automatically chooses which algorithm to employ based on a heuristic depending on the number of vertices and edges in G. The default is auto.

Details

• 

This command makes use of the Nauty library for computing automorphism groups and canonical labelings.

Description

• 

The CanonicalGraph( G ) command constructs a representation of the graph G with a canonical labeling.

• 

If the option output=labeling is provided, CanonicalGraph command instead returns a permutation of the vertices of G corresponding to a canonical labeling of G.

• 

Owing to graph symmetries, it is possible that CanonicalGraph may return distinct vertex orderings when invoked on two graphs G and H with identical vertex sets and edge sets. The representation is nevertheless canonical in the sense that if G and H are isomorphic, AdjacencyMatrix(CanonicalGraph(G))=AdjacencyMatrix(CanonicalGraph(H)).

• 

No general polynomial-time algorithm for computing a canonical labeling is presently known.

Examples

withGraphTheory:

Find a canonical representation of a particular graph.

G1CartesianProductCycleGraph3,CycleGraph4

G1Graph 1: an undirected unweighted graph with 12 vertices and 24 edge(s)

(1)

CG1CanonicalGraphG1

CG1Graph 2: an undirected unweighted graph with 12 vertices and 24 edge(s)

(2)

DrawGraphCG1

Display the computed canonical labeling for the specified graph.

CanonicalGraphG1,output=labeling

1:1,1:2,1:4,2:1,3:1,2:3,3:3,1:3,2:2,3:2,3:4,2:4

(3)

Observe that by permuting the vertices of the original graph, it is possible to generate a version of the graph for which CanonicalGraph returns a labeling distinct from the previous one.

G2PermuteVerticesG1,Perm12,10,8,6,4,2,11,9,7,5,3,1

G2Graph 3: an undirected unweighted graph with 12 vertices and 24 edge(s)

(4)

CG2,LCanonicalGraphG2,output=graph,labeling

CG2,LGraph 4: an undirected unweighted graph with 12 vertices and 24 edge(s),3:4,3:3,3:1,2:4,1:4,2:2,1:2,3:2,2:3,1:3,1:1,2:1

(5)

Both labelings are canonical, as evidenced by the fact that the adjacency matrices of the resulting graphs are identical.

EqualEntriesAdjacencyMatrixCG1,AdjacencyMatrixCG2

true

(6)

References

  

"Graph automorphism", Wikipedia. https://en.wikipedia.org/wiki/Graph_automorphism

Compatibility

• 

The GraphTheory[CanonicalGraph] command was introduced in Maple 2017.

• 

For more information on Maple 2017 changes, see Updates in Maple 2017.

See Also

GraphTheory

GraphTheory[AutomorphismGroup]

GraphTheory[PermuteVertices]