Download presentation
Presentation is loading. Please wait.
1
Route Planning Vehicle navigation systems, Dijkstra’s algorithm, bidirectional search, transit-node routing
2
Vehicle navigation systems
Main tasks: positioning: locating the vehicle using GPS and/or dead reckoning with distance and heading sensors routing: determining a good route from a source to a destination guidance: providing visual and audio feedback on the route
3
Positioning GPS: works well, except in “urban canyons”
Urban canyons can give gross errors in position due to reflections from buildings Urban canyons can give loss of signal Especially problematic when driving out of parking garages
4
Positioning Dead reckoning: determine position from last known position using distance and heading sensors (relative position) Use map matching: the shape of the route taken and where it matches on the map, to correct dead reckoning
5
Guiding Top view, perspective view, overview
Schematic information on exit lanes Spoken directions Largely an HCI issue
6
Routing Based on Dijkstra’s shortest path algorithm
Many improvements to deal with huge networks Improvements use preprocessing
7
Routing Based on Dijkstra’s shortest path algorithm
Many improvements to deal with huge networks Improvements use preprocessing
8
Routing Based on Dijkstra’s shortest path algorithm
Many improvements to deal with huge networks Improvements use preprocessing Bidirectional search (from Bayreuth and from Erlangen)
9
Routing Based on Dijkstra’s shortest path algorithm
Many improvements to deal with huge networks Improvements use preprocessing Bidirectional search (from Bayreuth and from Erlangen)
10
Routing Dijkstra’s algorithm takes O(n + m log m) time for a graph with n nodes and m edges 1 2 10 6 9 4 2 3 7 9 6 5 2
11
Routing Dijkstra’s algorithm takes O(n + m log m) time for a graph with n nodes and m edges 1 2 10 6 9 4 2 3 7 9 6 5 2
12
Routing Dijkstra’s algorithm takes O(n + m log m) time for a graph with n nodes and m edges 1 2 10 6 9 4 2 3 7 9 6 5 2
13
Routing Dijkstra’s algorithm takes O(n + m log m) time for a graph with n nodes and m edges 1 10 2 10 6 9 4 2 3 7 9 6 5 5 2
14
Routing Dijkstra’s algorithm takes O(n + m log m) time for a graph with n nodes and m edges 1 10 2 10 6 9 4 2 3 7 9 6 5 5 2
15
Routing Dijkstra’s algorithm takes O(n + m log m) time for a graph with n nodes and m edges 1 10 2 10 6 9 4 2 3 7 9 6 5 5 2
16
Routing Dijkstra’s algorithm takes O(n + m log m) time for a graph with n nodes and m edges 1 14 8 2 10 6 9 4 14 2 3 7 9 6 5 5 7 2
17
Routing Dijkstra’s algorithm takes O(n + m log m) time for a graph with n nodes and m edges 1 14 8 2 10 6 9 4 14 2 3 7 9 6 5 5 7 2
18
Routing Dijkstra’s algorithm takes O(n + m log m) time for a graph with n nodes and m edges 1 14 8 2 10 6 9 4 14 2 3 7 9 6 5 5 7 2
19
Routing Dijkstra’s algorithm takes O(n + m log m) time for a graph with n nodes and m edges 1 13 8 2 10 6 9 4 13 2 3 7 9 6 5 5 7 2
20
Routing Dijkstra’s algorithm takes O(n + m log m) time for a graph with n nodes and m edges 1 13 8 2 10 6 9 4 13 2 3 7 9 6 5 5 7 2
21
Routing Dijkstra’s algorithm takes O(n + m log m) time for a graph with n nodes and m edges 1 13 8 2 10 6 9 4 13 2 3 7 9 6 5 5 7 2
22
Routing Dijkstra’s algorithm takes O(n + m log m) time for a graph with n nodes and m edges 1 9 8 2 10 6 9 4 13 2 3 7 9 6 5 5 7 2
23
Routing Dijkstra’s algorithm takes O(n + m log m) time for a graph with n nodes and m edges 1 9 8 2 10 6 9 4 13 2 3 7 9 6 5 5 7 2
24
Routing Dijkstra’s algorithm takes O(n + m log m) time for a graph with n nodes and m edges 1 9 8 2 10 6 9 4 13 2 3 7 9 6 5 5 7 2
25
Routing Dijkstra’s algorithm takes O(n + m log m) time for a graph with n nodes and m edges 1 9 8 2 10 6 9 4 13 2 3 7 9 6 5 5 7 2
26
Routing Dijkstra’s algorithm takes O(n + m log m) time for a graph with n nodes and m edges 1 9 8 2 10 6 9 4 13 2 3 7 9 6 5 5 7 2
27
Routing Dijkstra’s algorithm takes O(n + m log m) time for a graph with n nodes and m edges 1 9 8 2 10 6 9 4 13 2 3 7 9 6 5 5 7 2
28
Routing Dijkstra’s algorithm takes O(n + m log m) time for a graph with n nodes and m edges 1 9 8 2 10 6 9 4 13 2 3 7 9 6 5 5 7 2
29
Routing Dijkstra’s algorithm takes O(n + m log m) time for a graph with n nodes and m edges shortest path tree 1 9 8 2 10 6 9 4 13 2 3 7 9 6 5 5 7 2
30
Routing Dijkstra’s algorithm takes O(n + m log m) time for a graph with n nodes and m edges Every node is handled only once Its outgoing edges are considered only then Considering an edge may lower the cost of its destination node Nodes are stored by distance in a Fibonacci heap (it allows for a very efficient decrease-value operation) Road networks have m = O(n), so it takes O(n log n) time
31
Routing Very fast shortest path queries are needed in vehicle navigation systems and by Google Maps Idea: pre-compute the shortest path for every pair of nodes and store it in a table X much too much storage needed Need other ways to answer shortest path queries faster Highway hierarchies Transit-node routing
32
Highway Hierarchies Improvement for large road networks of a factor 1000 or more Based on the idea: if an edge e lies on a shortest path between s and t, but not close to s and not close to t, then it is generally important shortest path s t these edges seem generally important
33
Transit-Node Routing For a real road network, there exists a relatively small set of nodes, such that any shortest path of sufficient length will pass at least one of them For the Netherlands, every shortest path of at least 100 km will use a highway, so we can take all highway exits
34
Highways and other major roads; every shortest path in the original road network of at least 60 km will use a highway or other major road 60 km
35
Transit-Node Routing This relatively small set of nodes is called the set of transit nodes Furthermore, for every node, there are (typically) only few nodes that are the first transit nodes encountered when going far enough (access nodes) For the USA, the road network has 24 million nodes and 58 million edges Transit-node routing uses 10,000 transit nodes and for each node there are ~10 access nodes
36
Transit-Node Routing Store all distances between two transit nodes in a table For every node, store the distance to its ~10 access nodes in a table Use table look-up to determine shortest paths, if the distance between source and target is large enough for the source and target, get the access nodes and distances for every pair [access node of source, access node of target], determine a candidate path length by 3 table look-ups If the distance is small, just run Dijkstra bidirectional
38
V : nodes of the input graph T : transit nodes chosen access node
table/list nodes of V transit nodes i access nodes of i transit node table transit nodes
39
Transit-Node Routing Trade-off: many transit nodes: fast query time, large storage requirements, high preprocessing time few transit nodes: slower query time, smaller storage requirements, lower preprocessing time Reported (road network USA): query time: 5 – 63 s storage: 21 – 244 bytes/node preprocessing: 59 – 1200 minutes
40
Transit-Node Routing Need (for preprocessing): Need (at query time):
a way to choose transit-nodes a way to determine access nodes a way to compute the transit node table and access node table Need (at query time): a way to decide if a query is local ( use Dijkstra) or not ( use table look-up) a way to retrieve the shortest path itself
41
Choosing transit nodes
Use grid-based partition and use intersections of the network and the grid
42
Choosing transit nodes
Use grid-based partition and use intersections of the network and the grid Select nodes from Vinner based on whether they lie on some shortest path from a node in C to Vouter outer inner C
43
Choosing transit nodes
Consider every center square C Use 5 x 5 squares to define Vinner Use 9 x 9 squares to define Vouter Consider all paths from some node in C to some node in Vouter All nodes of Vinner on such a path will go in the set of transit nodes (eventually united over all C) Run Dijkstra from every node in C until all nodes in Vouter are settled
44
Choosing transit nodes
Given s and t, if they are more than 4 grid cells apart (horizontally or vertically), their shortest path must contain a transit node This provides an easy test for locality of any query (later, during query time)
45
Computing access nodes
For each transit node u, run Dijkstra until all shortest paths from u pass another transit node Every node v in the shortest path tree from u before another transit node is reached gets u as one of its access nodes u shortest path tree from u v
46
Computing the tables The access node table is automatically computed when the access nodes are determined Distances between “near” transit nodes are also computed transit node graph Dijkstra on the transit node graph gives the transit node table
47
Summary Vehicle navigation systems rely on positioning, routing, and guidance Route planning relies on Dijkstra’s algorithm and techniques to speed up queries, like preprocessing using the transit nodes idea
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.