java.lang.Object
org.jgrapht.alg.shortestpath.BFSShortestPath<V,E>
- Type Parameters:
V- the graph vertex typeE- the graph edge type
- All Implemented Interfaces:
ShortestPathAlgorithm<V,E>
public class BFSShortestPath<V,E>
extends java.lang.Object
The BFS Shortest Path algorithm.
An implementation of BFS shortest path algorithm to compute shortest paths from a single source vertex to all other vertices in an unweighted graph.
The running time is $O(|V|+|E|)$.
- Author:
- Karri Sai Satish Kumar Reddy
-
Nested Class Summary
Nested classes/interfaces inherited from interface org.jgrapht.alg.interfaces.ShortestPathAlgorithm
ShortestPathAlgorithm.SingleSourcePaths<V,E> -
Field Summary
Fields Modifier and Type Field Description protected Graph<V,E>graphThe underlying graph.protected static java.lang.StringGRAPH_CONTAINS_A_NEGATIVE_WEIGHT_CYCLEError message for reporting the existence of a negative-weight cycle.protected static java.lang.StringGRAPH_MUST_CONTAIN_THE_SINK_VERTEXError message for reporting that a sink vertex is missing.protected static java.lang.StringGRAPH_MUST_CONTAIN_THE_SOURCE_VERTEXError message for reporting that a source vertex is missing. -
Constructor Summary
Constructors Constructor Description BFSShortestPath(Graph<V,E> graph)Construct a new instance. -
Method Summary
Modifier and Type Method 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.doublegetPathWeight(V source, V sink)Get the weight of the shortest path from a source vertex to a sink vertex.
-
Field Details
-
GRAPH_CONTAINS_A_NEGATIVE_WEIGHT_CYCLE
protected static final java.lang.String GRAPH_CONTAINS_A_NEGATIVE_WEIGHT_CYCLEError message for reporting the existence of a negative-weight cycle.- See Also:
- Constant Field Values
-
GRAPH_MUST_CONTAIN_THE_SOURCE_VERTEX
protected static final java.lang.String GRAPH_MUST_CONTAIN_THE_SOURCE_VERTEXError message for reporting that a source vertex is missing.- See Also:
- Constant Field Values
-
GRAPH_MUST_CONTAIN_THE_SINK_VERTEX
protected static final java.lang.String GRAPH_MUST_CONTAIN_THE_SINK_VERTEXError message for reporting that a sink vertex is missing.- See Also:
- Constant Field Values
-
graph
The underlying graph.
-
-
Constructor Details
-
BFSShortestPath
Construct a new instance.- Parameters:
graph- the input graph
-
-
Method Details
-
getPaths
Compute all shortest paths starting from a single source vertex.- Specified by:
getPathsin interfaceShortestPathAlgorithm<V,E>- Parameters:
source- the source vertex- Returns:
- the shortest paths
-
getPath
Get a shortest path from a source vertex to a sink vertex.- Parameters:
source- the source vertexsink- the target vertex- Returns:
- a shortest path or null if no path exists
-
findPathBetween
Find a path between two vertices.- Type Parameters:
V- the graph vertex typeE- the graph edge type- Parameters:
graph- the graph to be searchedsource- the vertex at which the path should startsink- the vertex at which the path should end- Returns:
- a shortest path, or null if no path exists
-
getPathWeight
Get the weight of the shortest path from a source vertex to a sink vertex. ReturnsDouble.POSITIVE_INFINITYif no path exists.- Specified by:
getPathWeightin interfaceShortestPathAlgorithm<V,E>- Parameters:
source- the source vertexsink- the sink vertex- Returns:
- the weight of the shortest path from a source vertex to a sink vertex, or
Double.POSITIVE_INFINITYif no path exists
-
createEmptyPath
Create an empty path. Returns null if the source vertex is different than the target vertex.- Parameters:
source- the source vertexsink- the sink vertex- Returns:
- an empty path or null null if the source vertex is different than the target vertex
-