English

Graph4J -- A computationally efficient Java library for graph algorithms

Mathematical Software 2023-08-22 v1 Data Structures and Algorithms

Abstract

Graph algorithms play an important role in many computer science areas. In order to solve problems that can be modeled using graphs, it is necessary to use a data structure that can represent those graphs in an efficient manner. On top of this, an infrastructure should be build that will assist in implementing common algorithms or developing specialized ones. Here, a new Java library is introduced, called Graph4J, that uses a different approach when compared to existing, well-known Java libraries such as JGraphT, JUNG and Guava Graph. Instead of using object-oriented data structures for graph representation, a lower-level model based on arrays of primitive values is utilized, that drastically reduces the required memory and the running times of the algorithm implementations. The design of the library, the space complexity of the graph structures and the time complexity of the most common graph operations are presented in detail, along with an experimental study that evaluates its performance, when compared to the other libraries. Emphasis is given to infrastructure related aspects, that is graph creation, inspection, alteration and traversal. The improvements obtained for other implemented algorithms are also analyzed and it is shown that the proposed library significantly outperforms the existing ones.

Keywords

Cite

@article{arxiv.2308.09920,
  title  = {Graph4J -- A computationally efficient Java library for graph algorithms},
  author = {Cristian Frăsinaru and Emanuel Florentin Olariu},
  journal= {arXiv preprint arXiv:2308.09920},
  year   = {2023}
}