修正されたBorůvkaのアルゴリズムのより厳密な分析


11

Borůvkaのアルゴリズムは、グラフのスパニングツリー最小を計算するための標準的なアルゴリズムの一つであると。G=(V,E)|V|=n,|E|=m

擬似コードは次のとおりです。

MST T = empty tree
Begin with each vertex as a component
While number of components > 1
    For each component c
       let e = minimum edge out of component c
       if e is not in T
           add e to T  //merging the two components connected by e

外部ループの各反復をラウンドと呼びます。各ラウンドで、内側のループはコンポーネントの数を少なくとも半分に削減します。したがって、最大でラウンドあります。各ラウンドで、内部ループは各エッジを最大で2回(各コンポーネントから1回)見ます。したがって、実行時間は最大でです。O(logn)O(mlogn)

今度は、各ラウンドの後で、同じコンポーネント内の頂点のみを接続するすべてのエッジを削除し、コンポーネント間の重複エッジも削除して、内側のループが最小ウェイトエッジであるいくつかのエッジm '<mのみを調べるようにします。以前に切断された2つのコンポーネントを接続します。

この最適化は実行時間にどのように影響しますか?

各ラウンドでエッジの数が半分になることをどういうわけか知っていれば、実行時間は大幅に改善されます: T(m)=T(m/2)+O(m)=O(m)

ただし、最適化によって検査されるエッジの数は劇的に減少しますが(最終ラウンドでは1つのエッジのみで、コンポーネントの最大数は一般に2つを選択します)、この事実を使用して分析を強化する方法/方法は明確ではありませんランタイムの。


最悪の場合(チェーン)、1ラウンドあたり1つのエッジを削除するため、その事実を使用して一般的なグラフの境界を改善することはできません。たとえば、完全なグラフのみを検討することもできます。
Xodarap 2012

@Xodarapが単純なパスの場合(チェーンとはどういう意味ですか?)、最初のラウンドで少なくともエッジの半分を選択します。これらのエッジは後続のラウンドから削除されます。G
Joe

高度に最適化されたunion-find構造の 1つを使用して、このアルゴリズムを改善できることに注意してください。
ラファエル

回答:


5

Borůvkaのステップが頂点の数を半分にしても、各ステップのエッジの数を半分にしない一般的なグラフのテストケースを作成することは可能です。おもしろいのは、提案する最適化が平面グラフに対して機能することです。これは、平面グラフの場合ためです i、e。そして一般的に、それはグラフのマイナークローズドファミリーのクラスのスピードアップにつながります。|E|3|V|6|E|=O(|V|)

参照:

  • 修士論文、Claude Anderson(100ページでBorůvkaのアルゴリズムの最悪の場合の入力が説明されています)。[リンク]

  • 「マイナークローズドグラフクラスのMSTの2つの線形時間アルゴリズム」。Archivum mathematicum 40(3):315–320、2004。[リンク]

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