回答:
アリ、いい質問だ。
ある問題Pが計算的に難しいことを示したいとします。さて、Pがまだ効率的なアルゴリズムを持っていないという事実に基づいて、Pが難しいと推測できます。しかし、これはかなり薄っぺらな証拠ですよね?Pを見る良い方法を見逃している可能性があります。これにより、非常に簡単に解決できます。したがって、Pが困難であると推測するには、より多くの証拠を蓄積する必要があります。削減は、まさにそれを行うためのツールを提供します!他の自然な問題QをPに減らすことができる場合、Pは少なくともQと同じくらい難しいことがわかりました。しかし、Qは数学のまったく異なる分野の問題である可能性があり、 。したがって、QがPが硬いという証拠であるための効率的なアルゴリズムを見つけられなかったことがわかります。このようなQ 'がたくさんある場合
これはまさにNP完全性の理論が提供するものです。あなたの問題がNP完全であることを証明するなら、あなたはその難しさを他の何百もの問題の難しさに結び付けました。したがって、道徳的に言えば、あなたの問題は本当に難しいことを確信することができます。
問題の証明NP-Completeは、研究している一般的な問題の効率的で正確な解決策を探す必要がないため、研究の成功です。あなたの問題は非常に難しい問題のクラスのメンバーであり、誰も問題の効率的で正確なアルゴリズムを見つけることができなかったことを証明し、問題のそのような解決策はすべての問題の解決策を意味します問題。
あなたの問題はまだそこにあるので、通常は足掛かりです-あなたは単にあなたの要件を緩和する必要があります。通常、人々は「効率的」、「正確」、「一般」のうちの1つ以上を緩和する方法を見つけようとします。非効率的かつ正確かつ一般的なのは、これらのアルゴリズムの指数のより良い定数を見つける試みです。効率的かつ不正確で一般的なものは、近似アルゴリズムの研究です。効率的かつ正確だが一般的ではないのは、固定パラメータの扱いやすさと、効率的なアルゴリズムを見つけることができる入力のサブクラスの検索の研究です。
a)あなたはソフトウェアプロジェクトに取り組んでいます。システムを指定したら、アプリケーションのアーキテクチャを定義し始めています。これには、大きな問題の分解/アプリケーションが小さな問題に役立つ必要性が含まれます。これらの小さな問題の1つに対する効率的な(アプリケーションを遅くしたくない!)アルゴリズムを見つけるタスクを与えられたとしましょう。しばらく苦労した後、多項式アルゴリズムを見つけることができません。そうすると、おそらくこの問題は非常に難しいので、効率的なアルゴリズムを見つけるのは非常に難しい(あるいは不可能でさえある)かもしれません。問題がことを証明することにより、あなたのこの推測に対するいくつかの証拠があり、代替アプローチの検討を開始する必要があります(たとえば、問題を簡単にするために変更する)。
問題を要約し、特徴付けることにより、一般的な手法を使用できます。関連するクラスを学習することで、数学や科学全般で一般的なこの特定の問題の詳細を気にすることなく、抽象的なレベルで考えることができます。個々のメンバーの代わりにクラスを使用すると、既知の手法を使用し、さらに1つだけではなく、より多くのオブジェクトに洞察を適用できます。
各問題には、他の問題といくつかの関係があります。さらに、問題と複雑度クラスの間には関係があります。
したがって、1つの問題をNPCとして分類すると、通常、他の問題と複雑さのクラスに対する洞察が得られます。
たとえば、グラフ同型(GI)問題を考えます。次の論文で:
UweSchöning、グラフ同型は低階層にある、第4回コンピューターサイエンスの理論的側面に関する年次シンポジウム論文集、1987、114–124。また、Journal of Computer and System Sciences、vol。37(1988)、312–323。
GI∈NPCの場合、多項式階層(PH)はその第2レベルに崩壊することが証明されています。これは、構造複雑性理論の大きなブレークスルーとなります。