Package edu.princeton.cs.algs4
Class DijkstraAllPairsSP
- Object
-
- edu.princeton.cs.algs4.DijkstraAllPairsSP
-
public class DijkstraAllPairsSP extends Object
TheDijkstraAllPairsSPclass represents a data type for solving the all-pairs shortest paths problem in edge-weighted digraphs where the edge weights are non-negative.This implementation runs Dijkstra's algorithm from each vertex. The constructor takes Θ(V (E log V)) 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 Θ(V2) extra space (not including the edge-weighted digraph).
For additional documentation, see Section 4.4 of Algorithms, 4th Edition by Robert Sedgewick and Kevin Wayne.
- Author:
- Robert Sedgewick, Kevin Wayne
-
-
Constructor Summary
Constructors Constructor Description DijkstraAllPairsSP(EdgeWeightedDigraph G)Computes a shortest paths tree from each vertex to every other vertex in the edge-weighted digraphG.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description doubledist(int s, int t)Returns the length of a shortest path from vertexsto vertext.booleanhasPath(int s, int t)Is there a path from the vertexsto vertext?static voidmain(String[] args)Unit tests theDijkstraAllPairsSPdata type.Iterable<DirectedEdge>path(int s, int t)Returns a shortest path from vertexsto vertext.
-
-
-
Constructor Detail
-
DijkstraAllPairsSP
public DijkstraAllPairsSP(EdgeWeightedDigraph G)
Computes a shortest paths tree from each vertex to every other vertex in the edge-weighted digraphG.- Parameters:
G- the edge-weighted digraph- Throws:
IllegalArgumentException- if an edge weight is negativeIllegalArgumentException- unless0 <= s < V
-
-
Method Detail
-
path
public Iterable<DirectedEdge> path(int s, int t)
Returns a shortest path from vertexsto vertext.- Parameters:
s- the source vertext- the destination vertex- Returns:
- a shortest path from vertex
sto vertextas an iterable of edges, andnullif no such path - Throws:
IllegalArgumentException- unless0 <= s < VIllegalArgumentException- unless0 <= t < V
-
hasPath
public boolean hasPath(int s, int t)Is there a path from the vertexsto vertext?- Parameters:
s- the source vertext- the destination vertex- Returns:
trueif there is a path from vertexsto vertext, andfalseotherwise- Throws:
IllegalArgumentException- unless0 <= s < VIllegalArgumentException- unless0 <= t < V
-
dist
public double dist(int s, int t)Returns the length of a shortest path from vertexsto vertext.- Parameters:
s- the source vertext- the destination vertex- Returns:
- the length of a shortest path from vertex
sto vertext;Double.POSITIVE_INFINITYif no such path - Throws:
IllegalArgumentException- unless0 <= s < VIllegalArgumentException- unless0 <= t < V
-
main
public static void main(String[] args)
Unit tests theDijkstraAllPairsSPdata type.- Parameters:
args- the command-line arguments
-
-