Releases: digraphs/Digraphs
0.8.0
This release contains new features, several minor bugfixes, and minor
improvements to the documentation of the package.
New Features in Version 0.8.0
This release introduces the new operations DigraphClosure
[Julius Jonusas] and BooleanAdjacencyMatrixMutableCopy
[Wilf A. Wilson], along with the following properties and operations related to semilattices [Chris Russell]:
IsPartialOrderDigraph
IsMeetSemilatticeDigraph
IsJoinSemilatticeDigraph
IsLatticeDigraph
PartialOrderDigraphMeetOfVertices
PartialOrderDigraphJoinOfVertices
0.7.1
This is a minor release, which fixes bugs in DigraphTopologicalSort
and
IsAntisymmetricDigraph
that could trigger segmentation faults.
0.7.0
This release introduces several new features, changes some existing functionality, and improves the documentation. The changes in this release were made by Wilf A. Wilson.
New Features in Version 0.7.0
-
This release contains a new technique for encoding a vertex-coloured multidigraph as a vertex-coloured (undirected) graph while preserving the automorphism group, in order to calculate the automorphism group and canonical labelling using bliss. This enables the following functionality:
- the operations
AutomorphismGroup
andDigraphCanonicalLabelling
for a digraph and a vertex-colouring now accept a multidigraph as their first argument; - the operations
IsIsomorphicDigraph
andIsomorphismDigraphs
now accept multidigraphs, and they also accept vertex-colourings as optional arguments.
- the operations
-
This release add new functionality related to undirected spanning trees and undirected spanning forests:
- the property
IsUndirectedForest
is introduced; - the attributes
UndirectedSpanningTree
andUndirectedSpanningForest
are introduced; and - the operations
IsUndirectedSpanningTree
andIsUndirectedSpanningForest
are introduced.
- the property
Altered Behaviour in Version 0.7.0
- The behaviour of
IsSubdigraph
is changed in the case that it is given one or two multidigraphs. - The one-argument version of the operation
DigraphColouring
(and its synonym,DigraphColoring
) is now an attribute.
0.6.1
This is a minor release. This release fixes a bug in AsDigraph
for a transformation and an integer. The operations OutNeighboursCopy
and OutNeighborsCopy
are renamed to OutNeighboursMutableCopy
and OutNeighborsMutableCopy
, respectively, and new operations InNeighboursMutableCopy
and InNeighborsMutableCopy
are introduced.
0.6.0
This is a major release, adding a variety of new operations and attributes
for Digraphs, as well as improving some functions and improving the
package's documentation. In this version, we welcome Luke Elliott and
Markus Pfeiffer as new authors.
New Features in Version 0.6.0
- The ability to label the edges of digraphs is introduced. [Markus Pfeiffer]
- The operation
CompleteMultipartiteDigraph
is introduced. [Stuart Burrell and Wilf A. Wilson] - The operations
ReadDIMACSDigraph
andWriteDIMACSDigraph
are introduced.
[Wilf A. Wilson] - The operation
ChromaticNumber
is introduced. [James D. Mitchell and Wilf A. Wilson] - The operations
IsDirectedTree
andIsUndirectedTree
are introduced. [Luke Elliott] - The operation
IsEulerianDigraph
is introduced. [Luke Elliott]
0.5.2
This is a minor release containing one bugfix and several other minor changes.
Digraphs now works when it and GAP are compiled in 32 bit mode.
0.5.1
This release contains some bugfixes, some minor new features, and some performance improvements. The package has moved to GitHub and we welcome Finn Smith as an author.
This release contains a new technique for encoding a vertex-coloured digraph as a vertex-coloured (undirected) graph while preserving the automorphism group, in order to calculate the automorphism group using bliss. These changes were made by Finn Smith. The previous technique involved adding two intermediate vertices for every edge; on a digraph with n
vertices this could add 2n(n-1)
new vertices. The new technique encodes a digraph with n
vertices as a graph with 3n
vertices. In certain cases, this can lead to a dramatic improvement in the time taken to calculate the automorphism group.
The new reduction is based on two techniques in:
David Bremner, Mathieu Dutour Sikiric, Dmitrii V. Pasechnik, Thomas Rehn, Achill Schürmann. Computing symmetry groups of polyhedra. https://arxiv.org/abs/1210.0206v3
Namely, "Dealing with digraphs" followed by "Reduction by superposition". From the graph obtained by these techniques, n
vertices which are irrelevant to automorphism finding are removed.
The actual reduction used is as follows: Given a digraph D=(V=[]1 .. n],E,c)
, create three copies V1
, V2
, V3
of the vertex set V
. Colour V1
according to the colouring c
of D
, and V2
, V3
with two distinct colours that do not occur in D
. Connect each vertex in V1
to the corresponding vertices in V2
, V3
. For every arc (x,y)
in E
, put an edge between the copy of x
in V2
, and the copy of y
in V3
. Automorphisms of this graph, when restricted to V
, are precisely the automorphisms of D
. Because this changes the graph used to calculate automorphisms, the results sometimes nominally differ from the previous version - especially in the case of canonical labelling, where unrecognisably different results may appear. Generators also often appear in different orders.
The performance improvements are most noticeable on large, quite dense digraphs. On random digraphs with 5000 vertices and 0.5 edge probability, 200-400x speedups were common. When calculating the automorphism group of the complete digraph on 1000 vertices, with vertex i
having colour i mod 2 + 1
, we obtain a 66x speedup. When the vertex i
is assigned colour i mod 7 + 1
, this becomes a 400x speedup.
Minor changes include:
- a better method for
DigraphReverse
[Wilf Wilson] - automorphism groups of complete, empty, cycle, chain, and complete bipartite digraphs are set at creation Michael Torpey
- a minor improvement in performance in the
DigraphMaximalCliques
[Wilf Wilson] - a new operation
AdjacencyMatrixMutableCopy
[James D. Mitchell]