public class AStarBidirection extends AbstractNonCHBidirAlgo
See http://research.microsoft.com/apps/pubs/default.aspx?id=64511 http://i11www.iti.uni-karlsruhe.de/_media/teaching/sommer2012/routenplanung/vorlesung4.pdf http://research.microsoft.com/pubs/64504/goldberg-sofsem07.pdf http://www.cs.princeton.edu/courses/archive/spr06/cos423/Handouts/EPP%20shortest%20path%20algorithms.pdf
and
1. Ikeda, T., Hsu, M.-Y., Imai, H., Nishimura, S., Shimoura, H., Hashimoto, T., Tenmoku, K., and Mitoh, K. (1994). A fast algorithm for finding better routes by ai search techniques. In VNIS, pages 291–296.
2. Whangbo, T. K. (2007). Efficient modified bidirectional a* algorithm for optimal route- finding. In IEA/AIE, volume 4570, pages 344–353. Springer.
or could we even use this three phase approach? www.lix.polytechnique.fr/~giacomon/papers/bidirtimedep.pdf
additionalEdgeFilter, edgeExplorer, flagEncoder, graph, inEdgeFilter, outEdgeFilter, weighting
bestBwdEntry, bestFwdEntry, bestWeight, bestWeightMapFrom, bestWeightMapOther, bestWeightMapTo, currFrom, currTo, finishedFrom, finishedTo, from, fromOutEdge, maxVisitedNodes, nodeAccess, to, toInEdge, traversalMode, updateBestPath
Constructor and Description |
---|
AStarBidirection(Graph graph,
Weighting weighting,
TraversalMode tMode) |
Modifier and Type | Method and Description |
---|---|
protected double |
calcWeight(EdgeIteratorState iter,
SPTEntry currEdge,
boolean reverse) |
protected SPTEntry |
createEntry(EdgeIteratorState edge,
int incEdge,
double weight,
SPTEntry parent,
boolean reverse)
Creates a new entry of the shortest path tree (a
SPTEntry or one of its subclasses) during a dijkstra
expansion. |
protected SPTEntry |
createStartEntry(int node,
double weight,
boolean reverse)
Creates the root shortest path tree entry for the forward or backward search.
|
protected boolean |
finished() |
WeightApproximator |
getApproximation() |
String |
getName() |
AStarBidirection |
setApproximation(WeightApproximator approx) |
protected void |
updateEntry(SPTEntry entry,
EdgeIteratorState edge,
int edgeId,
double weight,
SPTEntry parent,
boolean reverse) |
accept, accept, createEmptyPath, createPathExtractor, extractPath, fillEdgesFromUsingFilter, fillEdgesToUsingFilter, getInEdgeWeight, getOrigEdgeId, getOtherNode, getTraversalId, postInitFrom, postInitTo, toString
bwdSearchCanBeStopped, calcPath, calcPath, calcPaths, checkAlreadyRun, fromEntryCanBeSkipped, fwdSearchCanBeStopped, getCurrentFromWeight, getCurrentToWeight, getIncomingEdge, getVisitedNodes, initCollections, initFrom, initTo, isMaxVisitedNodesExceeded, postInit, runAlgo, setMaxVisitedNodes, setUpdateBestPath, toEntryCanBeSkipped, updateBestPath
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
calcPath
calcPath, calcPaths, getVisitedNodes, setMaxVisitedNodes
public AStarBidirection(Graph graph, Weighting weighting, TraversalMode tMode)
protected boolean finished()
finished
in class AbstractBidirAlgo
protected SPTEntry createStartEntry(int node, double weight, boolean reverse)
AbstractBidirAlgo
createStartEntry
in class AbstractBidirAlgo
protected SPTEntry createEntry(EdgeIteratorState edge, int incEdge, double weight, SPTEntry parent, boolean reverse)
AbstractNonCHBidirAlgo
SPTEntry
or one of its subclasses) during a dijkstra
expansion.createEntry
in class AbstractNonCHBidirAlgo
edge
- the edge that is currently processed for the expansionincEdge
- the id of the edge that is incoming to the node the edge is pointed at. usually this is the same as
edge.getEdge(), but for edge-based CH and in case edge is a shortcut incEdge is the original edge
that is incoming to the nodeweight
- the weight the shortest path three entry should carryparent
- the parent entry of in the shortest path treereverse
- true if we are currently looking at the backward search, false otherwiseprotected void updateEntry(SPTEntry entry, EdgeIteratorState edge, int edgeId, double weight, SPTEntry parent, boolean reverse)
updateEntry
in class AbstractNonCHBidirAlgo
protected double calcWeight(EdgeIteratorState iter, SPTEntry currEdge, boolean reverse)
calcWeight
in class AbstractNonCHBidirAlgo
public WeightApproximator getApproximation()
public AStarBidirection setApproximation(WeightApproximator approx)
public String getName()
getName
in interface RoutingAlgorithm
getName
in class AbstractBidirAlgo
Copyright © 2012–2020. All rights reserved.