This class implements incremental bidirectional Dijkstra's search for the single-pair shortest path problem. More...
#include <incbi.h>
Classes | |
| struct | conn_key |
Public Attributes | |
| const Graph & | g |
| Vertex | v_start |
| Vertex | v_goal |
| StartPredecessorMap | start_predecessor |
| StartDistanceMap | start_distance |
| StartDistanceLookaheadMap | start_distance_lookahead |
| GoalSuccessorMap | goal_successor |
| GoalDistanceMap | goal_distance |
| GoalDistanceLookaheadMap | goal_distance_lookahead |
| WeightMap | weight |
| VertexIndexMap | vertex_index_map |
| EdgeIndexMap | edge_index_map |
| CompareFunction | compare |
| CombineFunction | combine |
| CostInf | inf |
| CostZero | zero |
| weight_type | goal_margin |
| IncBiVisitor | vis |
| IncBiBalancer | balancer |
| heap_indexed< weight_type > | start_queue |
| heap_indexed< weight_type > | goal_queue |
| heap_indexed< conn_key > | conn_queue |
This class implements incremental bidirectional Dijkstra's search for the single-pair shortest path problem.
for now, we assume an undirected graph (that is, update_edge will attempt an upate in both directions) we assume that everything is constant (graph structure) rhs = one-step-lookahead (based on d/g) d (DynamicSWSF-FP) = g (LPA*) value = distance map rhs (DynamicSWSF-FP) = rhs (LPA*) = distance_lookahead_map
see "Efficient Point-to-Point Shortest Path Algorithms" by Andrew V. Goldberg et. al for correct bidirection Dijkstra's termination condition
original implemetation from 2015-04
be careful: this class uses the CostInf template argument for decisions about infinities and non-existant paths; if the underlying edge weights use a different value, performace can suffer!
Invariant 1: start_distlook[v] = min_pred(v) { start_dist[u] + w(u,v) }
Invariant 2: iff start_distlook[v] != start_dist[u], then inconsistent (also conn queue stuff)
1.8.6
using