< Home | JGraphT
JGraphT Logo

JGraphT Logo

a Java library of graph theory data structures and algorithms

now with Python bindings too!


any object can be used for vertex and edge types, with full type safety via generics
edges can be directed or undirected, weighted or unweighted
simple graphs, multigraphs, and pseudographs
unmodifiable graphs allow modules to provide “read-only” access to internal graphs
listenable graphs allow external listeners to track modification events
live subgraph views on other graphs
compositions and converter views for combining and adapting graphs
customizable incidence and adjacency representations


specialized iterators for graph traversal (DFS, BFS, etc)
algorithms for path finding, clique detection, isomorphism detection, coloring, common ancestors, tours, connectivity, matching, cycle detection, partitions, cuts, flows, centrality, spanning, and the list goes on
live adapters to other graph libraries such as JGraphX visualization and Guava Graphs
generators and transforms


designed for performance, with near-native speed in many cases
adapters for memory-optimized fastutil representation
sparse representations for immutable graphs

Fork me on GitHub