マップ プロバイダー (Google や Yahoo! マップなど) はどのように道順を提案しますか?
つまり、彼らはおそらく距離を含む何らかの形で実世界のデータを持っているでしょうが、おそらく運転速度、歩道の存在、電車のスケジュールなども含まれています。しかし、データがより単純な形式であったとします。距離を反映するエッジ ウェイトを使用します。ある任意の点から別の点への方向をすばやく計算できるようにしたいと考えています。これらのポイントは、(1 つの都市内で) 近くにある場合もあれば、遠く離れている場合もあります (クロスカントリー)。
ダイクストラのアルゴリズムのようなグラフ アルゴリズムは、グラフが巨大であるため機能しません。幸いなことに、A* のようなヒューリスティック アルゴリズムはおそらく機能します。しかし、私たちのデータは非常に構造化されており、おそらく何らかの階層化されたアプローチが機能するのではないでしょうか? (たとえば、遠く離れた特定の「キー」ポイント間の事前計算された方向と、いくつかのローカル方向を保存します。この場合、2 つの遠く離れたポイントの方向には、キー ポイントへのローカル方向、別のキー ポイントへのグローバル方向、ローカル方向が含まれます。再度ご案内します。)
実際に実際に使用されているアルゴリズムは何ですか?
PS。この質問は、オンライン マッピングのルート案内で癖を見つけたことがきっかけでした。三角形の不等式とは反対に、 XYZのように中間点を使用するよりも、 XZの方が時間がかかり、遠いとGoogle マップが判断する場合があります。しかし、彼らの歩行経路も別のパラメータで最適化されているのではないでしょうか?
PPS。XZ対XYZという、ある種の階層化されたアプローチを使用していることを (私に) 示唆する三角形の不等式の別の違反を次に示します。前者は少し外れていますが、有名なセバストポール大通りを利用しているようです。
編集:これらの例はどちらも機能していないようですが、元の投稿の時点では両方とも機能していました。