[Nauty] Version 2.7 will soon be the official version, with your help

Brendan McKay Brendan.McKay at anu.edu.au
Wed Sep 26 12:25:25 AEST 2018

We are working towards making nauty 2.7
(incorporating traces 2.2) the official release.

Accordingly, release candidate nauty27rc1 is available at

We would like to encourage you to try this version and report any
problems you encounter (even minor problems).

A list of the main changes is below.

Brendan McKay and Adolfo Piperno


* -h and -k options for independent set size and clique size were added
   to countg and pickg.  For some graphs these use the program cliquer,
   kindly provided by Sampo Nisjkanen and Patric Ostergard.

* Macros SWHIBIT, REMOVEHIBIT and ATMOSTONEBIT added to nauty.h.

* Added option -a to complg.

* Program copyg can now be used to make a simple filter.  See the
   instructions inside the source file and the example numleaves.c.

* Programs countg and pickg can now display some parameter values
   as ranges instead of writing a separate line for each value. For
   example, countg --ne:T will write a separate line for each number
   of vertices and edges, with that line showing the range of the
   number of triangles. Everything after the ':' is shown as a range.
   There is also a switch -1 that causes output to be in a simple
   numerical table easy to read from a program and a similar switch
   -2 that omits counts.

* Program vcolg now handles digraphs and graphs with loops.

* genrang can now make random spanning trees of K(n1,n2)

* amtog has an "s" command for reading tournaments

* The configure script (compiled from configure.ac) was modified to
   update some tests and remove some old code that is useless. The
   time-critical parts of nauty are now compiled with
   if the compiler allows those switches. Since this may result in
   a binary which does not run on older machines in the same family,
   there is a configuration option  --enable-generic  to disable
   these switches.  To work around a bug with -march-native for
   gcc version 7 on MacOSX computers (due to the linker not knowing
   some of the instructions), the extra switch -mno-avx is also added
   if it appears necessary.

* genspecialg can now make multiple special graphs at once.
   The -b option has been extended to allow removing a matching from
   a complete bipartite graph.

* watercluster2 has an option Z to write in digraph6 format.

* Problems for input of graphs with 0 vertices were fixed with help
   from Kevin Ryde.  However, note that many utilities in the package
   will not work with such graphs.  It is NOT TRUE that graphs of
   order 0 are now supported.  However, the primary function nauty()
   (but not traces()) should work for both dense and sparse versions.

* Stronger measures are taken to ensure that the sort order used by
   shortg is plain byte order. This corresponds to the C collation
   order, also known as POSIX, but it may be different from the
   collation order used by default on your command line. This means
   that utilities like sort, uniq, comm and join might consider the
   output of shortg to be out of order. To avoid this, define the
   environment variable LC_ALL to equal the string "C".
      bash:   export LC_ALL=C
      tcsh:   setenv LC_ALL C
   If LC_ALL is undefined, it will also be sufficient to define
   LC_COLLATE to equal "C".  The POSIX standard says that LC_ALL
   takes precedence over LC_COLLATE if both are defined, but this
   might not be true for older systems.  If you really don't want
   to change environment variables, you can compile shortg with
   -DKEEP_SORT_LOCALE but beware that some collation orders are
   are not even deterministic (i.e. different characters might
   compare equal).

* The bipartite graph generator genbg now has a -Y switch to
   specify the minimum number of common neighbours for two
   vertices on the second side.

* A new version of Traces (including some bug fixes) is included.
   See traces.c for more.

* New utilities: underlyingg takes the undirected graph underlying
   a graph or digraph.  assembleg combines a file of graphs (usually
   connected graphs) as components to make disconnected graphs
   of a specified size.

* geng has been modified to allow more than 32 vertices.  The
   makefile knows "geng" for up to 32 vertices, and "gengL" for
   up to 64 vertices.

* pickg and countg now have -X to reverse the selection.
   A change was made to allow these utilities to work on Windows
   computers with sizeof(long) < sizeof(void*).  Also, pickg
   now writes a header if there is one in the input file.

* listg has -L that can be used in conjunction with -W or -M to
   write the Laplacian matrix instead of the adjacency matrix.

* Fixed a possible bug in the combination "shortg -kt".

* You can change the archive manager (default "ar") by defining
   the environment variable AR at configure time.

More information about the Nauty mailing list