Uniform way of referencing edge data.
Find the opposite vertex type of the given vertex type.
Bookkeeping data associated with each vertex.
Returns data associated with the given vertex.
Returns the number of edges going into the given vertex.
Returns the number of edges going out of the given vertex.
Returns the set of changes between the edges in this graph and the other.
Returns the set of changes between the vertices in this graph and the other.
Returns an array of edges of the given type.
Returns a range of outgoing neighbors from the given node.
Adds a vertex if it does not already exist.
Adds an edge. Both vertices must be added to the graph first.
Removes a vertex and all the incoming and outgoing edges associated with it.
Removes an edge.
Creates a subgraph using the given roots. This is done by traversing the graph and only adding the vertices and edges that we come across.
Traverses the entire graph depth-first calling the given visitor functions.
Returns an array of cycles in the graph.
Returns true if the graph is empty.
Returns the number of vertices for the given type.
Using Tarjan's algorithm, returns a range of strongly connected components (SCCs). Each SCC consists of a list of vertices that are strongly connected. The SCCs are listed in reverse topological order.
Returns a range of vertices of the given type.
A strongly connected component.
Bookkeeping structure for helping keep track of vertices that have been visited.
A bipartite graph.