[ VIGRA Homepage | Function Index | Class Index | Namespaces | File List | Main Page ]
ShortestPathDijkstra< GRAPH, WEIGHT_TYPE > Class Template Reference |
shortest path computer More...
#include <vigra/graph_algorithms.hxx>
Public Member Functions | |
const DiscoveryOrder & | discoveryOrder () const |
get an array with all visited nodes, sorted by distance from source | |
WeightType | distance (const Node &target) const |
get the distance to a rarget node (after a call of run) | |
const DistanceMap & | distances () const |
get the distances node map (after a call of run) | |
const Graph & | graph () const |
get the graph | |
bool | hasTarget () const |
check if explicit target is given | |
const PredecessorsMap & | predecessors () const |
get the predecessors node map (after a call of run) | |
template<class WEIGHTS > | |
void | reRun (const WEIGHTS &weights, const Node &source, const Node &target=lemon::INVALID, WeightType maxDistance=NumericTraits< WeightType >::max()) |
run shortest path again with given edge weights More... | |
template<class WEIGHTS > | |
void | run (const WEIGHTS &weights, const Node &source, const Node &target=lemon::INVALID, WeightType maxDistance=NumericTraits< WeightType >::max()) |
run shortest path given edge weights More... | |
template<class WEIGHTS > | |
void | run (Node const &start, Node const &stop, const WEIGHTS &weights, const Node &source, const Node &target=lemon::INVALID, WeightType maxDistance=NumericTraits< WeightType >::max()) |
run shortest path in a region of interest of a GridGraph. More... | |
template<class WEIGHTS , class ITER > | |
void | runMultiSource (const WEIGHTS &weights, ITER source_begin, ITER source_end, const Node &target=lemon::INVALID, WeightType maxDistance=NumericTraits< WeightType >::max()) |
run shortest path with given edge weights from multiple sources. More... | |
template<class EFGE_WEIGHTS , class NODE_WEIGHTS , class ITER > | |
void | runMultiSource (const EFGE_WEIGHTS &edgeWeights, const NODE_WEIGHTS &nodeWeights, ITER source_begin, ITER source_end, const Node &target=lemon::INVALID, WeightType maxDistance=NumericTraits< WeightType >::max()) |
run shortest path with given edge weights from multiple sources. More... | |
ShortestPathDijkstra (const Graph &g) | |
\ brief constructor from graph | |
const Node & | source () const |
get the source node | |
const Node & | target () const |
get the target node | |
shortest path computer
void run | ( | const WEIGHTS & | weights, |
const Node & | source, | ||
const Node & | target = lemon::INVALID , |
||
WeightType | maxDistance = NumericTraits<WeightType>::max() |
||
) |
run shortest path given edge weights
weights | : edge weights encoding the distance between adjacent nodes (must be non-negative) |
source | : source node where shortest path should start |
target | : target node where shortest path should stop. If target is not given or INVALID , the shortest path from source to all reachable nodes is computed |
maxDistance | : path search is terminated when the path length exceeds maxDistance |
When a valid target is unreachable from source (either because the graph is disconnected or maxDistance is exceeded), it is set to lemon::INVALID
. In contrast, if target was lemon::INVALID
at the beginning, it will always be set to the last node visited in the search.
void run | ( | Node const & | start, |
Node const & | stop, | ||
const WEIGHTS & | weights, | ||
const Node & | source, | ||
const Node & | target = lemon::INVALID , |
||
WeightType | maxDistance = NumericTraits<WeightType>::max() |
||
) |
run shortest path in a region of interest of a GridGraph.
start | : first point in the desired ROI. |
stop | : beyond the last point in the desired ROI (i.e. exclusive) |
weights | : edge weights encoding the distance between adjacent nodes (must be non-negative) |
source | : source node where shortest path should start |
target | : target node where shortest path should stop. If target is not given or INVALID , the shortest path from source to all reachable nodes is computed |
maxDistance | : path search is terminated when the path length exceeds maxDistance |
This version of run()
restricts the path search to the ROI [start, stop)
and only works for instances of GridGraph. Otherwise, it is identical to the standard run()
function.
void reRun | ( | const WEIGHTS & | weights, |
const Node & | source, | ||
const Node & | target = lemon::INVALID , |
||
WeightType | maxDistance = NumericTraits<WeightType>::max() |
||
) |
run shortest path again with given edge weights
This only differs from standard run()
by initialization: Instead of resetting the entire graph, this only resets the nodes that have been visited in the previous run, i.e. the contents of the array discoveryOrder()
. This will be much faster if only a small fraction of the nodes has to be reset.
void runMultiSource | ( | const WEIGHTS & | weights, |
ITER | source_begin, | ||
ITER | source_end, | ||
const Node & | target = lemon::INVALID , |
||
WeightType | maxDistance = NumericTraits<WeightType>::max() |
||
) |
void runMultiSource | ( | const EFGE_WEIGHTS & | edgeWeights, |
const NODE_WEIGHTS & | nodeWeights, | ||
ITER | source_begin, | ||
ITER | source_end, | ||
const Node & | target = lemon::INVALID , |
||
WeightType | maxDistance = NumericTraits<WeightType>::max() |
||
) |
© Ullrich Köthe (ullrich.koethe@iwr.uni-heidelberg.de) |
html generated using doxygen and Python
|