web-dev-qa-db-ja.com

最速ルートを決定するアルゴリズム?

1から5に行くとします。最短ルートは1-4-3-5(合計:60 km)です。

Graph

そのために Dijkstraのアルゴリズム を使用できます。

今問題は、交通渋滞やその他の要因により、最短ルートが常に最速ルートであるとは限らないことです。

例えば:

  • 1-2は交通渋滞が頻繁に発生することがわかっているため、回避する必要があります。
  • 急に自動車事故が4〜3回発生しますので、避けてください。
  • 等...

交通渋滞や事故がないため、おそらくルート1-4-5で速度を上げることができるので、5より早く到着します。

まあそれは一般的な考えであり、詳細についてはまだ考えていません。

この問題を解決するアルゴリズムはありますか?

17
anta40

画像に渋滞をもたらしたので、 Braess 'Paradox に巻き込まれないように注意してください。全員が最適な経路を選択すると、全員の移動時間が長くなります。

5
Michael Brown

はい:ダイクストラ

ダイクストラはこの状況でも同様に機能します。
各弧の重みとして、距離ではなく時間を使用します。

49
Martin York

はい。ダイクストラのアルゴリズムはこの問題を解決します。

あなたの場合の問題は、最短経路が移動距離に等しいと自動的に想定することです。実際には、経路をたどることのCOSTに相当します。

1つのパスにロードブロッキングがある場合、そのCOSTは高くなり、アルゴリズムは引き続き適用されます。

16
maple_shaft

ノード間の時間で距離を置き換えることができ、同じ方法でそれを解決できるはずです。

11
DKnight

ダイクストラ

前述のように、最短距離で使用されるだけではありません。このアニメーションは、ダイクストラの「力」(より良い言葉がないため)をよく理解していると思います。

Dijkstra

10
Dynamic