Graphs, digraphs, and multidigraphs in GAP
Version 1.12.0
Released 2025-09-02
This project is maintained by James Mitchell, Wilf A. Wilson, Michael Young
Copyright © 2014-25 by Jan De Beule, Julius Jonušas, James D. Mitchell, Wilf A. Wilson, Michael Young et al.
Licensing information can be found in the LICENSE file.
IsDirectedForest in
PR #794.Full Changelog: https://github.com/digraphs/Digraphs/compare/v1.11.0...v1.12.0
IsTwoEdgeTransitive by @frankiegillis in
PR #733.RandomDigraph more random in
PR #738.BurntPancakeGraph and BurntPancakeGraph in
PR #403.CayleyDigraph by
@james-d-mitchell in PR #403.MinimalCyclicEdgeCut by @MeikeWeiss in
PR #754.DigraphAllChordlessCyclesOfMaximalLength by @MeikeWeiss in
PR #754.DigraphKings and DigraphIsKing by @hrj4 in
PR #521.ViewString for digraphs in
PR #783.ChromaticNumber in
PR #491.OnDigraphs for a digraph and a permutation in
PR #267.DreadnautString, DigraphFromDreadnautString, DIMACSString, and
DigraphFromDIMACSString; and the variables WholeFileEncoders and
WholeFileDecoders and the functions IsWholeFileEncoder and
IsWholeFileDecoder.DigraphMaximumFlow in
PR #751.RandomUniqueEdgeWeightedDigraph
PR #755.Full Changelog: https://github.com/digraphs/Digraphs/compare/v1.10.1...v1.11.0
ArticulationPoints found by @wilfwilson
PR #779.Full Changelog: https://github.com/digraphs/Digraphs/compare/v1.10.0...v1.10.1
DigraphAllChordlessCycles by @MeikeWeiss in
PR #702IsOrderFilter by @zljlzljlz in
PR #707Full Changelog: https://github.com/digraphs/Digraphs/compare/v1.9.0...v1.10.0
SubdigraphsMonomorphisms by @james-d-mitchell in
PR #690Full Changelog: https://github.com/digraphs/Digraphs/compare/v1.8.0...v1.9.0
This release contains several improvements and bug fixes:
Full Changelog: https://github.com/digraphs/Digraphs/compare/v1.7.1...v1.8.0
This is a minor release with some changes related to forthcoming changes in GAP. These changes were implemented by Fabian Zickgraf.
This is a minor release with some new features, and some other improvements in code quality.
Full Changelog: https://github.com/digraphs/Digraphs/compare/v1.6.3...v1.7.0
This is a minor release with some bug fixes, and other issues resolved:
RandomDigraph method for IsEulerianDigraph,
resolved by @mtorpeyUndirectedSpanningForest works in relation to
mutability by @wilfwilson in PR #582This is a minor release fixing a number of minor issues:
compiled.h instead of src/compiled.h by @fingolfin in PR #560CayleyDigraph to use AsSet by @fingolfin in PR #564This is a minor release including a number of new features:
IsPermutationDigraph by @baydrea in
PR #513OnTuplesDigraphs and OnSetsDigraphs by @wilfwilson in
PR #449AsDigraph for partial perms by @james-d-mitchell in
PR #526DigraphRandomWalk by @mtorpey in
PR #543LatticeDigraphEmbedding method by @MTWhyte in PR #538IsDistributiveLatticeDigraph property by @MTWhyte in PR #528The following improvements were also made:
IsMeetSemilatticeDigraph and
IsJoinSemilatticeDigraph by @MTWhyte in
PR #556This is a minor release including the following changes:
This is a very minor release containing technical changes for maintaining compatibility with other GAP packages.
This minor release contains several bugfixes and technical changes. This includes:
DigraphEdgeUnion. This was reported by Wilf A. Wilson in Issue #496 and fixed by Joseph Edwards in PR #507.OutNeighbours with an inappropriate argument. This was reported by Wilf A. Wilson in Issue #518 and fixed by James D. Mitchell in PR #519.DigraphAddEdge for digraphs without edge labels in PR #509.Vertices to improve compatibility with Grape in PR #530.This is a fairly major release of the Digraphs package, containing some bugfixes and several new features.
In this version, we welcome Finn Buck, Tom Conti-Leslie, Ewan Gilligan, Lea Racine, and Ben Spiers as contributors to the package.
IsDirectedTree and an error message for OnDigraphs were fixed (Wilf A. Wilson in PRs #480 and #498)We especially wish to highlight the greatly expanded functionality for creating digraphs that are either famous one-off examples, or are part of a family of standard examples.
In particular, Marina Anagnostopoulou-Merkouri, Finn Buck, James D. Mitchell, Lea Racine, and Ben Spiers implemented functions to construct many more families of standard examples (currently documented in Section 3.5), which were added in in PRs #408, #409, #411, #415, #416, #417, #423, #424, #425, #445, #454, #456, and #490.
Furthermore, Marina Anagnostopoulou-Merkouri, Reinis Cirpons, Tom Conti-Leslie, Lea Racine, Maria Tsalakou, and Murray Whyte added a database of one-off named graphs and digraphs in PR #404.
These digraphs can be constructed by calling Digraph with a string of appropriate name, e.g. Digraph("brinkmann").
The available names can be accessed with the ListNamedDigraphs function.
Dominators and DominatorTree (James D. Mitchell, Marina Anagnostopoulou-Merkouri, Samantha Harper, and Finn Buck, in PR #336)MaximalCommonSubdigraph and MinimalCommonSuperdigraph were introduced (Luke Elliot, PR #361)DigraphShortestPathSpanningTree was introduced (Jan De Beule and Wilf A. Wilson, in PR #363)DigraphCycle was added as a synonym for CycleDigraph (Wilf A. Wilson, PR #441)StrongProduct, ConormalProduct, HomomorphicProduct, and LexicographicProduct (Finn Buck, PR #460)IsDigraphPath was introduced (James D. Mitchell, PR #489)ViewString and inherently known properties of trees, forests, cycle digraphs and tournaments were improved (Wilf A. Wilson in PRs #440 and #447)This minor release contains several bugfixes and technical changes, and improvements to the documentation. These include the following:
OutNeighbours is now a global function rather than an attribute
(James D. Mitchell, PR #413).SetDigraphVertexLabels now accepts an immutable list of labels
(Murray Whyte, PR #427).DigraphCore that could lead to wrong results
(Wilf A. Wilson, PR #437).ChromaticNumber was improved in some cases by the
use of Brooks’ theorem
(Wilf A. Wilson, PR #446).DigraphMaximumMatching
which affected digraphs with custom vertex labels
(Wilf A. Wilson, PR #462).DigraphEdgeUnion, DigraphJoin,
DigraphDisjointUnion, DigraphDirectProduct, and DigraphCartesianProduct
when each was given a single list of digraphs as the argument.
(Wilf A. Wilson, PR #468).In this release there are several new features and improvements.
The following improvements and bugfixes have been made:
CayleyDigraph was reported and fixed by Jan De BeuleReadDigraphs was reported by Wilf A. Wilson and
fixed by James D. MitchellBlissCanonicalLabelling and BlissAutomorphismGroup was
improved for multidigraphs by Marina Anagnostopoulou-Merkouri and Sam
Harper.GeneratorsOfEndomorphismMonoid that caused GAP to crash when
called with a multidigraph was reported by Wilf A. Wilson and
fixed by James D. MitchellDigraphCopy was improved by Marina
Anagnostopoulou-Merkouri and Sam Harper.The main new features are:
DigraphNrLoops was introduced by Marina
Anagnostopoulou-Merkouri and Sam Harper.DotColoredDigraphDotVertexColoredDigraphDotEdgeColoredDigraphDotSymmetricColoredDigraphDotSymmetricVertexColoredDigraphDotSymmetricEdgeColoredDigraph
were introduced by Marina Anagnostopoulou-Merkouri and Sam Harper.VerticesReachableFrom was introduced by
Marina Anagnostopoulou-Merkouri.ModularProduct was introduced by Luke Elliott and
James D. MitchellThis is a minor release fixing some issues, some performance improvements, and removing some deprecated code. The changes in this release were made by Max Horn and Wilf A. Wilson.
This is a minor release adding the new functionality DigraphMutabilityFilter,
StrongOrientation, Bridges, and IsBridgeless James D. Mitchell.
This is a minor release where some of the documentation has been fixed and the installation instructions have been improved James D. Mitchell, some changes were made for compatibility with future versions of GAP Max Horn and Wilf A. Wilson.
This is a minor release adding some new features to Digraphs, principally functionality relating to computing matchings by Reinis Ciprons, and an implementation of Dijkstra’s algorithm for shortest paths by Markus Pfeiffer and Maria Tsalakou, and methods for producing a concise string representation of a digraph by Murray Whyte.
As of this version, Digraphs requires the datastructures package to be available, in version 0.2.5 or newer.
This is a minor release adding the new configuration flag
--without-intrinsics and checking that the compiler is in C99 mode by using
AC_PROG_CC_C99 in configure.ac.
This release fixes a bug in HomomorphismDigraphsFinder that was introduced
in version 1.1.0. The bug was found and fixed by James D. Mitchell;
see PR #290.
This is a minor release that includes some new features and some performance improvements.
The following issues were resolved, pull requests merged, or new features added:
Issue #40: If bliss is used to compute the automorphism group of a digraph, then the size of the automorphism group is returned from bliss to GAP, and the group object in GAP immediately knows its size. In particular, it is not necessary to recalculate this size. This was reported and fixed in PR #278 by Chris Jefferson.
Issue #279:
In the function HomomorphismDigraphsFinder, it is now possible to specify a
subgroup of the automorphism group of the range digraph. This way, the
automorphism group of the range digraph is not computed by
HomomorphismDigraphsFinder. This can result in a performance improvement
in some cases. This was reported and fixed in
PR #285 by
Finn Smith.
Issue #284:
The function HomomorphismDigraphsFinder sometimes did not return any
homomorphisms when the source digraph had exactly one vertex. This was caused
by the data structures used by HomomorphismDigraphsFinder not being
correctly initialised in this case. This issue was reported by Finn Smith
and fixed by James D. Mitchell in
PR #286.
In PR #283, Finn Smith
added the new operation DigraphsRespectsColouring, which can be used to
check whether a transformation or permutation between digraphs respects given
colourings. New versions of IsDigraphHomomorphism, and friends, were added
that accept colourings as arguments and which use
DigraphsRespectsColouring.
The version of bliss included in Digraphs was updated to allow all of its
data structures to be modified in-place rather than allocated and deallocated
repeatedly. The function HomomorphismDigraphsFinder was modified to make
use of this new functionality in bliss, and subsequently the performance
of HomomorphismDigraphsFinder has been improved (particularly in cases
where many homomorphisms between distinct small digraphs are found). This
was done by James D. Mitchell in
PR #282.
Some further minor performance improvements were made, and a compiler warning was fixed.
This is a minor release that fixes some bugs related to mutability in
DigraphDisjointUnion and ViewString.
These problems were reported and fixed by Wilf A. Wilson in Issue #276 and PR #277, respectively.
This is a minor release that fixes several bugs:
GeneratorsOfEndomorphismMonoid sometimes incorrectly stored its result.
This was reported by Chris Jefferson in
Issue #251
and fixed by James D. Mitchell in
PR #265.ViewString of known non-complete digraphs,
where such digraphs were described as being complete.
This was reported by Murray Whyte in
Issue #272
and fixed by Wilf A. Wilson in
PR #273.This is a minor release of the Digraphs package. The main change in this
release is the reintroduction of the three-argument version of
DigraphAddVertices, which accepts a digraph, a number of vertices to add, and
a list of labels for the new vertices. The removal inadvertently broke
backwards compatibility with some third-party pre-existing code that relied on
this functionality in the Digraphs package (see
Issue #264).
The second argument of the three-argument version was redundant, and so a new
two-argument version of DigraphAddVertices, which accepts a digraph and a list
of new vertex labels, was introduced in v1.0.0. Unfortunately, the concurrent
removal of the three-argument version of DigraphAddVertices was not advertised
in the CHANGELOG. Although the three-argument version has been reintroduced,
it will remain undocumented, since there is no good reason for any new code to
use the three-argument version.
The author contact data on the title page of the manual was also updated.
The changes in this version were made by Wilf A. Wilson.
This is a major release of the Digraphs package that introduces significant new functionality, some changes in behaviour, general improvements, and several small bugfixes. With this version, we welcome Reinis Cirpons as a contributor to the package.
ViewString for
immutable digraphs attempts to show more of the known information about the
digraph. This will break tests that relied on the previous behaviour, that
contained only the numbers of vertices and edges.QuotientDigraph has been changed so that it no longer
returns digraphs with multiple edges.IsEulerianDigraph would previously return true for digraphs
that are Eulerian when their isolated vertices were removed, which
contradicted the documentation. IsEulerianDigraph now returns false for
all digraphs that are not strongly connected.DigraphType to
DigraphByOutNeighboursType.DigraphColoring (American-style spelling) for DigraphColouring
was removed.Previously, every digraph in the Digraphs package was an immutable, attribute-storing digraph. It is now possible to create mutable digraphs. Mutable digraphs are not attribute-storing, but they can be altered in place - by adding or removing vertices and edges - which, unlike with immutable digraphs, does not require a new copy of the digraph to be made. This can save time and memory.
This is particularly useful when one wants to create a digraph, alter the digraph in some way, and then perform some computations. One can now typically do this with fewer resources by creating a mutable digraph, modifying it in place, and then converting it into an immutable digraph (which can store attributes and properties), before finally performing the computations.
Every digraph now belongs to precisely one of the categories IsMutableDigraph
or IsImmutableDigraph, according to its mutability. A mutable digraph can be
converted in-place into an immutable digraph with MakeImmutable. The are
various new and updated functions for creating mutable and immutable digraphs,
and for making mutable or immutable copies.
Most digraph-creation functions in the package now accept an optional first
argument, that can be either IsMutableDigraph or IsImmutableDigraph. Given
one of these filters, the function will according create the digraph to be of
the appropriate mutability. When this is option available, the default is
always to create an immutable digraph.
On the whole, for a function in the package that takes a digraph as its argument and again returns a digraph, the function now returns a digraph of the same mutability as its result, and moreover, given a mutable argument, it converts the mutable digraph in-place into the result. However, please consult the document to learn the exact behaviour of any specific function.
Old attributes Foo in the package that take and return a single digraph have
been converted into the operation Foo, with a corresponding new attribute,
FooAttr. This means that the getter and setter functions, HasFoo and
SetFoo, are renamed to HasFooAttr and SetFooAttr. See DigraphReverse
for an example. For an immutable (and therefore attribute-storing) digraph,
calling Foo calls FooAttr and returns an immutable digraph, which it
stores, and so the effect is as before. For an mutable digraph, calling Foo
modifies the digraph in-place, which remains mutable.
The majority of the changes in Digraphs relating to mutable and immutable digraphs were made by James D. Mitchell, Finn Smith, and Wilf A. Wilson, with some further contributions by Reinis Cirpons, Luke Elliott, and Murray Whyte.
The package now includes the following new functions:
AsSemigroup can produce strong semilattices of groups (i.e. Clifford)
from semilattice digraphs, groups, and homomorphisms. This functionality was
added by Finn Smith in
PR #161.AutomorphismGroup and BlissAutomorphismGroup can now take an optional third
argument that specifies an edge colouring for the digraph. In this case, the
functions return only automorphisms of the digraph that preserve the edge
colouring (and the vertex colouring, if one is given). This brilliant new
functionality was added by Finn Smith in
PR #186.DegreeMatrix, LaplacianMatrix, and NrSpanningTrees were introduced by
Reinis Cirpons in
PR #224.DigraphCartesianProduct and DigraphDirectProduct, along with the
companion functions DigraphCartesianProductProjections and
DigraphDirectProductProjections, were introduced by Reinis Cirpons in
PR #228.DigraphMycielskian was added by Murray Whyte in
PR #194.DigraphNrStronglyConnectedComponents was added by Murray Whyte in
PR #180.DigraphOddGirth was added by Murray Whyte in
PR #166DigraphCore and IsDigraphCore were added by Murray Whyte in PRs
#221 and
#217, respectively.DotHighlightedDigraph was added by Finn Smith in
PR #169.IsCompleteMultipartiteDigraph was added by Wilf A. Wilson
in PR #236.IsEquivalenceDigraph was added by Wilf A. Wilson in
PR #234 as a synonym for
IsReflexiveDigraph and IsSymmetricDigraph and IsTransitiveDigraph.IsVertexTransitive and IsEdgeTransitive were added by Graham Campbell
in PR #165.PetersenGraph and GeneralisedPetersenGraph
were added by Murray Whyte in PRs
#181 and
#204,
respectively.RandomLattice was added by Reinis Cirpons in
PR #175.--with-external-bliss) and use the
Digraphs package with the system version of bliss was added
by Isuru Fernando in
PR #225.--with-external-planarity) and use
the Digraphs package with the system version of the Edge Addition Planarity
Suite was added by James D. Mitchell in
PR #207.This is a minor release that fixes a few bugs.
In previous versions, the homomorphism-finding tools sometimes returned
purported ‘monomoprhisms’ that were not injective. This problem was reported by
Gordon Royle, see
Issue #222,
and fixed by James D. Mitchell in
PR #223.
In addition, Wilf A. Wilson
fixed a bug
in DigraphNrEdges. This function could previously lead to a crash when given a
digraph whose OutNeighbours contained entries not in IsPlistRep.
This is a minor release that fixes a typo in the documentation of
JohnsonDigraph, and contains some minor tweaks for compatibility with
future versions of GAP.
This is a minor release that updates Digraphs for compatibility with the
upcoming GAP 4.11, and resolves a bug in IsHamiltonianDigraph that could have
lead to the boolean adjacency matrix of a digraph being accidentally modified;
see Issue #191 and
PR #192.
This is a minor release of the Digraphs package, which improves the compatibility of Digraphs with cygwin. In particular, in the Windows installer of the next release of GAP, Digraphs should be included in a pre-compiled and working state. See Issue #177 and PR #178 for more details.
Digraphs now requires version 4.8.2 of the orb package, or newer.
This release contains several substantial new features, and some changes to previous functionality.
The most significant change in behaviour is related to the Digraph6 format used in previous versions of the Digraphs package. This method of encoding directed graphs was developed independently from, but concurrently with, the Digraph6 format introduced by nauty; see Issue #158 for more information. The Digraphs package now uses the nauty format, although digraphs encoded using the old format can still be read in. This incompatibility was reported by Jukka Kohonen, and the changes were made by Michael Young in PR #162.
Other additions and changes are listed below:
Is(Outer)PlanarDigraph,(Outer)PlanarEmbedding,Kuratowski(Outer)PlanarSubdigraph,SubdigraphHomeomorphicToK(23/4/33), andMaximalAntiSymmetricSubdigraph.EmbeddingsDigraphs and
EmbeddingsDigraphsRepresentatives.DigraphColouring was renamed to
DigraphGreedyColouring, and its performance was improved; it now uses
the Welsh-Powell algorithm, which can be accessed directly via
DigraphWelshPowellOrder. The behaviour of DigraphGreedyColouring can be
modified by including an optional second argument; see the
documentation for more information. This work was done by James D.
Mitchell in PR
#144.DigraphShortestPath was introduced by Murray Whyte in PR
#148.IsAntiSymmetricDigraph (with a capital S) was added as a synonym for
IsAntisymmetricDigraph.RandomDigraph now allows a float as its second argument; by James D.
Mitchell in PR
#159.CharacteristcPolynomial for a digraph was added by Luke
Elliott in PR #164.IsVertexTransitive and IsEdgeTransitive for digraphs
were added by Graham Campbell in
PR #165.This release contains bugfixes and a couple of new features.
AsSemigroup and AsMonoid for lattice and semilattice
digraphs were added by Chris Russell in PR
#136.IsDigraphColouring was added by James D.
Mitchell in PR
#145.ArticulationPoints would
sometimes contain repeated vertices (reported by Luke Elliott in Issue
#140, and fixed by
James D. Mitchell in PR
#142).x86intrin.h was unnecessarily being included by the kernel
module of Digraphs (reported by Wilf A. Wilson in Issue
#147, and fixed by
James D. Mitchell in PR
#152).Max Horn also contributed various compatibility and correctness changes to the kernel module of the package, including in PRs #149, #150, and #151.
Digraphs now requires version 4.8.1 of the orb package, or newer.
This release of Digraphs contains some bugfixes, along with the following new features:
Splash is now configurable, thanks to Markus Pfeiffer.IsPartialOrderDigraph, IsPreorderDigraph, and IsQuasiorderDigraph were introduced by Chris Russell, along with the following functions for visualising these kinds of digraphs:
DotPartialOrderDigraphDotPreorderDigraphDotQuasiorderDigraphIsDigraphHomomorphismIsDigraphEpimorphismIsDigraphMonomorphismIsDigraphEndomorphismIsDigraphEmbeddingIsDigraphIsomorphismDigraphs now requires version 4.9.0 of GAP, or newer.
This is a minor release which contains some small adjustments to the build system of the package.
This is a minor release, which contains several bugfixes. The following problems were resolved by James D. Mitchell:
HomomorphismDigraphFinder sometimes failed to find a homomorphism when one existed [Issue #111, reported by Gordon Royle];HomomorphismDigraphFinder was
incomplete [Issue #112]; andThis release contains bugfixes and new features. In particular, it:
ArticulationPoints and IsBiconnectedDigraph [Wilf A. Wilson];IsChainDigraph [Ashley Clayton]; andIsDigraphAutomorphism [Chris Russell].Digraphs now requires version 4.5.1 of the IO package.
The principal change in Digraphs version 0.11.0 is the addition of support for computing automorphisms, canonical labellings, and isomorphisms of digraphs with nauty. This functionality requires the NautyTracesInterface package for GAP, version 0.2 or newer. However, this is not a required package, and the default engine remains bliss. It is possible to specify the engine that is used by Digraphs. These changes to Digraphs were made by James D. Mitchell].
In particular, version 0.11.0 includes the following changes:
BlissAutomorphismGroup and NautyAutomorphismGroup are introduced.DigraphCanonicalLabelling is replaced by BlissCanonicalLabelling and
NautyCanonicalLabelling.BlissCanonicalDigraph and NautyCanonicalDigraph are introduced [Chris
Russell and James D. Mitchell].DigraphsUseNauty and DigraphsUseBliss are introduced.The property IsHamiltonianDigraph and the attribute HamiltonianPath were
added by Luke Elliott. Additionally, this release fixes several bugs, including
one in DigraphSymmetricClosure and one in CompleteDigraph.
Digraphs now requires version 4.4.6 of the IO package.
This is a minor release, which contains performance improvements, and fixes a
bug in Digraph that could cause a segmentation fault.
This release contains new features, bugfixes, and minor improvements to the
documentation. There is a new method for ChromaticNumber, which has better
performance than the previous method
[Julius Jonusas
and James D. Mitchell].
A bug in the code for calculating homomorphisms of digraphs, which could cause
a crash, was resolved [James D. Mitchell].
DotVertexLabelledDigraph.CliqueNumber is introduced.GroupOfCayleyDigraphSemigroupOfCayleyDigraphGeneratorsOfCayleyDigraphAll of the new features were added by James D. Mitchell.
This release introduces several new features.
The following attributes and properties were added by James D. Mitchell:
ArticulationPoints (and its synonym CutVertices)IsBiconnectedDigraphIsCycleDigraphThe following operations related to matchings were added by Isabella Scott and Wilf A. Wilson:
IsMatchingIsPerfectMatchingIsMaximalMatchingThis is a minor release, which updates the README file and updates the list of package authors and contributors.
This release contains new features, several minor bugfixes, and minor improvements to the documentation of the package.
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]:
IsPartialOrderDigraphIsMeetSemilatticeDigraphIsJoinSemilatticeDigraphIsLatticeDigraphPartialOrderDigraphMeetOfVerticesPartialOrderDigraphJoinOfVerticesThis is a minor release, which fixes bugs in DigraphTopologicalSort and
IsAntisymmetricDigraph that could trigger segmentation faults.
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.
AutomorphismGroup and DigraphCanonicalLabelling for a
digraph and a vertex-colouring now accept a multidigraph as their first
argument;IsIsomorphicDigraph and IsomorphismDigraphs now accept
multidigraphs, and they also accept vertex-colourings as optional arguments.IsUndirectedForest is introduced;UndirectedSpanningTree and UndirectedSpanningForest are
introduced; andIsUndirectedSpanningTree and IsUndirectedSpanningForest
are introduced.IsSubdigraph is changed in the case that it is given one or
two multidigraphs.DigraphColouring (and its synonym,
DigraphColoring) is now an attribute.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.
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.
CompleteMultipartiteDigraph is introduced. [Stuart Burrell and Wilf A. Wilson]ReadDIMACSDigraph and WriteDIMACSDigraph are introduced.
[Wilf A. Wilson]ChromaticNumber is introduced. [James D. Mitchell and Wilf A. Wilson]IsDirectedTree and IsUndirectedTree are introduced. [Luke Elliott]IsEulerianDigraphis introduced. [Luke Elliott]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.
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:
DigraphReverse [Wilf A. Wilson]DigraphMaximalCliques [Wilf A. Wilson]AdjacencyMatrixMutableCopy [James D. Mitchell]This release contains some bugfixes, as well as new and changed functionality. Digraphs now requires the Orb package, version 4.7.5 or higher.
DigraphFile and IteratorFromDigraphFile are introduced. [James D. Mitchell]WriteDigraphs and ReadDigraphs can now take a file as a first argument. [James D. Mitchell]DigraphPath is introduced to find a path between two vertices
in a digraph. [Wilf A. Wilson]IteratorOfPaths is introduced to iterate over the paths
between two vertices in a digraph. [Wilf A. Wilson]IsCompleteBipartiteDigraph is introduced. [Wilf A. Wilson]Several bugs related to clique finding have been resolved. [Wilf A. Wilson]
bz2 were previously not (un)compressed when used with
ReadDigraphs and WriteDigraphs. [James D. Mitchell]This is a minor release to fix a bug in DigraphAllSimpleCircuits that failed to
return all simple circuits in some cases Issue 13. Some documentation was also updated.
This is a very minor release to change the version of GAP required.
This is a major release, primarily aimed at incorporating more of the functionality of Grape into Digraphs, as well as fixing some bugs. In this version, we welcomed Jan De Beule to the development team.
DigraphReadDigraphs and WriteDigraphs now have a new output format .p or
.pickle, which allows known automorphisms to be stored with the digraphDigraphDiameterDigraphDualDigraphShortestDistancesDigraph method for a Grape graphGraphInDegreeSequenceOutDegreeSequenceBipartiteDoubleDigraphBooleanAdjacencyMatrixCayleyDigraphDigraphAddAllLoopsDigraphAddEdgeOrbitDigraphAdjacencyFunctionDigraphColoring for a digraphDigraphDegeneracyOrderingDigraphDegeneracyDigraphDistanceSetDigraphGirthDigraphGroupDigraphLayersDigraphLongestSimpleCircuitDigraphOrbitRepsDigraphOrbitsDigraphRemoveEdgeOrbitDigraphSchreierVectorDigraphShortestDistanceDigraphStabilizerDigraphUndirectedGirthDistanceDigraphDoubleDigraphEdgeOrbitsDigraphInDegreeSetIsDigraphEdge for a digraph and a listIsDistanceRegularDigraphIsInRegularDigraphIsOutRegularDigraphIsRegularDigraphJohnsonDigraphLineDigraphLineUndirectedDigraphMaximalSymmetricSubdigraphWithoutLoopsMaximalSymmetricSubdigraphOutDegreeSetRepresentativeOutNeighbours[Jan De Beule, Julius Jonusas, James D. Mitchell, Michael Young, Wilf A. Wilson]
This is another minor release due to some missing build files in the Version 0.3.1 archive.
This is a minor release due to some missing build files in the Version 0.3 archive.
This release contains a number of bugfixes and performance improvements.
DigraphAllSimpleCircuits based
on the algorithm in this paper by Donald B. Johnson. [Stuart Burrell and Wilf A. Wilson]IsBipartiteDigraph and DigraphBicomponents. [Isabella Scott and Wilf A. Wilson]AutomorphismGroup and DigraphCanonicalLabelling can now be used with color classes that are preserved by the permutations acting on a digraph. [James D. Mitchell]TCodeDecoder was made more efficient. [James D. Mitchell]AsTransformation is introduced for digraphs in IsFunctionalDigraph. [James D. Mitchell]The first release.
Pre-release version that was not made publicly available.