問題がNP完全であることを証明するために、問題間の縮約を構築するにはどうすればよいですか?


27

私は複雑なコースを取っているのですが、NPCの問題を減らすのに苦労しています。問題間の削減を見つけるにはどうすればよいですか?使用できる一般的なトリックはありますか?問題がNPCであることを証明するように要求する問題にどのようにアプローチすればよいですか?


4
失望して申し訳ありませんが、すべてを解決する方法はないと思います。人生の多くの問題と同様に、それぞれが固有のものです。うまくいけば、時間の経過とともに、それぞれを解決するための適切な予感が得られることを願っています。
ランG.

1
そのような問題に対処する方法に関する有用なガイドラインはありますか?NPCであることを証明するように求められる質問を見たとき、私は完全に迷っています。どのようにアプローチすればよいですか?
匿名

回答:


45

魔法の弾丸はありません。NP硬度の証明は困難です。ただし、このような証明にはすべて一般的なフレームワークがあります。NP硬さの証明に苦労している多くの学生は彼らがをすべきについて混乱しており、それは明らかにそれを行う方法を理解することを不可能にします。そこで、NPハードの問題を証明するためにをすべきを説明します。

まず、宿題をしているのでなければ、どのNP困難問題を自分の問題に還元するか決定する必要があります。これは主に「におい」の問題です。問題のステートメントのどこかに数字3が現れる場合は、またはまたはから減らしてみてください。(はい、私は真剣です。)あなたの問題が最適なサブシーケンスまたは順列またはパスを見つけることを伴う場合、またはから減らしてみてください。問題が特定のプロパティを持つ最小のサブセットを要求する場合は、試してください。特定のプロパティを持つ最大のサブセットを要求する場合は、試してください3 C o l o r 3 P a r t i t i o n H a m i l t o n i a n C y c l e H a m i l t o n i a n P a t h C l i q u e I n d e3SAT3Color3PartitionHamiltonianCycleHamiltonianPathCliqueIndependentSet。問題が飛行機内で何かをすることを伴う場合、または試してください。等々。問題が何かのように「におい」を感じない場合は、おそらくまたはが最善の策です。P l a n a r T S P 3 S A T C i r c u i t S A TPlanarCircuitSATPlanarTSP3SATCircuitSAT

明らかに、これらすべての問題がどのように定義されているかを正確に 知る必要があり、問題を単純化するほど良い。結果が最終的に見えるかもしれないので、またはまたはまたはから減らすことはお勧めしません。MinesweeperTetrisOneCheckersMoveSuperMarioBros

第二に、実際の削減。問題X(あなたが知っているものはNP-hard)を問題Y(あなたが証明しようとしているものはNP-hardです)を減らすために、Xの任意のインスタンスをYの正当なインスタンスに変換するアルゴリズムを記述する必要がありますリダクションアルゴリズムは、Xインスタンスの各「機能」に特定の処理を行う必要があり、各「機能」の出力部分は通常ガジェットと呼ばれます。

しかし、機能とは何ですか?それは問題Xに依存します。例えば:

  • インスタンスを変換するには、各式および入力式の各句にガジェットが必要です。各変数ガジェットには、「true」と「false」に対応する2つの「状態」が必要です。また、各句ガジェットには複数の「状態」が必要であり、それぞれが何らかの形でその句のリテラルの少なくとも1つをtrueに強制します。(状態は、リダクションアルゴリズムの出力の一部ではありません。)3SAT

  • インスタンスを変換するには、入力グラフの各頂点と各エッジのガジェットと、3色を定義する別のガジェットが必要です。3Color

  • インスタンスを変換するには、各入力、各ワイヤ、および入力回路の各ゲートにガジェットが必要です。PlanarCircuitSat

ガジェットの実際の形は問題Y、あなたが減少しているものに依存します。たとえば、グラフに関する問題を減らす場合、ガジェットは小さなサブグラフになります。ウィキペディアの記事を参照してください。スケジューリングに関する問題を軽減する場合、各ガジェットはスケジュールされるジョブのセットになります。マリオに関する問題に取り掛かっている場合、各ガジェットはブロックとレンガとクッパのセットになります。

両方の問題が同じ種類のオブジェクトに関係している場合、これは混乱を招く可能性があります。たとえば、XとYの両方がグラフに関する問題である場合、アルゴリズムは1つのグラフ(Xのインスタンス)を別のグラフ(Yのインスタンス)に変換します。これらの2つのグラフを混同しないように、表記法を賢明に選択してください。また、複数色のインクを使用することを強くお勧めします。

最後に、リダクションアルゴリズムは3つのプロパティを満たしている必要があります。

  • 多項式時間で実行されます。(これは通常簡単です。)

  • 削減アルゴリズムに入力としてXの正のインスタンスが与えられた場合、出力としてYの正のインスタンスが生成されます。

  • リダクションアルゴリズムが出力としてYの正のインスタンスを生成する場合、入力としてXの正のインスタンスが与えられている必要があります。

ここには重要な微妙さがあります。あなたの縮小アルゴリズムは、一つの方向に働くから Xのインスタンス Yのインスタンスが、アルゴリズムが正しい証明することは両方向の変換についての推論が必要です。また、リダクションアルゴリズム、Xの特定のインスタンスが正か負かを判断できないことを覚えておく必要があります。これは、多項式時間でNP困難問題を解く必要があります。

それが何だどのようにはちょうど練習が付属しています。


5
からの(および同様の「ローカル/グローバル構造」を持つ一般的な問題)の場合、単一節インスタンスに対して最初にそれを試みることをおます。これにより、句に使用する必要があるガジェットについてのアイデアを得ることができます。節のガジェットを見つけた後、削減は各節にこれらのガジェットの1つを配置し、何らかの方法でグローバル条件を強制します(つまり、異なる節に現れる変数の出現の真理値は一貫している必要があり、命題変数はことが 1句とで)別のインチ 3 S A T p t r u e f a l s e3SAT3SATptruefalse
カヴェー

1
「リダクションアルゴリズムが出力としてYの正のインスタンスを生成する場合、入力としてXの正のインスタンスが与えられている必要があります」に関して:この条件を「リダクションアルゴリズムに負のインスタンスが与えられている場合」入力としてXの場合、出力としてYの負のインスタンスを生成します」、これら2つの条件は同等であり、JeffEがどのように記述したかによって、通常、証明より簡単に構築できることに注意してください。 Xの正のインスタンス、またはY)の正のインスタンス。
j_random_hacker

11

JeffEは、最も一般的な戦略の概要を説明します。多くのNP完全問題を理解し、非常にうまく適合する問題を見つけ、簡単に削減します。

別の有効な戦略は、常に 3SAT(またはその他の問題)を使用することです。これにより、いくつかの削減がより複雑になる可能性がありますが、利点は、他のタイプの問題で充足可能性を表現する経験が豊富にあることです。そのため、良い行き止まりパートナー(行き止まりを含む)を見つける時間を節約し、あなたの経験が、たとえそれがより困難であったとしても、すぐに減らしを行えるようになることを望みます。

このアプローチにはメタメタの美しさもあります。(3)SATは、NP完全性が(ほぼ)直接証明されている数少ない問題の1つです。したがって、その証明のみに依存すると、「証明ツリー」が平らに保たれ、長い連鎖の削減が回避されます。


3
直接結合が単項で与えられたときに有界の停止の問題はNP完全であることを証明することはあまりにもハードではない、とすることを証明する簡単な方法であるいくつかの問題自体はから減少させるために、むしろ無用であっても、NP完全問題が存在します。
アレックス10ブリンク

3
直接NP完全であることが証明されている唯一の問題であるという主張については確信がありません。実際、それを厳密な意味で解釈すると、間違いです。Cookの1971年の論文は、SATではなくTAUTについて語っています(Karp削減ではなくCook削減を使用しています)(SATがKarp削減の下でNP完全であることを証明する証拠も簡単に観察できます)。
カベ

@Kaveh Huh?トートロジーはCo-Np完全であるため、NP(-complete)に含まれることはわかっていません。クックの論文は読みませんでした。
アルバートヘンドリックス

1
@Albert、それからそれを読むべきです。クック削減では、NPとcoNPを区別できません。
カヴェー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.