public class AStarBidirection extends AbstractBidirAlgo implements RecalculationHook
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
bestPath, bestWeightMapFrom, bestWeightMapOther, bestWeightMapTo, currFrom, currTo, finishedFrom, finishedToadditionalEdgeFilter, flagEncoder, graph, inEdgeExplorer, maxVisitedNodes, nodeAccess, outEdgeExplorer, traversalMode, weighting| Constructor and Description |
|---|
AStarBidirection(Graph graph,
Weighting weighting,
TraversalMode tMode) |
| Modifier and Type | Method and Description |
|---|---|
void |
afterHeuristicChange(boolean forward,
boolean backward)
Call this method after the heuristic has changed and graph exploration should continue.
|
protected double |
calcWeight(EdgeIteratorState iter,
SPTEntry currEdge,
boolean reverse) |
protected SPTEntry |
createEntry(EdgeIteratorState edge,
double weight,
SPTEntry parent,
boolean reverse) |
protected AStar.AStarEntry |
createStartEntry(int node,
double weight,
boolean reverse) |
WeightApproximator |
getApproximation() |
String |
getName() |
AStarBidirection |
setApproximation(WeightApproximator approx) |
protected void |
updateEntry(SPTEntry entry,
EdgeIteratorState edge,
double weight,
SPTEntry parent,
boolean reverse) |
accept, bwdSearchCanBeStopped, calcPath, createAndInitPath, extractPath, finished, fromEntryCanBeSkipped, fwdSearchCanBeStopped, getCurrentFromWeight, getCurrentToWeight, getOrigEdgeId, getTraversalId, getVisitedNodes, initCollections, initFrom, initTo, postInit, runAlgo, setUpdateBestPath, toEntryCanBeSkipped, updateBestPathaccept, calcPaths, checkAlreadyRun, createEmptyPath, isMaxVisitedNodesExceeded, setEdgeFilter, setMaxVisitedNodes, toStringclone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitgetVisitedNodespublic AStarBidirection(Graph graph, Weighting weighting, TraversalMode tMode)
protected AStar.AStarEntry createStartEntry(int node, double weight, boolean reverse)
createStartEntry in class AbstractBidirAlgoprotected SPTEntry createEntry(EdgeIteratorState edge, double weight, SPTEntry parent, boolean reverse)
createEntry in class AbstractBidirAlgoprotected void updateEntry(SPTEntry entry, EdgeIteratorState edge, double weight, SPTEntry parent, boolean reverse)
updateEntry in class AbstractBidirAlgoprotected double calcWeight(EdgeIteratorState iter, SPTEntry currEdge, boolean reverse)
calcWeight in class AbstractBidirAlgopublic WeightApproximator getApproximation()
public AStarBidirection setApproximation(WeightApproximator approx)
approx - if true it enables approximate distance calculation from lat,lon valuespublic void afterHeuristicChange(boolean forward,
boolean backward)
RecalculationHookafterHeuristicChange in interface RecalculationHookpublic String getName()
getName in interface RoutingAlgorithmgetName in class AbstractRoutingAlgorithmCopyright © 2012–2018. All rights reserved.