すべてのエッジの重みが等しい場合、BFSを使用して最小のスパニングツリーを取得できますか?


9

グラフのすべてのエッジが与えられた場合 G 等しい重量です c線形時間で最小のスパニングツリーを生成するために、幅優先検索(BFS)を使用できますか?

BFSはノードを2回訪問せず、頂点からトラバースするだけなので、直感的にこれは正しいように聞こえます v 頂点へ u 訪れたことがない場合 u 以前は、サイクルが発生しないように、 G接続されている場合、最終的にすべてのノードにアクセスします。すべてのエッジの重みは等しいため、BFSが選択したエッジは関係ありません。

私の推論は意味がありますか?

回答:


13

グラフが重み付けされていない、または同等の場合、すべてのエッジが同じ重みを持つ場合、すべてのスパニングツリーは最小スパニングツリーです。観察したように、BFS(またはDFS)を使用して、エッジの数に線形に比例するそのようなツリーを見つけることができます。


しかし、提供される矛盾する折り返しの例についてはどうでしょうか?
TheNotMe 2014年

@TheNotMe BFSは通常、線形アルゴリズムと呼ばれます。 O(|V|+|E|)。ただし、最悪の場合(折り返しの例のように)、|E|=|V|2 BFSは次のように考えることができます O(|V|2)。ただし、MST用のプリムおよびクラスカルのアルゴリズムには、|E|時間的に複雑であり、したがって、崩壊の意味でも「線形」ではありません。ベンチマークとしてどのアルゴリズムを使用していますか?その時間の複雑さには|E|?もしそうなら、BFSはそれより悪いことではありません。
Patrick87 2014年

3

すべてのエッジコストが等しい場合、すべてのスパニングツリーも最小スパニングツリーです。この場合、到達可能性を解決するアルゴリズムはMSTも解決します。

Let S = {v0} be a set of nodes initially containing v0
Mark v0
Parent[v0] = -1
While S is not empty
  Remove a vertex v from S
  For all edges (v,u)
    If u is unmarked
      Mark it and add it to S
      Parent[u] = v

Parent関係からツリーを回復できます。場合S.RemoveS.Add、一定の時間がかかり、その後、アルゴリズムは、取りO(v+e)=O(v2) どこ v,e 頂点とエッジの数です。


-3

すべてのエッジの重みが等しい場合、次のように使用できます。

-BFS -DFS -Dijkstraのアルゴリズム-Primのアルゴリズム

しかし、あなたは使用できません

-kruskalのアルゴリズム


本当じゃない。クラスカルのアルゴリズムを使用できます。
邪悪な

最小の重みから始めて、すべてのエッジを与えることになるので、どのように可能ですか?
Nandkishor Nangre

誰でも1つ選択します。ランダムに選択することもできます。
邪悪な

ええ、私はあなたのポイントを獲得しました!しかし、それはクラスカルアルゴに適用できますか?...上記の現象を説明するクラスカルのコードを見たことがないため
Nandkishor Nangre

「BFS」を使用できるかどうかを尋ねた質問の答えは、「はい」であり、その理由についてはこれ以上述べません。私たちは答えがイエスだと主張するだけの答えを探しているのではありません。私たちは、彼らの結論の説明、根拠、正当化、または証拠を提供する答えを求めています。理由を説明するために回答を編集することをお勧めします。また、質問は「どうすればできるか」を尋ねるものではなく、BFSが機能するかどうかを尋ねたので、他のアルゴリズムを提供しても質問の答えにはなりません。
DW
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.