Arc<V> 
An arc is an ordered pair of vertices.

DAGraph<V,E extends Arc<V>> 
A directed acyclic graph (DAG), is a directed graph with no directed cycles.

DiGraph<V,E extends Arc<V>> 
A directed graph or digraph is a graph, or set of nodes connected by edges, where the edges have
a direction associated with them.

Edge<V> 
An edge connects a pair of vertices.

Forest<V,E extends HyperEdge<V>> 
A forest is a disjoint union of trees.

Graph<V,E extends HyperEdge<V>> 
A graph is a representation of a set of objects where some pairs of the objects are connected by
links.

GraphUtils.EdgeFactory<V,N,E extends Edge<N>,X> 
This interface specifies how an edge is created for two nodes.

GraphUtils.GraphFactory<G> 
The factory to construct instances of the graph type.

HyperEdge<V> 
A hyperedge connects a set of vertices of any size.

RootedTree<V,E extends Arc<V>> 
A rooted tree is a directed graph, and has a root to measure distance from the
root.

Tree<V,E extends HyperEdge<V>> 
A tree is an undirected graph in which any two vertices are connected by exactly one simple path.

UnDiGraph<V,E extends UndirectedEdge<V>> 
An undirected graph is a graph, or set of nodes connected by edges, where an edge does not
differentiate between (a, b) or (b, a).

UndirectedEdge<V> 
A tagging interface for implementations of an undirected graph
that accept only undirected edges.

WeightedArc<V> 
A weighted arc is an arc that has a weight or a cost associated with it.

WeightedEdge<V> 
A weighted edge has a weight or a cost associated with it.
