algopattern/java/strategy/TransitOnEdge.java
2020-06-25 16:00:13 +02:00

32 lines
682 B
Java

package patterns.strategy;
import java.util.List;
import java.util.Map;
import patterns.Point;
/**
* Find the transit of minimal cost among the given edges.
Edges are given as the considered point and the sequence of neighbors points.
* @author pouyllau
*/
public class TransitOnEdge extends Transit {
public double transit(Point p, List<Point> neighbors, Map<Point, Double> costs) {
double mincost = Double.POSITIVE_INFINITY;
for (Point n : neighbors) {
if (hasCost(n, costs)) {
double c = costs.get(n) + Point.distance(p, n);
if (c < mincost) {
mincost = c;
}
}
}
assert (mincost != Double.POSITIVE_INFINITY);
return mincost;
}
}