Detailed Feature Comparison

The following table compares the best graph libraries available, showing which feature is available in which library (the Google Sheets version is available here).
Since the libraries are evolving, new features are inserted, and documentation is not always up-to-date, I kindly ask you to comment if you find a mistake.


igraph Boost Networkit Snap Graph-tool Sage
Distances





Diameter x
x
Easy x
Dijkstra shortest paths x x

x x
Bellman-Ford shortest paths x x

x Ticket
Johnson shortest paths x x



Floyd-Warshall shortest paths




x
Radius x


Easy x
Dominators Only in C x

x
Visits





BFS x x x x x x
DFS Only in C x
x x x
LexBFS




x
LexDFS





Kruskal minimum spanning tree
x

x
Prim's Minimum Spanning Tree x x



Anf



x
A*
x



Flow / cuts





All minimal separators x




Max flow / min cut x x Only in C Only in C x x
Multiple cut




x
Maximum cut




x
Connected components





CC x x x x x x
SCC x x x x x x
BCC x x

x x
Edge connectivity x x


x
Vertex connectivity x



x
K core x x x x x x
Transitive closure
x

x x
Transitive reduction
x


x
Centrality





Betweenness x x x x x x
Betweenness (approximate)

x x
x
Closeness x

x x x
Edge betweenness x x
x
x
Eigenvector centrality x
x x x Easy
Pagerank x x x x
Easy
Personalized pagerank x




Topological sort x x


x
HubsAndAuthorities x

x x
Katz



x
Measures





Assortativity x


x
Bibcoupling (similarity of neighbors) x


x
Cocitation (similarity of neighbors) x


x
Burt's constraint score x




Diversity (entropy of edges incident to a vertex) x




Local clustering coefficient x x x x x x
Clustering coefficient x x x x x x
Eigenvalues/Eigenvectors With Numpy
x x
x
Tests





Eulerian




x
Planar
x

x x
Circular planar




x
Chordal Only in C



x
Circulant




x
Interval




x
Gallai tree




x
Equitable




x
Communities





Clauset x
x x

Infomap (Rosvall, Bergstrom) x




Leading eigenvector (Newman) x

Easy

Label propagation (Raghavan, Albert, Kumara) x
x


Multilevel (Blondel, Guillaume, Lambiotte, Lefebvre) x




Optimal modularity x
x
x
Edge betweenness x

x

Spinglass (Reichardt, Bornholdt) x




Walktrap (Pons, Latapy) x




Isomorphism





Are isomorphic x x
x x x
Is subgraph x x
x x x
Count isomorphisms x

x x
Count subisomorphisms x


x x
Clique number x



x
Girth (minimum cycle) x



x
Independent set x


x x
Largest cliques x



x
Largest independent sets x



x
Maximal cliques x



x
Maximal independent sets x




Generators





Preferential Attachment x
x x x x
Chung-Lu x
x

x
Clustered Random Graph

x


Configuration Model x
x

x
Dorogovtsev Mendes

x


Forest Fire x
x x

Erdos-Renyi x x x x
x
Havel-Hakimi

x


PubWeb (geometric on torus)

x


Recursive matrix

x x
Easy
Newman-Watts-Strogatz x x x x
x
Copy model


x

Vertex types generator x
x


Rewire (keep degrees, modify graph) x

x x
Holme Kim




x
Products





Cartesian




x
Tensor




x
Lexicographic




x
Strong




x
Disjunctive




x
Miscellaneous





Drawing graphs x x
x
x
Feedback vertex set




x
Feedback arc set x



x
Fit to power law x
x


Edge similarity x




Coloring
x


x
Steiner tree




x
Edge disjoint spanning tree




x
Longest path




x
Traveling salesman
Only approx

x x
Multicommodity flow




x
Disjoint routed paths




x
Dominating set




x
Characteristic polynomial




x
Bandwidth
x



Number of routines 62 30 28 28 33 66
Number of routines not in Sage 29 8 13 10 13 0


Legend
x Available
Only in C There is in the C version of the library, but not in the Python version
Easy Very easy to implement (for instance, if we have a routine for maximum clique and we want to compute the size of the maximum clique).
Ticket A ticket is already open on this issue, but not closed, yet

Available and missing in Sage
Comments