Package edu.princeton.cs.algs4
Class BreadthFirstDirectedPaths
- Object
-
- edu.princeton.cs.algs4.BreadthFirstDirectedPaths
-
public class BreadthFirstDirectedPaths extends Object
TheBreadthDirectedFirstPathsclass represents a data type for finding shortest paths (number of edges) from a source vertex s (or set of source vertices) to every other vertex in the digraph.This implementation uses breadth-first search. The constructor takes Θ(V + E) time in the worst case, where V is the number of vertices and E is the number of edges. Each instance method takes Θ(1) time. It uses Θ(V) extra space (not including the digraph).
For additional documentation, see Section 4.2 of Algorithms, 4th Edition by Robert Sedgewick and Kevin Wayne.
- Author:
- Robert Sedgewick, Kevin Wayne
-
-
Constructor Summary
Constructors Constructor Description BreadthFirstDirectedPaths(Digraph digraph, int s)Computes the shortest path fromsand every other vertex indigraph.BreadthFirstDirectedPaths(Digraph digraph, Iterable<Integer> sources)Computes the shortest path from any one of the source vertices insourcesto every other vertex indigraph.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description intdistTo(int v)Returns the number of edges in a shortest path from the sources(or sources) to vertexv?booleanhasPathTo(int v)Is there a directed path from the sources(or sources) to vertexv?static voidmain(String[] args)Unit tests theBreadthFirstDirectedPathsdata type.Iterable<Integer>pathTo(int v)Returns a shortest path froms(or sources) tov, ornullif no such path.
-
-
-
Constructor Detail
-
BreadthFirstDirectedPaths
public BreadthFirstDirectedPaths(Digraph digraph, int s)
Computes the shortest path fromsand every other vertex indigraph.- Parameters:
digraph- the digraphs- the source vertex- Throws:
IllegalArgumentException- unless0 <= v < V
-
BreadthFirstDirectedPaths
public BreadthFirstDirectedPaths(Digraph digraph, Iterable<Integer> sources)
Computes the shortest path from any one of the source vertices insourcesto every other vertex indigraph.- Parameters:
digraph- the digraphsources- the source vertices- Throws:
IllegalArgumentException- ifsourcesisnullIllegalArgumentException- ifsourcescontains no verticesIllegalArgumentException- unless each vertexvinsourcessatisfies0 <= v < V
-
-
Method Detail
-
hasPathTo
public boolean hasPathTo(int v)
Is there a directed path from the sources(or sources) to vertexv?- Parameters:
v- the vertex- Returns:
trueif there is a directed path,falseotherwise- Throws:
IllegalArgumentException- unless0 <= v < V
-
distTo
public int distTo(int v)
Returns the number of edges in a shortest path from the sources(or sources) to vertexv?- Parameters:
v- the vertex- Returns:
- the number of edges in such a shortest path
(or
Integer.MAX_VALUEif there is no such path) - Throws:
IllegalArgumentException- unless0 <= v < V
-
pathTo
public Iterable<Integer> pathTo(int v)
Returns a shortest path froms(or sources) tov, ornullif no such path.- Parameters:
v- the vertex- Returns:
- the sequence of vertices on a shortest path, as an Iterable
- Throws:
IllegalArgumentException- unless0 <= v < V
-
main
public static void main(String[] args)
Unit tests theBreadthFirstDirectedPathsdata type.- Parameters:
args- the command-line arguments
-
-