並列処理による複雑さの軽減


10

入力サイズに相対的な数のプロセッサを必要としない並列アルゴリズムを使用して、問題の計算の複雑さを軽減することは可能ですか(スラッシュで例を提供できます)?


質問をもう少し明確にしていただけませんか?プロセッサの数がごく一定->せいぜい、一定の係数で実行時間を改善できます。これはあなたが言った意味ではなかったと思いますか?
Jukka Suomela、2010

「入力サイズに関連しない」。それはどういう意味ですか?O(1)?
Aryabhata 2010

私はO(1)プロセッサを意味します。@Jukka:つまり、入力サイズに相対的な数のプロセッサを追加することによってのみ、計算の複雑さを軽減できますか?
Nick Larsen

回答:


12

O(1)プロセッサを意味する場合は、いいえ、計算の複雑さを減らすことはできません。

各プロセッサで実行される作業を並べ、1つのプロセッサで実行するだけです。同期が心配な場合は、1つのプロセッサで簡単にエミュレートできます。


素早い回答ありがとうございます。非常に密接に関連している何かについて別の質問を作成せずに、入力サイズ以外のものと比較して、いくつかのプロセッサを使用して計算の複雑さを減らすことは可能ですか?
Nick Larsen

2
@Nick:入力サイズ以外のものはO(1)です:-)
Aryabhata

おかげで、他のことを考えるのに苦労しましたが、確認したかったのです。
Nick Larsen

WRTでは、入力サイズ以外の量で増加するプロセッサの数でスピードアップを達成できるかどうか、答えが「いいえ」であるかどうかはわかりません。入力サイズが(明らかに独立しているわけではありませんが)異なるパラメーターによって複雑さが増す問題があります。たとえば、グラフの問題で、グラフのツリー幅に関連するいくつかのプロセッサを許可した場合はどうなりますか?
アーロンロス

@Aaron:許可されたプロセッサの数が何らかの形で入力に関連している場合、はい、確かに「いいえ」とは言えません。もちろん、特に明記しない限り、それは無意味な質問です。
Aryabhata 2010

6

粗粒度の並列アルゴリズムの新しい分野があり、実行時間(およびその他の計算リソースの消費)は、多くの場合自然な仮定nの下で、独立したパラメーターn(入力サイズ)およびp(プロセッサーの数)の関数と見なされます。>> P

良い出発点は、「バルク同期並列処理」をググることです。


ハードウェアを入力データに合わせてスケーリングできるようにすると、複雑度クラスは変更できますか?私は素人としてそれを
ググるのに苦労してい


1

pp

Of/pO1/pfOcfOfc=1/p

TT/p+SoメートルeMoreTメートルe

しかし、複雑さは変わりません。


1

「1プロセッサでは計算できませんが、2で計算できます。」

これは、両方のプロセッサがTMまたはより強力でないモデルであると想定して、不可能です。wikipediaから、マルチテープマシンの場合:

このモデルは、直感的にシングルテープモデルよりもはるかに強力に見えますが、kがどんなに大きい場合でも、マルチテープマシンは、二次的に長い計算時間のみを使用してシングルテープマシンでシミュレートできます(Papadimitriou 1994、Thrm 2.1)

また、マルチヘッドマシンについては、Walter J. SavitchおよびPaul MBVitányiによる「ヘッドを備えたマルチヘッドチューリングマシンの線形時間シミュレーション-ヘッドへのジャンプ」から:

このペーパーの主な結果は、テープごとに複数の読み書きヘッドがあり、「特定のヘッドを別の特定のヘッドの位置にシフトする」という追加の1つの移動シフト操作があるチューリングマシンがある場合、効果的に線形時間でシミュレートする、テープごとに単一の読み書きヘッドを備えたマルチテープチューリングマシン。つまり、元のマシンが時間T(n)で動作する場合、シミュレーションマシンは一定のcに対して時間cT(n)で動作します。


ここに抽象化のコストの良い例があります。実際のコンピューター(RMの実装として)は、TMよりも並列化できます。
Raphael

RMは何を表していますか?それがミスタイプで、TMを意味するなら、私は同意しません。マルチテープ/マルチヘッドTMは、プロセッサ通信とアムダールの法則を心配する必要はありません。さらに、コンピューターがどのようにランダムアクセスTMよりも優れたパフォーマンスを発揮するか、またはその逆はわかりません。つまり、それらは同等であると思います。
chazisop

0

おそらく「並列または」(2つの関数がブール値を返す場合、どちらかがtrueを返すかどうかを通知します(両方ではなく、いずれかが終了に失敗する可能性がある場合))は、あなたが話していることかもしれません:計算できません1プロセッサで計算しますが、2で計算できます。

ただし、これは、プロセスがブラックボックスとして与えられているか、プロセスを自分で解釈できる説明として与えられているかなど、使用する計算モデルに大きく依存します。


2
厳しく制限されたモデルで作業していない限り、これは誤りのようです。シングルプロセッサは、2で実行する命令をインターリーブするだけで、最大で2x + O(1)の速度低下を引き起こします。「ブラックボックス」とは、インターリーブが不可能だということですか?それでも、時間がかかりすぎるブラックボックス計算を終了する場合でも、各プロセスに必要な計算長を繰り返し推測および倍加することにより、2つのプロセッサをシミュレートできます。
アーロンロス

しかし、そのためには、計算を終了できる必要があります。つまり、モデルで並列または1プロセッサで実行することはできません。この場合、実行できるのは、完了するまで計算を実行することだけです。
jkff

今、私はあなたの意味を理解しましたが、それは完全ではないと思います。2でも計算できません。1つのマシンが稼働し続け、他のマシンがYESと答える場合、答えはYESです。しかし、NOを返す場合はどうなりますか?マシンがまだ実行中か、スタックしているのか(HALTINGの問題など)がわからないため、確定的な方法で応答することはできません。
chazisop
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.