青い頂点よりも赤い頂点の多いパスを見つけることはNP困難ですか?


7

接続された有向グラフを考える G=(V,E)、頂点 s,tV と着色、セント s そして tは黒で、他のすべての頂点はまたは青のいずれかです。st 多項式時間で青の頂点よりも赤が多い?

それは可能だと思いますが、私たちのTAはこれはNP難しいと述べました。

解決策のアイデア:

から G つくる G=(V,E) 次のように:

  • すべてを分割 vV{s,t} 2つの頂点 vin そして voutV 分割された頂点ペアで構成され、 s そして t

  • すべてのために e=(u,v)E エッジを導入する (uout,vin)。(エッジ用(x,v) または (u,x) どこ x{s,t} エッジを作成する (x,vin) または (uout,x)それぞれ)。また、エッジを導入(vin,vout)分割された頂点のいずれか。そうE 2種類のエッジが含まれています:からのエッジに対応するもの E からの頂点に対応するもの V

ここで、次のように重みを導入します。

  • w((vin,vout))=1 対応する頂点 v
  • w((vin,vout))=+1 対応する頂点 vだったブルー
  • w(e)=0 他のすべてのエッジ、つまりエッジに対応するエッジ G 頂点ではなく。

ここで、ダイクストラ、ベルマンフォードなど、選択した最短パスのアルゴリズムを実行し、指定されたパスの長さが <0 これで完了です。

なぜこれが機能しないのですか?それは私たちに負のサイクルがあるかもしれないからですか?Bellman Fordでそれらを検出することはできますが、この決定問題をNP困難にする非効率的な手段で目的のパスを見つける必要がありますか?NP硬度を示すエレガントな削減はありますか?

回答:


9

DijkstraとBellman-Fordは「単純なパス」機能を解釈できないため、ソリューションは機能しません。そして、彼らは確かにどんな負のサイクルにも落ちるでしょう。

NP完全性を示すのに最適なのは、ハミルトニアンパス問題を使用することです。グラフを見てみましょうGN 赤い頂点。

次に、グラフを作成します G、追加 st そして N1 青い頂点 G。最初に、ソースから最後の青の頂点まですべての青の頂点をエッジでチェーンします(s->b1->b2-> ...->bN1)。次に、からエッジを入れますbN1 すべての赤い頂点とすべての赤い頂点のエッジに t

から単一のパス st すべての青いノードを必然的に通過します(N1)そして、すべての赤いノードに渡す必要があります(N)に答える

簡単な道はありますか G から st 青い頂点よりも赤い?

したがって、これに対する答えのようなものです:

ハミルトニアンの道はありますか G

だからあなたの問題は確かにNP完全です。


1
きちんと、ありがとう。だから私が正式に証明したかったらDHPProblemAbove インスタンスから始めなければならない場所 G,s,t ハミルトニアンパスの場合、インスタンスにマッピングします G,s,t この問題について、私は次のことを行うことができます:既存のすべての頂点を赤に着色し、追加します |V{s,t}|1 青い頂点とそれらをチェーンで接続 (b1)(bn)。エッジを追加する(s,b1)、およびそれぞれ (s,v)G(bn,v)G、残りはそのままです。
Valerie Poulain

1
はい、NP完全性のデモンストレーションについてはあまり詳しくありませんが、この方法でプレゼンテーションする方が明らかに優れています。それにもかかわらず、私はG なし st最初のハミルトニアンパス問題には特定の頂点がないため。
Optidad

2
(私は思う)正しさに賛成 この引数は、任意のグラフで開始した場合、理解しやすくなりますG そしてそれを特別に構築された G。現在、削減は「最後に、赤い頂点の間に任意の数のエッジを入れます」という単一の文に完全に隠れています。これは、最初の読みでは見落としました。「任意の数のエッジ」は「任意のグラフを選択する」ためのコードですGそのハミルトニアンあなたが発見したいパス、およびそこにそれを埋め込む「。この有効化するもの。
Quuxplusone

1
@Quuxplusoneあなたは正しい私はそれをより明確にするために編集します。
Optidad

@ValeriePoulain:通常のHPの問題では、開始頂点と終了頂点が指定されていないのが正しいですが、それらが指定されている場合、削減には少し調整が必要です。チェーンを挿入する必要があります |V{s,t}|1間のエッジに沿った線の青い頂点sその他の赤い頂点。これは、たとえば単一のエッジがs構築されたインスタンスに対する有効なソリューションであるということから、いくつかの赤い頂点に。
j_random_hacker
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.