
分散最小全域木(MST)問題とは、ノードがメッセージパッシングによって通信するネットワークにおいて、分散アルゴリズムを用いて最小全域木を構築する問題です。これは古典的な逐次問題とは根本的に異なりますが、最も基本的なアプローチはボルーヴカのアルゴリズムに似ています。この問題の重要な応用例の一つは、ブロードキャストに使用できる木を見つけることです。特に、グラフ内のエッジをメッセージが通過するコストが大きい場合、MSTを用いることで、送信元プロセスがネットワーク内の他のすべてのプロセスと通信する際の総コストを最小限に抑えることができます。
この問題は最初に提起され、解決されたのは1983年にGallagerらによって[ 1 ]は、はグラフの頂点の数です。後に、解法は次のように改善されました。[ 2 ]そして最後に[ 3 ] [ 4 ]ここで、Dはネットワーク、つまりグラフの直径です。解の時間計算量の下限は最終的に[ 5 ]であることが示されました。
入力グラフ頂点がネットワークであると考えられています。独立したコンピューティングノードとエッジこれらは通信リンクです。リンクには、古典的な問題と同様に重みが付けられています。
アルゴリズムの開始時点では、ノードは自身に接続されているリンクの重みのみを認識している。(例えば、隣接ノードのリンクなど、より多くの情報を認識するモデルも考えられる。)
アルゴリズムの出力として、各ノードは、自身のリンクのうちどれが最小全域木に属し、どれが属さないかを知ることができる。
メッセージパッシングモデルは、分散コンピューティングにおいて最も一般的に使用されるモデルの一つです。このモデルでは、各プロセスはグラフのノードとしてモデル化されます。2つのプロセス間の各通信チャネルは、グラフのエッジとなります。
古典的な最小全域木問題でよく用いられるアルゴリズムは、プリムのアルゴリズムとクラスカルのアルゴリズムの2つです。しかし、これらのアルゴリズムを分散メッセージパッシングモデルに適用するのは困難です。主な課題は以下のとおりです。
こうした困難のため、メッセージパッシングモデルにおける分散型MSTアルゴリズムには新たな手法が必要とされた。そのいくつかは、古典的なMST問題に対するBorůvkaのアルゴリズムと類似点を持つ。
Gallager 、Humblet、SpiraによるGHSアルゴリズム[ 1 ]は、分散コンピューティング理論において最もよく知られたアルゴリズムの1つです。このアルゴリズムは、非同期メッセージパッシングモデルで最小全域木を構築します。
GHSアルゴリズムにはいくつかの前提条件が必要です。
MSTの断片を定義するサブツリーであるつまり、フラグメントは、ノードとエッジの接続された集合です。MST はフラグメントに関して 2 つの重要な特性を持っています: [ 1 ]
これら2つの特性は、GHSアルゴリズムの正当性を証明する基礎となる。一般に、GHSアルゴリズムはボトムアップアルゴリズムであり、各ノードをフラグメントとして開始し、単一のフラグメントが残るまでフラグメントを結合していく。上記の特性から、残ったフラグメントは最小全域木(MST)でなければならないことがわかる。
GHS アルゴリズムは、各フラグメントにレベルを割り当てます。レベルは、初期値 0 の非減少整数です。さらに、レベルがゼロでない各フラグメントにはIDがあり、これはフラグメントの構築時に選択されるフラグメント内のコア エッジの ID です。アルゴリズムの実行中、各ノードは、その接続エッジを次の 3 つのカテゴリに分類できます。[ 1 ] [ 6 ]
レベル0のフラグメントでは、起動した各ノードは以下の処理を実行します。
接続する2つのノードによって選択されたエッジがコアエッジとなり、レベル1が割り当てられます。
レベル0以外のフラグメントでは、各レベルで個別のアルゴリズムが実行されます。このアルゴリズムは、ブロードキャスト、コンバージキャスト、およびコア変更の3つの段階に分けられます。
コアに隣接する2つのノードは、フラグメント内の他のノードにメッセージをブロードキャストします。メッセージはブランチエッジを経由して送信されますが、コアは経由しません。各ブロードキャストメッセージには、フラグメントのIDとレベルが含まれています。この段階の終了時には、各ノードは新しいフラグメントIDとレベルを受信しています。
この段階では、フラグメント内のすべてのノードが協力して、フラグメントの最小重みの発信エッジを見つけます。発信エッジとは、他のフラグメントに接続するエッジのことです。この段階で送信されるメッセージは、ブロードキャスト段階とは逆方向です。すべてのリーフノード(分岐エッジを1つだけ持つノード)によって初期化されたメッセージが、分岐エッジを介して送信されます。メッセージには、検出された接続先の発信エッジの最小重み(そのようなエッジが見つからなかった場合は無限大)が含まれます。最小発信エッジを見つける方法は後ほど説明します。各非リーフノードについて、その分岐エッジの数を次のようにします。受け取った後コンバージキャストメッセージの場合、メッセージから最小の重みを選択し、そのメッセージから発信されるエッジの重みと比較します。最小の重みが、ブロードキャストを受信したブランチに送信されます。
前の段階が完了すると、コアで接続された2つのノードは、受信した最適なエッジを互いに通知できます。次に、フラグメント全体から最小の発信エッジを特定します。コアから最小の発信エッジへ、分岐エッジのパスを介してメッセージが送信されます。最後に、選択された発信エッジを介してメッセージが送信され、そのエッジが接続する2つのフラグメントを結合するように要求します。2つのフラグメントのレベルに応じて、2つの結合操作のうちの1つが実行され、新しいフラグメントが形成されます。詳細は後述します。
前述のように、各ノードはコアからブロードキャストメッセージを受信した後、最小重みの発信インシデントエッジを見つける必要があります。ノードがブロードキャストを受信すると、最小重みの基本エッジを選択し、ノードにメッセージを送信します。反対側にはフラグメントのIDとレベルがあります。次に、ノードエッジが送信エッジであるかどうかを判断し、通知ノードにメッセージを送信します。結果について。決定は以下のとおり行われます。
させてそしてこれら 2 つの断片を結合する必要があります。これを行うには 2 つの方法があります。[ 1 ] [ 6 ]
さらに、「吸収」操作が発生すると、コアを変える段階にある必要があるが、は任意の段階にある可能性があります。したがって、「吸収」操作は、状態に応じて異なる方法で行われる可能性があります。。 させてエッジになるそして組み合わせたい、そしてそして2 つのノードは接続されていますでそしてそれぞれ、次の2つのケースを考慮する必要があります。
前述のとおり、フラグメントは「マージ」または「吸収」操作によって結合されます。「吸収」操作では、すべてのフラグメントの最大レベルは変更されません。「マージ」操作では、最大レベルが 1 増加する場合があります。最悪の場合、すべてのフラグメントが「マージ」操作で結合されるため、各レベルのフラグメントの数は半分になります。したがって、最大レベル数は、 どこはノードの数です。
GHSアルゴリズムには、最下位レベルのフラグメントはブロックされないという優れた特性があります。ただし、最下位レベル以外のフラグメントでは一部の操作がブロックされる可能性があります。この特性は、アルゴリズムが最終的に最小全域木で終了することを意味します。
1-近似アルゴリズムはMaleq KhanとGopal Panduranganによって開発されました。[ 7 ]このアルゴリズムは時間、はグラフの局所最短経路直径[ 7 ]です。