18.04.2013 Views

The.Algorithm.Design.Manual.Springer-Verlag.1998

The.Algorithm.Design.Manual.Springer-Verlag.1998

The.Algorithm.Design.Manual.Springer-Verlag.1998

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Graph Isomorphism<br />

Implementations: <strong>The</strong> world's fastest isomorphism testing program is Nauty, by Brendan D. McKay.<br />

Nauty (No AUTomorphisms, Yes?) is a set of very efficient C language procedures for determining the<br />

automorphism group of a vertex-colored graph. Nauty is also able to produce a canonically labeled<br />

isomorph of the graph, to assist in isomorphism testing. It was the basis of the first program to generate<br />

all the 11-vertex graphs without isomorphs, and can test most graphs of fewer than one hundred vertices<br />

in well under a second. Nauty has been successfully ported to a variety of operating systems and C<br />

compilers. It may be obtained from http://cs.anu.edu.au/people/bdm/. It is free for educational and<br />

research applications, but for commercial use contact the author at bdm@cs.anu.edu.au.<br />

Combinatorica [Ski90] provides (slow) Mathematica implementations of graph isomorphism and<br />

automorphism testing. See Section for further information on Combinatorica.<br />

Notes: Graph isomorphism is an important problem in complexity theory. Monographs on isomorphism<br />

detection include Hoffmann [Hof82].<br />

Polynomial-time algorithms are known for planar graph isomorphism [HW74] and for graphs where the<br />

maximum vertex degree is bounded by a constant [Luk80]. <strong>The</strong> all-pairs shortest path heuristic is due to<br />

[SD76], although there exist nonisomorphic graphs that realize the same set of distances [BH90]. A<br />

linear-time tree isomorphism algorithm for both labeled and unlabeled trees is presented in [AHU74].<br />

A problem is said to be isomorphism-complete if it is provably as hard as isomorphism. Testing the<br />

isomorphism of bipartite graphs is isomorphism-complete, since any graph can be made bipartite by<br />

replacing each edge by two edges connected with a new vertex. Clearly, the original graphs are<br />

isomorphic if and only if the transformed graphs are.<br />

Related Problems: Shortest path (see page ), string matching (see page ).<br />

Next: Steiner Tree Up: Graph Problems: Hard Problems Previous: Edge Coloring<br />

<strong>Algorithm</strong>s<br />

Mon Jun 2 23:33:50 EDT 1997<br />

file:///E|/BOOK/BOOK4/NODE180.HTM (4 of 4) [19/1/2003 1:31:29]

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!