Section: New Software and Platforms


The high performance graph library for Java

Functional Description

Grph is an open-source Java library for the manipulation of graphs. Its main design objectives are to make it simple to use and extend, efficient, and, according to its initial motivation: useful in the context of graph experimentation and network simulation. Grph also has the particularity to come with tools like an evolutionary computation engine, a bridge to linear solvers, a framework for distributed computing, etc.

Grph achieves great efficiency through the use of multiple code optimization techniques such as multi-core parallelism, caching, performant data structures and use of primitive objects, interface to CPLEX linear solver, exploitation of low-level processor caches, on-the-fly compilation of specific C/C++ code, etc.

Unlike other graph libraries which impose the user to first decide if he wants to deal with directed, undirected, hyper (or not) graph, the model offered by Grph is unified in a very general class that supports mixed graphs made of undirected and directed simple or hyper edges.

We have identified more than 600 users of Grph since 2013. Inside Inria we collaborate with the Aoste EPI, for example we recently added a new algorithm (proposed by N. Cohen / LRI) for iterating over the cycles of a given graph in the TimeSquare tool. We also have integrated the discrete-events simulation engine of DRMSim and some dynamic models (evolution of the connectivity with the mobility of nodes) to Grph . Grph includes bridges to other graph libraries such as JUNG, JGraphT, CORESE (a software developed by the WIMMICS team Inria-I3S), LAD (C. Solnon, LIRIS), Nauty (B. D. McKay) or Sagemath. L. Viennot has proposed an implementation of the 4-sweep diameter algorithm designed at LIAFA .