Boost is great. But one of the reasons we start NetworkX was to be
"Python-based" and not just a wrapper to another low-level library in
C or C++. Aren't there already Python bindings for boost?
Aric
http://www.boost.org/doc/libs/1_45_0/libs/python/doc/index.html
We have discussed this and there is an open ticket for creating a C
version of the classes (not using Boost though).
https://networkx.lanl.gov/trac/ticket/206
We did explore C language versions of the base classes, but with
dictionary-of-dictionary data structures you aren't going to do much
(any?) better than Python's implementation without a lot of work.
Certainly if you restrict the type of the nodes to integers and don't allow
extra data on nodes or edges, etc you can make much faster and more
memory efficient code for a graph data structure. But I think that
points to considering a Cython implementation.
> I usually work on (tens of thousands of nodes), any algorithm too much
> beyond n**2 tend to be just on the edge of frustratingly slow. Just a
> thought, might be a useful branch...
Writing algorithms in C or Cython (even using the existing NetworkX
Python classes) will definitely provide some speed-up. But of course
eventually nothing is going to solve your problem of running large
problems with algorithms that scale worse than n**2 in the number of
nodes.
Aric
Dan