接続されたグラフのエッジの数が既知であり、各エッジの重みが異なると仮定すると、線形時間で最小スパニング ツリーを作成することは可能でしょうか?
これを行うには、各エッジを確認する必要があります。このループ中に検索を含めることはできません。それ以外の場合は、少なくとも n log n 時間になります。ループ内を検索せずにこれを行う方法がわかりません。つまり、どういうわけか、各エッジを 1 回だけ見て、それを含めるかどうかを、成長するデータ構造を含まない「静的な」以前の値に基づいて決定する必要があります。
問題のノードのエンドポイントを保持し、次のノードを見て、次のノードが前のノードと同じ頂点を持っている場合は、前のノードと現在のノードの重みを比較して、低いノードを保持するとします。現在のノードのエンドポイントが前と等しくない場合、それは別のコンポーネントにあります..各エッジを線形で調べながら、すでに追加されているコンポーネントノードを追跡するためのハッシュまたは配列を作成できないため、スタックしています。時間。
私が考えた別のアプローチは、最小の重みでエッジを見つけることです。エッジの重みが異なるため、このエッジは MST の一部になります。それから..私は立ち往生しています。線形時間で n - 1 個のエッジに対してこれを行うことはできないためです。
ヒントはありますか?
編集
ノードの数、エッジの数、および各エッジの重みが異なることがわかっている場合はどうなるでしょうか? たとえば、n 個のノード、n + 6 個のエッジがあるとします。
次に、正しい 7 つのエッジを見つけて削除するだけでよいでしょうか?