AがBに還元可能とする、すなわち、。したがって、を受け入れるチューリングマシンはBのオラクルにアクセスできます。チューリングマシン受け入れましょうAがであるM Aとは、Oracle BがであるO B。削減の種類:
チューリングの削減:はに対して複数のクエリを作成できます。
カープ削減:「多項式時間チューリング削減」とも呼ばれます:への入力は、ポリタイムで構築する必要があります。さらに、O Bへのクエリの数は、多項式によって制限される必要があります。この場合:P A = P B。
多対1チューリングの削減:は、最後のステップでO Bに対して1つのクエリのみを作成できます。したがって、Oracleの応答は変更できません。ただし、O Bへの入力を構築するのにかかる時間は、多項式によって制限される必要はありません。等価(≤ mは多対一還元を表します)
場合 ∃計算関数 F :Σ * → Σ *ように、F (X )∈ B。
クックの削減:「多項式時間の多対一の削減」とも呼ばれます:への入力を構築するのにかかる時間を多項式で区切る必要がある多対一の削減。等価(≤ p個のmは多対一還元を表します)
場合 ∃ポリ時間計算関数 F :Σ * → Σ *ように、F (X )∈ B。
倹約削減:のすべてのインスタンスAクック削減:また、「多項式時間一から一リダクション」と呼ばれる独特のインスタンスにマッピングB。等価的に:(≤ P 1は、倹約的な削減を表します)
場合 ∃ポリ時間計算全単射 F :Σ * → Σ *ように、F (X )∈ B。
これらの削減により、ソリューションの数が保持されます。したがって、です。
Oracleクエリの数を制限することでより多くの種類の削減を定義できますが、それらを除外すると、使用されているさまざまな種類の削減の命名法を正しく取得できたかどうか親切に教えてもらえます。クック削減またはproblems約削減に関してNP完全問題は定義されていますか?誰でも親切に、クックの下でNP完全な問題の例を挙げることができ、par約的な削減の下ではない。
私が間違っていない場合、クラス#P-Completeはカープ削減に関して定義されています。