# Interface ILcdShortestRouteAlgorithm

All Known Implementing Classes:
`TLcdPartitionedShortestRouteAlgorithm`, `TLcdShortestRouteAlgorithm`

public interface ILcdShortestRouteAlgorithm
`ILcdShortestRouteAlgorithm` is an interface for algorithms that find the shortest routes from a source node to a destination node.
Since:
5.1
• ## Method Summary

Modifier and Type
Method
Description
```<N, E> ILcdRoute<N,E>```
```getShortestRoute(ILcdGraph<N,E> aGraph, ILcdRoute<N,E> aPrecedingRoute, ILcdRoute<N,E> aSucceedingRoute, ILcdEdgeValueFunction<N,E> aEdgeValueFunction, ILcdDistanceFunction<N,E> aHeuristicDistanceFunction)```
Returns an `ILcdRoute` describing the shortest route between `aPrecedingRoute` and `aSucceedingRoute`.
• ## Method Details

• ### getShortestRoute

<N, E> ILcdRoute<N,E> getShortestRoute(ILcdGraph<N,E> aGraph, ILcdRoute<N,E> aPrecedingRoute, ILcdRoute<N,E> aSucceedingRoute, ILcdEdgeValueFunction<N,E> aEdgeValueFunction, ILcdDistanceFunction<N,E> aHeuristicDistanceFunction)
Returns an `ILcdRoute` describing the shortest route between `aPrecedingRoute` and `aSucceedingRoute`.
Parameters:
`aGraph` - the graph for which the route is to be calculated.
`aPrecedingRoute` - the route preceding the shortest route, i.e. where the first edge of the shortest route should connect to. Only the last `n` edges of this route will have an influence on the result, where `n` is equal to the order of the given `ILcdEdgeValueFunction`.
`aSucceedingRoute` - the route succeeding the shortest route, i.e. where the last edge of the shortest route should connect to. Only the first `n` edges of this route will have an influence on the result, where `n` is equal to the order of the given `ILcdEdgeValueFunction`.
`aEdgeValueFunction` - a function that associates a cost with each edge
`aHeuristicDistanceFunction` - a distance function, indicating the estimate cost to travel from one node to another. This function can be used to accelerate the search process. Note that this estimate should always be an underestimate of the real remaining distance, in order to result in an optimal solution. A heuristic function, although it can greatly increase the performance is not required for the algorithm to work - it may be `null`.
Returns:
The shortest route between the two given routes, or `null` if no such route is found.
Throws:
`NullPointerException` - if one of the arguments, with exception of `aHeuristicDistanceFunction` is `null`.
`IllegalArgumentException` - if one of the given routes is not completely contained in the given graph.
`IllegalArgumentException` - if one of the given routes is an empty route. Each of the two given routes should contain at least one node.