MSTの更新


8

無向、接続、加重グラフが与えられた場合 G=VEwG=(V,E,w) どこ ww 重み関数です wERw:ERそして最小スパニングツリー(MST)の。 今、私たちは減少によって重量をエッジのんではないに属し。 TTGG
kkeeTT

を効率的に更新してMST(と表記)にする方法TTTT)の G=VEwG=(V,E,w)、 どこ ww と同じです ww それ以外で we=wekw(e)=w(e)k

更新のアルゴリズムTTTT 簡単です:追加 eeTT サイクルを作成します CCTT。しましょうee サイクルの最大加重エッジになる CC。もしwe>wew(e)>w(e)、その後 T=T{e}{e}T=T{e}{e}必要に応じてMSTを指定します。さもないと、T=TT=T

私は矛盾によってその正しさ証明するのが難しい。と思いますTT′′ の全域木です GG そして wT<wTw(T′′)<w(T)

  • eTeT′′: 我々は持っています wT=wT<wTwTw(T′′)=w(T′′)<w(T)w(T)。という事実と矛盾しますTT のMSTです GG
  • eTeT′′私はここで立ち往生しています。

2つのメモ:

  • ここで受け入れられた同じ質問への回答は、あまりに一般的すぎてフォローできません。

  • 私は、クラスカルやプリムのアルゴリズムなど、具体的なMSTアルゴリズムに依存しない証明を好みます。ただし、矛盾することを証明したり、2つのケースを分離したりする必要はありません。eTeT′′ そして eTeT′′ 私がしたように。


重みが不可欠な場合は、MSTを再計算することもできます。アルゴリズムまたは構造的な結果を探していますか?
–PålGD 2015

@PålGDMSTの再計算には、この問題の「多すぎる」コストがかかります。投稿で説明されているアルゴリズムは線形です。実際、私はそれについて正式で厳密な正当性の証明を探しています。
hengxin

ヒント:特定のエッジを含む/含まない最小全域木を見つける方法は?
ablmf 2016年

@ablmfありがとう。アルゴリズムという意味ですか?しかし、私は証拠を探しています。回答があれば、投稿していただけませんか。
hengxin 2016年

@hengxinエッジを含む最小のツリーを見つけるアルゴリズム ee簡単です。MSTを見つけるTT。追加eeそれにサイクルを作成します。次に、以外の最も重いエッジを削除しますeeこのサイクルで。これがアルゴリズムが正しいことを証明できれば、完了です。
ablmf

回答:


2

しましょう TT の最小全域木であること GG。しましょうee 取得するために変更するエッジになります GG、そして TTアルゴリズムに従って計算されたツリーである。私たちはその重みを知っていますTT の重み以下 TT

まず、 TT ツリーです-私たちはアルゴリズムでちょうど1つのサイクルを作成し、それを壊しますので、 TT

第二に TT全域木ですGG。しましょうee エッジが削除され、 ee アルゴリズムに追加されたエッジである( e=ee=e または e=ee= e)。スパニングツリーになるには、頂点のすべてのペア間にパスが必要ですあなたあなたvv のエッジのみを使用 TT。と仮定しますTT (間違いなくスパニングツリーです)、からのパス あなたあなたvv 関与しなかった eeの場合、同じパスが TT。または、それが使用したと仮定しますee、次に(一般性を失うことなく)パスがあります あなたあなた の1つのエンドポイント ee と他のエンドポイントから eevv。の1つのエンドポイントからのパスもありますee 経由で他のエンドポイントに ee (サイクルの周り)、すべての中で TT。次に、からパスを構築できますあなたあなたvv 経由して eeTT これらの3つのパスをマージし、オーバーラップを削除します(ただし、接続には徒歩で十分です)。

さて、重要な部分、私たちはそれを証明したいと思います TT最小全域木ですGG

ケース1:アルゴリズムが追加されないee木に。この場合T=TT= T。最小の全域木があると仮定しますHH ために GG それは違う TT。もしHH と同じ重さです TT、 終わったね。ここで、矛盾があると仮定します。HH の重量よりも小さい TT。いくつかのエッジが必要ですee 中にある最も低い重量の HH しかしではない TT (より良い結果が得られるエッジがあるはずです。 GG よりも軽量ではないだろう TT、さらに、より優れているエッジは、外部にある最も低い重みのエッジであると想定できます。 TT -私たちはどれでも取ることができます HH それはより低い重みのツリーです TT と候補者を見て ee、サイクルのどのエッジよりも小さくない場合は、 HH MSTではないか、新しい HH 入れ替える場所 ee の端のために TT、このプロセスはエッジで終了する必要があります ee これは、より優れているのはエッジであるという特性を持っています)。

  1. もし eeee、次に追加して得られたツリーを考えます eeTT (注、 TT)、形成されたサイクルの最も高い重量のエッジを削除します。この新しい木はそれよりも軽いですTT そしてのためのスパニングツリーです GG、という事実と矛盾する TT のMSTです GG -だから私たちはこれが起こり得ないことを知っています。
  2. もし e=ee= e、追加することによって形成されるサイクルを考えます e=ee= eTT(つまり、アルゴリズムが検討したもの)。サイクル内の他のすべてのエッジは、ee (それ以外の場合、アルゴリズムには ee エッジとして)、したがって、 HH (なので ee まだ含まれていない最も低い重みのエッジです TT)、 しかしその後 HH はサイクルを含まなければならないので、ツリーではなく、矛盾があります。

ケース2:アルゴリズムはeeTT。しましょうバツバツ でエッジになります TT これはアルゴリズムによって削除されます(したがって、 TT)もう一度、別のMSTがあると仮定します。 HH従来通り。重さが同じなら嬉しいです。したがって、矛盾があると仮定しますHH 以前のように、重量が低い ee は最も低いエッジです。 HH それはない TT。以前と同様の議論をすることができますバツバツ

  1. もし eバツex、(それも注意してください eeee)、それから私たちは改善することができます TT 以前と同じですが、私たちはそれを知っています TT MSTであり、想定できる特性を想起します ee 加重によって引き起こされるサイクルの少なくとも1つのエッジよりも重みが低いため、矛盾が生じ、 HH 存在することはできません。
  2. もし e=バツe= x、 また ee サイクル内の他のすべてのエッジよりも高い重みを持つ必要があるため、 HH これらのエッジをすべて含み、 HH は木ではなく、矛盾を導き出します。

したがって、すべてのケースで矛盾が導き出されるため、より低い重みのスパニングツリーは存在できません。 TTしたがって、 TT の最小全域木です GG


あなたの努力をありがとう。「もしもeバツex (それも注意してください eeee)、それから私たちは...」ということになります。ケース2.1:(1)なぜ eeee?と思いますかeHeH?(2)改善するTT 追加して ee それに、別のエッジを削除すると、 ee′′、私たちはそれを示さなければなりません eTeT そして we>wew(e′′)>w(e)。これらをどのように保証しますか?
hengxin 2015年

@hengxin 2.1から eeあるないTT、 だが eeなので、同じにすることはできません。
ルークマシエソン2015年

なるほど、分かりました。次に、2番目の質問はどうですか?私はそれを証明したと思いますeTeT、追加できるので eeTTサイクルを作成します。ただし、エッジがあることをどのように保証しますか。ee′′、よりも大きなサイクルで wew(e) 改善できるように TT 取り除くことによって ee′′
hengxin 2015年

@hengxin、申し訳ありませんが(2)がそこにありません eバツeexe、および バツx そして ee からの唯一の交換です TTTT、 そう ee ネザーにある別の3番目のエッジである必要があります TT また TT、そして以前に持っていたプロパティが再び真である場合、 HH その後、より良いMSTでした ee いくつかのエッジよりも軽くなければなりません TT、特に、作成するサイクルの一部のエッジよりも重さが小さい必要があります(そうでない場合、これらのエッジもすべて HH、および HHツリーではありません)。
ルークマチソン

1
まだ混乱しています。木々の「森」で迷子になりそうです。知っているee いくつかのエッジよりも軽い TT:なぜそれもいくつかのエッジよりも重くない T?それがそうであると仮定すると、なぜそれがサイクルのあるエッジよりも軽いのですか(私は「それ以外の場合」を理解していません)?他のエッジはすべて等しい重みを持つことができますかwe?チャットの時間はありますか?
hengxin

2

しましょう S 辺加重グラフの全域木 G。呼ぶS の局所最小全域木 G エッジの場合 e ありませんで Se 追加したときに作成されるサイクルの最も重いエッジです eS

最小スパニングツリー(MST)に関する定理を紹介します。

スパニングツリーがMSTであるのは、ローカル最小スパニングツリーである場合に限ります。

OP自身/彼自身による上記定理の証明具体的なMSTアルゴリズムに依存していません。

では上記の定理の別証明が、別の言い方をすれば、、あなたはまた、そのようなスパニングツリーは、「ローカル・最小値」と呼ばれる理由を読むことができます。

上記の定理により、MSTはすべてのエッジに対して一緒に定義されますが、MSTをエッジごとに検証できます。


上記の定理を身につけたら、問題のアルゴリズムの正当性を証明するのは簡単になります。実際には、以下の厳密な証明を読むよりも、自分で証明を作成する方が簡単です。

問題のアルゴリズムの簡単な証明

OPのアルゴリズムの定義ですべての表記を再利用してみましょう。

ご了承ください T の局所最小全域木です G。証明するT のMSTです G、表示します T の局所最小全域木です G。2つのケースがあります。

  • いつ wewe そして T=T

    唯一の違いは TG そして TG エッジの重みです e、チェックする必要があります eのみ。以来e で最も重いエッジです Cw、状態 wewe という意味です e で最も重いエッジです Cw。この場合は完了です。

  • いつ we>we そして T=T{e}{e}

    1. よく考えさせてください e。追加したときに作成されるサイクルeT また〜だ C。以来e で最も重いエッジです Cw、の新しい重み ewe<we という意味です e で最も重いエッジのままです Cw
    2. さあ fe にないエッジになります T。しましょうD 追加したときに作成されたサイクルになります fT。以来T のMSTです Gf で最も重いエッジです Dw
      • もし eDD 追加したときに作成されるサイクルでもあります fT。なのでw そして w 同じです Df で最も重いエッジのままです Dw
      • 今仮定すると eD。入れ替えればe すべてのエッジで C 以外 e、から取得します D 新しいサイクル Dを追加すると作成されるサイクルです fT。以来e で最も重いエッジです Cwf で最も重いエッジのままです Dw。唯一の違いはw そして w それらの値は e、私たちが持っている we<wewf=wf、それがわかります f で最も重いエッジのままです Dw
    3. ステップ1と2を組み合わせると、この場合は完了です。

上記のアルゴリズムと証明の両方が、 e 減少、無傷、または増加。

等しい重みのエッジ上

説明をわかりやすくするために、すべてのエッジに異なる重みを仮定するのが一般的な方法です。ただし、この投稿は、エッジウェイトが等しい場合にうまく機能します。特に、「最も重いエッジ」について言及してきましたが、「最も重いエッジ」については言及していません。


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