V
- the graph vertex typeE
- the graph edge typepublic class BellmanFordShortestPath<V,E> extends Object
Computes shortest paths from a single source vertex to all other vertices in a weighted graph. The Bellman-Ford algorithm supports negative edge weights. Negative weight cycles are not allowed and will be reported by the algorithm. This implies that negative edge weights are not allowed in undirected graphs.
The running time is $O(|E||V|)$.
ShortestPathAlgorithm.SingleSourcePaths<V,E>
Modifier and Type | Field and Description |
---|---|
protected Graph<V,E> |
graph
The underlying graph.
|
Constructor and Description |
---|
BellmanFordShortestPath(Graph<V,E> graph)
Construct a new instance.
|
BellmanFordShortestPath(Graph<V,E> graph,
double epsilon)
Construct a new instance.
|
Modifier and Type | Method and Description |
---|---|
protected GraphPath<V,E> |
createEmptyPath(V source,
V sink)
Create an empty path.
|
static <V,E> GraphPath<V,E> |
findPathBetween(Graph<V,E> graph,
V source,
V sink)
Find a path between two vertices.
|
GraphPath<V,E> |
getPath(V source,
V sink)
Get a shortest path from a source vertex to a sink vertex.
|
ShortestPathAlgorithm.SingleSourcePaths<V,E> |
getPaths(V source)
Compute all shortest paths starting from a single source vertex.
|
double |
getPathWeight(V source,
V sink)
Get the weight of the shortest path from a source vertex to a sink vertex.
|
protected final Graph<V,E> graph
public BellmanFordShortestPath(Graph<V,E> graph)
graph
- the input graphpublic GraphPath<V,E> getPath(V source, V sink)
source
- the source vertexsink
- the target vertexpublic ShortestPathAlgorithm.SingleSourcePaths<V,E> getPaths(V source)
getPaths
in interface ShortestPathAlgorithm<V,E>
source
- the source vertexpublic static <V,E> GraphPath<V,E> findPathBetween(Graph<V,E> graph, V source, V sink)
V
- the graph vertex typeE
- the graph edge typegraph
- the graph to be searchedsource
- the vertex at which the path should startsink
- the vertex at which the path should endpublic double getPathWeight(V source, V sink)
Double.POSITIVE_INFINITY
if no path exists.getPathWeight
in interface ShortestPathAlgorithm<V,E>
source
- the source vertexsink
- the sink vertexDouble.POSITIVE_INFINITY
if no path existsprotected final GraphPath<V,E> createEmptyPath(V source, V sink)
source
- the source vertexsink
- the sink vertexCopyright © 2018. All rights reserved.