graph_tools: a number of algorithms on graphs. There are a variety of ways to represent a graph, including the use of an adjacency matrix, a list of pairs of nodes, and dictionaries. There is also a very useful graph_viz() library for plotting. We can listing nodes or edges, finding isolated nodes, adding a node or an edge, determining all nodes reachable from a given node, finding a path from one node to another.
Lecture notes: