There are packages like, Combinatorica in Mathematica, GA, SA, PSO can be comparatively easily done in MATLAB, C++ has boost, Java has JGraphT and so on and on. My question is,

How do Graph Theorists carry out large computational experiments?

What languages or packages or libraries do they usually use? Is their any general preferences?

Do they use a combination of many sporadic resources? Like use something that is good at plotting, then use some other thing that is good for numerical solutions etc?

Where from you get Hard-Instances ?

Background:
I'm assigned to work on a GT problem named 'Degree Constrained Minimum Spanning Tree'. I want to study, implement and compare current algorithms. As I've been studying, I come to observe most of the algorithms are : Heuristics, Distributed Algorithms, Genetic Algorithms, Linear Programming (Narula-Ho) etc. Some uses methods called 'Particle Swarm Optimization', 'Simulated Annealing' and 'Ant Colony Optimization'. As far as I know MATLAB has built in routines for GA, SA, PSO, ACO etc but don't have any graph theory package. Combinatorica seems very good package but I don't have any access to it's accompanying book 'Computational Discrete Mathematics'. I don't know MATLAB or Mathematica.

Since you do not tell us what you need, it is impossible to answer! (The question in the title, on the other hand, has surely only the possible answer "No", for trivial reasons)
–
Mariano Suárez-Alvarez♦May 28 '10 at 7:34

@Jon : Nope! I need to experiment theorems with a sufficient enough tool, that will not boggle me down to it's acronyms. :) Update: Sagemath is free and has GT packages. But, again, my internet is too slow to download all that 2 GB! :'(
–
deletedMay 30 '10 at 8:32

6 Answers
6

As TheMadman mentionned in a comment, Sagemath has an impressive Graph library. I have been working on it for quite a while, and I expect you wouldn't find anywhere else the list of methods it has.

I don't think I already wrote a solver for a degree-constrained spanning tree, but I definitely implemented a degree-constrained subgraph there. As Mixed Integer Linear Programming is easily available, something like 20 lines of code are enough to get an exact solver for the min degree spanning tree problem anyway.

You will find help of its methods (and so the list of them) at this address :

Boost has an extensive graph library. If you're more of a python maven, then David Eppstein's PADS library is quite extensive. But from your description, and the choice of heuristics you're looking at, not clear why you want a graph theory package, as opposed to a general set of heuristics and some adjacency list representation.

well, i'm a newbie. and i really don't know what to do! i just know there are several existing solutions to the problem i'm dealing with. and i need to implement and compare them. how? i don't know. i saw a book on all those optimization algos using MATLAB. and found mathematica have combinatorica as a special graph theory package consisting 450 function. like it a random graph generator function. so i can create random graphs with it and then run those optimization algos on these graphs and see what happen. but creation and visualization of user defined graphs in combinatorica is hard.
–
deletedJun 16 '10 at 15:52

Thanks. jGraphT is good too. But, I'm too newbie to use it. They use generics and all sort of java acronyms. I wish I could have some tool, that would let me keep my concentration on GT, not on it's implementation.
–
deletedMay 28 '10 at 15:18

I wouldn't claim that it's complete, as I've only used parts of it, but QuickGraph is an excellent package for .NET/C#. Besides a wide range of mathematical/algorithmic tools, it also has layout algorithms and imports/exporters for various formats.