The basic support provided by Graph4J addresses the following aspects: creating graphs, multigraphs, pseudographs, directed or undirected, assigning weights and/or labels for vertices and edges, computing the adjacency/cost/incidence matrices, complement and transpose of a graph, line graph, operations such contraction, split, join, union and disjoint union, depth and breadth first search, generators for complete graphs, cycles, paths, trees, wheels, stars, tournaments, regular and random graphs and digraphs with various constraints.
Graph4J contains algorithms for: determining graph measures (min/max/average degrees, number of triangles, etc.), metrics (distances, eccentricities, girth, radius, diameter, periphery, pseudo-periphery, center), cycle detection, testing connectivity, bi-connectivity and strong-connectivity, identifying bipartite and eulerian graphs, topological sorting, acyclic orientation, enumerating maximal cliques, finding single pair, single source and all pairs shortest paths, creating minimum spanning trees, heuristics and exact algorithms for vertex coloring, computing maximum flows, finding vertex separators, etc.
Graph4J has low memory requirements, being able to handle efficiently large graphs with tens or even hundreds of millions of vertices.