edu.uci.ics.jung.algorithms.shortestpath
Class DijkstraShortestPath<V,E>

java.lang.Object
  extended by edu.uci.ics.jung.algorithms.shortestpath.DijkstraDistance<V,E>
      extended by edu.uci.ics.jung.algorithms.shortestpath.DijkstraShortestPath<V,E>
All Implemented Interfaces:
Distance<V>, ShortestPath<V,E>

public class DijkstraShortestPath<V,E>
extends DijkstraDistance<V,E>
implements ShortestPath<V,E>

Calculates distances and shortest paths using Dijkstra's single-source-shortest-path algorithm. This is a lightweight extension of DijkstraDistance that also stores path information, so that the shortest paths can be reconstructed.

The elements in the maps returned by getIncomingEdgeMap are ordered (that is, returned by the iterator) by nondecreasing distance from source.

Author:
Joshua O'Madadhain, Tom Nelson converted to jung2
See Also:
DijkstraDistance

Nested Class Summary
protected  class DijkstraShortestPath.SourcePathData
          For a given source vertex, holds the estimated and final distances, tentative and final assignments of incoming edges on the shortest path from the source vertex, and a priority queue (ordered by estimaed distance) of the vertices for which distances are unknown.
 
Nested classes/interfaces inherited from class edu.uci.ics.jung.algorithms.shortestpath.DijkstraDistance
DijkstraDistance.SourceData, DijkstraDistance.VertexComparator<V>
 
Field Summary
 
Fields inherited from class edu.uci.ics.jung.algorithms.shortestpath.DijkstraDistance
cached, g, max_distance, max_targets, nev, sourceMap
 
Constructor Summary
DijkstraShortestPath(Graph<V,E> g)
          Creates an instance of DijkstraShortestPath for the specified unweighted graph (that is, all weights 1) which caches results locally.
DijkstraShortestPath(Graph<V,E> g, boolean cached)
          Creates an instance of DijkstraShortestPath for the specified unweighted graph (that is, all weights 1) which caches results locally.
DijkstraShortestPath(Graph<V,E> g, org.apache.commons.collections15.Transformer<E,Number> nev)
          Creates an instance of DijkstraShortestPath for the specified graph and the specified method of extracting weights from edges, which caches results locally.
DijkstraShortestPath(Graph<V,E> g, org.apache.commons.collections15.Transformer<E,Number> nev, boolean cached)
          Creates an instance of DijkstraShortestPath for the specified graph and the specified method of extracting weights from edges, which caches results locally if and only if cached is true.
 
Method Summary
 E getIncomingEdge(V source, V target)
          Returns the last edge on a shortest path from source to target, or null if target is not reachable from source.
 Map<V,E> getIncomingEdgeMap(V source)
          Returns a LinkedHashMap which maps each vertex in the graph (including the source vertex) to the last edge on the shortest path from the source vertex.
 LinkedHashMap<V,E> getIncomingEdgeMap(V source, int numDests)
          Returns a LinkedHashMap which maps each of the closest numDist vertices to the source vertex in the graph (including the source vertex) to the incoming edge along the path from that vertex.
 List<E> getPath(V source, V target)
          Returns a List of the edges on the shortest path from source to target, in order of their occurrence on this path.
protected  DijkstraDistance.SourceData getSourceData(V source)
           
 
Methods inherited from class edu.uci.ics.jung.algorithms.shortestpath.DijkstraDistance
enableCaching, getDistance, getDistanceMap, getDistanceMap, getDistanceMap, getEdgesToCheck, reset, reset, setMaxDistance, setMaxTargets, singleSourceShortestPath
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

DijkstraShortestPath

public DijkstraShortestPath(Graph<V,E> g,
                            org.apache.commons.collections15.Transformer<E,Number> nev,
                            boolean cached)

Creates an instance of DijkstraShortestPath for the specified graph and the specified method of extracting weights from edges, which caches results locally if and only if cached is true.

Parameters:
g - the graph on which distances will be calculated
nev - the class responsible for returning weights for edges
cached - specifies whether the results are to be cached

DijkstraShortestPath

public DijkstraShortestPath(Graph<V,E> g,
                            org.apache.commons.collections15.Transformer<E,Number> nev)

Creates an instance of DijkstraShortestPath for the specified graph and the specified method of extracting weights from edges, which caches results locally.

Parameters:
g - the graph on which distances will be calculated
nev - the class responsible for returning weights for edges

DijkstraShortestPath

public DijkstraShortestPath(Graph<V,E> g)

Creates an instance of DijkstraShortestPath for the specified unweighted graph (that is, all weights 1) which caches results locally.

Parameters:
g - the graph on which distances will be calculated

DijkstraShortestPath

public DijkstraShortestPath(Graph<V,E> g,
                            boolean cached)

Creates an instance of DijkstraShortestPath for the specified unweighted graph (that is, all weights 1) which caches results locally.

Parameters:
g - the graph on which distances will be calculated
cached - specifies whether the results are to be cached
Method Detail

getSourceData

protected DijkstraDistance.SourceData getSourceData(V source)
Overrides:
getSourceData in class DijkstraDistance<V,E>

getIncomingEdge

public E getIncomingEdge(V source,
                         V target)

Returns the last edge on a shortest path from source to target, or null if target is not reachable from source.

If either vertex is not in the graph for which this instance was created, throws IllegalArgumentException.


getIncomingEdgeMap

public Map<V,E> getIncomingEdgeMap(V source)

Returns a LinkedHashMap which maps each vertex in the graph (including the source vertex) to the last edge on the shortest path from the source vertex. The map's iterator will return the elements in order of increasing distance from source.

Specified by:
getIncomingEdgeMap in interface ShortestPath<V,E>
Parameters:
source - the vertex from which distances are measured
See Also:
DijkstraDistance.getDistanceMap(Object,int), DijkstraDistance.getDistance(Object,Object)

getPath

public List<E> getPath(V source,
                       V target)
Returns a List of the edges on the shortest path from source to target, in order of their occurrence on this path. If either vertex is not in the graph for which this instance was created, throws IllegalArgumentException.


getIncomingEdgeMap

public LinkedHashMap<V,E> getIncomingEdgeMap(V source,
                                             int numDests)

Returns a LinkedHashMap which maps each of the closest numDist vertices to the source vertex in the graph (including the source vertex) to the incoming edge along the path from that vertex. Throws an IllegalArgumentException if source is not in this instance's graph, or if numDests is either less than 1 or greater than the number of vertices in the graph.

Parameters:
source - the vertex from which distances are measured
numDests - the number of vertics for which to measure distances
See Also:
getIncomingEdgeMap(Object), getPath(Object,Object)


Copyright © 2009. All Rights Reserved.