2017-01-13 7 views
1

こんにちは私はこの問題を解決するための最良のアルゴリズムを見つけようとしています。義務的なノードを通過させた有向グラフの最短経路

私は、指定された開始ノードと終了ノードの間の最短経路を見つけなければならないが、特定のユーザ入力ノードを通過しなければならないというグラフがある。

必須のノードがないため、各ノードに複数回アクセスすることはできません。

私は各ノードが特定の順序で到達する必要があると考えている場合、最初に各停止までの最短経路を計算するのが簡単でしょうか?

K最短経路はこの問題を解決する方法ですか?最短の経路を計算し、そこから進み、すべてがノードを通過する必要がある最短経路を見つけるまで、ここ

iが enter image description here

ノード4及び6を通過しなければならないし、そして私はそれが十分2つの互いに素な経路問題ことが知られている1および5

+0

中間ノードで厳密な順序付けをしていれば、正しいものです。それぞれの最短パスを順番に見つけてください。発注について気にしなければ、k-shortestパスが最終的に答えを出すでしょうが、非効率です。この場合、欲張りアルゴリズムが最善の選択肢かもしれませんが、絶対最短でない可能性のあるパスを取得することが大丈夫ならば。 – Destruktor

+1

は次のようになります。[http://cs.stackexchange.com/questions/14977/shortest-path-that-passes-through-specific-nodes](http://cs.stackexchange.com/questions/14977/)最短経路パススルー特定ノード) – Destruktor

+0

もう1つの質問は、非周期グラフを求めます。また答えは最短歩行のためのものでパスではありません。 –

答えて

0

間の最短経路を見つける必要が描く例示的グラフです。 NP-complete in digraphsです。それらの証明はグラフGと2つのソース頂点s1、s2と2つの端子t1、t2を有する。タスクは、2つの内部的に頂点のある離散パスp1、p2を見つけることです。p1はs1をt1に接続し、p2はs2、t2を接続します。私たちは、単に離れた経路であなたの問題をモデル化することができます。上記の硬さ証明で提供されるグラフでは、単にs2、t1を識別し、それを新しい頂点s2t1にします。次に、s1で始まるパスがs2t1を通り、t2で終わる場合にのみ、元のグラフに2つの互いに素なパスがあります。これは、有向グラフでそのようなパスを見つけることさえ難しいことを意味します。最適化バージョンでさえありません。

しかし、グラフに特殊な構造があれば、それはより簡単になります。例えばのように。非循環グラフではより簡単です。

関連する問題