示すようにラファエルさんのコメントとj_random_hackerさんのコメント、答えは肯定的です。実際、MSTは、いくつかの小さな例外を除き、MSTアルゴリズムによって到達可能です。
グラフについて、すべてのエッジの2つの重み関数(実数)は、いずれかの重み関数によって誘導されたエッジの厳密な弱い順序付けを同じ厳密に拡張できる場合、(互いに)比較互換(相互)として定義されますトータルオーダー。つまり、1つの重み関数とそのタイブレークルールによる任意の2つのエッジの比較の結果が、他の重み関数とそのタイによる結果と同じになるように、各重み関数で一貫したタイブレークルールを考案できます。規則を破る。G
補題1:とw 2を2つの重み関数とします。次の5つのステートメントは互いに同等です。w1w2
- と w 2は比較互換です。w1w2
- エッジの任意のセットでは、およびw 2による共通の最も明るいエッジがあります。w1w2
- エッジの任意のセットで、およびw 2による共通の最も重いエッジがあります。w1w2
- w 3がw 1およびw 2と比較互換性を持つように、異なるエッジに異なる重みを割り当てる重み関数が存在します。w3w3w1w2
- 任意のエッジのための及びE 2ように、E 1は、より軽量であるE 2つの重み関数により、E 1は、として光又はより軽いようであるE 2他の重み関数によって。e1e2e1e2e1e2
補題1の証明は簡単な演習として残されています。
補題2:2つの重み関数とw 2を、e 1 < w 1 e 2の場合、e 1 < w 2 e 2とします。次に、それらは比較互換です。w1w2e1<w1e2e1<w2e2
(ヒント)証明:1つのアプローチは、補題1の条件5を検証することです。別のアプローチは、任意のエッジセットで、による最軽量のエッジも最下位のエッジであることを示すことにより、補題1の条件2を検証することですw 1、w2w1
グラフの比較ベースのアルゴリズムは、すべてのエッジで任意の2つの(弱く)比較互換の重み関数について、変更なしで繰り返すことができる方法で1つの重み関数でアルゴリズムを実行できる場合、比較互換として定義されます他の重み関数を使用します。特に、アルゴリズムのこれら2つの実行は同じ出力を持ちます。G
すべてではないにしても、ほとんどのMSTアルゴリズムは2つのフレーバーで記述できることに注意してください。最初のフレーバーは、異なるエッジが異なる重みを持っていると仮定します。これは、1つのMST(実際には一意のMSTでもある)を見つけることが主な関心事であるときに使用されます。2番目のフレーバーでは、Gの異なるエッジが同じ重みを持つことができます。もちろん、すべてのMSTを見つけることが主な関心事であるこの回答では、2番目のフレーバーのMSTアルゴリズムのみを考慮します。GG
比較互換のMSTアルゴリズムは、すべてのMSTを見つけることができます。
上記の命題を証明するために、MST の数の計算で「KruskalはすべてのMSTを見つけることができる」というセクションをわずかに適合させる必要があります。重み関数w 1を使用したGの MST の場合、等しくないエッジの重みのペア間の絶対差よりも軽い正の重みを選択します。他のエッジの重みを変更せずに、mの各エッジの重みからその重みを引くと、新しい重み関数、たとえばw 2が得られます。エッジe 1がe 2よりw 1だけ明るい場合、e 1はmGw1mw2e1e2w1e1 by w 2も同様です。補題2では、 w 1と w 2は比較互換です。mは w 2を持つ一意のMSTであることに注意してください。(この一意性を示すための1つの方法は、1つのMSTのエッジの重みが減少されるたびに、新しい重み関数を持つすべてのMSTは、そのエッジを含まなければならないことを証明することである。)上のアルゴリズムのいずれかの実行ので、W 2がありますメートルを。アルゴリズムは比較互換であるため、 w 1または w 2を使用して同じ方法でアルゴリズムを実行できます。その実行は一意のMSTを見つけるので、 mはe2w2w1w2mw2w2mw1w2m、 w 1と同様に mを見つけます。w2mw1
すべてのMSTアルゴリズムは比較互換です
上記の命題は広範に聞こえます。まあ、すべてのMSTアルゴリズムとは、間違っている、または不要なステップがあるなど、明らかに病理学的なものを除いて、私が見た一般的な比較ベースのMSTアルゴリズムを意味します。比較互換のMSTアルゴリズムはすべてのMSTを検出できるため、すべてのMSTアルゴリズムはすべてのMSTを検出できます。具体的には、それぞれ4つの古典MSTアルゴリズム、すなわち、Borůvkaの、プリムの、クラスカルのと逆の削除アルゴリズムは、すべてのMSTSを見つけることができます。
以下に、さらに3つの比較互換のMSTアルゴリズムを示します。
- 削除ヘビーエッジアルゴリズム。すべてのエッジから始めます。繰り返しサイクルを見つけ、サイクルがなくなるまで最も重いエッジの1つを削除します。
- add-non-heavy-edgeアルゴリズム。空のセットから始めます。すべてのエッジを反復処理します。各エッジが追加され、サイクルが形成される場合、最も重いエッジの1つを削除します。
- 軽量エッジ置換アルゴリズム。任意のスパニングツリー始めます。でサイクル検索TプラスエッジEではないTを。エッジの場合はTそのサイクルではより重いE、削除TをからTおよび追加の電子をするT。Tの重量を減らすことができなくなるまで繰り返します。TTeTtetTeTT
次のMSTアルゴリズムは比較互換ではありません。
- 次数を変更したクラスカルのアルゴリズムである、次数が偏ったクラスカルのアルゴリズム。Kruskalのアルゴリズムに関するウィキペディアの説明のように、から最小の重みを持つエッジを削除する場合、選択する最小の重みを持つ複数のエッジがあるとします。削除することを選択したエッジは、2つの頂点の次数の合計がすべての選択肢の中で最も大きいエッジになります。それがMST見つからないので、このアルゴリズムは、比較互換することができない、{ B 、B 、C 、CのD }頂点を有するグラフ、B 、C、およびエッジBをS{ a b 、b c 、c d}a 、b 、ca b重量のとエッジB 、C 、CとD 、D Bの重量の2。このアルゴリズムは、その不必要な変更のために病理学的と見なされます。1b c 、c d、db2
上記の8つのMSTアルゴリズムはすべて比較ベースであることに注意してください。
アルゴリズムが比較互換であることを示す方法は?
例としてクラスカルのアルゴリズムを使用します。重み付き無向接続グラフのクラスカルのアルゴリズム(2番目のフレーバー)の説明を次に示します。G
- Gと同じ頂点を持つがエッジのないグラフを作成します。したがって、Fは単一の頂点の分離されたツリーのフォレストです。FGF
- グラフ内のすべてのエッジを含むセットを作成します。S
- 一方、空であり、Fはまだスパニングされていません
SF
- から最小の重みを持つエッジを選択します。S
- からそのエッジを削除します。S
- そのエッジが2つの異なるツリーを接続している場合、それをフォレスト追加し、2つのツリーを1つのツリーに結合しますF
- 出力。F
ましょう及びwは2で2つの比較互換重み関数であるG。クラスカルのアルゴリズムは、「Sから最小の重みを持つエッジを選択する」ステップでのみ重み関数を使用します。補題1の条件2は、このステップで共通の最も明るいエッジを選択できることを示しています。その後、帰納法により、w 1とw 2で同じ方法ですべてのステップを実行できることを簡単に確認できます。したがって、クラスカルのアルゴリズムは比較互換です。w1w2GSw1w2
アルゴリズムは、大まかに言って、3種類の手順で記述できる場合、比較互換です。
- 体重を必要としない何かをします。
- 指定されたエッジのセットで最小の重みを持つエッジを選択します
- 指定されたエッジのセットで最大の重みを持つエッジを選択します
この十分条件は、Borůvka、Prim、Kruskal、reverse-delete、delete-heavy-edge、add-non-heavy-edgeアルゴリズムをカバーしています。この十分な条件に適合するために、到達可能なMSTのセットに影響を与えずにアルゴリズムの特定の説明を変更する必要がある場合があることに注意してください。程度に偏りのあるクラスカルのアルゴリズムは比較互換であるという例外があるため、この十分な条件は大まかに説明されていることを強調しておきます。