私は分散システムに焦点を当てた修士課程の学生ですが、理論的なコンピュータサイエンスにも興味があります。チューリングマシンの上に分散システムの正式な表現があるかどうか疑問に思っていましたか?つまり、チューリングマシンの概念を拡張(変形)して、分散コンピューティングを利用することは可能ですか?
1つのアイデアは、TM間で共有テープ(タプルスペースに似たもの)を作成することです。
私は分散システムに焦点を当てた修士課程の学生ですが、理論的なコンピュータサイエンスにも興味があります。チューリングマシンの上に分散システムの正式な表現があるかどうか疑問に思っていましたか?つまり、チューリングマシンの概念を拡張(変形)して、分散コンピューティングを利用することは可能ですか?
1つのアイデアは、TM間で共有テープ(タプルスペースに似たもの)を作成することです。
回答:
[ありますか]チューリングマシン上の分散システムの正式な表現ですか?
これに関しては、ディスカッション(コメントにJukkaが投稿したリンクを参照)が見方です。私が見る方法、分散システムを正式に表す方法は、それらをどのように表示するかに大きく依存し、それは「お気に入りのシステムの仮定」(つまり、同期に関する仮定(つまり、分散システムでのアクションの相対的なタイミング)に依存しますシステム)、通信(メッセージパッシングvs共有メモリ)、障害(プロセスやリンクの問題、良性またはビザンチンなど)について。コミュニティはこの点について同意していないため、基本的な形式についても同意していません。 。
[チューリングマシンの概念を拡張(変形)して分散コンピューティングを利用することは可能ですか?
それは完全に可能だと思いますが、誰も(私が知っている)それを調べたことはありません。私が知っているのはこれらです:
Pi-Calculusを調べてみてください。
http://en.wikipedia.org/wiki/%CE%A0-calculus
分散システムについて推論するために設計されたその処理ベースの計算。
(警告:やや偏った見解、過度の単純化、そして露骨な一般化が先にある。)
多くの場合、分散コンピューティングと並列コンピューティングの違いは、次のように要約できます。
この見方をすると、分散システムをモデル化するために、ノード(またはプロセッサーやコンピューター)がどのような計算能力を持っているかは重要ではないことがよくあります。
通常、各ノードは単なるステートマシンであると簡単に想定できます(多くの場合、など、考えられる状態の数がかなり少ない場合はそれで十分です)。マシンは、受信したメッセージに基づいて状態を変更します。通常、マシンの状態がどのように変化するかにはそれほど関心がありません。チューリングマシンかもしれませんが、これはそれほど重要ではありません。
あなたは(合理的な)グラフの問題取る場合例えば、して解決する分散型の複雑勉強(例えば、通信ラウンド数がそれを解決するために必要な)、各ノードでのあなたのモデル計算の方法は、通常の答えには影響を与えません。最初にTuringマシンを使用してそれを分析し、次に任意の強力なオラクルを想定する場合、答えは通常同じです。あなたは不均一なアドバイスを追加することができ、それは何も変更しません。X
「ボトルネック」とは、情報をすばやく収集できないことです。では通信ラウンド、あなたは何をすべきかに関係なくは、各ノードは、自身のradius-に関する情報持つことができる近傍を。各ノードに任意の強力なプロセッサを搭載することもできますが、プロセッサに処理する情報がない場合は、どのようなメリットがありますか。T
したがって、分散システムをモデル化するための開始点としてTuringマシンを使用することは、少し不自然に聞こえます。これが無関係な側面である場合、その上にすべてを構築するのはなぜですか?一方、並列計算ではこれは自然なことです(ただし、モデルは通常、チューリングマシンではなくPRAMのようなものです)。
いくつかは、あなたのビューに応じて、あなたが何かのように、分散システムを考えることができると主張しているより多くの理由は非決定性と公平性の有界性の異なる解釈の、チューリングマシンよりも強力。このリンクには、このトピックに関する興味深い議論があります。Herlihy / Shavitの著書「The art of multiprocessor programming」では、チューリングの計算可能性は本質的に(シーケンシャル)アルゴリズムの概念を指し、ある意味では分散コンピューティングの推論には不適切であると主張しています。これは議論の余地があり論争の的になっているので、私がこれを言っているので誰も私に石を投げないように願います。