API: IGraph
IGraph is the interface for graph data structures, supporting both directed and undirected graphs with values associated with vertices (V) and edges (E).
Key Methods
IGraph<V, E> link(V from, V to, E edge)
Returns a new graph with an edge from vertex from to vertex to with the value edge. In an undirected graph, this creates a bidirectional link.
IGraph<V, E> unlink(V from, V to)
Returns a new graph with the edge between from and to removed.
IGraph<V, E> add(V vertex)
Returns a new graph with the specified vertex added. If the vertex already exists, returns an identical graph.
IGraph<V, E> remove(V vertex)
Returns a new graph with the specified vertex and all its incident edges removed.
ISet<V> vertices()
Returns a set of all vertices in the graph.
Iterable<IEdge<V, E>> edges()
Returns an iterable over all edges in the graph.
E edge(V from, V to)
Returns the value of the edge between from and to. Throws IllegalArgumentException if the edge does not exist.
ISet<V> in(V vertex)
Returns a set of vertices that have an edge pointing to the specified vertex. In an undirected graph, this is equivalent to out().
ISet<V> out(V vertex)
Returns a set of vertices that the specified vertex has an edge pointing to.
boolean isDirected()
Returns true if the graph is directed, false otherwise.
IGraph<V, E> transpose()
Returns a new graph with the direction of all edges reversed. For an undirected graph, this returns an identical graph.