On Tue, 3 Nov 2009 08:20:54 +0100, Dennis Luxen <lu...@kit.edu> wrote:
>> I've always asked myself why we wouldn't try some quadtree algoritm  
>> for
>> parsing/routing/filing our data...
> 
> Well, Quad-Trees don't help you much when it comes to routing. It's a  
> data structure that helps answering queries that ask for a nearest  
> neighbor to some coordinate. For routing it is the easiest to use a  
> simple adjancy list representation for the graph.

Actually it does.
Because before you can do the actual routing you have to find
the nearest Street the driver can actually be on and you have
to find all the target-locations.
For navigation as opposed to route-finding you also need
to continously render a moving map and for that you need
to answer range-queries VERY fast.
This part is actually more demanding on the datastructures
used then simply getting all ways a node is connected to,
the next+prev node along a way and some tags on the ways/nodes
you are evaluating in your routing-application. Also because
the rendering is a realtime-case while route-calculation  happens
usually only once.


> And when it comes to  
> a serious routing scenario, where you have millions of edges and nodes  
> then you need to do specialized preprocessing. Dijkstras classical  
> algorithm and related heuristics don't scale that well on large data  
> sets. There are several exact speedup-techniques for that problem.

Can you please point out a few and maybe even add links to them on
the "Routine" wiki-page? This may be interesting for a lot
of readers.

> Again, a Quadtree is an index structure that answers neighborhood  
> queries fast like "Whats the nearest neighbor to coordinate xy?" or  
> "What is all information we have for a certain region or tile?".

As I pointed out. Very usefull. It need not be the only index.

> Routing on the other hand implies some connection between the nodes  
> that is easier (meaning: more efficiently) to exploit than a spatial  
> index. On the other hand, I have to acknowledge that there is  
> scientific work, that speeds up Dijkstras algorithm by employing tree- 
> like data structures but only among other algorithmic techniques.

(Another index by ID and a backward-reference from node to way
and from node/way/relation to relation are a very, very good thing
for the route-calculation.)

Marcus

_______________________________________________
Routing mailing list
Routing@openstreetmap.org
http://lists.openstreetmap.org/listinfo/routing

Reply via email to