public class AcyclicSP extends java.lang.Object
Esta implementação usa um algoritmo de ordenação topológica para realizar a tarefa. O construtor consome tempo proporcional a V + E, sendo V o número de vértices e E o número de arcos do digrafo. Depois, os métodos distTo() e hasPathTo() consomem tempo constante e o método pathTo() consome tempo proporcional ao número de acos do caminho devolvido.
(Esta implementação depende das classes EdgeWeightedDigraph.java, DirectedEdge.java, Topological.java.)
Documentação adicional: veja Section 4.4 do livro Algorithms, 4th Edition, de Robert Sedgewick e Kevin Wayne.
Constructor and Description |
---|
AcyclicSP(EdgeWeightedDigraph G,
int s)
Apartir da raiz s,
calcula uma arborescência de caminhos de peso mínimo
no dag G.
|
Modifier and Type | Method and Description |
---|---|
double |
distTo(int v)
Devolve o comprimento de um caminho de peso mínimo
do vértice s ao vértice v.
|
boolean |
hasPathTo(int v)
Existe caminho do vértice s ao vértice v?
|
static void |
main(java.lang.String[] args)
Teste de unidade.
|
java.lang.Iterable<DirectedEdge> |
pathTo(int v)
Devolve a sequência de vértices de
um caminho de peso mínimo do vértice s ao vértice v.
|
public AcyclicSP(EdgeWeightedDigraph G, int s)
java.lang.IllegalArgumentException
- se o digrafo G não for um dag.java.lang.IllegalArgumentException
- se s não for um vértice válido
ou seja, se não estiver em 0..V-1.public double distTo(int v)
public boolean hasPathTo(int v)
public java.lang.Iterable<DirectedEdge> pathTo(int v)
public static void main(java.lang.String[] args)