JGraphT-A Java Library for Graph Data Structures and Algorithms

Dimitrios Michail, Joris Kinable, Barak Naveh, John V. Sichi

Research output: Contribution to journalArticleAcademicpeer-review

30 Citations (Scopus)


Mathematical software and graph-theoretical algorithmic packages to efficiently model, analyze, and query graphs are crucial in an era where large-scale spatial, societal, and economic network data are abundantly available. One such package is JGraphT, a programming library that contains very efficient and generic graph data structures along with a large collection of state-of-the-art algorithms. The library is written in Java with stability, interoperability, and performance in mind. A distinctive feature of this library is its ability to model vertices and edges as arbitrary objects, thereby permitting natural representations of many common networks, including transportation, social, and biological networks. Besides classic graph algorithms such as shortest-paths and spanning-tree algorithms, the library contains numerous advanced algorithms: graph and subgraph isomorphism, matching and flow problems, approximation algorithms for NP-hard problems such as independent set and the traveling salesman problem, and several more exotic algorithms such as Berge graph detection. Due to its versatility and generic design, JGraphT is currently used in large-scale commercial products, as well as noncommercial and academic research projects. In this work, we describe in detail the design and underlying structure of the library, and discuss its most important features and algorithms. A computational study is conducted to evaluate the performance of JGraphT versus several similar libraries. Experiments on a large number of graphs over a variety of popular algorithms show that JGraphT is highly competitive with other established libraries such as NetworkX or the BGL.

Original languageEnglish
Article number16
Number of pages28
JournalACM Transactions on Mathematical Software
Issue number2
Publication statusPublished - May 2020


  • Algorithmic library
  • data structures
  • graph theory
  • network analysis


Dive into the research topics of 'JGraphT-A Java Library for Graph Data Structures and Algorithms'. Together they form a unique fingerprint.

Cite this