It is also possible to change the underlying priority heap.
|
Public Types |
typedef TR::Graph | Graph |
| The type of the underlying graph.
|
typedef Graph::Node | Node |
|
|
typedef Graph::NodeIt | NodeIt |
|
|
typedef Graph::Edge | Edge |
|
|
typedef Graph::OutEdgeIt | OutEdgeIt |
|
|
typedef TR::LengthMap::Value | Value |
| The type of the length of the edges.
|
typedef TR::LengthMap | LengthMap |
| The type of the map that stores the edge lengths.
|
typedef TR::PredMap | PredMap |
| The type of the map that stores the last edges of the shortest paths.
|
typedef TR::ProcessedMap | ProcessedMap |
| The type of the map indicating if a node is processed.
|
typedef TR::DistMap | DistMap |
| The type of the map that stores the dists of the nodes.
|
typedef TR::Heap | Heap |
| The heap type used by the dijkstra algorithm.
|
Public Member Functions |
| Dijkstra (const Graph &_G, const LengthMap &_length) |
| Constructor.
|
| ~Dijkstra () |
| Destructor.
|
Dijkstra & | lengthMap (const LengthMap &m) |
| Sets the length map.
|
Dijkstra & | predMap (PredMap &m) |
| Sets the map storing the predecessor edges.
|
Dijkstra & | distMap (DistMap &m) |
| Sets the map storing the distances calculated by the algorithm.
|
|
The simplest way to execute the algorithm is to use one of the member functions called run (...).
If you need more control on the execution, first you must call init(), then you can add several source nodes with addSource(). Finally start() will perform the actual path computation.
|
void | init () |
| Initializes the internal data structures.
|
void | addSource (Node s, Value dst=0) |
| Adds a new source node.
|
Node | processNextNode () |
| Processes the next node in the priority heap.
|
bool | emptyQueue () |
| Returns false if there are nodes to be processed in the priority heap.
|
int | queueSize () |
| Returns the number of the nodes to be processed in the priority heap.
|
void | start () |
| Executes the algorithm.
|
void | start (Node dest) |
| Executes the algorithm until dest is reached.
|
template<class NodeBoolMap> |
void | start (const NodeBoolMap &nm) |
| Executes the algorithm until a condition is met.
|
void | run (Node s) |
| Runs Dijkstra algorithm from node s .
|
Value | run (Node s, Node t) |
| Finds the shortest path between s and t .
|
|
The result of the Dijkstra algorithm can be obtained using these functions.
Before the use of these functions, either run() or start() must be called.
|
template<class P> |
bool | getPath (P &p, Node t) |
| Copies the shortest path to t into p .
|
Value | dist (Node v) const |
| The distance of a node from the root.
|
Edge | pred (Node v) const |
| Returns the 'previous edge' of the shortest path tree.
|
Node | predNode (Node v) const |
| Returns the 'previous node' of the shortest path tree.
|
const DistMap & | distMap () const |
| Returns a reference to the NodeMap of distances.
|
const PredMap & | predMap () const |
| Returns a reference to the shortest path tree map.
|
bool | reached (Node v) |
| Checks if a node is reachable from the root.
|
Classes |
class | DefDistMap |
| Named parameter for setting DistMap type More...
|
class | DefPredMap |
| Named parameter for setting PredMap type More...
|
class | DefProcessedMap |
| Named parameter for setting ProcessedMap type More...
|
class | DefProcessedMapToBeDefaultMap |
| Named parameter for setting the ProcessedMap type to be Graph::NodeMap<bool>. More...
|
class | UninitializedParameter |
| Exception for uninitialized parameters. More...
|