Clustering Massive Graphs
Partitioning large connected graphs into clusters.
Achieves 3 objectives:
Linux systems nowadays ship with a native gcc c++11 complier. However, this is not installed by default. To do this a comprehensive guide may be found here:
For other OS:
Development of this binary has been done purely using C++. Since this is the engine on which the main framework for graph exploration is run, we wanted the code to be as optimized and efficient as possible and hence the use of C++ as opposed to Java or Python.
The results look quite promising for an algorithm that tries to emulate k-means. For smaller graphs that are clearly separable the algorithm works spectacularly well. For more complex denser graphs, the clustering isn’t as clean. This is however, on purpose since for some requirements of the project, dense hairballs of vertices needed to be broken up as symmetrically as possible i.e the entire hairball shouldn’t be one cluster. Therefore, sometimes clusters look like apple pies with m&ms.
Each colour represents a cluster. However, since this is a screenshot of a 3D graph visualization some clusters look embedded in one another.
Bear in mind that this package just gives you the clusters and clusterheads. The visualization for this was done using viz.js, the code for that isn’t attached.
Algorithm Creator: Prof. James Abello (Rutgers University)
Developed as a part of the Danish Project.