クラスカルとプリムのアルゴリズムは同じ最小全域木を生成しますか?


9

エッジに方向性がなく、一意の重みがあり、負のパスがないと仮定すると、これらのアルゴリズムは同じ最小スパニングツリーを生成しますか?


3
はい、同じMSTを生成しているようです。しかし、それは決定的なものではありません。
Death_by_Ch0colate

2
ええ、それは本当です、チェックするだけです。

「ネガティブパスがない」という条件を削除しても、答えはポジティブのままです
John L.

回答:


13

見つけ、これを私は上記のすべての条件が満たされた場合、グラフは必ずしもユニークなMSTを持っていると述べています。したがって、私の質問では、クラスカルとプリムのアルゴリズムは必然的に同じ結果を生成します。


7

MSTが一意の場合、すべてのアルゴリズムが強制的に生成します。

MSTが一意でない場合、ノード処理順序が異なるため(同じアルゴリズムの2つの異なる実装でも可能)、出力は異なる場合がありますが、合計の重みは同じになります。この場合、MSTは誤った名称です。


彼らは確かにそうかもしれませんが、そうですか?
ラファエル

4
@ラファエル:私はそれに答えました。
イヴ・ダウスト2017年

1
@イブいいえ、あなたはしませんでした。「多分」というのは保証ではありません。たとえば、並べ替えアルゴリズムがあり、それらが安定ている場合、使用されるアルゴリズムに関係なく、同じ出力生成されます。安定していない場合、同じ結果が得られる可能性があります。したがって、問題は、それらのアルゴリズムがトピックに対して安定感を持ち、それを示すかどうかです。
luk32

@ luk32:「同じアルゴリズムの2つの異なる実装でも可能」と読みましたか?ちなみに、安定したソートアルゴリズムは一意に定義されるため同じ出力を生成するため、選択肢がありません。安定性が必要ない場合、ソリューションは一意ではなく、実装が異なると動作が異なる場合があります。
Yves Daoust、2017年

十分に公正ですが、そのステートメントは明白ではありません。実装が不安定になるのはなぜですか?ある種のソートが関係していて、安定性はこれに依存していますか?
luk32

2

イヴ・ダウストの回答に加えて、次のグラフ

三角形

このグラフでは、3つのノードと3つのエッジがあり、それぞれが同じ重みを持っています。明らかに、2つのエッジがこのグラフのMSTを形成します。ただし、どの2つのエッジが選択されるかは、アルゴリズムだけでなく、アルゴリズムの実装にも依存します。たとえば、ノードをリストに格納した場合、同じMSTアルゴリズムを使用しても、ノードをセットに格納した場合とは異なる順序でノードにアクセスする可能性があります。

実際、実装がポインター演算に依存している場合(一部の言語では一部のコンテナーが行う)、アルゴリズムを実行するたびに異なるMSTを選択することさえあります。


1
元の投稿では、エッジには一意の重みがあると述べています。もちろん、これは固有のMSTを保証します。
wchargin 2017年

この最後のポイントは、たとえばPython 3.3 set以降dictで使用する場合にも当てはまります。ハッシュはサービス拒否攻撃をより困難にするために、実行ごとに異なる値でソルトされます。
Jasmijn 2017年

@YvesDaoust本当に申し訳ありません!
Cort Ammon

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