public class AcyclicLP extends Object
This implementation uses a topological-sort based algorithm. The constructor takes time proportional to V + E, where V is the number of vertices and E is the number of edges. Afterwards, the distTo() and hasPathTo() methods take constant time and the pathTo() method takes time proportional to the number of edges in the longest path returned.
For additional documentation, see Section 4.4 of Algorithms, 4th Edition by Robert Sedgewick and Kevin Wayne.
| Constructor and Description |
|---|
AcyclicLP(EdgeWeightedDigraph G,
int s)
Computes a longest paths tree from s to every other vertex in
the directed acyclic graph G.
|
| Modifier and Type | Method and Description |
|---|---|
double |
distTo(int v)
Returns the length of a longest path from the source vertex s to vertex v.
|
boolean |
hasPathTo(int v)
Is there a path from the source vertex s to vertex v?
|
static void |
main(String[] args)
Unit tests the AcyclicLP data type.
|
Iterable<DirectedEdge> |
pathTo(int v)
Returns a longest path from the source vertex s to vertex v.
|
public AcyclicLP(EdgeWeightedDigraph G, int s)
G - the acyclic digraphs - the source vertexIllegalArgumentException - if the digraph is not acyclicIllegalArgumentException - unless 0 ≤ s ≤ V - 1public double distTo(int v)
v - the destination vertexpublic boolean hasPathTo(int v)
v - the destination vertexpublic Iterable<DirectedEdge> pathTo(int v)
v - the destination vertexpublic static void main(String[] args)
Copyright © 2014. All Rights Reserved.