Como os fornecedores de mapas (como Google ou Yahoo! Maps) sugerem instruções?
Quero dizer, eles provavelmente têm dados do mundo real de alguma forma, certamente incluindo distâncias, mas também coisas como velocidades de condução, presença de calçadas, horários de trens etc. Mas suponha que os dados estejam em um formato mais simples, digamos um gráfico direcionado muito grande com pesos nas arestas refletindo distâncias. Quero poder calcular rapidamente direções de um ponto arbitrário para outro. Às vezes, esses pontos ficam próximos (dentro de uma cidade), enquanto às vezes ficam distantes (cross-country).
Algoritmos de gráficos como o algoritmo de Dijkstra não funcionarão porque o gráfico é enorme. Felizmente, algoritmos heurísticos como A * provavelmente funcionarão. No entanto, nossos dados são muito estruturados e talvez algum tipo de abordagem em camadas possa funcionar? (Por exemplo, armazene direções pré-computadas entre determinados pontos "principais", bem como algumas direções locais. Em seguida, as direções para dois pontos distantes envolverão direções locais para um ponto principal, direções globais para outro ponto principal e, em seguida, local instruções novamente.)
Quais algoritmos são realmente usados na prática?
PS. Essa pergunta foi motivada por encontrar peculiaridades nas direções do mapeamento on-line. Ao contrário da desigualdade do triângulo, às vezes o Google Maps acha que o XZ leva mais tempo e é mais longe do que usar um ponto intermediário como no XYZ . Mas talvez as direções a pé também sejam otimizadas para outro parâmetro?
PPS. Aqui está outra violação da desigualdade do triângulo que sugere (para mim) que eles usem algum tipo de abordagem em camadas: XZ versus XYZ . O primeiro parece usar o famoso Boulevard de Sebastopol, embora esteja um pouco fora do caminho.
Editar : nenhum desses exemplos parece funcionar mais, mas ambos funcionavam no momento da postagem original.