/** * Expands the given Node in the routing algorithm; may be overridden in * sub-classes. * * @param outNode * The Node to be expanded. * @param toNode * The target Node of the route. * @param pendingNodes * The set of pending nodes so far. */ protected void relaxNode(final Node outNode, final Node toNode, final RouterPriorityQueue<Node> pendingNodes) { DijkstraNodeData outData = getData(outNode); double currTime = outData.getTime(); double currCost = outData.getCost(); if (this.pruneDeadEnds) { PreProcessDijkstra.DeadEndData ddOutData = getPreProcessData(outNode); for (Link l : outNode.getOutLinks().values()) { relaxNodeLogic(l, pendingNodes, currTime, currCost, toNode, ddOutData); } } else { // this.pruneDeadEnds == false for (Link l : outNode.getOutLinks().values()) { relaxNodeLogic(l, pendingNodes, currTime, currCost, toNode, null); } } }
@Override public void relaxNode(final Node outNode, final Node toNode, final RouterPriorityQueue<Node> pendingNodes) { RoutingNetworkNode routingNetworkNode = (RoutingNetworkNode) outNode; NodeData outData = getData(routingNetworkNode); double currTime = outData.getTime(); double currCost = outData.getCost(); if (this.dijkstra.pruneDeadEnds) { PreProcessDijkstra.DeadEndData ddOutData = getPreProcessData(routingNetworkNode); for (Link l : routingNetworkNode.getOutLinksArray()) { this.dijkstra.relaxNodeLogic(l, pendingNodes, currTime, currCost, toNode, ddOutData); } } else { // this.pruneDeadEnds == false for (Link l : routingNetworkNode.getOutLinksArray()) { this.dijkstra.relaxNodeLogic(l, pendingNodes, currTime, currCost, toNode, null); } } }