We currently have a dynamically updated network graph with around 1,500 nodes and 2,000 edges. It’s ever-growing. Our current layout engine uses Prefuse – the force directed layout in particular – and it takes about 10 minutes with a hefty server to get a nice, stable layout.
I’ve looked a little GraphViz‘s sfpd algorithm, but haven’t tested it yet…
Are there faster alternatives I should look at?
- I don’t care about the visual appearance of the nodes and edges – we process that separately – just putting
x, yon the nodes. - We do need to be able to tinker with the layout properties for specific parts of the graph, for instance, applying special tighter or looser springs for certain nodes.
Thanks in advance, and please comment if you need more specific information to answer!
EDIT: I’m particularly looking for speed comparisons between the layout engine options. Benchmarks, specific examples, or just personal experience would suffice!
I would have a look at OGDF, specifically http://www.ogdf.net/doku.php/tech:howto:frcl
I have not used OGDF, but I do know that Fast Multipole Multilevel is a good performant algorithm and when you’re dealing with the types of runtimes involved with force directed layout with the number of nodes you want, that matters a lot.
Why, among other reasons, that algorithm is awesome: Fast Multipole method. The fast multipole method is a matrix multiplication approximation which reduces the O() runtime of matrix multiplication for approximation to a small degree. Ideally, you’d have code from something like this: http://mgarland.org/files/papers/layoutgpu.pdf but I can’t find it anywhere; maybe a CUDA solution isn’t up your alley anyways.
Good luck.