
README file for nauty 2.2.

Brendan McKay, bdm@cs.anu.edu.au

------------------------------------------------------------

The most recent distribution of nauty can be found at
http://cs.anu.edu.au/~bdm/nauty .

The manual nug.pdf is available at that site and is also included
in the distribution package.

Note that nauty is copyright but free to use for most purposes.
The details are in the file nauty.h.

------------------------------------------------------------

INSTALLATION.

The first step is to unpack the archive.  On Unix-ish systems
you can use one of these commands:

   tar xfz nauty22.tar.gz
or
   gunzip -c nauty22.tar.gz | tar xf -

This will write all the files into the subdirectory nauty22.
Go to that directory.

If you have a working shell, and make, you can run
   ./configure
followed by
   make all
to compile nauty for your system.

If that succeeds without problem, you will have two versions of
dreadnaut:

dreadnaut  : graphs up to 32765 vertices
dreadnautB : graphs limited only by your available RAM

If you have problems during compilation, it may be that the
configuration scripts are inadequate for your system.  Usually it
is because of some missing system header, incompatible typedef,
or similar.  Please send the details to the author.

If you don't have a shell or make, manually edit the files nauty.h,
naututil.h and gtools.h as distributed.  The parts between the lines
======= near the start are the main things to look at.  After this
manual editing, you can use makefile as a guide to compilation.

Programs which use an older version of nauty need to be recompiled
(** not just relinked **).  Make sure they use the DEFAULTOPTIONS
macro to define the fields of the options parameter.

See below for compiling on a PC under DJGPP.

------------------------------------------------------------

TESTING.

After compiling nauty successfully, it is recommended that you run
the included test programs.  The simplest way is
    make checks

------------------------------------------------------------

MAILING LIST.

There is a mailing list for announcements and discussion about
nauty and related topics.  You can subscribe at
http://cs.anu.edu.au/mailman/listinfo/nauty-list .

------------------------------------------------------------

OTHER FILES IN THE PACKAGE.

A few additional goodies are included.

sumlines.c  -  This is a program designed to digest the outputs from
  multiple runs of a program (such as a computation split into multiple
  parts).  Lines matching given patterns can be counted and checked,
  and numbers appearing in them can be accumulated.  Instructions appear
  in the source file.  See the option GMP near the head of the program
  before trying to compile.

naugroup.h, naugroup.c  -  These define procedures for exhaustively
  listing a group found by nauty.  This is done in a space-efficient way.
  A sample program appears in nautyex3.c, but so far there is no
  complete documentation.

------------------------------------------------------------

DJGPP.

The Unix-like environment DJGPP can be used to run nauty and gtools on
DOS/Win computers.  DJGPP is available at http://www.delorie.com/djgpp .
The program shortg does not work since DJGPP does not provide a working
pipe() system call.  Using the bash shell is recommended.  In DOS,
Windows NT and early Windows editions, you will need to convert all
long file names to the 8+3 limits.  Thanks to Guenter Sterntenbrink
for helping with this.

If configure gives an error message similar to this:
   can not guess host type: you must specify one
then try
   ./configure --host=i686
or use i586 for Pentium 2.  If all of those fail, try
   ./configure --host=unknown

------------------------------------------------------------

RECENT CHANGES.

Here we list substantive changes made since the first 2.2 release.

Nov 16, 2002:  Replaced rng.c after communication with Don Knuth.
  The previous version had a bug (mine!) when there was no explicit
  initialization done by the user.  It appears the error had no
  impact on nauty (which only uses rng.c for the "s" command in
  dreadnaut, and for genrang, but both always initialize).
  No change to the nauty version number but beta=2.

Nov 18, 2000:  Adjusted the makefile and countg/testg to work in
  the DOS/Win environment DJGPPP (see the previous section).

May 1, 2003:  Fixed PRUNE feature of genbg.

May 3, 2003:  Added utility directg for making all orientations of graphs.

Oct 4, 2003:  Added options -a, -Z, -d, -z to genbg.  Also, the -l
              (canonical label) option now preserves the colouring.

Nov 17, 2003: Renamed INFINITY to NAUTY_INFINITY since many C header
              libraries define INFINITY.  If INFINITY is not defined by
              the system, you can still use it.

29-May-04 : - added definition of SETWORD_FORMAT used to write a setword
              with printf( ) - see nauty.h

Nov 19, 2003: Added program biplabg to relabel bipartite graphs with the
              colour classes contiguous.

Feb 13, 2004: Revised C options for solaris on pentium

Mar 1, 2004:  dretog knows !...\n type of comment

May 7, 2004:  geng can be called from another program (see instructions
              in geng.c.

Sep 11, 2004: Added utility multig for making multigraphs based on
              provided simple graphs; similar to directg

Oct 16, 2004: To avoid problems caused by system-dependent handling of
              external declarations, nauty() no longer accepts NULL as
              the value of options.dispatch.  To get the previous
              behaviour, use the value &graph_dispatch.  This will be
              handled automatically if programs calling nauty use
              DEFAULTOPTIONS to declare options and are recompiled.
              Even better is to use DEFAULTOPTIONS_GRAPH.

May 5, 2005:  A bug in the writing of sparse6 was found and fixed.
              This is procedure ntos6() in gtools.c, which is invoked
              by writes6().  The bug could only happen if all the
              following are true:
              1.  n = 2, 4, 8 or 16 (for n=2, only if the graph has loops)
              2.  Vertex n-2 has non-zero degree, but vertex n-1 has
                  zero degree.
              These conditions never happen for graphs generated by
              geng or genbg, nor for regular graphs or connected graphs,
              nor for graphs canonically labelled by nauty (except maybe
              with some unusual vertex colouring or invariant).
              If the conditions do happen, the buggy routine may
              (with some probability) add a spurious loop to vertex n-1.

              In the package is a utility checks6:

              Usage: checks6 [-w] [infile [outfile]]
              Check a file of graphs, optionally write corrected version
              -w  Write corrected graphs (default is not to write)
