私は最近、二相性をチェックするアルゴリズムについて読んでいて、問題がP-completeであることを読みました。さらに、これの結果は、この問題、または任意のP-complete問題が効率的な並列アルゴリズムを持つ可能性が低いことです。
この最後の声明の背後にある直感は何ですか?
私は最近、二相性をチェックするアルゴリズムについて読んでいて、問題がP-completeであることを読みました。さらに、これの結果は、この問題、または任意のP-complete問題が効率的な並列アルゴリズムを持つ可能性が低いことです。
この最後の声明の背後にある直感は何ですか?
回答:
どれ -complete問題は、効率的な並列アルゴリズムを持っていることはほとんどありません。どうして ?
存在 -complete問題が最も重要な手がかりである。問題は、なぜこの推測が並列計算に関連するのかということです。計算で使用されるリソースから始めましょう。シーケンシャルコンピューティングの場合:時間とスペース。並列計算の場合:時間とハードウェア(プロセッサの数)。関係はありますか?はい!シーケンシャル空間↔並行時間。順次時間↔並列ハードウェア。順次空間と並列時間の対応は、採用されている並列計算モデルから独立しているようです。これにより、実証されていない以下の、いわゆる並列計算テーゼが導かれます。
(チャンドラとストックマイヤー)時間T (n )= O (S (n )O (1 ))および並列計算のすべての計算で、空間計算量 TMの計算はすべて並列計算モデルでシミュレートできます時間の複雑さT ′(n )を持つモデルは、空間の複雑さS ′(n )= O (T ′(n )O。
多項式空間における問題解ける順次のクラスであると多項式時間で解ける問題の集合であるP .Since P S P A C Eは、より問題のはるかに大きい部類であると考えられているP論文、並列処理によって可能になった効果的な改善を定量化します。この論文の結果は、PRAMがN P-完全な問題を多項式時間で解決できるということです...残念ながら、そうではありません!並列計算のテーゼは、P S P A C Eに属する問題に実際に対処できることを意味します。…しかし、これには指数関数的な数のプロセッサーが必要です!時空間のトレードオフが機能しています:逐次計算モデルの指数時間は、並列計算モデルの指数関数的なプロセッサーに変換されますが、逐次計算モデルの多項式空間は、並列計算の多項式時間に変換されますコンピューティングモデル。
このトレードオフは、並列時間と並列ハードウェアの両方を制限しようとすると理解しやすくなります。並列計算モデルに多項式のプロセッサ数がある場合、並列多項式時間で解決可能な問題のクラスはです。プロセッサの数を多項式に制限すると、シーケンシャルマシンのパフォーマンスを向上させることができますが、多項式の係数を超えることはできません。したがって、時間の複雑さを表す多項式の次数を減らすことはできますが、並列処理を使用して指数コストを多項式コストに減らすことはできません。
多項式時間の複雑さと並行して解決される問題は、属する問題です。プロセッサ数の多項式制約により、TMと同等の並列計算モデルが実現します。2つの重要な実用上の考慮事項があります。どの多項式数のプロセッサが許容可能/手頃なのか?実際には、プロセッサの多項式数は、線形またはそれに近いことを意味します。どの部分多項式時間を達成できますか?ほとんどすべての高度に並列可能な実行可能な問題が多対数並列時間を達成できることが判明しました。並行して、入力長が対数である時間の複雑さは、効率的な並列計算を表します。プロセッサの多項式数が与えられ、その時間の複雑さが多対数である場合、並列アルゴリズムは効率的であると見なされます。
問題の所与のKとH定数であるが、並列計算の論文は、並列アルゴリズムが存在することを意味し、Rと時間の複雑さO ((l o g n )k ′)ここでk ′は定数です。連続時間と並列時間の比較により、を(時間の観点から)高度に並列化可能な問題として分類できます。
並列計算の論文から、は高度に並列化可能な問題のクラスであることがわかります。P O L Y L O G S P A C Eには、ログスペースの削減に関する完全な問題は含まれていません。これはP O L Y L O G S P A C E ≠ Pを意味します。のようだ
対数多項式空間を使用して多項式時間で解くことができる問題を含んでいます。P -complete問題は、おそらくに属する P - (P ∩ P O L Y L O G S P A C E )。
(ニックのクラス-ニコラス・ピッペンガーに敬意を表して、1979年に最初に特定し、特徴付けた)は、多対数時間で解決できる問題のクラスです(つまり、時間の複雑さ O ((l o g n )K))で囲まれたプロセッサの多項式の数(すなわち、と O (F (N ))いくつかの多項式関数の F N問題のサイズである)並列計算の論文は意味 N C ⊂ (P ∩ P Oを。
しかし、残念ながら、定義によりまた、ある問題がたくさん含まれていない効率的な並列化を。最も悪名高い例は、並列バイナリ検索です。問題は、この問題がp = 1でも多対数時間の複雑さを持っていることです。最悪の場合に最大で対数時間を必要とする逐次アルゴリズムは、並列実行可能性に関係なくN Cにあります。
これで、完全問題が最も困難な並列化可能な問題である理由を最終的に説明できます。P完全問題Qが与えられた場合、効率的な並列アルゴリズムの存在はほとんどあり得ません。そのような並列アルゴリズムが時間計算量O ((l o g n )k)で存在する場合、並列計算論文はその存在を暗示します。同じ問題に対する空間複雑度O ((l o g n )k ′)を持つ逐次アルゴリズムの例。以来QはあるP今度はこれが内のすべての問題ことを意味するものであろう-complete問題ポリ対数空間で解くことができる:(P ∩ P O L Y L O G S P A C E )= P。あなたが既に知っているように、我々は代わりと信じている(P ∩ P O L Y L O G S P A C E )⊂ P、我々はまだこれを証明することができないにもかかわらず。
多項式プロセッサの要件に関する最後の観察。まあ、それは理論的な声明です。実際には、問題のサイズよりも速く増加するプロセッサ要件は、実際には役に立たない場合があります。
「効率的な並列」は(多項式数のプロセッサで多対数時間で決定可能な問題の「ニックのクラス」)内に収まり、N C ≠ Pであると広く信じられているためです。したがって、P - c o m p l e t eの問題は、効率的な並列アルゴリズムを持っているとは考えられていません(P = N Cを意味するため)。
もちろん、これはすべて、PがN Cの最初のレベルにないことは未解決の問題であるため、であると推測できます。つまり、N C 1 ≠ Pかどうかはわかりません。
あなたが問題を解決できない場合でも、より多くの、私たちも知らないでA C 0 [ 6 ]、すなわち一定の深さ(=一定の並列時間)ブール回路とをゲート。
詳細については、次の本をご覧ください。
Raymond Greenlaw、H。James Hoover、Walter L. Ruzzo、「並列計算の限界:P完全性理論」、1995年。
Kavehの答えは、NCである「並列処理」の通常の定義をカバーしています。P NC であるかどうかの問題は、複雑性理論におけるより難しい質問の1つです(また、P < NPの質問と同じように関連性がある)。
その背後にある直観は、線形プログラミングやDFS順序などのPの問題には、並列化できない長い「クリティカルパス」を強制する多くの依存関係があるように感じることです。これは、非決定論が非常に強力であるように見える以上の証明ではありませんが、これは基本的な考え方です。
編集:コメントを明確にするために、この答えのポイントは、なぜ(一部の)人々がPとNCが同じであるとは思わないかを言うことです。PとNPの場合と同様に、両者が異なるかどうかを証明する方法は誰も知りませんが、(一部の)コンピューター科学者がそうであると思わせる難しい問題については何かがあります。
もう1つの余地は、NCは「多項式的に多数のプロセッサでのポリログ時間」であり、非常に劇的な高速化を求めているが、多くのプロセッサを提供していることです。したがって、並列化の実用的な概念に適合しない場合があります。
特に、P NPであると考える場合、NP完全問題のヒューリスティックおよび近似アルゴリズムをすぐに見始めるでしょう。一方、NCがPよりも小さいと考えても、今日のコンピューターで利用可能な種類の並列処理から、重要な高速化を実現できる可能性があります。
正確に何を意味するために「効率的な並列アルゴリズム」を使用するのかを十分に考慮してください。
古い答えは、複雑性理論の観点を説明しています。そこでは、「効率的」とは通常、「ランタイム」のような曖昧なものを意味します との時間 プロセッサ」。プロセッサの数は入力サイズに依存する可能性があることに注意してください。
特に、しばしば名前が付けられたクラスNC は
プロセッサ数が多項式の並列コンピュータで、多対数時間で決定可能な決定問題のセット。
これは、これらの問題に対してより実用的な用語で効率的な並列アルゴリズムがあるかどうかとは関係ありません ¹:
問題にNCアルゴリズムがないからといって、「実際の」アルゴリズムがないわけではありません。問題を多項式的に非常に小さな部分に分解できないからといって、常に十分に小さなものに分割できないわけではありません。 成長します。
たとえば、共有メモリを備えた絶えず多くのプロセッサで、CYK解析は漸近的に最適化された高速化と並行して実行できます(コンテキストフリー解析はP完全ですが、私の修士論文を参照してください)。
限られた数のプロセッサを搭載したマシンで有用な方法で効率を説明するには、より正確な分析が必要です since speed-up is bounded by a finite constant, the number of processors². You rarely find this in complexity theory. Therefore, if you want to learn about parallel algorithms that are of use in the real world, I would advise to look elsewhere.
Let the runtime function of a parallel algorithm. You might want to call an algorithm "efficient" if , or if for the runtime function of a good sequential algorithm. I propose this in a more rigorous fashion in my master thesis, building from literature cited therein.
This is not always true; memory hierarchy and hardware may allow for larger speedup, at least sometimes. There will be another constant bound, though.
Suppose tomorrow someone discovered a proof that P = NC. What would the consequences for computer science research and practical applications be in this case?
That question was marked as duplicate this question, so let me just assume that it is really a duplicate, and provide one possible answer.
We know that NC != PSPACE, hence a proof that P=NC would also prove P != PSPACE. That may not sound like a big deal, but it is one consequence for computer science research.
Why do we know NC != PSPACE? Well, we know NCk ⊆ DSPACE(O(logk)), so we can just use the space hierarchy theorem.
In term of practical applications, the applications around linear (and convex) programming might be so seducing that custom parallel architectures together with compilers for translating linear programming formulations efficiently to that hardware could be developed and sold.