24.12.2013 Views

Here - Combinatorial algorithms and algorithmic graph theory

Here - Combinatorial algorithms and algorithmic graph theory

Here - Combinatorial algorithms and algorithmic graph theory

SHOW MORE
SHOW LESS

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

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

Saved successfully!

Ooh no, something went wrong!