セットカバーの特殊化のNP硬度


8

次の問題はNP困難ですか?

実数(ターゲット)と、トライデントの中心から2つの距離、定義される「トライデント」が与えられた場合、位置の最小数はすべてのターゲットをカバーするトライデント、つまり Nx1,,xNabKp1,,pK

k=1K{pka,pk,pk+b}{x1,,xN}.

明らかに、これはセットカバー問題の特殊なケースです。すべてのセットをし、はすべての「関連する」潜在的な位置を表し、ユニバースをカバーするセットの最小数を探します。同様に、問題を位置ノードとターゲットノードの2部グラフとして表し、ヒッティングセット問題を検討できます{pka,pk,pk+b}pk{xn+tn{1,,N},t{a,0,b}}{x1,,xN}

トライデントが「ジャグ」の1つを失った場合、問題はNP困難ではないことに注意してください。各ターゲットは2つの位置からカバーでき、各位置は最大2つのターゲットをカバーできるため、潜在的な位置とターゲットの対応する2部グラフはパスの結合。各パスでは、最小ヒットセット(つまり、内部位置ノード)を簡単に決定できます。

しかし、トライデントのケースはNP難しいですか?


4
これは、動的プログラミングを使用して多項式時間で実行できると思います。やってみましたか?
ジェームズキング

動的プログラミングを試みましたが、成功しませんでした。問題は、位置をターゲットを介して互いに完全にリンクできることです(距離aおよびbの多くのターゲットを考えてください)。そのため、1つのターゲットを変更すると、「グローバル」な影響が生じる可能性があります。これにより、問題を分割したり、1つ以上のターゲット/位置のケースを前のケースに減らすことが困難になります。一方、位置が相互にどのようにリンクされるかという「ローカルな」性質は、たとえばSet Coverなどからの簡単な削減を可能にしません。まだ問題はNP困難であると私は感じていますが、私には本当にわかりません。
JanPöschko2012

1
L、M、Rの3つの配列を作成します。L[i](それぞれ、M [i]、R [i])を、a)トライデントがすべてのポイントヒットするようなトライデントの最小セットのサイズとします。b)は、トライデントの左(それぞれ、中央、右)の突起によってヒットされます。これらの3つの配列は、問題の動的プログラミングアルゴリズムの開発に役立ちます。x1xixi
James King

@ジェームズ:何かが完全に欠けていると思いますが、x_ {i + 1}、…、x_Nのどのポイントがこれまでに使用されたトライデントによって「誤って」カバーされているかを区別する必要はありませんか?
伊藤剛

@TsuyoshiItoはい、そうです。ほんの少しのヒントを与えていた。配列を埋めるときは、そのようなことをチェックする必要がありますが、これにはポイントごとに一定の時間がかかるだけです。
James King

回答:


2

概観

この問題はNP困難です。より正確には、関連する決定問題(トライデントターゲット数が与えられた sのすべてをカバーできるかどうかを尋ねる)はNP困難です。この決定問題を数値トライデントカバー問題と呼びます。kxi

数値トライデントカバー問題がNP困難であることを証明するために、グリッドトライアングルカバー問題と呼ぶ次の中間問題を紹介します。

入力:有限集合整数対整数値座標。SZ+×Z+k

出力:YesまたはNo、もしイエスの出力とのセットが存在する場合にのみ、とようになりますTZ×Z|T|kS(x,y)T{(x,y),(x,y+1),(x+1,y)}

グラフィカルこの問題について考え、我々は整数格子のサブセットを所与とこのサブセット内の全ての点をカバーするように求められ側長さ-、特に特定の向きに直角三角形(これらの三角形は、、、および)の形式の頂点を持つ必要があります。これが可能である場合に限り、「はい」と答えるよう求められます。k(1,1,2)(x,y)(x,y+1)(x+1,y)

数値トライデントカバーがNPハードであることを示すために、2つの削減を提供します。平面3SATからグリッドトライアングルカバーへの削減と、グリッドトライアングルカバーから数値トライデントカバーへの削減です。これらを組み合わせると、NP困難な問題であるPlanar 3SATから数値トライデントカバー問題への削減になり、数値トライデントカバーがNPハードであることを意味します。

数値トライデントカバー問題では実数を使用しているため、エンコードと入力サイズの問題が発生することに注意してください。Numerical Trident Coverインスタンスで常にという形式の数値を使用することでこの問題を回避し、をとしてエンコードするだけで効率的なエンコードを可能にします。実際、数値をさらに整数に制限しても問題はさらに困難ですが、その削減にはもう少し作業が必要なので、ここでは省略します。p+q2p+q2(p,q)

削減1:グリッドトライアングルカバーから数値トライデントカバーへ。

集合と数値構成されるグリッドトライアングルカバー問題のインスタンスが与えられたとします。SZ+×Z+k

次に、数値トライデントカバーのインスタンス(実数、ペア、およびターゲット数のトライデントのリストで構成される)を次のように作成します。x1,...,xNa,bk

要素ましょあること。からまでの各せ。ましょう及び。最後に、ます。これは、数値トライデントカバーの出力インスタンスです。Ss1=(p1,q1),s2=(p2,q2),...,s|S|=(p|S|,q|S|)i1N=|S|xi=pi+qi2a=1b=2k=k

この削減は明らかに多項式時間演算であるため、残された唯一の事柄は、削減が解答保存であることです。

これを行うには、トライデントを配置する「合理的な」場所を検討してください。トライデントを配置して少なくとも1つのヒットできる場所は、、、またはの形式の場所だけです。のそれぞれについて、これら3つの値はすべて、一部の整数およびです。したがって、という形式の数値に注意を向けることができます。ルールすべてののセットとすべての整数ペアのセットの間の全単射定義しますxixixi+axibxiva+vb2vavbva+vb2fp+q2f(va+vb2)=(va,vb)。はをマップすることに注意してください。fxisi

また、トライデントが場合、その3つの突起は、-、および。つまり、下の3つのプロングのイメージは、ポイント、、およびます。下のトライデントの画像p+q2(p+1)+q2p+q2p+(q+1)2f(p,q)(p+1,q)(p,q+1)fSf1f

f{x1,...,x|S|}fS={s1,...,s|S|}={f(x1),...,f(x|S|)}f(1,12)xikSk(1,12)

削減2:Planar 3SATからGrid Triangle Coverへ。

この削減のために、平面2部グラフの形式で3SATインスタンスが与えられます。一方の部分の頂点は変数に対応し、もう一方の部分の頂点はそれぞれ次数3で句に対応します。各エッジには正または負のラベルが付けられ、変数が句にどのように含まれるかを示します(正または負)。

(S,k)Sk

まず、ワイヤーについて説明します。ワイヤーは奇数個のポイント(整数ラティス内)のシーケンスで構成され、最初と最後がターミナルと呼ばれるため、三角形がワイヤー内の他のポイントにぶつかることなく三角形ですべての連続ペアをカバーできます。例として、次のワイヤーを考えてみましょう:

xoo       x
   o       o
   o ooo   o
   o o  oooo
    oo

pp+12

ここでは、上記の例をカバーする2つの方法を示します(同じ三角形でカバーされている場合、2つのポイントには同じ番号が付けられます)。

x11       9
   2       9
   2 556   8
   3 4  6778
    34

または

112       x
   2       9
   3 566   9
   3 5  7788
    44

1つの懸念は、2つの端子をワイヤで接続したいが、2つの端子間の「ワイヤ」の長さが均一になるため、接続できない場合があることです。ただし、そうではありません。ワイヤのルートを常に選択して、そのワイヤの長さを奇数にする(したがって、有効なワイヤにする)ことができます。長さ6のワイヤーの水平セグメントを次の長さ7ワイヤーセグメントに置き換えると、ワイヤー長のパリティを修正できます。

oo  oo
  ooo 

次に、条項ガジェットを紹介します。節は、3つのワイヤの端子の1つを接続して、共有端子がカバーされるようにワイヤの1つが満たされている場合、その共有端子をカバーする三角形が他のワイヤからのポイントをカバーしないようにします。

      o
      o
      o
   ooox
       ooo

共有端子をカバーするためには、3本のワイヤーの少なくとも1つが、ワイヤーを満たす三角形がワイヤーの非共有端子をカバーしないように満たす必要があります。

最後に、変数ガジェットを紹介します。可変ガジェットは、次のように3行ごとに側にオプションで端子が発生する(偶数長さの)大きなワイヤーのようなループです。

oo
o o
o ox
o o
o o
o ox
o o
o o
o ox
o o
o o
o ox
o o
 oo

変数は、必要な数の端子に対応するために垂直に拡大できます。偶数パリティの行の端子は変数の正の発生に対応し、奇数パリティの行の端子は負の発生に対応します。ワイヤーと同様に、可変ガジェットの非終端点は、三角形の最小数(ループ内の点の数の半分)を使用して、正確に2つの方法で満たすことができます。これらの2つの設定は、変数ガジェットのすべての正の発生ターミナルまたはすべての負の発生ターミナルをカバーします。

すべてをまとめることは非常に明白です。変数ガジェット、句ガジェット(共有端子)、および端子を接続するワイヤを使用して、2部グラフを作成します。ワイヤと変数の非終端点をカバーするために必要な三角形の総数は、三角形の目標数になります。

明らかに、三角形全体でグリッド全体をカバーすることはできません。さらに、変数とワイヤはそれぞれ、説明されている2つの方法のいずれかで満たされるため、非終端点がそれぞれカバーされることが保証されます。したがって、唯一のタスクは、端末を満足させることです。

各変数では、すべての正またはすべての負の発生ターミナルが変数ガジェットによって満たされます。ガジェットの他の端子は、接続されているワイヤーで満たす必要があります。次に、すべての句が他の端子がまだワイヤを使い切っていない少なくとも1つのワイヤ(アタッチされた変数ガジェットによって他の端子が満たされたワイヤ)に接続されている場合にのみ、句の端子が満たされます。つまり、変数ガジェットの設定による変数の割り当てがすべての句を満たしている場合にのみ、端子はすべて満たされます。

ご覧のとおり、生成されたグリッドトライアングルカバーインスタンスは、入力Planar 3SATインスタンスがyesインスタンスである場合にのみ、yesインスタンスです。この削減は多項式時間でもあるため(すべてのガジェットは入力インスタンスのサイズで空間多項式を必要とします)、有効な削減があると結論付けます。

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