In applied mathematics, transit node routing can be used to speed up shortest-path routing by pre-computing connections between common access nodes to a sub-network relevant to long-distance travel. Transit node routing as a framework was established in 2007 and many concrete implementations have surfaced in the years after such as approaches using grids, highway hierarchies and contraction hierarchies. Transit node routing is a static approach that requires pre-processing of pair-wise distances between important nodes in the graph (see below how those nodes are chosen). A dynamic approach has not been published.
Intuition
Long-distance travel usually involves driving along a subset of the road network such as freeways instead of e.g. urban roads. This sub-network can only be entered by using sparsely distributed access nodes. When compared to one another, multiple long-distance routes starting at the same location always use the same small amount of access nodes close to the starting location to enter this network. In the same way, similar target locations are always reached by using the same access nodes close to them. This intuition only holds for long-distance travel. When travelling short distances, such access nodes might be never used because the fastest path to the target only uses local roads. Because the number of such access nodes is small compared to the overall number of nodes in a road network, all shortest routes connecting those nodes with each other can be pre-calculated and stored. When calculating a shortest path therefore only routes to access nodes close to start and target location need to be calculated.
General framework Transit node routing starts with a selection of transit nodes T ⊆ V {\displaystyle T\subseteq V} as a subset of all nodes V {\displaystyle V} of the road network. For every node v ∈ V {\displaystyle v\in V} dedicated sets of forward access nodes A → ( v ) ⊆ T {\displaystyle {\overrightarrow {A}}(v)\subseteq T} and backward access nodes A ← ( v ) ⊆ T {\displaystyle {\overleftarrow {A}}(v)\subseteq T} are chosen from all transit nodes. Now, pairwise distances between transit nodes D T {\displaystyle D_{T}} and distances between nodes v {\displaystyle v} and their corresponding access nodes d A {\displaystyle d_{A}} are calculated and stored. A distance between two nodes can now be calculated as d ( s , t ) = min u ∈ A → ( s ) , v ∈ A ← ( t ) d A ( s , u ) + D T ( u , v ) + d A ( v , t ) {\displaystyle d(s,t)=\min _{u\in {\overrightarrow {A}}(s),v\in {\overleftarrow {A}}(t)}d_{A}(s,u)+D_{T}(u,v)+d_{A}(v,t)}
Locality filter Short routes between close start and target locations may not require any transit nodes. In this case, the above framework leads to incorrect distances because it forces routes to visit at least one transit node. To prevent this kind of problem, a locality filter can be used. For given start and target locations, the locality filter decides, if transit node routing should be applied or if a fallback-routine should be used (local query).
Concrete instances Transit node routing is not an algorithm but merely a framework for speeding up route planning. The general framework leaves open a few questions that need to be answered to implement it:
How are transit nodes selected? How are access nodes chosen? Which locality filter should be used? How should local queries be handled? The following example implementations of this framework answer these questions using different underlying methods such as grouping nodes in cells of an overlay grid and a more sophisticated implementation based on contraction hierarchies.
Geometrical approach using grids In a grid-based approach, the bounding square of all nodes is equally subdivided into square cells. How are access nodes selected?
… excerpt ends here. Continue reading the full article.


