There are two parts to your question:
- What data structure is used to store map information.
- What algorithm is used to “navigate” from source to destination.
For this, I would add one more question:
. , Google Bing, , . , CS .
Ans 1) . - , ( ) - .
, , Edge Weighted Digraph.
, - Adjacency List, , , , , , , , . . ! ( ) ? , .
, , , , . , - .
, - , World of Warcraft/Syrim/GTA, , . , . , , (, , ..).
, . , , , , / . . , Adjacency List .
( Java) : Adj []. , Adj [] List [Edge]. O (log N). , List, O (1), O (N), , .
, , , "". , ( - ). , , . , A B (, , ), ( , ).
Ans 2) . Dijkstra Path Finding. , A *. , Dijkstra , , . , V, , E lg V, , . , , V E , Dijkstra .
Ans 1) : . , .
Quad Tree ( n-). . KML (Keyhole) . Keyhole , NVIDIA, "Google Earth", .
Quad Tree , 3D-, , .
, , . 4 Quad.
, , ( , , 4 , , , ). , , 4 . 4 . , , . "", .
, .