複雑度クラス間の平等はなぜ下向きではなく上向きに変換されるのですか?


25

例えば-やあみんな、私はパディングトリックが上向きに複雑クラスを変換するために私たちにできることを理解し。パディングは、入力を「膨張」させて変換を実行し(たとえばから変換)、パディングされた入力で実行できる「マジック」アルゴリズムを生成します。これは技術的に理にかなっていますが、これがどのように機能するかについての良い直観は得られません。ここで何が起こっているのでしょうか?パディングとは何か簡単な例えがありますか?N P PP=NPEXP=NEXPNPP

これが事実である常識的な理由を提供できますか?


11
すべての複雑さのクラスの結果が上に行くわけではないことを指摘したいと思います。たとえば、を証明した場合、それは意味します。一般に、崩壊は上昇し、分離は下降します。EXPNEXPPNP
ロビンコタリ

確かに。実際、分離は崩壊よりも直感的であるため、これはそれを考える良い方法のように思われます。
ギャブゴー

2
@ Robin、@ gabgoh:いくつかの折り畳みさえ下向きになりますが、パディング引数によるものではありません。たとえば、arxiv.org / abs / cs / 9910008を参照してください。
ジョシュアグロチョウ

回答:


30

この問題を直観する最良の方法は、指数時間クラスの完全な問題が何であるかを考えることだと思います。たとえば、NEの完全な問題は、簡潔に記述可能な入力の標準NP完全問題です。たとえば、グラフの隣接行列を記述する回路が与えられた場合、グラフは3色可能ですか。次に、E = NEであるかどうかの問題は、NPの問題が簡潔に記述可能な入力、たとえば有効なコルモゴロフの複雑さが小さい入力で多項式時間で解けるかどうかと等しくなります。これは明らかに、すべての入力で解けるかどうかよりも強くありません。時間制限が大きいほど、関連する入力のコルモゴロフの複雑さは小さくなるため、時間制限が大きい場合の崩壊は、入力の小さなサブセットで機能するアルゴリズムに影響します。

ラッセル・インパリアッツォ


14

OK、だからあなたの目標はを基づいてことです'このクラスが何であるかを正確に指定するのではなく、入力サイズで何らかの形でパラメータ化されていることを知っています)。何らかのアルゴリズムによって決定された言語があります。次に、各単語をにパディングして言語を作成します。その結果、長さはになり、含まれていることが(基本的に、新しいアルゴリズム追加されたゼロを無視し、実際の短い入力でを実行します)。C L A S S 1 [ g n ] = C L A S S 2 [ H N ] L C L ACLASS1[g(f(n))]=CLASS2[h(f(n))]CLASS1[g(n)]=CLASS2[h(n)]A L 'のx LのF N C L A S S 1 [ G N ] A ' ALCLASS1[g(f(n))]ALxLf(n)CLASS1[g(n)]AA

私たちがしていることは、より大きなクラスから言語を取得し、それをパディングします。それにより、より小さなクラスに封じ込めるより弱いアルゴリズムで解決できます-同じ量を持つため、より弱いアルゴリズムでできます前と同じように「実際の作業」を行いますが、入力を拡張することにより(入力の長さの関数である)制限が解除されます。

これで、、したがって (アルゴリズム決定ます。ここからに到達したいと思います。しかし、それは簡単です決定するアルゴリズムは、それに応じて入力をパディングし、パディングされた入力でを実行します。L 'C L A S S 2 [ H N ] B ' L C L A S S 2 [ H F N ] B L B LCLASS1[g(n)]LCLASS2[h(n)]BLCLASS2[h(f(n))]BLB

このステップは次のように要約できます。より大きく、よりリソースフルなクラスでを決定したい。追加のリソースを使用して、入力を埋め込み、埋め込み言語を決定するアルゴリズムを実行しますL

もちろん、ここにはいくつかの技術的な詳細が含まれます(検討するクラスでパディングを実装できるようにする必要があります)が、一般的な直感を示すためにそれらを無視します。


13

パディング引数は、表現のコンパクトさの観点から見ています。2つのトランスレータチューリングマシンを考えてみましょうインスタンスを爆破し、それらを再び圧縮します。CBC

パディング引数は、下位の非決定性クラスの言語のTMの決定性バージョンでを構成することにより、で機能します。の出力は、コンパクトに表現されない言語をまとめて形成するため、これは「簡単」になります。B BBBB

を使用して他の方法でアイデアを適用することはできません。これは、簡単なクラスの一部の言語のみが、難しいクラスの言語を爆破することによって生成されるためです。C


5

より直感的にするために、何が起こっているかをより抽象的に見てみましょう!

入力用と問題用の2つの変換がありますが、両方ともで表します。最初の変換と2番目の変換の場合、コンテキストから明確になります。pad

これらの2つの変換には、次のプロパティがあります。

I.すべての問題、すべての入力:AΣxΣ

pad(x)pad(A) IFF、xA

II。場合である()、次いで、であり、()。AEXPNEXPpad(A)PNP

III。入力の変換は複雑度クラスにあります。EXP

パディングの変換にこれらのプロパティがあることは明らかです。

さて、逆方向で同じことをする方法がわからない理由は、逆方向のパディングのような変換がないためです(をと交換し、をと交換する場合)。質問はなぜですか?EXPPNEXPNP

現時点でそのような変換が存在しない理由については正式な議論はありませんが、AndrásSalamonが言ったことは直感的に正しいです。入力のサイズを増やすことは簡単ですが、どのように入力を圧縮できるかは明確ではありませんか?

それを理解する別の方法は、次のように考えることです。と仮定し、問題を解決したいとします。我々は、入力された与えられたの長さを、我々は考える長さの入力としての。P=NPNEXP=NTime(2nO(1))xnN=2nO(1)

NEXP(n)=NTime(2nO(1))=NTime(N)NP(N)P(N)=Time(NO(1))=Time(2nO(1))=EXP(n)


1
後者の議論は、ある種の「変数の変換」と見られています。しかし、たとえば入力があるためにそれを「考える」ことができない理由がわかりません。他の2つのアプローチでは、NPアルゴリズムにより多くのリソースを与えるという観点から考えると、圧縮とパディングの観点から考えると、これはまったくうまくいきません。N=log(n)
ギャブゴー

1
実際に考える第3の方法は、逆を調べることです。私は苦い終わりにそのアプローチをたどりませんでしたが、素晴らしい洞察があれば、私はそれを自分自身への応答として投稿します。
ギャブゴー

1
@gabgoh:変数の変更よりもデリケートです。私は考えて長さのものとして入力、この作品があるため、私はメイクにオリジナル入力の終わりに十分な空白があることを想像します長さはに等しいが、長さ入力を長さであるとどのように考えることができるか?括弧内にあるのは入力の長さであることを忘れないでください!つまり、関数の出力が依存する入力の一部です。 N N N N N = ログN N=2nO(1)nNNnN=log(n)
カベ

1
[続き]これを考慮することも役立つかもしれません:入力が単項で長さであると仮定すると、それをビットに圧縮でき、実際に機能します!単項エンコーディングの()である問題は、バイナリエンコーディングの()にあります。N = ログN P N P E X P N E X PnN=log(n)PNPEXPNEXP
カベ

1
私の問題は「考える」というフレーズにあると思います。実際には、小さな入力を大きな入力と考えることの意味と、それが何をするのかについて頭を包むことはできません。は考えられないことを理解しています。これは、パディング引数の修正であり、明確な類推ではないため、あなたが述べる理由のためです。結局、変数を変更するとき、私たちは常に他の変数の観点から変数を考えていますが、実際の変数とは違って、それはちょっと「非圧縮性」です。それが悪い答えだとは言わないが、個人的にはあまり役に立たない。N=log(n)
ギャブゴー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.