See: Description
Interface | Description |
---|---|
GraphFactory<T extends Vertex> | |
WeightedEdgeGraph |
Class | Description |
---|---|
AbstractGraph<T extends Vertex> | |
BfsGraph<T extends UndirectedSimpleVertex & BfsVertex> |
Undirected graph meeting the requirements for conducting breadth-first search
|
DfsGraph<E extends DfsEdgeData> |
Utility class that eliminates one type parameter from DirectedEdgeDataGraph
|
DirectedEdgeDataGraph<T,V extends DirectedEdgeDataVertex<T>> |
Directed graph that supports edge data.
|
DirectedSimpleGraph<T extends DirectedSimpleVertex> | |
DirectedWeightedEdgeGraph<E extends EdgeWeightData,V extends DirectedEdgeDataVertex<E> & EdgeWeightVertex<E>> |
Directed graph supporting floating point edge weight.
|
EdgeResetter | |
KruskalGraph<E extends SpanningTreeEdgeData> |
Utility class that eliminates a type parameter from UndirectedWeightedEdgeGraph
|
Transposer<T extends Vertex,U extends Vertex> |
Utility class for transposing a graph.
|
UndirectedEdgeDataGraph<E,V extends UndirectedEdgeDataVertex<E>> |
Undirected graph that supports edge data.
|
UndirectedSimpleGraph<T extends UndirectedSimpleVertex> | |
UndirectedWeightedEdgeGraph<E extends EdgeWeightData,V extends UndirectedEdgeDataVertex<E> & EdgeWeightVertex<E>> |
Undirected graph supporting floating point edge weight.
|
VertexResetter |
Static methods for resetting all vertices in a graph
|
Enum | Description |
---|---|
OrderedDfsGraphFactory |
At the top of the class hierarchy is AbstractGraph The reason for not making the undirected graphs subclasses of directed graphs is that the
only method the graph actually contains is the edgeCount() method, which really needs to be final
in all cases: For an undirected graph it will return half of the number of directed edges
in the graph, and for a directed graph, all edges will be counted.
The reason for the extensive parameterization of an EdgeDataGraph is that its vertices
require 2 type parameters: One representing the type of the edge data it maintains and the other
a factory for creating such edge data objects. We need the factory because we need to create a new
edge data object whenever we add a new edge to the adjacency list of the vertex. As a result,
the parameterization of an EdgeData graph is much more elaborate than that for a SimpleGraph,
where the vertex only maintains information about the vertices to which it is adjacent but doesn't
map each vertex to an edge data object.