Size: 10410
Comment:
|
Size: 13365
Comment:
|
Deletions are marked like this. | Additions are marked like this. |
Line 1: | Line 1: |
The SAGE Graph Theory Project aims to implement Graph objects and algorithms in ["SAGE"]. The following is a survey of existing Graph Theory software. | == Introduction == The SAGE Graph Theory Project aims to implement Graph objects and algorithms in ["SAGE"]. The main people working on this project are Emily Kirkman and Robert Miller. == Survey of existing Graph Theory software == |
Line 17: | Line 23: |
. one function opens either file or stream, files stored in <a href="http://cs.anu.edu.au/~bdm/data/formats.html">Graph6 and Sparse6 format</a> | . one function opens either file or stream, files stored in [http://cs.anu.edu.au/~bdm/data/formats.html Graph6 and Sparse6 format] |
Line 19: | Line 25: |
. From matrix; from edge tuples; from vertex neighbors; from edges of other graphs; subgraphs; quotient graphs; incremental construction; complement; contraction; breaking edges; line graph; switch nbrs for non-nbrs of a vertex; disjoint unions, edge unions; complete unions; cartesian, lexicographic and tensor products; n-th power (same vert set, incident iff dist <= n); graph <-> digraph; Cayley graph constructor; Schreier graph constructor; Orbital graph constructor; Closure graph constructor (given G, add edges to make G invariant under a given permutation group); Paley graphs and tournaments; graphs from incidence structures; converse(reverse digraph); n-th odd graph; n-th triangular graph; n-th square lattice graph; Clebsch, Shrikhande, Gewirtz and Chang graphs; | . From matrix; from edge tuples; from vertex neighbors; from edges of other graphs; subgraphs; quotient graphs; incremental construction; complement; contraction; breaking edges; line graph; switch nbrs for non-nbrs of a vertex; disjoint unions, edge unions; complete unions; cartesian, lexicographic and tensor products; n-th power (same vert set, incident iff dist $\leq$ n); graph $\leftrightarrow$ digraph; Cayley graph constructor; Schreier graph constructor; Orbital graph constructor; Closure graph constructor (given G, add edges to make G invariant under a given permutation group); Paley graphs and tournaments; graphs from incidence structures; converse(reverse digraph); n-th odd graph; n-th triangular graph; n-th square lattice graph; Clebsch, Shrikhande, Gewirtz and Chang graphs; |
Line 27: | Line 33: |
. has k-clique, clique number, all cliques, maximum clique (<a href="http://magma.maths.usyd.edu.au/magma/htmlhelp/text1473.htm">"When comparing both algorithms in the situation where the problem is to find a maximum clique one observes that in general BranchAndBound does better. However Dynamic outperforms BranchAndBound when the graphs under consideration are large (more then 400 vertices) random graphs with high density (larger than 0.5%). So far, it can only be said that the comparative behaviour of both algorithms is highly dependent on the structure of the graphs."</a>), independent sets and number, | . has k-clique, clique number, all cliques, maximum clique ([http://magma.maths.usyd.edu.au/magma/htmlhelp/text1473.htm "When comparing both algorithms in the situation where the problem is to find a maximum clique one observes that in general BranchAndBound does better. However Dynamic outperforms BranchAndBound when the graphs under consideration are large (more then 400 vertices) random graphs with high density (larger than 0.5%). So far, it can only be said that the comparative behaviour of both algorithms is highly dependent on the structure of the graphs."]), independent sets and number, |
Line 31: | Line 37: |
. (strongly) connected, components, separable, 2-connected, 2-components, triconnectivity (<a href="http://magma.maths.usyd.edu.au/magma/htmlhelp/text1466.htm">"The linear-time triconnectivity algorithm by Hopcroft and Tarjan [HT73] has been implemented with corrections of our own and from C. Gutwenger and P. Mutzel [GM01]. This algorithm requires that the graph has a sparse representation."</a>), k-vertex connectivity, vertex separator, k-edge connectivity, edge separator | . (strongly) connected, components, separable, 2-connected, 2-components, triconnectivity ([http://magma.maths.usyd.edu.au/magma/htmlhelp/text1466.htm "The linear-time triconnectivity algorithm by Hopcroft and Tarjan (HT73) has been implemented with corrections of our own and from C. Gutwenger and P. Mutzel (GM01). This algorithm requires that the graph has a sparse representation."]), k-vertex connectivity, vertex separator, k-edge connectivity, edge separator |
Line 39: | Line 45: |
. Max flow min cut (2 algorithms: <a href="http://magma.maths.usyd.edu.au/magma/htmlhelp/text1499.htm#15274">Dinic & push-relabel</a>), maximum matching for bipartite, | . Max flow min cut (2 algorithms: [http://magma.maths.usyd.edu.au/magma/htmlhelp/text1499.htm#15274 Dinic & push-relabel]), maximum matching for bipartite, |
Line 45: | Line 51: |
. interfaces <i>nauty</i> | . interfaces ''nauty'' |
Line 51: | Line 57: |
. interfaces <i>nauty</i> | . interfaces ''nauty'' |
Line 55: | Line 61: |
I. Maple: '''networks''' package, which is included: | I. Maple: '''networks''' package, which includes: |
Line 67: | Line 75: |
. components, edge-connectivity, 2-components, count minimal cutsets, rank ("The rank of an edgeset e is the number of vertices of G minus the number of components of the subgraph induced by e."), Whitney rank polynomial ("The rank polynomial is a sum over all subgraphs H of G of x^(rank(G) - rank(H)) y^corank(H)."), | . components, edge-connectivity, 2-components, count minimal cutsets, rank ("The rank of an edgeset e is the number of vertices of G minus the number of components of the subgraph induced by e."), Whitney rank polynomial ("The rank polynomial is a sum over all subgraphs H of G of $x^{(rank(G) - rank(H))} y^{corank(H)}$."), |
Line 71: | Line 79: |
. ancestor, daughter, count spanning trees (Kirchoff Matrix-Tree theorem), cycle base ("A spanning tree is found, and fundcyc() is then used to find all fundamental cycles with respect to this tree. They are returned as a set of cycles with each cycle being represented by a set of edges."), edge disjoint spanning tree, shortest path spanning tree, min weight spanning tree, Tutte polynomial ("The Tutte polynomial is a sum over all maximal forests H of G of t^ia(H) z^ea(H) where ia(H) is the internal activity of H and ea(H) is the external activity of H.") | . ancestor, daughter, count spanning trees (Kirchoff Matrix-Tree theorem), cycle base ("A spanning tree is found, and fundcyc() is then used to find all fundamental cycles with respect to this tree. They are returned as a set of cycles with each cycle being represented by a set of edges."), edge disjoint spanning tree, shortest path spanning tree, min weight spanning tree, Tutte polynomial ("The Tutte polynomial is a sum over all maximal forests H of G of $t^{ia(H)} z^{ea(H)}$ where $ia(H)$ is the internal activity of H and $ea(H)$ is the external activity of H.") |
Line 87: | Line 95: |
I. Mathematica: [http://documents.wolfram.com/mathematica/Built-inFunctions/AdvancedDocumentation/DiscreteMath/GraphPlot/ GraphPlot] ([http://documents.wolfram.com/mathematica/Built-inFunctions/AdvancedDocumentation/DiscreteMath/GraphPlot/AdvancedDocumentationGraphPlotReferences.html biblio]) is built-in: also a few functions for "applications" (?); designed to work well with large graphs; also supports graphs from ''Combinatorica'' 1. '''Representation''' . graph simply ''is'' an adjacency matrix (could be sparse), or a list of rules (e.g. {1->2, 2->3, 3->4, 4->1}) 1. '''Construction''' . N/A (see representation) 1. '''Predicates''' . vertex list (apparently only nontrivial when graph is a rule list, see representation) 1. '''Subgraphs and Subsets''' . maximal independent vertex sets and edge sets, 1. '''Connectivity''' . list strongly connected components, 1. '''Paths, etc.''' . distance, pseudo-diameter (see [http://documents.wolfram.com/mathematica/Built-inFunctions/AdvancedDocumentation/DiscreteMath/GraphPlot/AdvancedDocumentationGraphPlotPseudoDiameter.html Documentation]) 1. '''Trees, etc.''' . [http://documents.wolfram.com/mathematica/Built-inFunctions/AdvancedDocumentation/DiscreteMath/GraphPlot/AdvancedDocumentationGraphPlotTreePlot.html TreePlot] uses the layered drawing algorithm, implements more control: 1. '''Optimization''' . maximum matching for bipartite, [http://documents.wolfram.com/mathematica/Built-inFunctions/AdvancedDocumentation/DiscreteMath/GraphPlot/AdvancedDocumentationGraphPlotMinCut.html min cut] problem 1. '''Visualization''' . [http://documents.wolfram.com/mathematica/Built-inFunctions/AdvancedDocumentation/DiscreteMath/GraphPlot/AdvancedDocumentationGraphPlotGraphPlotAndGraphPlot3D.html ALGORITHMS] include spring model, spring-electrical model, high-dimensional embedding (random seeds can be given for spring models, link includes options for the spring models); tree algorithms include radial drawing, layered drawing (see G. Di Battista, P. Eades, R. Tamassia, and I. G. Tollis, Algorithms for the Visualization of Graphs, Prentice-Hall, 1999.); vertex styles and colors, edge styles and colors; function to return coordinates without drawing A. Extensions of software that SAGE interfaces with I. Magma I. Maple a. [http://www.math.uga.edu/~mbaker/REU/maple/laplacian-guide.html 'laplacian.mpl'] a. [http://www.cecm.sfu.ca/CAG/papers/GTpaper.pdf GraphTheory] and [http://www.cecm.sfu.ca/CAG/papers/GT2006.pdf Part II] of the paper (haven't yet found the actual package...) |
|
Line 88: | Line 121: |
a. [http://www.combinatorica.com/ Combinatorica] A. Software that SAGE can now include as is (not as an optional package...) A. Software that SAGE should include (or maybe interface with, or include as optional), pending stuff (e.g. licensing) A. Software that is incompatible with SAGE but still useful A. Apparently useless / and/or misc. / and/or etc. |
|
Line 89: | Line 127: |
I. mwrank I. Octave I. Tachyon Ray Tracer A. Software that SAGE can now include as is A. Software that SAGE should include (or maybe interface with), pending stuff (e.g. licensing) A. Software that is incompatible with SAGE but still useful Functionality categories: |
== Functionality categories == |
Introduction
The SAGE Graph Theory Project aims to implement Graph objects and algorithms in ["SAGE"].
The main people working on this project are Emily Kirkman and Robert Miller.
Survey of existing Graph Theory software
- Software included with SAGE
- GAP
- Maxima
- Singular
- PARI, MWRANK, NTL
- Matplotlib
- GSL, Numeric
- Software SAGE interfaces with (but does not include)
[http://magma.maths.usyd.edu.au/magma/htmlhelp/text1452.htm Magma]
Representation
- Sparse support; function computes memory requirement for graph with n verts and m edges; consists of graph itself, vertex set, and edge set
Storage/Pipes
one function opens either file or stream, files stored in [http://cs.anu.edu.au/~bdm/data/formats.html Graph6 and Sparse6 format]
Construction
From matrix; from edge tuples; from vertex neighbors; from edges of other graphs; subgraphs; quotient graphs; incremental construction; complement; contraction; breaking edges; line graph; switch nbrs for non-nbrs of a vertex; disjoint unions, edge unions; complete unions; cartesian, lexicographic and tensor products; n-th power (same vert set, incident iff dist \leq n); graph \leftrightarrow digraph; Cayley graph constructor; Schreier graph constructor; Orbital graph constructor; Closure graph constructor (given G, add edges to make G invariant under a given permutation group); Paley graphs and tournaments; graphs from incidence structures; converse(reverse digraph); n-th odd graph; n-th triangular graph; n-th square lattice graph; Clebsch, Shrikhande, Gewirtz and Chang graphs;
Decorations (Coloring, Weight, Flow, etc.)
- Vertices have labels only; Edges have labels, capacity(non-negative integers, loops=0) and weights(totally ordered ring);
Invariants
- #verts, #edges; characteristic polynomial; spectrum
Predicates
- 2 verts incident, 2 edges incident, 1 vertex and 1 edge incident, subgraph, bipartite, complete, Eulerian, tree, forest, empty, null, path, polygon, regular
Subgraphs and Subsets
has k-clique, clique number, all cliques, maximum clique ([http://magma.maths.usyd.edu.au/magma/htmlhelp/text1473.htm "When comparing both algorithms in the situation where the problem is to find a maximum clique one observes that in general BranchAndBound does better. However Dynamic outperforms BranchAndBound when the graphs under consideration are large (more then 400 vertices) random graphs with high density (larger than 0.5%). So far, it can only be said that the comparative behaviour of both algorithms is highly dependent on the structure of the graphs."]), independent sets and number,
Adjacency, etc.
(in- & out-) degree, degree vector, valence (if regular), vertex nbrs, edge nbrs, bipartition, dominating sets
Connectivity
(strongly) connected, components, separable, 2-connected, 2-components, triconnectivity ([http://magma.maths.usyd.edu.au/magma/htmlhelp/text1466.htm "The linear-time triconnectivity algorithm by Hopcroft and Tarjan (HT73) has been implemented with corrections of our own and from C. Gutwenger and P. Mutzel (GM01). This algorithm requires that the graph has a sparse representation."]), k-vertex connectivity, vertex separator, k-edge connectivity, edge separator
Paths, etc.
- distance and geodesic, diameter and corr. path, ball and sphere, distance partition, equitable partition, girth and corr. cycle
Trees, etc.
- spanning tree, breadth first and depth first searches, rooted, root, parent, vertex paths
Colorings(see also Decorations)
- chromatic number and index, optimal vertex and edge colorings, chromatic polynomial
Optimization
Max flow min cut (2 algorithms: [http://magma.maths.usyd.edu.au/magma/htmlhelp/text1499.htm#15274 Dinic & push-relabel]), maximum matching for bipartite,
Embedding (Planar graphs, etc.)
- planarity, Kuratowski subgraphs, faces of a planar graph, embedding info as orientation of edges from a vertex
Algebra
- adjacency matrix, distance matrix, incidence matrix, intersection matrix
Morphisms/Group Actions
interfaces nauty
Symmetry
- vertex, edge and distance transitivity; orbit partitions; primitivity; symmetric; distance regularity and intersection array
Geometry
- Go back and forth between incidence and coset geometries and their graphs; finite planes;
Generation/Random Graphs
interfaces nauty
Database
- database interface, strongly regular graph DB, random graph from DB, slick implementation of for loops ("for G in D do ... end for;")
Maple: networks package, which includes:
Representation
- ?
Construction
- new (0 verts), void (n verts, 0 edges), incremental construction, complement, complete, contraction, hypercubes, cycle, petersen, cube, icosahedron, dodecahedron, octahedron, tetrahedron, simplify a multigraph, union, subgraphs,
Decorations (Coloring, Weight, Flow, etc.)
- vertex weights default to 0, edge weights default to 1 (can be any valid maple expression)
Invariants
- characteristic polynomial
Adjacency, etc.
in-nbrs(arrivals), out-nbrs(departures), degree sequence, endpoints, graphical ("tests whether intlist is the degree sequence of a simple graph"), edge-nbrs, vert-nbrs, in-degree, out-degree, max & min degree, edge span & span polynomial ("The span polynomial in variable p gives the probability that G is spanning when each edge operates with probability p.", "When G is connected, this is the all-terminal reliability polynomial of G, and gives the probability that G is connected when each edge operates independently with probability p."),
Connectivity
components, edge-connectivity, 2-components, count minimal cutsets, rank ("The rank of an edgeset e is the number of vertices of G minus the number of components of the subgraph induced by e."), Whitney rank polynomial ("The rank polynomial is a sum over all subgraphs H of G of x^{(rank(G) - rank(H))} y^{corank(H)}."),
Paths, etc.
- diameter, fundcyc ("Given a subset e of edges forming a unicyclic subgraph of a graph G, the edges forming the unique cycle are returned as a set. It is assumed that only one cycle is present."), girth, find path from a to b,
Trees, etc.
ancestor, daughter, count spanning trees (Kirchoff Matrix-Tree theorem), cycle base ("A spanning tree is found, and fundcyc() is then used to find all fundamental cycles with respect to this tree. They are returned as a set of cycles with each cycle being represented by a set of edges."), edge disjoint spanning tree, shortest path spanning tree, min weight spanning tree, Tutte polynomial ("The Tutte polynomial is a sum over all maximal forests H of G of t^{ia(H)} z^{ea(H)} where ia(H) is the internal activity of H and ea(H) is the external activity of H.")
Colorings
- chromatic polynomial,
Optimization
- maximum flow (flow), Dinic algorithm for max flow (see Magma), flow polynomial ("The flow polynomial in variable h gives the number of nowhere-zero flows on G with edge labels chosen from integers modulo h."), minimum cut,
Embedding (Planar graphs, etc.)
- isplanar,
Algebra
- acycpoly ("The acyclicity polynomial in variable p gives the probability that G is acyclic when each edge operates with probability p."), adjacency matrix, distance table (allpairs- optional table gives shortest path trees, rooted at each vertex), incidence matrix,
Generation/Random Graphs
- random graphs- specify #verts and prob of edge occuring, or #verts and #edges
Database
- show command shows a table of known information about a network
Visualization
- plots graphs either in lines (Linear) or in concentric circles (Concentric), ability to give specific graphs specific plotting procedures, 3d plots ("The location of the vertices of the graph is determined as follows. Let A be the adjacency matrix of G and let u, v and w be three eigenvectors of A with corresponding second, third, and fourth largest eigenvalue in absolute value. Then the (x,y,z) coordinates of the ith vertex of G is (u[i],v[i],w[i])."; "Sometimes other symmetries in the graph can be seen by using other eigenvectors. If the optional argument eigenvectors = [e1, e2, e3] is specified, where e1, e2, and e3 are vertex numbers (integers from 1 through the number of vertices), the eigenvectors corresponding to the eigenvalues of these relative magnitudes are used.")
Mathematica: [http://documents.wolfram.com/mathematica/Built-inFunctions/AdvancedDocumentation/DiscreteMath/GraphPlot/ GraphPlot] ([http://documents.wolfram.com/mathematica/Built-inFunctions/AdvancedDocumentation/DiscreteMath/GraphPlot/AdvancedDocumentationGraphPlotReferences.html biblio]) is built-in: also a few functions for "applications" (?); designed to work well with large graphs; also supports graphs from Combinatorica
Representation
graph simply is an adjacency matrix (could be sparse), or a list of rules (e.g. {1->2, 2->3, 3->4, 4->1})
Construction
- N/A (see representation)
Predicates
- vertex list (apparently only nontrivial when graph is a rule list, see representation)
Subgraphs and Subsets
- maximal independent vertex sets and edge sets,
Connectivity
- list strongly connected components,
Paths, etc.
distance, pseudo-diameter (see [http://documents.wolfram.com/mathematica/Built-inFunctions/AdvancedDocumentation/DiscreteMath/GraphPlot/AdvancedDocumentationGraphPlotPseudoDiameter.html Documentation])
Trees, etc.
[http://documents.wolfram.com/mathematica/Built-inFunctions/AdvancedDocumentation/DiscreteMath/GraphPlot/AdvancedDocumentationGraphPlotTreePlot.html TreePlot] uses the layered drawing algorithm, implements more control:
Optimization
maximum matching for bipartite, [http://documents.wolfram.com/mathematica/Built-inFunctions/AdvancedDocumentation/DiscreteMath/GraphPlot/AdvancedDocumentationGraphPlotMinCut.html min cut] problem
Visualization
[http://documents.wolfram.com/mathematica/Built-inFunctions/AdvancedDocumentation/DiscreteMath/GraphPlot/AdvancedDocumentationGraphPlotGraphPlotAndGraphPlot3D.html ALGORITHMS] include spring model, spring-electrical model, high-dimensional embedding (random seeds can be given for spring models, link includes options for the spring models); tree algorithms include radial drawing, layered drawing (see G. Di Battista, P. Eades, R. Tamassia, and I. G. Tollis, Algorithms for the Visualization of Graphs, Prentice-Hall, 1999.); vertex styles and colors, edge styles and colors; function to return coordinates without drawing
- Extensions of software that SAGE interfaces with
- Magma
- Maple
[http://www.math.uga.edu/~mbaker/REU/maple/laplacian-guide.html 'laplacian.mpl']
[http://www.cecm.sfu.ca/CAG/papers/GTpaper.pdf GraphTheory] and [http://www.cecm.sfu.ca/CAG/papers/GT2006.pdf Part II] of the paper (haven't yet found the actual package...)
- Mathematica
[http://www.combinatorica.com/ Combinatorica]
- Software that SAGE can now include as is (not as an optional package...)
- Software that SAGE should include (or maybe interface with, or include as optional), pending stuff (e.g. licensing)
- Software that is incompatible with SAGE but still useful
- Apparently useless / and/or misc. / and/or etc.
Functionality categories
Representation
Storage/Pipes
Construction
Decorations (Coloring, Weight, Flow, etc.)
Invariants
Predicates
Subgraphs and Subsets
Adjacency, etc.
Connectivity
Paths, etc.
Trees, etc.
Colorings
Optimization
Embedding (Planar graphs, etc.)
Algebra
Morphisms/Group Actions
Symmetry
Geometry
Topology
Generation/Random Graphs
Database
Visualization