[Nauty] Fwd: Release candidate #2 of nauty&Traces 2.9.0 available
Brendan McKay
Brendan.McKay at anu.edu.au
Sun May 25 22:19:56 AEST 2025
Dear Nauty people,
At https://users.cecs.anu.edu.au/~bdm/nauty/nauty2_9_0rc2.tar.gz you
can obtain the second release candidate for nauty&Traces version 2.9.0.
Package maintainers: please wait for the final 2.9.0 release before
distributing this.
A list of the main changes since 2.8.9 is below. As always, please
report problems.
Brendan.
--------------------------------
* Many changes to configure.ac, makefile.in and runalltests. Major
changes to the header files to account for the foibles of different
operating systems and compiler standards. Successful installation is
now confirmed on 20 different OSes (but there is always #21...).
Some programs (dreadnaut.c, shortg.c, dretog.c) now declare
_POSIX_C_SOURCE=200809L and _XOPEN_SOURCE=500, but none
of the *.h files touch those variables.
* Fixed bugs in pickg/countg for chromatic number (-G) and connectivity
(-N).
These were related bugs in testg.c and not in the procedures in
nauchromatic.c and nauconnect.c. Thanks to Jerry James for reporting.
* pickg/countg --HH counts hexagons (6-cycles) in undirected graphs.
Fixed pickg/countg documentation for colouring parameters.
* Added "c" option to genposetg to select only connected posets.
* countneg -n (but not -e) can now handle incremental sparse format.
* The space efficiency of uniqg has improved to 48 bytes per isomorphism
class, a bit more than 22 million per gigabyte. It got a little
faster too.
- uniqg -H was good in 2.8.8 but broken in 2.8.9. Hopefully it's good again.
- uniqg -y writes a 256-bit hash of the input equivalence classes.
It is independent of the word size and endianness, but depends on -S, -t
and the parameters for colouring and invariants.
- The SHA256 procedures have been migrated to a separate file nausha.c
so they can be used in other programs. See that file for documentation.
That code is freeware by Brad Conte.
* listg -T writes a one-line format like 0--1,2--3,... as required by the
program 'tutte'.
* Changes to dreadnaut:
- The options related to invariants have been separated into options for
digraphs and options for undirected graphs. To set the options
(commands *, k and K) you need set the digraph option (+d or -d) first.
This change was implemented so that the default invariant for digraphs
could be changed to "adjacencies". The default for undirected graphs
remains to not use an invariant. Now dreadnaut should obtain the same
canonical forms as the interfaces densenauty() and sparsenauty().
- The command (...) can construct a graph from its graph6, sparse6, or
digraph6 code, either given explicitly or read from a file. Examples:
(IheA at GUAo) - get the Petersen graph from its graph6 code
(:I`ES at obGkqegW~) - similarly for its sparse6 code
(<file) - read the first graph from file "file"
(<file#12) - read the 12th graph from file "file" (the first is #1).
(<cmd:genspecialg -XTutte12Cage) - read the Tutte 12-cage as made
by the utility genspecialg (assuming your operating system
supports
the popen() function)
White space is ignored except for spaces in file or command names.
- The commands t (write the graph) and b (write the canonical graph) have
new variants t6 and b6 that write the respective graphs in graph6,
sparse6 or digraph6 format, instead of the default human-readable
format.
- If your computer has the facility, you will get a suggestion to
increase
the stack size if dreadnaut crashes due to running out of stack. The
command to do that on Unix-like systems is ulimit -s. Probably this
will
be futile, as it means nauty recursed to a very deep level and is
unlikely
to finish any time soon. An invariant might help.
* It has always been the case that options.digraph needs to be set to TRUE
for undirected graphs with loops. This is now enforced by dreadnaut, and
the interfaces densenauty() and sparsenauty(), by temporarily
changing the
option before nauty is called, if necessary. You are still responsible
for this if you use the direct nauty() interface. Traces is not certified
for loops at all.
* The default for hamheuristic -L was increased. It also has a new option -c
to perform an independent check of hamiltonian cycles after they are
found.
* Functions setsize() and setinter() in naututil.c became type long long,
as the previous type int is too small and maybe size_t is also too small.
* genspecialg has 29 new named graphs. Use genspecialg -Xhelp for a list.
* delptg -A deletes all the vertices specified by -d and/or -v.
delptg -k# makes the #-core of the input graphs, formed by recursively
removing vertices of degree less than #.
Loops are now supported by delptg and contribute 2 to the degree for
undirected graphs.
* "extern" has been removed from external function declarations. While
it has
not strictly been needed since the age of the dinosaurs, decades ago
there
were compilers that failed without it. Hopefully that is no longer true.
* Add parameter -D to nbrhoodg to select subgraphs in an interval of
distances
from a vertex. See nbrhoodg --help .
* addptg -D# restricts the maximum (out-)degree of the outputs.
* New utility distgraphg makes output graphs according to the distances
between vertices in the input graphs. Run distgraphg --help.
* A considerable number of compiler warning messages were suppressed.
Although almost all of them were due to the compiler's incomplete
knowledge
of the code, an uninitialised variable with unknown consequences was
discovered and fixed in Traces.
More information about the Nauty
mailing list