Skip to content

Commit 7dcd24d

Browse files
committed
routing algo: minor simplification
1 parent e31d910 commit 7dcd24d

File tree

4 files changed

+12
-23
lines changed

4 files changed

+12
-23
lines changed

core/src/main/java/com/graphhopper/routing/AStarBidirection.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ protected SPTEntry createStartEntry(int node, double weight, boolean reverse) {
8585
}
8686

8787
@Override
88-
protected SPTEntry createEntry(EdgeIteratorState edge, int incEdge, double weight, SPTEntry parent, boolean reverse) {
88+
protected SPTEntry createEntry(EdgeIteratorState edge, double weight, SPTEntry parent, boolean reverse) {
8989
int neighborNode = edge.getAdjNode();
9090
double heapWeight = weight + weightApprox.approximate(neighborNode, reverse);
9191
AStarEntry entry = new AStarEntry(edge.getEdge(), neighborNode, heapWeight, weight);
@@ -94,7 +94,7 @@ protected SPTEntry createEntry(EdgeIteratorState edge, int incEdge, double weigh
9494
}
9595

9696
@Override
97-
protected void updateEntry(SPTEntry entry, EdgeIteratorState edge, int edgeId, double weight, SPTEntry parent, boolean reverse) {
97+
protected void updateEntry(SPTEntry entry, EdgeIteratorState edge, double weight, SPTEntry parent, boolean reverse) {
9898
entry.edge = edge.getEdge();
9999
entry.weight = weight + weightApprox.approximate(edge.getAdjNode(), reverse);
100100
((AStarEntry) entry).weightOfVisitedPath = weight;

core/src/main/java/com/graphhopper/routing/AbstractBidirAlgo.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import com.carrotsearch.hppc.IntObjectMap;
2121
import com.graphhopper.coll.GHIntObjectHashMap;
2222
import com.graphhopper.routing.util.TraversalMode;
23+
import com.graphhopper.util.EdgeIterator;
2324

2425
import java.util.Collections;
2526
import java.util.List;
@@ -121,7 +122,7 @@ protected void postInit(int from, int to) {
121122
if (!traversalMode.isEdgeBased()) {
122123
if (updateBestPath) {
123124
bestWeightMapOther = bestWeightMapFrom;
124-
updateBestPath(Double.POSITIVE_INFINITY, currFrom, -1, to, true);
125+
updateBestPath(Double.POSITIVE_INFINITY, currFrom, EdgeIterator.NO_EDGE, to, true);
125126
}
126127
} else if (from == to && fromOutEdge == ANY_EDGE && toInEdge == ANY_EDGE) {
127128
// special handling if start and end are the same and no directions are restricted
@@ -169,7 +170,7 @@ protected boolean finished() {
169170

170171
abstract boolean fillEdgesTo();
171172

172-
protected void updateBestPath(double edgeWeight, SPTEntry entry, int origEdgeId, int traversalId, boolean reverse) {
173+
protected void updateBestPath(double edgeWeight, SPTEntry entry, int origEdgeIdForCH, int traversalId, boolean reverse) {
173174
assert traversalMode.isEdgeBased() != Double.isInfinite(edgeWeight);
174175
SPTEntry entryOther = bestWeightMapOther.get(traversalId);
175176
if (entryOther == null)

core/src/main/java/com/graphhopper/routing/AbstractNonCHBidirAlgo.java

Lines changed: 6 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -71,14 +71,11 @@ public AbstractNonCHBidirAlgo(Graph graph, Weighting weighting, TraversalMode tM
7171
* expansion.
7272
*
7373
* @param edge the edge that is currently processed for the expansion
74-
* @param incEdge the id of the edge that is incoming to the node the edge is pointed at. usually this is the same as
75-
* edge.getEdge(), but for edge-based CH and in case edge is a shortcut incEdge is the original edge
76-
* that is incoming to the node
7774
* @param weight the weight the shortest path three entry should carry
7875
* @param parent the parent entry of in the shortest path tree
7976
* @param reverse true if we are currently looking at the backward search, false otherwise
8077
*/
81-
protected abstract SPTEntry createEntry(EdgeIteratorState edge, int incEdge, double weight, SPTEntry parent, boolean reverse);
78+
protected abstract SPTEntry createEntry(EdgeIteratorState edge, double weight, SPTEntry parent, boolean reverse);
8279

8380
protected BidirPathExtractor createPathExtractor(Graph graph, Weighting weighting) {
8481
return new BidirPathExtractor(graph, weighting);
@@ -174,16 +171,15 @@ private void fillEdges(SPTEntry currEdge, PriorityQueue<SPTEntry> prioQueue, Int
174171
if (Double.isInfinite(weight)) {
175172
continue;
176173
}
177-
final int origEdgeId = getOrigEdgeId(iter, reverse);
178-
final int traversalId = getTraversalId(iter, origEdgeId, reverse);
174+
final int traversalId = traversalMode.createTraversalId(iter, reverse);
179175
SPTEntry entry = bestWeightMap.get(traversalId);
180176
if (entry == null) {
181-
entry = createEntry(iter, origEdgeId, weight, currEdge, reverse);
177+
entry = createEntry(iter, weight, currEdge, reverse);
182178
bestWeightMap.put(traversalId, entry);
183179
prioQueue.add(entry);
184180
} else if (entry.getWeightOfVisitedPath() > weight) {
185181
prioQueue.remove(entry);
186-
updateEntry(entry, iter, origEdgeId, weight, currEdge, reverse);
182+
updateEntry(entry, iter, weight, currEdge, reverse);
187183
prioQueue.add(entry);
188184
} else
189185
continue;
@@ -193,12 +189,12 @@ private void fillEdges(SPTEntry currEdge, PriorityQueue<SPTEntry> prioQueue, Int
193189
double edgeWeight = traversalMode.isEdgeBased() ? weighting.calcEdgeWeight(iter, reverse) : Double.POSITIVE_INFINITY;
194190
// todo: performance - if bestWeightMapOther.get(traversalId) == null, updateBestPath will exit early and we might
195191
// have calculated the edgeWeight unnecessarily
196-
updateBestPath(edgeWeight, entry, origEdgeId, traversalId, reverse);
192+
updateBestPath(edgeWeight, entry, EdgeIterator.NO_EDGE, traversalId, reverse);
197193
}
198194
}
199195
}
200196

201-
protected void updateEntry(SPTEntry entry, EdgeIteratorState edge, int edgeId, double weight, SPTEntry parent, boolean reverse) {
197+
protected void updateEntry(SPTEntry entry, EdgeIteratorState edge, double weight, SPTEntry parent, boolean reverse) {
202198
entry.edge = edge.getEdge();
203199
entry.weight = weight;
204200
entry.parent = parent;
@@ -208,14 +204,6 @@ protected boolean accept(EdgeIteratorState edge, SPTEntry currEdge, boolean reve
208204
return accept(edge, getIncomingEdge(currEdge));
209205
}
210206

211-
protected int getOrigEdgeId(EdgeIteratorState edge, boolean reverse) {
212-
return edge.getEdge();
213-
}
214-
215-
protected int getTraversalId(EdgeIteratorState edge, int origEdgeId, boolean reverse) {
216-
return traversalMode.createTraversalId(edge, reverse);
217-
}
218-
219207
protected double calcWeight(EdgeIteratorState iter, SPTEntry currEdge, boolean reverse) {
220208
// todo: for #1835 move access flag checks into weighting
221209
final boolean access = reverse ? inEdgeFilter.accept(iter) : outEdgeFilter.accept(iter);

core/src/main/java/com/graphhopper/routing/DijkstraBidirectionRef.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ protected SPTEntry createStartEntry(int node, double weight, boolean reverse) {
4242
}
4343

4444
@Override
45-
protected SPTEntry createEntry(EdgeIteratorState edge, int incEdge, double weight, SPTEntry parent, boolean reverse) {
45+
protected SPTEntry createEntry(EdgeIteratorState edge, double weight, SPTEntry parent, boolean reverse) {
4646
SPTEntry entry = new SPTEntry(edge.getEdge(), edge.getAdjNode(), weight);
4747
entry.parent = parent;
4848
return entry;

0 commit comments

Comments
 (0)