45676
Comment:

← Revision 44 as of 20081114 13:41:50 ⇥
45882
converted to 1.6 markup

Deletions are marked like this.  Additions are marked like this. 
Line 1:  Line 1: 
[[TableOfContents]]  <<TableOfContents>> 
Line 4:  Line 4: 
The SAGE [http://wiki.sagemath.org/graph Graph Theory Project] aims to implement Graph objects and algorithms in ["SAGE"].  The SAGE [[http://wiki.sagemath.org/graphGraph Theory Project]] aims to implement Graph objects and algorithms in [[SAGE]]. 
Line 8:  Line 8: 
We have attempted to make a complete list of existing graph theory software. We posted functionality lists and some algorithm/construction summaries. We are very interested in feedback or lastminute additions, as we are ready to begin [http://wiki.sagemath.org/graph_benchmark benchmarking] our findings.  We have attempted to make a complete list of existing graph theory software. We posted functionality lists and some algorithm/construction summaries. We are very interested in feedback or lastminute additions, as we are ready to begin [[http://wiki.sagemath.org/graph_benchmarkbenchmarking]] our findings. 
Line 15:  Line 15: 
. [http://wxmaxima.sourceforge.net/graphs/ GRAPHS package]  . [[http://wxmaxima.sourceforge.net/graphs/GRAPHS package]] 
Line 17:  Line 17: 
. [https://networkx.lanl.gov/ Link] Seems pretty comprehensive, released under "GNU Lesser General Public License", works on Python $\geq$ 2.3, interfaces with Matplotlib, Pygraphviz, Graphviz, Pydot, numpy or Numeric, Ipython, !SciPy, PyGSL, sAsync, PyYAML: EXCELLENT documentation with links to source code from each function descriptor (TODO: make sense of networkx.utils, networkx.threshold, networkx.generators.small, networkx.me, networkx.mixing, networkx.search_class, networkx.tests); uses pygraphviz to interface to graphviz  . [[https://networkx.lanl.gov/Link]] Seems pretty comprehensive, released under "GNU Lesser General Public License", works on Python $\geq$ 2.3, interfaces with Matplotlib, Pygraphviz, Graphviz, Pydot, numpy or Numeric, Ipython, !SciPy, PyGSL, sAsync, PyYAML: EXCELLENT documentation with links to source code from each function descriptor (TODO: make sense of networkx.utils, networkx.threshold, networkx.generators.small, networkx.me, networkx.mixing, networkx.search_class, networkx.tests); uses pygraphviz to interface to graphviz 
Line 55:  Line 55: 
* Draw networks in 3d with [http://www.vtk.org/ vtk]  * Draw networks in 3d with [[http://www.vtk.org/vtk]] 
Line 58:  Line 58: 
. [http://www.maths.qmul.ac.uk/~leonard/grape/ Link]  . [[http://www.maths.qmul.ac.uk/~leonard/grape/Link]] 
Line 60:  Line 60: 
a. Some of the following is copy/paste directly from L. H. Soicher's stellar [http://www.maths.qmul.ac.uk/~leonard/grape/manual/chapters.htm documentation]  a. Some of the following is copy/paste directly from L. H. Soicher's stellar [[http://www.maths.qmul.ac.uk/~leonard/grape/manual/chapters.htmdocumentation]] 
Line 89:  Line 89: 
. [http://cs.anu.edu.au/~bdm/nauty/ Link]  . [[http://cs.anu.edu.au/~bdm/nauty/Link]] 
Line 103:  Line 103: 
. [http://magma.maths.usyd.edu.au/magma/htmlhelp/text1452.htm Link]  . [[http://magma.maths.usyd.edu.au/magma/htmlhelp/text1452.htmLink]] 
Line 107:  Line 107: 
. one function opens either file or stream, files stored in [http://cs.anu.edu.au/~bdm/data/formats.html Graph6 and Sparse6 format]  . one function opens either file or stream, files stored in [[http://cs.anu.edu.au/~bdm/data/formats.htmlGraph6 and Sparse6 format]] 
Line 117:  Line 117: 
. has kclique, 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,  . has kclique, 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 121:  Line 121: 
. (strongly) connected, components, separable, 2connected, 2components, triconnectivity ([http://magma.maths.usyd.edu.au/magma/htmlhelp/text1466.htm "The lineartime 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."]), kvertex connectivity, vertex separator, kedge connectivity, edge separator  . (strongly) connected, components, separable, 2connected, 2components, triconnectivity ([[http://magma.maths.usyd.edu.au/magma/htmlhelp/text1466.htm"The lineartime 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."]]), kvertex connectivity, vertex separator, kedge connectivity, edge separator 
Line 129:  Line 129: 
. Max flow min cut (2 algorithms: [http://magma.maths.usyd.edu.au/magma/htmlhelp/text1499.htm#15274 Dinic & pushrelabel]), maximum matching for bipartite,  . Max flow min cut (2 algorithms: [[http://magma.maths.usyd.edu.au/magma/htmlhelp/text1499.htm#15274Dinic & pushrelabel]]), maximum matching for bipartite, 
Line 177:  Line 177: 
. [http://documents.wolfram.com/mathematica/BuiltinFunctions/AdvancedDocumentation/DiscreteMath/GraphPlot/ GraphPlot]([http://documents.wolfram.com/mathematica/BuiltinFunctions/AdvancedDocumentation/DiscreteMath/GraphPlot/AdvancedDocumentationGraphPlotReferences.html biblio]) is builtin: also a few functions for "applications" (?); designed to work well with large graphs; also supports graphs from ''Combinatorica''  . [[http://documents.wolfram.com/mathematica/BuiltinFunctions/AdvancedDocumentation/DiscreteMath/GraphPlot/GraphPlot]]([[http://documents.wolfram.com/mathematica/BuiltinFunctions/AdvancedDocumentation/DiscreteMath/GraphPlot/AdvancedDocumentationGraphPlotReferences.htmlbiblio]]) is builtin: also a few functions for "applications" (?); designed to work well with large graphs; also supports graphs from ''Combinatorica'' 
Line 189:  Line 189: 
. distance, pseudodiameter (see [http://documents.wolfram.com/mathematica/BuiltinFunctions/AdvancedDocumentation/DiscreteMath/GraphPlot/AdvancedDocumentationGraphPlotPseudoDiameter.html Documentation])  . distance, pseudodiameter (see [[http://documents.wolfram.com/mathematica/BuiltinFunctions/AdvancedDocumentation/DiscreteMath/GraphPlot/AdvancedDocumentationGraphPlotPseudoDiameter.htmlDocumentation]]) 
Line 191:  Line 191: 
. [http://documents.wolfram.com/mathematica/BuiltinFunctions/AdvancedDocumentation/DiscreteMath/GraphPlot/AdvancedDocumentationGraphPlotTreePlot.html TreePlot] uses the layered drawing algorithm, implements more control:  . [[http://documents.wolfram.com/mathematica/BuiltinFunctions/AdvancedDocumentation/DiscreteMath/GraphPlot/AdvancedDocumentationGraphPlotTreePlot.htmlTreePlot]] uses the layered drawing algorithm, implements more control: 
Line 193:  Line 193: 
. maximum matching for bipartite, [http://documents.wolfram.com/mathematica/BuiltinFunctions/AdvancedDocumentation/DiscreteMath/GraphPlot/AdvancedDocumentationGraphPlotMinCut.html min cut] problem  . maximum matching for bipartite, [[http://documents.wolfram.com/mathematica/BuiltinFunctions/AdvancedDocumentation/DiscreteMath/GraphPlot/AdvancedDocumentationGraphPlotMinCut.htmlmin cut]] problem 
Line 195:  Line 195: 
. [http://documents.wolfram.com/mathematica/BuiltinFunctions/AdvancedDocumentation/DiscreteMath/GraphPlot/AdvancedDocumentationGraphPlotGraphPlotAndGraphPlot3D.html ALGORITHMS] include spring model, springelectrical model, highdimensional 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, PrenticeHall, 1999.); vertex styles and colors, edge styles and colors; function to return coordinates without drawing  . [[http://documents.wolfram.com/mathematica/BuiltinFunctions/AdvancedDocumentation/DiscreteMath/GraphPlot/AdvancedDocumentationGraphPlotGraphPlotAndGraphPlot3D.htmlALGORITHMS]] include spring model, springelectrical model, highdimensional 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, PrenticeHall, 1999.); vertex styles and colors, edge styles and colors; function to return coordinates without drawing 
Line 198:  Line 198: 
a. [http://www.math.uga.edu/~mbaker/REU/maple/laplacianguide.html 'laplacian.mpl']; [http://www.fmf.unilj.si/~mohar/Papers/Spec.pdf here] is a paper on the Laplacian Spectrum  a. [[http://www.math.uga.edu/~mbaker/REU/maple/laplacianguide.html'laplacian.mpl']]; [[http://www.fmf.unilj.si/~mohar/Papers/Spec.pdfhere]] is a paper on the Laplacian Spectrum 
Line 208:  Line 208: 
. (laplacian matrix), effective resistance between vertices, discrete and continuous canonical measure [http://www.math.uga.edu/~mbaker/REU/tex/canonical.pdf#search="graph%20tau" an unrelated explanation?] and tau (also, taushorten "Investigates the behavior of tau as an edge is shortened"), discrete dx measure 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...) 
. (laplacian matrix), effective resistance between vertices, discrete and continuous canonical measure [[http://www.math.uga.edu/~mbaker/REU/tex/canonical.pdf#search="graph%20tau"an unrelated explanation?]] and tau (also, taushorten "Investigates the behavior of tau as an edge is shortened"), discrete dx measure a. [[http://www.cecm.sfu.ca/CAG/papers/GTpaper.pdfGraphTheory]] and [[http://www.cecm.sfu.ca/CAG/papers/GT2006.pdfPart II]] of the paper (haven't yet found the actual package...) 
Line 211:  Line 211: 
a. [http://www.combinatorica.com/ Combinatorica]  for a list of functions, see [http://www.cs.sunysb.edu/~skiena/combinatorica/help.pdf help.pdf], page 1314, 18, 21, 23, 25  for a [http://www.amazon.com/exec/obidos/ASIN/0521806860/ref=nosim/thealgorithmrepo/ book]  a. [[http://www.combinatorica.com/Combinatorica]]  for a list of functions, see [[http://www.cs.sunysb.edu/~skiena/combinatorica/help.pdfhelp.pdf]], page 1314, 18, 21, 23, 25  for a [[http://www.amazon.com/exec/obidos/ASIN/0521806860/ref=nosim/thealgorithmrepo/book]] 
Line 219:  Line 219: 
. [http://networkx.lanl.gov/pygraphviz/ Pygraphviz] is a part of NetworkX, meant to be a python interface to Graphviz . [http://dkbza.org/pydot.html Pydot] is a python interface to Graphviz's dot language . [http://yapgvb.sourceforge.net/ Yet Another Python Graphviz Binding] is yet another acronym, also has boostgraph bindings... 
. [[http://networkx.lanl.gov/pygraphviz/Pygraphviz]] is a part of NetworkX, meant to be a python interface to Graphviz . [[http://dkbza.org/pydot.htmlPydot]] is a python interface to Graphviz's dot language . [[http://yapgvb.sourceforge.net/Yet Another Python Graphviz Binding]] is yet another acronym, also has boostgraph bindings... 
Line 223:  Line 223: 
. [http://www.graphviz.org Link]  . [[http://www.graphviz.orgLink]] 
Line 230:  Line 230: 
. a [http://www.dkbza.org/pydot.html python interface]  . a [[http://www.dkbza.org/pydot.htmlpython interface]] 
Line 233:  Line 233: 
. [http://gato.sourceforge.net/ Link] A tool that animates algorithms, perhaps SAGE cannot actually include right now as is, but license is LGPL, and it requires Python and Tcl/Tk: would be good for educational purposes  . [[http://gato.sourceforge.net/Link]] A tool that animates algorithms, perhaps SAGE cannot actually include right now as is, but license is LGPL, and it requires Python and Tcl/Tk: would be good for educational purposes 
Line 237:  Line 237: 
. [http://www.math.gatech.edu/~chomp/software/ link] GPL, written in C++, several benchmarks on page . application, and C++ [http://www.math.gatech.edu/~chomp/advanced/library.php library]: "The CHomP library allows a C++ programmer to access the data structures and homology computation procedures directly from their own programs, without the need to write data to files and then run homology programs which would read them in turn." (This had worried me at first, because the main programs only take strictly black&white bitmaps as input... RLM) 
. [[http://www.math.gatech.edu/~chomp/software/link]] GPL, written in C++, several benchmarks on page . application, and C++ [[http://www.math.gatech.edu/~chomp/advanced/library.phplibrary]]: "The CHomP library allows a C++ programmer to access the data structures and homology computation procedures directly from their own programs, without the need to write data to files and then run homology programs which would read them in turn." (This had worried me at first, because the main programs only take strictly black&white bitmaps as input... RLM) 
Line 245:  Line 245: 
. [http://www.boost.org/libs/graph/doc/index.html link]: a C++ library with a GPLish license, algorithms:  . [[http://www.boost.org/libs/graph/doc/index.htmllink]]: a C++ library with a GPLish license, algorithms: 
Line 260:  Line 260: 
. [http://keithbriggs.info/very_nauty.html Link]  . [[http://keithbriggs.info/very_nauty.htmlLink]] 
Line 266:  Line 266: 
. [http://cs.anu.edu.au/people/bdm/plantri/ Link] written in C, tested mainly on UNIX, weird license ('free for all purposes other than sale for profit. However, they remain subject to our copyright and are not "public domain".'): interesting note, coauthored by Brendan !McKay, of ''nauty''  . [[http://cs.anu.edu.au/people/bdm/plantri/Link]] written in C, tested mainly on UNIX, weird license ('free for all purposes other than sale for profit. However, they remain subject to our copyright and are not "public domain".'): interesting note, coauthored by Brendan !McKay, of ''nauty'' 
Line 270:  Line 270: 
* see also [http://hep.physics.indiana.edu/~tsulanke/graphs/surftri/ surftri], which generates triangulations of surfaces of higher genus  * see also [[http://hep.physics.indiana.edu/~tsulanke/graphs/surftri/surftri]], which generates triangulations of surfaces of higher genus 
Line 272:  Line 272: 
. [http://graph.seul.org/ link] GPL, C++, [http://www.wxwidgets.org/ wxWidgets]  . [[http://graph.seul.org/link]] GPL, C++, [[http://www.wxwidgets.org/wxWidgets]] 
Line 283:  Line 283: 
. [http://www.mathe2.unibayreuth.de/axel/ews.html Link]  . [[http://www.mathe2.unibayreuth.de/axel/ews.htmlLink]] 
Line 286:  Line 286: 
I. [http://dimacs.rutgers.edu/~berryj/LINK.html (hyper)link]  I. [[http://dimacs.rutgers.edu/~berryj/LINK.html(hyper)link]] 
Line 291:  Line 291: 
. [http://www.informatik.unikoeln.de/abacus/ Link]  . [[http://www.informatik.unikoeln.de/abacus/Link]] 
Line 297:  Line 297: 
. [http://www.math.uniaugsburg.de/~fremuth/goblin.html Link]  . [[http://www.math.uniaugsburg.de/~fremuth/goblin.htmlLink]] 
Line 306:  Line 306: 
. [http://cneurocvs.rmki.kfki.hu/igraph/ Link], open source, written in C, with Python, Ruby and R interfaces.  . [[http://cneurocvs.rmki.kfki.hu/igraph/Link]], open source, written in C, with Python, Ruby and R interfaces. 
Line 309:  Line 309: 
. [http://www.caida.org/tools/visualization/walrus/ link] GPL, written in Java, "best suited to visualizing moderately sized graphs that are nearly trees" (viz only), PRETTY, doesn't work in OS X currently (as of 10/10/06), no functionality  . [[http://www.caida.org/tools/visualization/walrus/link]] GPL, written in Java, "best suited to visualizing moderately sized graphs that are nearly trees" (viz only), PRETTY, doesn't work in OS X currently (as of 10/10/06), no functionality 
Line 311:  Line 311: 
. [http://gvf.sourceforge.net/ Link] Name selfexplanatory. Open source, but written in Java.  . [[http://gvf.sourceforge.net/Link]] Name selfexplanatory. Open source, but written in Java. 
Line 313:  Line 313: 
. [http://jgrapht.sourceforge.net/ Link] JGraphT is a free Java graph library that provides mathematical graphtheory objects and algorithms  . [[http://jgrapht.sourceforge.net/Link]] JGraphT is a free Java graph library that provides mathematical graphtheory objects and algorithms 
Line 315:  Line 315: 
. [http://csbi.sourceforge.net/ Link] Open source java intefaces for supreme graph visualization  . [[http://csbi.sourceforge.net/Link]] Open source java intefaces for supreme graph visualization 
Line 317:  Line 317: 
. [http://jung.sourceforge.net/ Link] Open source java library  . [[http://jung.sourceforge.net/Link]] Open source java library 
Line 319:  Line 319: 
. [http://jdigraph.sourceforge.net/ Link] Open source java library  . [[http://jdigraph.sourceforge.net/Link]] Open source java library 
Line 321:  Line 321: 
. [http://www.wilmascope.org/ Link] a Java3D application which creates real time 3d animations of dynamic graph structures  . [[http://www.wilmascope.org/Link]] a Java3D application which creates real time 3d animations of dynamic graph structures 
Line 323:  Line 323: 
. [http://ostatic.com/110007softwareopensource/nv2d link]  . [[http://ostatic.com/110007softwareopensource/nv2dlink]] 
Line 330:  Line 330: 
. [http://www.jharris.ca/JGraphEd/ Link], Javabased graph editor, entirely GUI, with very basic interface. Good example of a bad interactive environment.  . [[http://www.jharris.ca/JGraphEd/Link]], Javabased graph editor, entirely GUI, with very basic interface. Good example of a bad interactive environment. 
Line 332:  Line 332: 
. [http://www.cs.cmu.edu/~quixote/ Link]  . [[http://www.cs.cmu.edu/~quixote/Link]] 
Line 336:  Line 336: 
. [http://roxgt.sourceforge.net Link]  . [[http://roxgt.sourceforge.netLink]] 
Line 342:  Line 342: 
. [http://www.mathe2.unibayreuth.de/discreta/ Link]  . [[http://www.mathe2.unibayreuth.de/discreta/Link]] 
Line 344:  Line 344: 
. The [http://www.cs.sunysb.edu/~algorith/implement/gtl/implement.shtml Graph Template Library], and extension of the STL... a few basic algorithms. see also [http://www.infosun.fim.unipassau.de/Graphlet/ Graphlet]  . The [[http://www.cs.sunysb.edu/~algorith/implement/gtl/implement.shtmlGraph Template Library]], and extension of the STL... a few basic algorithms. see also [[http://www.infosun.fim.unipassau.de/Graphlet/Graphlet]] 
Line 346:  Line 346: 
. [http://www.diku.dk/geosteiner/ Link]  . [[http://www.diku.dk/geosteiner/Link]] 
Line 352:  Line 352: 
[http://www.diku.dk/geosteiner/LICENSE License]  [[http://www.diku.dk/geosteiner/LICENSELicense]] 
Line 354:  Line 354: 
. [http://graphexploration.cond.org/ link] represents graphs in JUNG, "still a work in progress", most if not all functionality besides visualization reduces to JUNG  . [[http://graphexploration.cond.org/link]] represents graphs in JUNG, "still a work in progress", most if not all functionality besides visualization reduces to JUNG 
Line 356:  Line 356: 
. [http://www.geocities.com/pechv_ru/ Link]  . [[http://www.geocities.com/pechv_ru/Link]] 
Line 374:  Line 374: 
. [http://prolland.free.fr/works/research/dsatphp/dsat.html Link], a program for computing graph colorings, algorithm [http://prolland.free.fr/works/research/dsat/index.html#anchor38034 documentation] in French, input in [http://mat.gsia.cmu.edu/COLOR/general/ccformat.ps DIMACS] format, [http://prolland.free.fr/works/research/dsatphp/dsat.txt source code]  . [[http://prolland.free.fr/works/research/dsatphp/dsat.htmlLink]], a program for computing graph colorings, algorithm [[http://prolland.free.fr/works/research/dsat/index.html#anchor38034documentation]] in French, input in [[http://mat.gsia.cmu.edu/COLOR/general/ccformat.psDIMACS]] format, [[http://prolland.free.fr/works/research/dsatphp/dsat.txtsource code]] 
Line 376:  Line 376: 
I. [http://www.algorithmicsolutions.info/leda_guide/graph_algorithms/graph_draw.html Link]  I. [[http://www.algorithmicsolutions.info/leda_guide/graph_algorithms/graph_draw.htmlLink]] 
Line 386:  Line 386: 
. [http://www.dia.uniroma3.it/~gdt/ Link] Closed source, visualization. OOP hierarchy of graph drawing classes  but we can't see the classes... hence 'useless'.  . [[http://www.dia.uniroma3.it/~gdt/Link]] Closed source, visualization. OOP hierarchy of graph drawing classes  but we can't see the classes... hence 'useless'. 
Line 388:  Line 388: 
. [http://stat.gamma.rug.nl/stocnet/ Link] Social Networks  . [[http://stat.gamma.rug.nl/stocnet/Link]] Social Networks 
Line 390:  Line 390: 
. [http://touchgraph.sourceforge.net/ Link] a GraphLayout library. I can't say much else because the 'CVS + Source' link is dead. Is this a temporary problem or should we completely toss this one?  . [[http://touchgraph.sourceforge.net/Link]] a GraphLayout library. I can't say much else because the 'CVS + Source' link is dead. Is this a temporary problem or should we completely toss this one? 
Line 392:  Line 392: 
. [http://www.sfu.ca/~richards/ Link], Social Network Analysis  . [[http://www.sfu.ca/~richards/Link]], Social Network Analysis 
Line 394:  Line 394: 
. [http://www.yworks.com/en/products_yfiles_about.htm Link], Commercial but pretty visualization  . [[http://www.yworks.com/en/products_yfiles_about.htmLink]], Commercial but pretty visualization 
Line 396:  Line 396: 
. [http://prefuse.org/ link] "information visualization toolkit"  . [[http://prefuse.org/link]] "information visualization toolkit" 
Line 398:  Line 398: 
. [http://sourceforge.net/projects/lgl link] LGL is a compendium of applications for making the visualization of large networks and trees tractable. LGL was specifically motivated by the need to make the visualization and exploration of large biological networks more accessible.  . [[http://sourceforge.net/projects/lgllink]] LGL is a compendium of applications for making the visualization of large networks and trees tractable. LGL was specifically motivated by the need to make the visualization and exploration of large biological networks more accessible. 
Line 400:  Line 400: 
. [http://www.caida.org/tools/utilities/ Link] Defunct  . [[http://www.caida.org/tools/utilities/Link]] Defunct 
Line 402:  Line 402: 
. [http://gravisto.fmi.unipassau.de/ Link]  . [[http://gravisto.fmi.unipassau.de/Link]] 
Line 404:  Line 404: 
. [http://ingrid.ldgo.columbia.edu/ Link]  . [[http://ingrid.ldgo.columbia.edu/Link]] 
Line 407:  Line 407: 
. [http://glaros.dtc.umn.edu/gkhome/views/metis/ Link]  . [[http://glaros.dtc.umn.edu/gkhome/views/metis/Link]] 
Line 411:  Line 411: 
1. [http://www.dtc.umn.edu/publications/reports/2006_03.pdf Documentation here]  1. [[http://www.dtc.umn.edu/publications/reports/2006_03.pdfDocumentation here]] 
Line 413:  Line 413: 
. [http://algo.inria.fr/libraries/software.html Link]  . [[http://algo.inria.fr/libraries/software.htmlLink]] 
Line 416:  Line 416: 
. [http://phalanstere.univmlv.fr/~ace/ACE/3.0/ACE.html Link]  . [[http://phalanstere.univmlv.fr/~ace/ACE/3.0/ACE.htmlLink]] 
Line 419:  Line 419: 
. [http://www.npac.syr.edu/NPAC1/PUB/ranka/part/part.html Link], no software yet, but good references on page: "Efficient methods for graph partitioning and incremental graph partitioning are important for parallelization of a large number of unstructured and/or adaptive applications."  . [[http://www.npac.syr.edu/NPAC1/PUB/ranka/part/part.htmlLink]], no software yet, but good references on page: "Efficient methods for graph partitioning and incremental graph partitioning are important for parallelization of a large number of unstructured and/or adaptive applications." 
Line 421:  Line 421: 
. [http://www.netvis.org/ Link], Social Networks  . [[http://www.netvis.org/Link]], Social Networks 
Line 423:  Line 423: 
. [http://www.netminer.com/NetMiner/home_01.jsp Link], closed source, social networks  . [[http://www.netminer.com/NetMiner/home_01.jspLink]], closed source, social networks 
Line 426:  Line 426: 
. [http://www.cs.sunysb.edu/~algorith/index.html Linky]  . [[http://www.cs.sunysb.edu/~algorith/index.htmlLinky]] 
Line 453:  Line 453: 
. [http://rtm.science.unitn.it/intertools/ InterTools]  . [[http://rtm.science.unitn.it/intertools/InterTools]] 
Line 458:  Line 458: 
. [http://www.cs.cmu.edu/~scandal/alg/separator.html Link]  . [[http://www.cs.cmu.edu/~scandal/alg/separator.htmlLink]] 
Line 463:  Line 463: 
. [http://www.cs.sunysb.edu/~algorith/implement/graphbase/implement.shtml Standford Link]  . [[http://www.cs.sunysb.edu/~algorith/implement/graphbase/implement.shtmlStandford Link]] 
Line 491:  Line 491: 
. [http://www.paddle.mb.ca/G&G/G&G.html Link]  . [[http://www.paddle.mb.ca/G&G/G&G.htmlLink]] 
Line 513:  Line 513: 
. [http://www.ics.uci.edu/~eppstein/PADS/ Some python algorithms]  . [[http://www.ics.uci.edu/~eppstein/PADS/Some python algorithms]] 
Line 538:  Line 538: 
* [http://wwwteo.informatik.unirostock.de/isgci/smallgraphs.html List of small graphs] * [http://citeseer.ist.psu.edu/hansen01computers.html Computers and Discovery in Algebraic Graph Theory] * [http://people.freenet.de/EmdenWeinert/graphs.html Thomas EmdenWeinert's webpage]: many many many many many links and resources * [http://vlado.fmf.unilj.si/vlado/vladonet.htm Vladimir Batagelj's website]: same story * [http://hypergraph.sourceforge.net/ HyperGraph], open source Java library for hypergraphs (might be interesting to browse the source at some point) * [http://glaros.dtc.umn.edu/gkhome/views/cluto/index.html CLUTO]  Family of Data Clustering Software Tools * [http://glaros.dtc.umn.edu/gkhome/views/metis/parmetis/index.html METIS]  Family of Multilevel Partitioning Algorithms: "a family of programs for partitioning unstructured graphs and hypergraphs and computing fillreducing orderings of sparse matrices. The underlying algorithms used by METIS are based on the stateoftheart multilevel paradigm that has been shown to produce high quality results and scale to very large problems." * [http://amalfi.dis.unina.it/graph/ "The Graph Database"] * [http://research.microsoft.com/users/lovasz/geommain.pdf Paper]: Geometric Representations of Graphs, by Lásló Lovász * [http://web.cs.ualberta.ca/~joe/Coloring/ Joe Culberson]'s graph coloring software * [http://www.win.tue.nl/~aeb/graphs/index.html Andries Brouwer]'s collection of various graphs. 
* [[http://wwwteo.informatik.unirostock.de/isgci/smallgraphs.htmlList of small graphs]] * [[http://citeseer.ist.psu.edu/hansen01computers.htmlComputers and Discovery in Algebraic Graph Theory]] * [[http://people.freenet.de/EmdenWeinert/graphs.htmlThomas EmdenWeinert's webpage]]: many many many many many links and resources * [[http://vlado.fmf.unilj.si/vlado/vladonet.htmVladimir Batagelj's website]]: same story * [[http://hypergraph.sourceforge.net/HyperGraph]], open source Java library for hypergraphs (might be interesting to browse the source at some point) * [[http://glaros.dtc.umn.edu/gkhome/views/cluto/index.htmlCLUTO]]  Family of Data Clustering Software Tools * [[http://glaros.dtc.umn.edu/gkhome/views/metis/parmetis/index.htmlMETIS]]  Family of Multilevel Partitioning Algorithms: "a family of programs for partitioning unstructured graphs and hypergraphs and computing fillreducing orderings of sparse matrices. The underlying algorithms used by METIS are based on the stateoftheart multilevel paradigm that has been shown to produce high quality results and scale to very large problems." * [[http://amalfi.dis.unina.it/graph/"The Graph Database"]] * [[http://research.microsoft.com/users/lovasz/geommain.pdfPaper]]: Geometric Representations of Graphs, by Lásló Lovász * [[http://web.cs.ualberta.ca/~joe/Coloring/Joe Culberson]]'s graph coloring software * [[http://www.win.tue.nl/~aeb/graphs/index.htmlAndries Brouwer]]'s collection of various graphs. 
Contents
 Introduction
 Existing Graph Theory software
 Algorithm Repositories
 Functionality categories
 Miscellaneous Flora and Fauna
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.
We have attempted to make a complete list of existing graph theory software. We posted functionality lists and some algorithm/construction summaries. We are very interested in feedback or lastminute additions, as we are ready to begin benchmarking our findings.
Existing Graph Theory software
Software included with SAGE
GAP
 (see GRAPE noting that GRAPE is not standard in SAGE)
Maxima
NetworkX
Link Seems pretty comprehensive, released under "GNU Lesser General Public License", works on Python \geq 2.3, interfaces with Matplotlib, Pygraphviz, Graphviz, Pydot, numpy or Numeric, Ipython, SciPy, PyGSL, sAsync, PyYAML: EXCELLENT documentation with links to source code from each function descriptor (TODO: make sense of networkx.utils, networkx.threshold, networkx.generators.small, networkx.me, networkx.mixing, networkx.search_class, networkx.tests); uses pygraphviz to interface to graphviz
Representation
in Graph and DiGraph, "data structures based on an adjacency list implemented as a nodecentric dictionary of dictionaries. The dictionary contains keys corresponding to the nodes and the values are dictionaries of neighboring node keys with the value None (the Python None type). This allows fast addition, deletion and lookup of nodes and neighbors in large graphs"
"The XGraph and XDiGraph classes are extensions of the Graph and DiGraph classes... The key difference is that an XGraph edge is a 3tuple e=(n1,n2,x), representing an undirected edge between nodes n1 and n2 that is decorated with the object x. Here n1 and n2 are (hashable) node objects and x is a (not necessarily hashable) edge object. Since the edge is undirected, edge (n1,n2,x) is equivalent to edge (n2,n1,x). An XDiGraph edge is a similar 3tuple e=(n1,n2,x), with the additional property of directedness. I.e. e=(n1,n2,x) is a directed edge from n1 to n2 decorated with the object x, and is not equivalent to the edge (n2,n1,x). Whether a graph or digraph allow selfloops or multiple edges is determined at the time of object instantiation via specifying the parameters selfloops=True/False and multiedges=True/False."
Storage/Pipes (see networkx.io)
 'convert' module converts NetworkX graphs to and from other formats: python dict of lists, python dict of dicts, numpy matrices, scipy sparse matrices, pygraphviz; works with python pickling; Import and export networkx networks to dot format using pydot or pygraphviz,
Construction
add path, add cycle, incremental construction, subgraphs, copy, directed \leftrightarrow undirected, balanced rtree of height h, barbell graph, complete graph, complete bipartite, circular ladder graph, cycle, hierarchically constructed DorogovtsevGoltsevMendes graph, empty graph, grid graph, ndim grid graph, hypercube, ladder graph, lollipop graph (K_n \# P_m), null graph (#verts = 0), path graph (P_n), star graph, trivial graph (#verts = 1), wheel graph, (disjoint) union, cartesian product, composition, complement, emptycopy, relabel nodes by mapping or functions, convert labels to integers
Invariants
 density,
Predicates
 standard predicates, directed acyclic,
Subgraphs and Subsets
find cliques (Bron & Kerbosch), maximal and bipartite clique graph constructor, project bipartite onto one part (connected if they share a common Top/Bottom Node), clique number and number of maximal cliques, find cliques containing specified node, maximum locally (k,l) connected subgraph
Adjacency, etc.
 neighbors, degree, valid degree sequence?, create degree sequence, double edge swap,
Connectivity
 find kcores of a graph, is (k,l) connected, (number) components,
Paths, etc.
eccentricity, diameter, periphery, radius, center, shortest path (length & many variants, including Dijkstra, FloydWarshall), dictionary of all shortest path lengths, list of vertices in topological sort order, predecessors,
Trees, etc.
 tree class, rooted/directed/forests (experimental classes)
Optimization
clustering: number of triangles for given nodes, clustering coefficients (fraction of triads, which is edge vertex edge, that are triangles), transitivity (3*triangles/triads); breadthfirst and depthfirst search, Helper queues for use in graph searching; LIFO: Last in first out queue (stack), FIFO: First in first out queue, Priority(fcn): Priority queue with items are sorted by fcn, Random: Random queue, q.append(item)  add an item to the queue, q.extend(items)  equivalent to: for item in items: q.append(item), q.pop()  return the top item from the queue, len(q)  number of items in q (also q.len());
Algebra
 adjacency matrix, (normalized) Laplacian,
Morphisms/Group Actions
 nonisomorphic checker (does not check isomorphism; only conclusive in the notisomorphic direction), three versions: fast, faster and fastest
Symmetry
 betweenness, edge, degree, and closeness centrality
Generation/Random Graphs
random bipartite graph from two degree sequences (four versions: including regular, 'reverse' and alternating HavelHakimi style), bipartite preferential attachment, bipartite with fixed degree, projection of bipartite onto selected nodes, random pseudograph with given degree sequence, random graph with expected degree given, HavelHakimi for simple graphs, tree with given degree sequence, generate a graph with given degree sequence maximizing smetric, smetric (the sum of the product deg(u)*deg(v) for every edge uv in G (Reference unpublished li2005, author Lun Li and David Alderson and John C.)), digraphs: growing network, growing network with redirection or copying; random geometric graph in the unit cube, G_{n,p} ErdösRényi (two versions, normal and fast), NewmanWattsStrogatz small world graph ("First create a ring over n nodes. Then each node in the ring is connected with its k nearest neighbors. Then shortcuts are created by adding new edges as follows: for each edge uv in the underlying "nring with k nearest neighbors"; with probability p add a new edge uw with randomlychosen existing node w. In contrast with watts_strogatz_graph(), no edges are removed."), WattsStrogatz small world graph ("First create a ring over n nodes. Then each node in the ring is connected with its k nearest neighbors. Then shortcuts are created by rewiring existing edges as follows: for each edge uv in the underlying "nring with k nearest neighbors"; with probability p replace uv with a new edge uw with randomlychosen existing node w. In contrast with newman_watts_strogatz_graph(), the random rewiring does not increase the number of edges."), G_{n,d} ("Return a random regular graph of n nodes each with degree d... n*d must be even"), BarabásiAlbert preferential attachment ("A graph of n nodes is grown by attaching new nodes each with m edges that are preferentially attached to existing nodes with high degree."), "Holme and Kim algorithm for growing graphs with powerlaw degree distribution and approximate average clustering" (see P. Holme and B. J. Kim, "Growing scalefree networks with tunable clustering", Phys. Rev. E 2002 vol 65 #2), random lobster ("A caterpillar is a tree that reduces to a path graph when pruning all leaf nodes (p2=0). A lobster is a tree that reduces to a caterpillar when pruning all leaf nodes."), random shell graph (see networkx.generators.random_graphs), tree with given powerlaw distribution ("A trial powerlaw degree sequence is chosen and then elements are swapped with new elements from a powerlaw distribution until the sequence makes a tree (#edges=#nodes1).") or its degree sequence,
Database
 atlas function returns all graphs on up to 7 vertices (see "An Atlas of Graphs" by Ronald C. Read and Robin J. Wilson, Oxford University Press, 1998.)
Visualization
 layout: circular, shell, random, spring model, spectral layout, Power Iteration method to find smallest eigenvectors of Laplacian(G)
 intervace to pygraphviz
 Draw networks with matplotlib (pylab)
Draw networks in 3d with vtk
Software optional in SAGE
GRAPE
says David Joyner, "An official GAP package which must be installed separately. GRAPE is primarily designed for the construction and analysis of finite graphs related to groups, designs, and geometries. It has about 50 graphtheoretical functions written in GAP. However, 6 of these call (directly or indirectly) B. D. McKay's program nauty."
Some of the following is copy/paste directly from L. H. Soicher's stellar documentation
Construction
 In general GRAPE deals with finite directed graphs which may have loops but have no multiple edges. However, many GRAPE functions only work for simple graphs. In GRAPE, a graph gamma is stored as a record, with mandatory components isGraph, order, group, schreierVector, representatives, and adjacencies. The only mandatory component which may change once a graph is initially constructed is adjacencies. This is the most general and useful way of constructing a graph in GRAPE:
 Graph( G, L, act, rel )
 Graph( G, L, act, rel, invt )
 First suppose that the optional boolean parameter invt is unbound or has value false. Then L should be a list of elements of a set S on which the group G acts, with the action given by the function act. The parameter rel should be a boolean function defining a Ginvariant relation on S (so that for g in G, x,y in S, rel(x,y) if and only if rel(act(x,g),act(y,g))). Then the function Graph returns a graph gamma which has as vertexnames (an immutable copy of)
 centerlineConcatenation( Orbits( G, L, act ) ) (the concatenation of the distinct orbits of the elements in L under G), and for vertices v,w of gamma, [v,w] is an edge if and only if
centerlinerel( VertexName( gamma, v ), VertexName( gamma, w ) ).
 centerlineConcatenation( Orbits( G, L, act ) ) (the concatenation of the distinct orbits of the elements in L under G), and for vertices v,w of gamma, [v,w] is an edge if and only if
Other construction functions: EdgeOrbitsGraph, NullGraph, CompleteGraph, JohnsonGraph, CayleyGraph, AddEdgeOrbit, RemoveEdgeOrbit, AssignVertexNames And functions to construct new graphs from old: InducedSubgraph, DistanceSetInduced, DistanceGraph, ComplementGraph, PointGraph, EdgeGraph, SwitchedGraph, UnderlyingGraph, QuotientGraph, BipartiteDouble, GeodesicsGraph, CollapsedIndependentOrbitsGraph CollapsedCompleteOrbitsGraph, NewGroupGraph
 In general GRAPE deals with finite directed graphs which may have loops but have no multiple edges. However, many GRAPE functions only work for simple graphs. In GRAPE, a graph gamma is stored as a record, with mandatory components isGraph, order, group, schreierVector, representatives, and adjacencies. The only mandatory component which may change once a graph is initially constructed is adjacencies. This is the most general and useful way of constructing a graph in GRAPE:
Representation
 Pretty thorough list of functions to inspect a graph. Should be useful in initial benchmark testing. Named vertices stood out as far as representation.
Morphisms/Group Actions
 Functions to determine regularity properties of graphs, Automorphism groups and isomorphism testing for graphs. Partial Linear Spaces.
Subgraphs and Subsets
 Some Special Vertex Subsets of a Graph:
ConnectedComponent
ConnectedComponents
 Bicomponents
DistanceSet
 Layers
IndependentSet
 Complete Subgraphs
CompleteSubgraphs
CompleteSubgraphsOfGivenSize
 Some Special Vertex Subsets of a Graph:
Colorings
 Vertex Colorings
Nauty
 Subset of GRAPE, which is why GRAPE is not be standard in SAGE as is
 Benchmark program
Source posted, but no public license  should contact Brendan McKay
 Written in portable subset of C, python wrapper already in existence (see pynauty)
 Both MAGMA and GRAPE (GAP package) use nauty
Construction
 includes gtools  quick generators for nonisomorphic graphs, also generates bipartite graphs and digraphs
Invariants
 canonical labelling
Morphisms/Group Actions
 Computing automorphism groups of graphs and digraphs, isomorphism testing
Software interfaced in SAGE
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 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 nonnbrs of a vertex; disjoint unions, edge unions; complete unions; cartesian, lexicographic and tensor products; nth 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); nth odd graph; nth triangular graph; nth square lattice graph; Clebsch, Shrikhande, Gewirtz and Chang graphs;
Decorations (Coloring, Weight, Flow, etc.)
 Vertices have labels only; Edges have labels, capacity(nonnegative 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 kclique, clique number, all cliques, maximum clique ("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, 2connected, 2components, triconnectivity ("The lineartime 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."), kvertex connectivity, vertex separator, kedge 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: Dinic & pushrelabel), 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
Contains the 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.
innbrs(arrivals), outnbrs(departures), degree sequence, endpoints, graphical ("tests whether intlist is the degree sequence of a simple graph"), edgenbrs, vertnbrs, indegree, outdegree, 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 allterminal reliability polynomial of G, and gives the probability that G is connected when each edge operates independently with probability p."),
Connectivity
components, edgeconnectivity, 2components, 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 MatrixTree 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 nowherezero 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
GraphPlot(biblio) is builtin: 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, pseudodiameter (see Documentation)
Trees, etc.
TreePlot uses the layered drawing algorithm, implements more control:
Optimization
maximum matching for bipartite, min cut problem
Visualization
ALGORITHMS include spring model, springelectrical model, highdimensional 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, PrenticeHall, 1999.); vertex styles and colors, edge styles and colors; function to return coordinates without drawing
Extensions of interfaced software in SAGE
Maple: 'laplacian.mpl'
'laplacian.mpl'; here is a paper on the Laplacian Spectrum
Storage/Pipes
 creation of certain spreadsheets, such as known eigenvalues and eigenvalues of increasing subdivisions of the graph
Construction
 banana graphs, star graphs, bouquets and flowers, hypercubes, supercirc (see docs), subdivide edges into n edges, contract, assign directions (apparently in a random way)
Decorations (Coloring, Weight, Flow, etc.)
 normalilze (so sum of weights = 1)
Algebra
 discrete laplacian matrix (this function may fight with the builtin laplacian in 'linalg'), compute its eigenvalues given a measure,
Topology
(laplacian matrix), effective resistance between vertices, discrete and continuous canonical measure an unrelated explanation? and tau (also, taushorten "Investigates the behavior of tau as an edge is shortened"), discrete dx measure
GraphTheory and Part II of the paper (haven't yet found the actual package...)
Mathematica: Combinatorica
Combinatorica  for a list of functions, see help.pdf, page 1314, 18, 21, 23, 25  for a book
For a comparison of functionality in Combinatorica and SAGE, see the CombinatoricaCompare page.
Other (useful) software
Python Libraries
pygraphlib
 contains pygraph and pydot
 spanning trees by dijkstra and prim, shortest path, depth and breadth first (yep, that's it)
Pygraphviz, pydot, YAPGVB
Pygraphviz is a part of NetworkX, meant to be a python interface to Graphviz
Pydot is a python interface to Graphviz's dot language
Yet Another Python Graphviz Binding is yet another acronym, also has boostgraph bindings...
GraphViz
 open source, Common Public License Version 1.0 (BSD style)
 poorly documented, at least on the web
Visualization
 DOT makes "hierarchical" drawings of directed graphs. Algorithm aims edges in same direction and attempts to not cross edges and reduce length.
 NEATO uses spring method, via the KamadaKawai algorithm (statistical multidimensional scaling)
 fdp also uses the spring model, via the FruchtermanReingold heuristic (handles larger graphs and undirected, clustered graphs)
 "options for colors, fonts, tabular node layouts, line styles, hyperlinks, and custom shapes."
Gato
Link A tool that animates algorithms, perhaps SAGE cannot actually include right now as is, but license is LGPL, and it requires Python and Tcl/Tk: would be good for educational purposes
 seems that you can write your algorithm in one window and watch it go, supports 3d
C/C++
CHomP
link GPL, written in C++, several benchmarks on page
application, and C++ library: "The CHomP library allows a C++ programmer to access the data structures and homology computation procedures directly from their own programs, without the need to write data to files and then run homology programs which would read them in turn." (This had worried me at first, because the main programs only take strictly black&white bitmaps as input... RLM)
Homology computation: compute the homology groups over \mathbf{Z} or \mathbf{Z}_p of a chain complex, as well as the homs induced in homology by chain maps; compute the (relative) homology of a set of cubes or a cubical set, as well as the homomorphism induced in homology by an acyclic combinatorial cubical multivalued map; compute the homology of a finite abstract simplicial complex or relative homology of a pair of simplicial complexes; construct a chain selector of an almost perfect combinatorial cubical multivalued map this program was written by Marcin Mazur and Jacek Szybowski; find an index pair with Andrzej Szymczak's algorithm
 Data verification: verify whether a combinatorial cubical multivalued map is suitable for the (relative) homology computation with homcubes; verify whether a combinatorial cubical multivalued map satisfy the almostperfectnessassumption of the chmap program
 Converting data files: convert a set of cubes between the format used in the Bill Kalies' chom program and the format used in this Homology Package; extract a list of squares from an uncompressed Windows bitmap file; convert a set of cubical cells into a set of cubes in the input file, if any cell spans across several cubes, then all the cubes it contains are written to the output file; convert a chain map from the output format of the chmap program written by Marcin Mazur and Jacek Szybowski to the input format for homchain, which is necessary if one wants to compute the homomorphism induced in homology by such a map; convert a combinatorial cubical multivalued map from the format used in chmap by Marcin Mazur and Jacek Szybowski to the format used in the Homology Package, in which each cube is mapped to a set of cubes, not necessarily convex; convert a set of cubes to a set of corresponding cubical cells; create a map whose graph is stored as a set of cubes, or create the combinatorial cubical multivalued indentity map on the given set of cubes; extract the domain, image, and/or graph of a combinatorial cubical multivalued map; extract a list of pixels or voxels from a raw bitmap data; draw a 2dimensional projection of a set of cubes onto one of the planes spanned by selected two axes
 Data manipulation: create a chain complex of a set of cubes; create chain maps corresponding to the projections of a map whose graph is given onto domain and codomain; compute the difference of two sets of cubes; divide a set of cubes into subsets separated by hyperplanes; create a chain complex of a simplicial complex; compute the restriction of a map to the given subset of its domain; compute the common part of given sets of cubes; split a set of cubes into connected components; compute the union of given sets of cubes
 Tools and test programs
Boost C++ Libraries
link: a C++ library with a GPLish license, algorithms:
 Dijkstra's Shortest Paths
 BellmanFord Shortest Paths
 Johnson's AllPairs Shortest Paths
 Kruskal's Minimum Spanning Tree
 Prim's Minimum Spanning Tree
 Connected Components
 Strongly Connected Components
 Dynamic Connected Components (using Disjoint Sets)
 Topological Sort
 Transpose
 Reverse Cuthill Mckee Ordering
 Smallest Last Vertex Ordering
 Sequential Vertex Coloring
Very_nauty
 designed to be compatible with nauty
 C library
Subgraphs and Subsets
 cliques in G(n,p), # of graphs on n nodes with chromatic number k, # of graphs on n nodes with clique number k, new data on chromatic number and cliqe number, Lambert's w function
plantri/fullgen
Link written in C, tested mainly on UNIX, weird license ('free for all purposes other than sale for profit. However, they remain subject to our copyright and are not "public domain".'): interesting note, coauthored by Brendan McKay, of nauty
Generation/Random Graphs
 plantri: "exactly one member of each isomorphism class is output without the need for storing them. The speed of generation is more than 100,000 graphs per second in most cases, so extremely large classes of graph can be exhaustively listed.", classes include planar triangulations, quadrangulations, simple graphs, triangulations of a disc, planar cubic and quartic graphs
 fullgen generates fullerenes
see also surftri, which generates triangulations of surfaces of higher genus
GraphThing
 Adding, deleting and moving of vertices and edges.
 Loading and saving of graphs.
 Graph complements, induced subgraphs and line graphs.
 Quick creation of many common graphs (complete, cycle, null, star, etc.).
 Determination of shortest path, connectivity and Eulericity.
 BFS, DFS and Minimum Spanning Tree.
 Adjacency matrix (including exponents) and degree sequence.
 Chromatic polynomial and chromatic number.
 Network algorithms: Maximum network flow.
EWS
 auf Deutsche
LINK
 Free, but not open source
 C++ libraries
 Doc's are PS, which upsets my computer very much!!! (ie  I can't read them so I don't actually know that much about LINK)
ABACUS (A BranchAnd!CUt System)
 open source, GNU Lesser GPL v2.1
 C++ libraries
Optimization
 BranchandBound algorithm, linear programming relaxations allow for dynamic generation of cutting planes or columns)
GOBLIN
 LGPL C++ library with Tcl/Tk interface
Representation
 Adjacency matrix or incidence list
Storage
 Has its own format
Optimization
 "Focuses on" combinatorical optimization algorithms, especially network flow and load balancing
igraph
Link, open source, written in C, with Python, Ruby and R interfaces.
JAVA
CAIDA's Walrus
link GPL, written in Java, "best suited to visualizing moderately sized graphs that are nearly trees" (viz only), PRETTY, doesn't work in OS X currently (as of 10/10/06), no functionality
The Graph Visualization Framework
Link Name selfexplanatory. Open source, but written in Java.
JGraphT
Link JGraphT is a free Java graph library that provides mathematical graphtheory objects and algorithms
GINY
Link Open source java intefaces for supreme graph visualization
JUNG
Link Open source java library
JDigraph
Link Open source java library
WilmaScope
Link a Java3D application which creates real time 3d animations of dynamic graph structures
nv2d
Visualization
 Java visualization, designed to run in a browser
 Spring model visualization
Construction
 Data from GraphML, Nfile
JGraphEd
Link, Javabased graph editor, entirely GUI, with very basic interface. Good example of a bad interactive environment.
JIGGLE
Visualization
 Java visualization applet, poor interface, minimal, source available
RoxGT
 Claims to be a complete extensible graph framework, written in Java. No documentation.
And more
These need to be organized...
DISCRETA
GTL
The Graph Template Library, and extension of the STL... a few basic algorithms. see also Graphlet
GeoSteiner
Construction A set of points in different formats
Trees, etc.
 Euclidean Steiner Tree Problem in the Plane
 Rectilinear Steiner Tree Problem in the Plane
 Minimum Spanning Tree Problem in Hypergraphs
GUESS
link represents graphs in JUNG, "still a work in progress", most if not all functionality besides visualization reduces to JUNG
GRIN
 for windows only
 not opensource, but free download
Connectivity
 bridges and cutpoints
Paths, etc.
 Paths and Cycles (Eulerian and Hamiltonian), Shortest Paths, Max Capacity Path, K Shortest paths, Critical path
Trees, etc.
 Minimal spanning tree
Optimization
 Max Flow
Morphisms/Group Actions
 Automorphism group
Topology
 Metrics of the graph Density, Undensity and so on...)
Visualization
 2d only, Clipboard edit, decomposition of edges, resize
DSATUR
Link, a program for computing graph colorings, algorithm documentation in French, input in DIMACS format, source code
LEDA
 Commercial, but supposedly fast
Morphisms / Group Actions
 Module graph and subgraph isomorphisms
Needs a Functionality Category
 Curved Geometry: Polygons with Circular Arcs
 Module Compression
 Module Cryptography
 Static Graphs
GDToolkit
Link Closed source, visualization. OOP hierarchy of graph drawing classes  but we can't see the classes... hence 'useless'.
StOCNET
Link Social Networks
TouchGraph
Link a GraphLayout library. I can't say much else because the 'CVS + Source' link is dead. Is this a temporary problem or should we completely toss this one?
Vancouver Network Analysis Team
Link, Social Network Analysis
yFiles
Link, Commercial but pretty visualization
prefuse
link "information visualization toolkit"
LGL (Large Graph Layout)
link LGL is a compendium of applications for making the visualization of large networks and trees tractable. LGL was specifically motivated by the need to make the visualization and exploration of large biological networks more accessible.
Otter
Link Defunct
Gravisto
INGRID
Seems geared for climate modeling. Written in PostScript (???)
METIS
Paths
 Claims to be fast at partitioning using various algorithms
 Fillreducing ordering algorithms on sparse matrix representations, running a fillreducing ordering on a matrix increases algorithm efficiency.
Algolib
 Appears to be for general combinatorics (gen. functions, mostly) Doesn't seem to do graph theory.
ACE
 MAPLE Package for computer algebra and combinatorics. No longer being maintained.
Scalable Libraries for Graph Partitioning
Link, no software yet, but good references on page: "Efficient methods for graph partitioning and incremental graph partitioning are important for parallelization of a large number of unstructured and/or adaptive applications."
Netvis Module
Link, Social Networks
Cyram Netminer
Link, closed source, social networks
Algorithm Repositories
Stony Brook
 Polynomial time
 Connected Components
 Topological Sorting
 Minimum Spanning Tree
 Shortest Path
 Transitive Closure and Reduction
 Matching
 Eulerian Cycle / Chinese Postman
 Edge and Vertex Connectivity
 Network Flow
 Drawing Graphs Nicely
 Drawing Trees
 Planarity Detection and Embedding
 NP
 Clique
 Independent Set
 Vertex Cover
 Traveling Salesman Problem
 Hamiltonian Cycle
 Graph Partition
 Vertex Coloring
 Edge Coloring
 Graph Isomorphism
 Steiner Tree
 Feedback Edge/Vertex Set
 Polynomial time
InterTools
 Maximum Clique in Graphs (MAXCLIQUE)
 Graph Partitioning (equicut)
 Quadratic Assignment Problem (QAP)
Graph Partitioners
 Coordinate Bisection
 Random Circles
 Spectral Bisection
GraphBase
Generations/Random Graphs
 Generating Graphs
 Random Number Generation
Database
 Graph Data Structures
Trees, etc.
 Minimum Spanning Tree
Paths, etc.
 Hamiltonian Cycle
Optimization
 Matching
 Shortest Path
 Priority Queues
Connectivity
 Edge and Vertex Connectivity
 Connected Components
Topology
 Topological Sorting
Morphisms/Group Actions
 Generating Permutations
Colorings
 Generating Partitions
Needs a Functionality Category
 Feedback Edge/Vertex Set
 Voronoi Diagrams
 Cryptography
Groups & Graphs
 free download, but no mention of source or license
 no internet doc's
links out to papers on algorithms (references Brendan McKay's Practical Graph Isomorphism paper)
 Algorithms:
Morphisms/Group Actions
 Graph Isomorphism
 Permutations Groups
Paths, etc.
 Hamilton Cycles
 Long Paths
Embeddings
 Planarity Test
 Planar Graph Layout
 Torus Maps
Subgroups/Subsets
 kFactors
Visualization
 Draw Symmetric
Needs a Functionality Category
 Projective Configurations
Dr. Epstein
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
Miscellaneous Flora and Fauna
Thomas EmdenWeinert's webpage: many many many many many links and resources
Vladimir Batagelj's website: same story
HyperGraph, open source Java library for hypergraphs (might be interesting to browse the source at some point)
CLUTO  Family of Data Clustering Software Tools
METIS  Family of Multilevel Partitioning Algorithms: "a family of programs for partitioning unstructured graphs and hypergraphs and computing fillreducing orderings of sparse matrices. The underlying algorithms used by METIS are based on the stateoftheart multilevel paradigm that has been shown to produce high quality results and scale to very large problems."
Paper: Geometric Representations of Graphs, by Lásló Lovász
Joe Culberson's graph coloring software
Andries Brouwer's collection of various graphs.