template<typename GR, typename LEN, typename TR>
class lemon::Dijkstra< GR, LEN, TR >
This class provides an efficient implementation of the Dijkstra algorithm.
The arc lengths are passed to the algorithm using a ReadMap, so it is easy to change it to any kind of length. The type of the length is determined by the Value of the length map. It is also possible to change the underlying priority heap.
There is also a function-type interface for the Dijkstra algorithm, which is convenient in the simplier cases and it can be used easier.
- Template Parameters
-
GR | The type of the digraph the algorithm runs on. The default type is ListDigraph. |
LEN | A readable arc map that specifies the lengths of the arcs. It is read once for each arc, so the map may involve in relatively time consuming process to compute the arc lengths if it is necessary. The default map type is GR::ArcMap<int>. |
|
typedef TR::Digraph | Digraph |
| The type of the digraph the algorithm runs on.
|
|
typedef TR::LengthMap::Value | Value |
| The type of the length of the arcs.
|
|
typedef TR::LengthMap | LengthMap |
| The type of the map that stores the arc lengths.
|
|
typedef TR::PredMap | PredMap |
| The type of the map that stores the predecessor arcs of the shortest paths.
|
|
typedef TR::DistMap | DistMap |
| The type of the map that stores the distances of the nodes.
|
|
typedef TR::ProcessedMap | ProcessedMap |
| The type of the map that indicates which nodes are processed.
|
|
typedef PredMapPath< Digraph,
PredMap > | Path |
| The type of the paths.
|
|
typedef TR::HeapCrossRef | HeapCrossRef |
| The cross reference type used for the current heap.
|
|
typedef TR::Heap | Heap |
| The heap type used by the algorithm.
|
|
typedef TR::OperationTraits | OperationTraits |
| The operation traits class of the algorithm.
|
|
typedef TR | Traits |
| The traits class of the algorithm.
|
|
|
| Dijkstra (const Digraph &g, const LengthMap &length) |
| Constructor.
|
|
| ~Dijkstra () |
| Destructor.
|
|
Dijkstra & | lengthMap (const LengthMap &m) |
| Sets the length map.
|
|
Dijkstra & | predMap (PredMap &m) |
| Sets the map that stores the predecessor arcs.
|
|
Dijkstra & | processedMap (ProcessedMap &m) |
| Sets the map that indicates which nodes are processed.
|
|
Dijkstra & | distMap (DistMap &m) |
| Sets the map that stores the distances of the nodes.
|
|
Dijkstra & | heap (Heap &hp, HeapCrossRef &cr) |
| Sets the heap and the cross reference used by algorithm.
|
|
|
The simplest way to execute the Dijkstra algorithm is to use one of the member functions called run().
If you need more control on the execution, first you have to call init(), then you can add several source nodes with addSource(). Finally the actual path computation can be performed with one of the start() functions.
|
void | init () |
|
void | addSource (Node s, Value dst=OperationTraits::zero()) |
| Adds a new source node.
|
|
Node | processNextNode () |
| Processes the next node in the priority heap.
|
|
Node | nextNode () const |
| The next node to be processed.
|
|
bool | emptyQueue () const |
| Returns false if there are nodes to be processed.
|
|
int | queueSize () const |
| Returns the number of the nodes to be processed.
|
|
void | start () |
| Executes the algorithm.
|
|
void | start (Node t) |
| Executes the algorithm until the given target node is processed.
|
|
template<class NodeBoolMap > |
Node | start (const NodeBoolMap &nm) |
| Executes the algorithm until a condition is met.
|
|
void | run (Node s) |
| Runs the algorithm from the given source node.
|
|
bool | run (Node s, Node t) |
| Finds the shortest path between s and t .
|
|
|
The results of the Dijkstra algorithm can be obtained using these functions.
Either run() or start() should be called before using them.
|
Path | path (Node t) const |
| The shortest path to a node.
|
|
Value | dist (Node v) const |
| The distance of a node from the root(s).
|
|
Arc | predArc (Node v) const |
| Returns the 'previous arc' of the shortest path tree for a node.
|
|
Node | predNode (Node v) const |
| Returns the 'previous node' of the shortest path tree for a node.
|
|
const DistMap & | distMap () const |
| Returns a const reference to the node map that stores the distances of the nodes.
|
|
const PredMap & | predMap () const |
| Returns a const reference to the node map that stores the predecessor arcs.
|
|
bool | reached (Node v) const |
| Checks if a node is reached from the root(s).
|
|
bool | processed (Node v) const |
| Checks if a node is processed.
|
|
Value | currentDist (Node v) const |
| The current distance of a node from the root(s).
|
|