ダイグラフ内の長さ制限のある単純なstパスの一部であるすべてのノードとエッジを含むサブグラフ


8

注:無向グラフに関する同様の質問を投稿しまし

与えられた

  • 複数辺やループのない有向グラフG
  • ソースノードs
  • ターゲットノードt
  • 最大経路長l

私が探していますのサブグラフ-任意のノードと任意のエッジ含まから少なくとも一つの単純なパスの一部である(とのみ)、を長さ。GGGstl

パスを列挙する必要がないことに注意してください。


あなたの問題にはもっと制約がありますか?次の問題は、NP完全であることを想起されたい:有向グラフを考えるとと頂点、そこに存在するも含むパス?s t v s t Gstvstv
Kristoffer Arnsfelt Hansen

@KristofferArnsfeltHansen、おもしろい!それを回答として追加し、その結果の参照を提供しますか?それは否定的に元の質問に答えるように聞こえます。
DW

@KristofferArnsfeltHansen:制約はありません。
Lior Kogan

回答:


6

質問が述べられているように、入力の一部としてがある場合、問題はN P -hardです。これは、Fortune、Hopcroft、およびWyllieの論文による有向部分グラフ同型写像問題がN P -complete であるパターンのクラスの分類の特殊なケースとして続きます:有向部分グラフ同相写像問題lNPNP

特に、次の問題は完全です。有向グラフGと頂点s t vが与えられた場合、vを通る(単純な)s t -path は存在しますか?NPGstvstv


ここで受け入れられているソリューションとどのように適合しますか?stackoverflow.com/questions/10825249/…グラフが指示されたときだけNP困難ですか?
Lior Kogan

1
正しい、上記の問題は、リンク先の回答に記載されているようにグラフが無向の場合、バリアントに対して効率的に解決できます。
Kristoffer Arnsfelt Hansen

0

更新:この回答には欠陥があるようです。Kristoffer Arnsfelt Hansenからのコメントを参照してください。


私はあなたの問題を解決する方法を知っているが、ここではあなたの問題の簡単なバージョンを解決するための技術ですしていない。すなわち、エッジ与えられたからの任意の単純なパスが存在するかどうか、テストSトンエッジ含まれる電子を。(これは、l = ∞の問題の特殊なケースに対応します。)estel=

サブルーチンとして「下限のあるmax-flow」を使用して、この簡単な問題を解決できます。標準のmax-flow問題では、各エッジの容量により、そのエッジを通過するフローの量に上限が与えられます。エッジのフローの量は0で下限する必要があります。 "max-flow下限付き」の場合、そのエッジを通過する流れの量の下限と上限の両方を指定できます。「下限のある最大フロー」は多項式時間で解けることが知られています。

今、私たちはエッジがあると、私たちはより簡単なパスが存在するかどうかをテストするトンエッジ含まれる電子を。下限問題のあるmax-flowを設定します。特に、グラフGを取り、エッジs 0s 新しいノードs 0とエッジt t 1の新しいノードt 1を追加します。各エッジ1の容量(上限)を作成します。エッジeの下限を除き、すべてのエッジの下限は0になります。eEsteGs0s0st1tt1e次に、すべての範囲を満たすからtへの実行可能なフローが存在するかどうかを確認します(このテストは、前述のように多項式時間で実行できます)。フローがない場合、sからtへの単純なパスはありません。そのようなフローがある場合、そのフローをトレースすると、エッジeを含むsからtへの単純なパスが生成されるため、そのような単純なパスが存在します。ststste

「下限のある最大フロー」問題を解決するにはどうすればよいですか?この場合、1つのエッジのみにゼロ以外の下限があります。したがって、ネットワークフローへの標準的なアプローチを使用できます。ここで、各ポイントで、残差グラフの最短パスを計算することによって拡張パスを選択します。ただし、ここでは(大まかに)拡張パスの1つにエッジ含まれていることを確認します。e

私は次の論文からこの考えを学びました:

(公開されたバージョンではなく、必ずtechreportバージョンをお読みください。このアイデアは、導入部の2番目の段落にあります。)

残念ながら、元の問題を解決するためにこの手法を拡張する方法はわかりません。上限は単純なパスの長さです。l


または、整数線形計画法(ILP)を使用して簡単な方法で問題を解決することもできます。実際には、ILPソルバーは多くの問題に対してかなり優れています。ただし、最悪の場合の実行時間は依然として指数関数であるため、多項式の最悪の場合の実行時間を持つアルゴリズムは提供されません。ILPを使用してこれを作成する方法について詳しく説明してほしい場合は、お知らせください。


1
ありがとう。また、ここを見て:stackoverflow.com/questions/10825249/...
LIORコーガン

1
有向グラフの指定されたエッジを通る単純なパスを見つける問題もN P困難です。上記で参照した論文の議論には欠陥があります。実行可能なフローは、指定されたエッジを通るサイクルと一緒に指定されたエッジを回避する単純なパスである可能性があります。このようなフローは、指定されたエッジを通る単純なパスがない場合でも存在する可能性があります。stNP
Kristoffer Arnsfelt Hansen

0

2つの幅優先探索と、時間O V + E におけるノードとエッジのスキャンを使用して、サブグラフを計算できます。GOV+E

我々は、から幅優先探索実行Gを取得するBFSナンバリングD SV 各ノードのためのVにおけるG。BFS番号は、sからvへの最短経路のエッジの数を示します。我々はまた、から幅優先探索実行tでの転置でG(エッジたグラフであるV U 各辺のUはV におけるG)番号BFS得るためのD TをsGdsvvGsvtGvあなたあなたvG各ノードのための Vにおける GdtvvG

各ノードのための Gは、から最短の単純な経路STを通過vが長有するDをSV + dはTV vstvdsv+dtv

部分グラフノード含まVからGの場合に限り、D SV + dはTV LとエッジU V の場合に限り、D SU + dはTV L - 1GvGdsv+dtvlあなたvds(u)+dt(v)l1


5
単純ではないパスを返す場合があります(例:グラフs <-> a <-> b <-> c <-> t; b <-> d:ノードdは行き止まりであり、ソリューションの一部であってはなりません)。
Lior Kogan、

0

ここで簡単のFPTアルゴリズム(だ両方指向、時間における無向場合の動作であるパラメータ)、O 2 LM N + M あなたのグラフが大きいがあれば実現可能であるかもしれない、Lはです十分に小さい。私の他の答えでは、無向の場合のポリタイムアルゴリズムを示します。lO(2lm(n+m))l

第1に、質問は(ランタイムでは最大で因数)、特定のエッジeを通過するサイズが最大でlのパスがあるかどうかを尋ねることと同じです。次に、アイディアは、頂点を検査されたエッジの前に現れることができるものと、パスの後にのみ現れることができるものに分割することにより、パスを単純化することです。mle

Foreach $e=(u,v)\in E$: 
a. do for $O(2^l)$ times:
  1. Compute a random partition of the vertices set $V=(S,V\setminus S)$ 
   such that $s,u\in S$, $v,t\not \in S$ (and every other vertex is in $S$ w.p. 1/2).
  2.Find the shortest path from $s$ to $u$ in the subgraph induced by $S$.
    And the shortest path from $v$ to $t$ in the subgraph of $V\setminus S$. 
  3.If the sum of distances is no more than $l-1$, add $e$ to the output graph.

分析
a。サイズの単純なパスがなかった場合は明らかに、Gを通過する電子は、アルゴリズムはそれを返しません。lGe

b。そのようなパスがある場合、それは正しく分割されます(つまり、前のすべての頂点はSにあり、残りはV Sにあります)wp 2 lです。したがって、分割反復をO 2 l回実行すると、高い確率で発見します。uSVS2lO(2l)

ランダム化

係数をランタイムに支払う用意がある場合、次のようにランダム化できます。2polylog(l)

a -universal-set(n,l)を取り、ユニバーサルセットのすべての文字列を実行してランダムパーティションステージを置き換え、を文字列の値が1である頂点のセットとして解釈します。ユニバーサルセットのサイズあるO 2 L + L O G 3L P O のL Y N ランタイムを決定します。SO(2l+log3(l)poly(n))

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.