私は大学で次の問題を提示されました:
G =(V、E)を、エッジe∈Eでコストc e > = 0の(無向)グラフとします。Gで最小コストの全域木Tが与えられていると仮定します。ここで、新しいエッジがGに追加され、2つのノードv、tv∈Vをコストcで接続するとします。
- Tが最小コストのスパニングツリーであり、新しいエッジがGに追加されているかどうかをテストするための効率的なアルゴリズムを提供します(ただし、ツリーTには追加されません)。アルゴリズムを時間O(| E |)で実行します。O(| V |)時間でできますか?ツリーTとグラフGを表すためにどのデータ構造が使用されるかについての仮定に注意してください。
- Tが最小コストのスパニングツリーではなくなったとします。線形時間アルゴリズム(時間O(| E |))を与えて、ツリーTを新しい最小コストスパニングツリーに更新します。
これは私が見つけた解決策です:
Let e1=(a,b) the new edge added
Find in T the shortest path from a to b (BFS)
if e1 is the most expensive edge in the cycle then T remains the MST
else T is not the MST
動作しているように見えますが、問題がO(| E |)時間であるのに対し、O(| V |)時間でこれを簡単に実行できます。私は何かが足りないのですか?
ちなみに私たちは誰にでも助けを求めることが許可されているので私は浮気していません:D