# An algorithm to efficiently draw a extremely large graph in real time

Are there any algorithms to draw a billion node graph or to aggregate the information? The idea would be to allow for it to be parallelized using map reduce so it could be done in realtime

I was wondering if there were any other algorithms? A google search turned up nothing.

Very large graph drawing I have found are as follows

Below is a sketch of an algorithm I thought up.

Specifically one that you can pan around and zoom? I thought of the following algorithm.

1. Take a graph layout algorithm (a force directed layout algorithm)
2. Create a window of locality using a graph metric that you define
3. Draw everything in an epsilon of that graph metric.
4. Iterate the window throughout a n-dimentional space. Where n is defined as the amount of data points you have and a tag is a $S \in$ the set of strings. (vertex, edge, $tag_{1}$, ... \$tag_{n})

--Begin amended algorithm--

Step 5 is due to @vzn answer: Add a visualization of local regions. Therefore we define a region as a set of points that are "close" due to some locality measure. Pagerank is an example so you have a pagerank of 2 you are in the region.

• esp for very large graphs it may be better to utilize domain-specific aspects/features/approaches rather than a generic visualization pkg which might not pick up on those aspects. – vzn Jul 2 '12 at 14:41
• – vzn Jul 2 '12 at 14:44
• Just drawing a graph (with any number of nodes) with no restrictions on quality metrics -- e.g. minimized number of edge crossings, minimized sum of edge lengths -- is trivial in an algorithmic sense: essentially all you have to do is read the input in whatever form it's given (which takes linear time). So why a billion nodes? What does panning and zooming have to do with it? – Huck Bennett Jul 3 '12 at 0:51
• @HuckBennett Okay, I rewrote the question to address your points. – Joshua Herman Jul 3 '12 at 12:35

a billion node graphs have probably not been visualized much and are right on the edge of feasibility and an active area of research. the approach would generally have to depend on the unique data characteristics to reveal the features that are relevant/key for that dataset. assuming you mean in 3d. there are at least two roughly independent hard parts of your request

• realtime visualization of large dataset

• visualizing a very large graph (not nec realtime)

for realtime visualization of a very large graph one could use different approaches. you mention panning and zooming. you do not mention if you want to visualize only local regions. if you want global visualization, either some kind of aggregation method or high performance backend would be required (ie large distributed system).

a reasonable approach would be developing some method of aggregating mass "nearby/related" nodes into representative groups and then visualizing the connectivity of this "super graph" instead. here are some references

 Drawing Large Graphs by Low-Rank Stress Majorization Khoury, Hu et al

 Multilevel Agglomerative Edge Bundling for Visualizing Large Graphs Gansner, Hu et al

 ZAME: Interactive Large-Scale Graph Visualization Elmqvist et al

here is a recent successful example/application/breakthrough discovery that primate brain connectivity (with about 10^10 neurons) follows a grid pattern, by Wedeen et al, based on enhanced MRI mapping/visualization