P完全性と並列計算


23

私は最近、二相性をチェックするアルゴリズムについて読んでいて、問題がP-completeであることを読みました。さらに、これの結果は、この問題、または任意のP-complete問題が効率的な並列アルゴリズムを持つ可能性が低いことです。

この最後の声明の背後にある直感は何ですか?


これはNC(回答を参照)に関連しており、これは「効率的に並列化可能」を形式化する恐ろしい方法です。
ラファエル

回答:


17

どれP -complete問題は、効率的な並列アルゴリズムを持っていることはほとんどありません。どうして ?

存在P -complete問題が最も重要な手がかりである(PPOLYLOGSPACE)P。問題は、なぜこの推測が並列計算に関連するのかということです。計算で使用されるリソースから始めましょう。シーケンシャルコンピューティングの場合:時間とスペース。並列計算の場合:時間とハードウェア(プロセッサの数)。関係はありますか?はい!シーケンシャル空間↔並行時間。順次時間↔並列ハードウェア。順次空間と並列時間の対応は、採用されている並列計算モデルから独立しているようです。これにより、実証されていない以下の、いわゆる並列計算テーゼが導かれます。

(チャンドラとストックマイヤー)時間T n = O S n O 1 および並列計算のすべての計算で、空間計算量 TMの計算はすべて並列計算モデルでシミュレートできます時間の複雑さT n を持つモデルは、空間の複雑さS n = O T n OS(n)T(n)=O(S(n)O(1))T(n)S(n)=O(T(n)O(1))

多項式空間における問題解ける順次のクラスであると多項式時間で解ける問題の集合であるP .Since P S P A C Eは、より問題のはるかに大きい部類であると考えられているP論文、並列処理によって可能になった効果的な改善を定量化します。この論文の結果は、PRAMがN P-完全な問題を多項式時間で解決できるということです...残念ながら、そうではありません!並列計算のテーゼは、P S P A C Eに属する問題に実際に対処できることを意味します。PSPACEPPSPACEPNPPSPACE…しかし、これには指数関数的な数のプロセッサーが必要です!時空間のトレードオフが機能しています:逐次計算モデルの指数時間は、並列計算モデルの指数関数的なプロセッサーに変換されますが、逐次計算モデルの多項式空間は、並列計算の多項式時間に変換されますコンピューティングモデル。

このトレードオフは、並列時間と並列ハードウェアの両方を制限しようとすると理解しやすくなります。並列計算モデルに多項式のプロセッサ数がある場合、並列多項式時間で解決可能な問題のクラスはです。プロセッサの数を多項式に制限すると、シーケンシャルマシンのパフォーマンスを向上させることができますが、多項式の係数を超えることはできません。したがって、時間の複雑さを表す多項式の次数を減らすことはできますが、並列処理を使用して指数コストを多項式コストに減らすことはできません。P

多項式時間の複雑さと並行して解決される問題は、属する問題です。プロセッサ数の多項式制約により、TMと同等の並列計算モデルが実現します。2つの重要な実用上の考慮事項があります。どの多項式数のプロセッサが許容可能/手頃なのか?実際には、プロセッサの多項式数は、線形またはそれに近いことを意味します。どの部分多項式時間を達成できますか?ほとんどすべての高度に並列可能な実行可能な問題が多対数並列時間を達成できることが判明しました。並行して、入力長が対数である時間の複雑さは、効率的な並列計算を表します。プロセッサの多項式数が与えられ、その時間の複雑さが多対数である場合、並列アルゴリズムは効率的であると見なされます。P

問題の所与のKH定数であるが、並列計算の論文は、並列アルゴリズムが存在することを意味し、Rと時間の複雑さO l o g n k ここでk RTIME_SPACETM(nk,(logn)h)khRO((logn)k)kは定数です。連続時間と並列時間の比較により、を(時間の観点から)高度に並列化可能な問題として分類できます。R

並列計算の論文から、は高度に並列化可能な問題のクラスであることがわかります。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を意味します。のようだPOLYLOGSPACEPOLYLOGSPACEPOLYLOGSPACEP

  1. POLYLOGSPACEP
  2. PPOLYLOGSPACE

対数多項式空間を使用して多項式時間で解くことができる問題を含んでいます。P -complete問題は、おそらくに属する P - P P O L Y L O G S P A C E PPOLYLOGSPACEPP(PPOLYLOGSPACE)

(ニックのクラス-ニコラス・ピッペンガーに敬意を表して、1979年に最初に特定し、特徴付けた)は、多対数時間で解決できる問題のクラスです(つまり、時間の複雑さ O l o g n Kで囲まれたプロセッサの多項式の数(すなわち、と O F N いくつかの多項式関数の F N問題のサイズである)並列計算の論文は意味 N C P P OをNCO((logn)k))O(f(n))fnNC(PPOLYLOGSPACE)

しかし、残念ながら、定義によりまた、ある問題がたくさん含まれていない効率的な並列化を。最も悪名高い例は、並列バイナリ検索です。問題は、この問題がp = 1でも多対数時間の複雑さを持っていることです。最悪の場合に最大で対数時間を必要とする逐次アルゴリズムは、並列実行可能性に関係なくN Cにあります。NCpNC

これで、完全問題が最も困難な並列化可能な問題である理由を最終的に説明できます。P完全問題Qが与えられた場合、効率的な並列アルゴリズムの存在はほとんどあり得ません。そのような並列アルゴリズムが時間計算量O l o g n kで存在する場合、並列計算論文はその存在を暗示します。同じ問題に対する空間複雑度O l o g n k を持つ逐次アルゴリズムの例。以来QはあるPPPQO((logn)k)O((logn)k)QP今度はこれが内のすべての問題ことを意味するものであろう-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、我々はまだこれを証明することができないにもかかわらず。P(PPOLYLOGSPACE)=P(PPOLYLOGSPACE)P

多項式プロセッサの要件に関する最後の観察。まあ、それは理論的な声明です。実際には、問題のサイズよりも速く増加するプロセッサ要件は、実際には役に立たない場合があります。


10

「効率的な並列」はNC(多項式数のプロセッサで多対数時間で決定可能な問題の「ニックのクラス」)内に収まり、N CPであると広く信じられているためです。したがって、P - c o m p l e t eの問題は、効率的な並列アルゴリズムを持っているとは考えられていません(P = N Cを意味するため)。NCPP-completeP=NC

もちろん、これはすべて、PN Cの最初のレベルにないことは未解決の問題であるため、であると推測できます。つまり、N C 1Pどうかはわかりません。NCPPNCNC1P

あなたが問題を解決できない場合でも、より多くの、私たちも知らないA C 0 [ 6 ]、すなわち一定の深さ(=一定の並列時間)ブール回路とをPAC0[6]ゲート。mod6

詳細については、次の本をご覧ください。

Raymond Greenlaw、H。James Hoover、Walter L. Ruzzo、「並列計算の限界:P完全性理論」、1995年。


NCには、効率的に並列化できない多くの問題も含まれています。詳細については私の答えをご覧ください。
マッシモカファロ

問題がN Cにある場合、N C = P」と明示的に言うことができます。P-completeNCNC=P
アレックス10ブリンク

1
@forforgiven、どのクラスが「効率的な並列」アルゴリズムを正しくキャプチャするかについて、さまざまな意見があります。そのため、上限と見なされるクラスを使用しました。P対NCは、回答で述べられているように興味深い詳細がありますが、人々がP完全問題には効率的な並列アルゴリズムがないと考える典型的な理由だと思います。回答への参照を追加しました。
カベ

1
@Kaveh、私はあなたに同意します。ほとんどの人はこれらの用語でこれについて正確に考えます。それが、並列計算の論文に基づいて、少し異なる視点を提供したかった理由です。あなたが提供した参考文献は優れており、事実上、私が今まで読んだ主題の最高の治療法を表しています。
マッシモカファロ

6

Kavehの答えは、NCである「並列処理」の通常の定義をカバーしています。P NC であるかどうかの問題は、複雑性理論におけるより難しい質問の1つです(また、P < NPの質問と同じように関連性がある)。<<

その背後にある直観は、線形プログラミングやDFS順序などのPの問題には、並列化できない長い「クリティカルパス」を強制する多くの依存関係があるように感じることです。これは、非決定論が非常に強力であるように見える以上の証明ではありませんが、これは基本的な考え方です。

編集:コメントを明確にするために、この答えのポイントは、なぜ(一部の)人々がPとNCが同じであるとは思わないかを言うことです。PとNPの場合と同様に、両者が異なるかどうかを証明する方法は誰も知りませんが、(一部の)コンピューター科学者がそうであると思わせる難しい問題については何かがあります。

もう1つの余地は、NCは「多項式的に多数のプロセッサでのポリログ時間」であり、非常に劇的な高速化を求めているが、多くのプロセッサを提供していることです。したがって、並列化の実用的な概念に適合しない場合があります。

特に、P NPであると考える場合、NP完全問題のヒューリスティックおよび近似アルゴリズムをすぐに見始めるでしょう。一方、NCがPよりも小さいと考えても、今日のコンピューターで利用可能な種類の並列処理から、重要な高速化を実現できる可能性があります。<


あなたが与えている直感は正しくありません。特定のアルゴリズムを効率的な並列アルゴリズムに変えることができないという事実は、効率的な並列時間で問題を解決できないという意味ではありません。多くの数をテストする必要があるため、主ににはないと言うことができますが、それらのほとんどは無関係であるように見えますが、私たちが知っているように、PrimalityはPにあります。PP
カベ

しかし、ルイの主張は直観と見なされるべきであり、完全に間違っているわけではありません。問題なのは、DFSのP完全性が非常に壊れやすいことです。辞書編集DFSが必要であり、RNCなどにもあります
。– Suresh

@シュレシュ:はい。つまり、そのlexを証明する方法がわかりません。オーダーDFSは、それを行うよりもはるかに良い方法で決定論的にシミュレートすることはできませんが、人々はランダム性なしで可能であると「感じる」ことはありません。(それが重要な場合、私の「宗教」は、多くのランダム性がある程度の力を持っているということです。)
ルイ

@Kaveh:この「クリティカルパス」(「作業深度」とも呼ばれます)はアルゴリズムの機能ではなく、問題の機能です。それが表示するのが難しい理由です。これは、(アルゴリズムによって)順番に調査された「ワークパイブ」の最長のシーケンスです。
ラファエル

@Raphaelでは、言語が与えられた場合、それを解決するアルゴリズムが特定の一連のステップに従う必要があるという既知の理由はありません。これが下限の証明が非常に難しい理由の1つであり、問​​題を解決するアルゴリズムの計算がどのように見えるかについては何も推測できません。それが私のポイントです。
カベ

3

正確に何を意味するために「効率的な並列アルゴリズム」を使用するのかを十分に考慮してください。

古い答えは、複雑性理論の観点を説明しています。そこでは、「効率的」とは通常、「ランタイム」のような曖昧なものを意味しますOfn との時間 Ogn プロセッサ」。プロセッサの数は入力サイズに依存する可能性があることに注意してください。

特に、しばしば名前が付けられたクラスNC

プロセッサ数が多項式の並​​列コンピュータで、多対数時間で決定可能な決定問題のセット。

これは、これらの問題に対してより実用的な用語で効率的な並列アルゴリズムがあるかどうかとは関係ありません ¹:

  • NCアルゴリズム使用している場合、プロセッサ数が固定されているマシンで(効率的に)問題を解決する方法についての情報は得られません
  • 問題にNCアルゴリズムがないからといって、「実際の」アルゴリズムがないわけではありません。問題を多項式的に非常に小さな部分に分解できないからといって、常に十分に小さなものに分割できないわけではありません。n 成長します。

    たとえば、共有メモリを備えた絶えず多くのプロセッサで、CYK解析は漸近的に最適化された高速化と並行して実行できます(コンテキストフリー解析はP完全ですが、私の修士論文を参照しください)。

限られた数のプロセッサを搭載したマシンで有用な方法で効率を説明するには、より正確な分析が必要です O 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.


  1. Let Tp:NR0 the runtime function of a parallel algorithm. You might want to call an algorithm "efficient" if T1(n)/Tp(n)p, or if T1(n)T(n) for T 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.

  2. This is not always true; memory hierarchy and hardware may allow for larger speedup, at least sometimes. There will be another constant bound, though.


0

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.

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.