有向グラフで同じ長さの少なくとも2つのパスを見つける


20

有向グラフと2つのノードおよびBがあるとします。次の決定問題を計算するためのアルゴリズムが既にあるかどうかを知りたい:A BG=(V,E)AB

同じ長さのABの間に少なくとも2つのパスがありますか?

複雑さはどうですか?多項式時間で解決できますか?


グラフに新しい制約を追加したいのですが、おそらく問題はより解決可能です。隣接行列では、すべての列が空ではありません。したがって、すべてのノードには入力に少なくとも1つの矢印があり、少なくとも1つのノードが自身に接続されています。そのため、ノードがi番目のノードである場合、(i,i)はグラフのエッジです。


単純なパスを意味しましたか?(各ノードに最大1回アクセス)、また、共通の内部ノードを持つことは許可されていますか?

1
いいえ、パスに制限はありません。必要に応じてループできます。
パオロパリセンT.

簡単な観察はこれです:A、Bの間に1つの単純なパスがA,Bあり、この単純なパスが最大で1つのループに接続されている場合、単純に「いいえ」と言うことができNoます。 、あなたははい、と言うことができます....

1
@mrm:これは重複しているとは思わない。OPはすべてのウォークではなく2つの(単純な)パスを要求していますが、すべてのウォークを要求することは非常に時間のかかる操作です(一般に、無限の数のウォークがあります)。
デイブクラーク

回答:


10

グラフについて考えてみましょう。同じ長さのからまでの2つの異なるパスがあるかどうかを知りたいです。何をすべきか?シンプル:2つのパスを1つにコーディングします。頂点グラフを定義します。あなたはステップ作るに、2つの独立したステップを行うことにより。追加のビットは、2つのパスが既に互いに分割されているかどうかを示します。A B G ' V × V × { 0 1 }GABGV×V×{0,1} GGG

正式に、エッジが存在するにおける IFF中及び。G '、I I '、J J ' G 、E ' = E I I 'J J '(i,j,e)(i,j,e)GiijjGe=e(i,i)(j,j)

アルゴリズムチェックパスがある場合に中のであり、、または何か。B B 1 G ' O V 4O V + E 2(A,A,0)(B,B,1)GO(V4)O((V+E)2)

このアルゴリズムが正しいことに同意する場合、結果として、のパスの長さは最大であるため、潜在的な「パスの衝突」はその長さで最後に発生する必要があります。この観測からアルゴリズムを取得できます。は行列乗算の複雑度です(スポイラーが必要な場合は確認してください...)。 2 N 2 O V ωログV )、ωG2n2O(VωlogV)ω

問題の構造をより多く使用するアルゴリズムがあると強く感じています。O(V+E)


3
それはエレガントです。
ラファエル

4

おそらくこの問題に対する答えはありますが、それが機能するかどうかはわかりません。

2つのパスを「見つける」ことは重要ではありません。唯一の重要なことは、それらが存在するかどうかを「知る」ことです。これはNPの完全な問題だとは思わない。

したがって、隣接行列ます。0、1の値で満たされていると簡単に推測できます。(0 =エッジなし; 1 =エッジあり)3つの値(0,1,2)を持つ次の代数を使用します。ただし、すべてが通常どおり機能しただし、 ; 2 + <何か> = 2 2 <0より大きい値> = 2A2+<something>=22<whatever greater than 0>=2

したがって、から同じ長さの2つのパスがある場合、ような値があると期待しています。p A p i j = 2i,jp(Ap)i,j=2

してみましょう(こと、のは言わせ、または頂点の数がグラフである次元がある)。の値はわかりませんが、最大で乗算することで繰り返し処理すると、答えが見つかるはずです。(つまり、)(意味は、チェックし、次にチェックし、次にをチェックするということです...)A n × n p A n 2 p < n 2 A A 2 A 3nAn×npAn2p<n2AA2A3

ここに私の議論があります:

  • 2つのパスが単純なパスであれば、うまくいきます。ある場合、せいぜい回繰り返す必要があります。n
  • 少なくとも1つのネストされたサイクルがある場合、または2つのサイクルを持つパスがある場合、最小公倍数(LCM)を見つける必要があります。は確かに大きな値であり、回未満であれば、それらを見つける必要があります。n 2n2n2
  • 2つのパスが両方とも1サイクルの2つの別個のパスである場合、この2つの方程式の解を見つけることに多少似ています:(およびは長さ)これら2つの異なるサイクルの。上記で定義された行列乗算、「長さがであるからへのパスがありますか?」したがって、がよりも大きい場合は、から至るパスがさらにあることを意味します。行列を回繰り返すことにより、すべての可能な組み合わせを通過します。m個のk個のAのQ iはJ Q A、Q 1 、I 、J 、N 2 δ β L C M B * B / G C D B nはα+βm=γ+δkmkAqijqAq1ijn2δおよび。実際、はと定義されており、より大きくなるサイクルはありません。βLCM(a,b)(ab)/GCD(a,b)n

見つかったら、繰り返しを停止します。(Ap)i,j=2

私が間違っている?


同じことを試みましたが、いくつかの問題/不確実性に遭遇しました:1)パスが複数のサイクルに接続されている場合はどうなりますか?すべての組み合わせ(最悪の場合、すべてのノードが指数関数的に多くのサイクルにある)を「チェック」し、上限を爆破する必要がありますか、それともそれぞれについて1つだけを考慮するだけで十分ですか?2)定数オフセットおよびため、LCMは実際には上限ですか?γαγ
ラファエル

ところで、ファンキーな代数は必要ありません。行列のエントリとしてを計算する瞬間を止めてください。2
ラファエル

@Raphae 1)2サイクルのパスがある場合、確実に同じ長さの2つのパスがあります。1つは最初のサイクルでループし、もう1つは2番目のサイクルでループします。彼らはどれくらいループしなければなりませんか?正確には両方のサイクルの長さのLCM。これはによって制限されます。ここで、はグラフ内の頂点の数です。2)LCM(a、b)はa * bに加えておよびオフセットによって制限されるため、LCMは上限です(ケース1))。したがって、合計でます。であることがわかっているためは未満です。、N α γ L C M B + α + γ < A * B + α + γ α + γ + A + B < N * B + α + γ N 2n2nαγLCM(a,b)+α+γ<ab+α+γα+γ+a+b<nab+α+γn2
パオロパリセンT.
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.