正のエッジコストを持つ無向グラフG = {E、V}が与えられた場合。すべてのノードの組み合わせに対して、特定のノードvがエンドポイントではない最短パスのいずれにも存在しないかどうかを判断する方法はありますか?頂点が最短経路のいずれかにあるかどうかを決定するアルゴリズム
私は、vが解決策に含まれていれば、v以外の各ノードでDijkstra's Algorithmの修正された形式を実行することでこれを実行できると考えました。しかし、私はこれを行うアルゴリズムを変更する方法がわかりません。
正のエッジコストを持つ無向グラフG = {E、V}が与えられた場合。すべてのノードの組み合わせに対して、特定のノードvがエンドポイントではない最短パスのいずれにも存在しないかどうかを判断する方法はありますか?頂点が最短経路のいずれかにあるかどうかを決定するアルゴリズム
私は、vが解決策に含まれていれば、v以外の各ノードでDijkstra's Algorithmの修正された形式を実行することでこれを実行できると考えました。しかし、私はこれを行うアルゴリズムを変更する方法がわかりません。
v
が頂点であり、a
とb
が開始点と終了点であるとします。
a
からb
への最短経路長を見つけます。a
からv
とv
からb
への最短経路長を見つけます。v
はa
からb
までの潜在的な最短経路にあります。PS:アルゴリズムの複雑さは、最短経路を見つけるのと同じです。
更新:Dijkstraは1つのノードから開始し、それから他のノードに最小距離を伝播します。それはすべてのノード(while Q is not empty
)に到達するまでこれを行います。特定のノード(エンドポイント)に興味がある場合は、そのポイントに達するまでダイクストラでこのプロセスを実行できます(t
がターゲットポイントであるとします)Q
から抽出したu
までの距離伝播を行います。行u ← vertex in Q with min dist[u]
u equals t
あなたはreturn dist[u]
することができます)。 Dijkstraと良いグラフィックスのイラストについては、thisをご覧ください。
Dijkstraでこれを行う方法はありますか、それとも別の最短経路アルゴリズムが必要ですか?私が読んだことによると、Dijkstrasは開始ノードを指定するだけで、終了ノードを指定することはできません。 – Dez
@Dez回答が更新されました。それが助けてくれる –
2つの特定のノードaとbの間に、複数の最短パスが存在する可能性があります。これらのパスのうち少なくとも1つにvが含まれないようにしますか?またはそれらのすべてがvを持っていてはいけませんか? –
それらのすべてが持っていてはいけません – Dez