決定の問題があるとしましょう そして私はそれを言語にエンコードします 。これで、別の言語にエンコードすることもできます。
の時間の複雑さに関する定理はありますか そして ?
同じ問題の異なるエンコーディングを使用すると、問題の時間の複雑さがどのように変化しますか?
決定の問題があるとしましょう そして私はそれを言語にエンコードします 。これで、別の言語にエンコードすることもできます。
の時間の複雑さに関する定理はありますか そして ?
同じ問題の異なるエンコーディングを使用すると、問題の時間の複雑さがどのように変化しますか?
回答:
はい、複雑さはエンコーディングに依存します。あなたが確信できる唯一のことは、エンコーディングから翻訳する場合 エンコーディングへ またはその逆は複雑です 、および 複雑に解決できます 、その後 (エンコーディングで表現された同じ問題 )複雑さで解決できる エンコーディング間を行き来することによって。
エンコーディングの長さだけの問題ではありません。簡単な例を挙げましょう。 バイナリで表される正の整数であり、 素因数分解で表される正の整数である。一方の表現のサイズにはもう一方の観点から多項式の限界があります。しかし、長い間、素数性テストをバイナリ表現で多項式時間で解決できるかどうかは不明でした。しかし、分解表現では、それは自明な多項式です(おそらく 表現の詳細に応じて)。
または、意思決定問題を検討してください セットのメンバー 」。セットが整数の順序付けられていないリストによって表される場合、この問題は明らかに少なくとも線形時間を必要とします。ただし、セットがバランスのとれた検索ツリーで表されている場合、ルックアップ時間はセットのサイズが多対数になります。
ほとんどの具体的なケースでは、誰もが想定している明白な表現があり、より正確には、無視できる時間の変換まですべて同等の表現のクラスがあります。しかし、表現が関連する場合もありますが、多項式時間よりも正確にデータ構造を分析する場合に最も頻繁に使用されます。
時間の複雑さはエンコーディングに依存します。時間の複雑さ そして クレイジーな十分なエンコーディングを考えると、任意に離れている可能性があります。
実際には、通常、「自然な」エンコーディングの時間の複雑さを気にします。多くの場合、複数の「自然な」エンコーディングがある場合、それらはすべてほぼ同じ時間の複雑さをもたらす傾向があります(たとえば、エンコーディング間を効率的に変換できる場合)。ただし、これを正式に保証するものではありません。
したがって、技術的に言えば、使用される特定のエンコーディングを指定せずに問題の時間の複雑さを語ることはできません。
NP完全な言語を検討する そしてそのブルートフォース(したがって指数時間)ソルバー 。次に定義します
。
今明らかに、のわずかな適応 (入力のみを使用 )決定する 時間内に指数関数的に したがって、時間内に、それ自体の入力の長さの多項式(これは )。あれは、。
より簡単な考慮事項は、標準のバイナリから単項エンコーディングに移行することです。突然、自明な素数性チェックと因数分解さえ多項式時間で実行されます。この概念は、疑似多項式ランタイムに関連しています。
だからはい:入力の長さが大幅に変わる場合、エンコーディングは重要です。したがって、一般的な仮定は、
あいまいです。
ランタイムに関しても クラスは、これらの仮定のみを使用して不変です。数をインターリーブする配列のエンコーディングを想像してください。これにより、最大値を見つけるための多項式因子が追加されます。したがって、多項式の要素よりも細かい粒度で何かを言いたい場合は、「良い」エンコーディングでも注意する必要があります。
あなたの質問への正確な答えではありませんが、Berman-Hartmanis予想は、すべてのNP完全問題は、ある意味で、お互いのエンコーディングであると(非公式に)述べています。推測で使用されるエンコーディングの概念は、多項式の違いまで、時間の複雑さを維持します。