Here - Combinatorial algorithms and algorithmic graph theory
Here - Combinatorial algorithms and algorithmic graph theory
Here - Combinatorial algorithms and algorithmic graph theory
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
6 Introduction<br />
1.3 Isomorphism-free generation<br />
When generating combinatorial structures, it is important that no isomorphic<br />
copies are output by the generation algorithm. In the literature various techniques<br />
exist to avoid the generation of isomorphic copies. The most commonly<br />
used ones are McKay’s canonical construction path method [89] <strong>and</strong> the method<br />
of generating canonical representatives (which was independently pioneered by<br />
Faradžev [50] <strong>and</strong> Read [105]). A good survey of isomorphism rejection techniques<br />
can be found in [14].<br />
Both the method of generating canonical representatives <strong>and</strong> the canonical<br />
construction path method use a canonical labelling.<br />
If L is the set of all labelled <strong>graph</strong>s, then a canonical representative function is<br />
a function c : L → L with the properties that for every G ∈ L, c(G) is isomorphic<br />
to G <strong>and</strong> that c(G) = c(G ′ ) if <strong>and</strong> only if G <strong>and</strong> G ′ are isomorphic. The <strong>graph</strong><br />
c(G) is also called the canonical representative of G. An isomorphism φ from G<br />
to c(G) is called a canonical labelling of G.<br />
We can implement our own canonical representative function or we can use a<br />
program such as nauty [88] to compute a canonically labelled isomorph of a given<br />
<strong>graph</strong>. A labelling can for example be represented by a string consisting of the<br />
adjacency matrix of the <strong>graph</strong> written into one row. The adjacency matrix of a<br />
<strong>graph</strong> with n vertices is an n × n matrix where the entry of row i <strong>and</strong> column j<br />
is 1 if <strong>and</strong> only if there is an edge between vertex i <strong>and</strong> vertex j, else the entry<br />
is 0. One could then define the labelling of the canonical representative of G to<br />
be e.g. the one with the lexico<strong>graph</strong>ically minimal representation.<br />
A straightforward isomorphism rejection technique is isomorphism rejection<br />
by lists. In this method, a list of non-isomorphic <strong>graph</strong>s which were generated<br />
so far is stored (preferably in the memory for efficiency reasons). Each time a<br />
new <strong>graph</strong> is generated, it is compared to the <strong>graph</strong>s from the list. If it is not<br />
isomorphic to any of the <strong>graph</strong>s in the list, the <strong>graph</strong> is added to the list, else it is<br />
rejected. Usually the canonical representative is stored rather than the generated<br />
<strong>graph</strong>, since then one does not have to recompute the canonical representative<br />
of the stored <strong>graph</strong>s. When the canonical representative of the new <strong>graph</strong> is<br />
computed, one only has to compare it to the stored canonical representatives.<br />
This approach is of course only feasible if the number of non-isomorphic<br />
<strong>graph</strong>s is not too big. We use this technique for the generation of irreducible<br />
IPR fullerenes (see Section 4.3) <strong>and</strong> minimal Ramsey <strong>graph</strong>s (see Section 5.3).<br />
The method of generating canonical representatives only accepts <strong>graph</strong>s if<br />
their labelling is canonical. The difficulty of this method is to define a canonical