Bei einem ungerichteten, verbundenen, gewichteten Diagramm G=(V.,E.,w)
G=(V,E,w) wo ww ist die Gewichtsfunktion w::E.→R.w:E→R und ein Minimum Spanning Tree (MST) T.T von GG .
Jetzt verringern wir das Gewicht umkk einer Kante ee das gehört nicht dazuT.T .So aktualisieren Sie effizient T.
T um es zu einem MST zu machen (bezeichnet T.'T′ ) von G'=(V.,E.,w')G′=(V,E,w′) , wo w'w′ ist das gleiche wie ww außer dass w'(e)=w(e)- -kw′(e)=w(e)−k ?
Der Algorithmus zum AktualisierenT.
Ich habe Schwierigkeiten, seine Richtigkeit durch Widerspruch zu beweisen . AnnehmenT.″
- e∉T.″
e∉T′′ : wir haben w(T.″)=w'(T.″)<w'(T.')≤w(T.)w(T′′)=w′(T′′)<w′(T′)≤w(T) . Widerspricht der Tatsache, dassT.T ist ein MST von GG . - e∈T.″
e∈T′′ : Ich stecke hier fest.
Zwei Anmerkungen:
Die hier akzeptierte Antwort auf dieselbe Frage ist zu allgemein, als dass ich ihr folgen könnte.
Ich bevorzuge Beweise, die nicht auf konkreten MST-Algorithmen beruhen, wie die Algorithmen von Kruskal und Prim. Sie müssen dies jedoch nicht durch Widerspruch beweisen oder die beiden Fälle trennene∉T.″
e∉T′′ und e∈T.″e∈T′′ wie ich es tat.
Antworten:
Lassen T.T ein Minimum Spanning Tree von sein GG . Lassenee Sei der Rand, den wir modifizieren, um ihn zu bekommen G'G′ , und lass T.'T′ sei der nach dem Algorithmus berechnete Baum. Wir kennen das Gewicht vonT.'T′ ist kleiner oder gleich dem Gewicht von T.T .
Zuerst, T.'T′ ist ein Baum - wir erstellen genau einen Zyklus im Algorithmus und brechen ihn auf, sodass wir keine Zyklen haben T.'T′ .
Zweitens T.'T′ ist ein Spannbaum vonG'G′ . Lassene'e′ die Kante entfernt werden und e″e′′ sei die Kante, die im Algorithmus hinzugefügt wird (wir haben entweder e″=e'e′′=e′ oder e″=ee′′=e ). Um ein Spanning Tree zu sein, müssen wir einen Pfad zwischen jedem Scheitelpunktpaar habenuu , vv mit nur Kanten von T.'T′ . Angenommen, das inT.T (was definitiv ein Spannbaum ist), der Weg von uu zu vv nicht beteiligt e'e′ , dann existiert der gleiche Pfad in T.'T′ . Angenommen, es wurde verwendete'e′ , dann gibt es einen Weg (ohne Verlust der Allgemeinheit) von uu zu einem Endpunkt von e'e′ und vom anderen Endpunkt von e'e′ zu vv . Es gibt auch einen Pfad von einem Endpunkt vone'e′ zum anderen Endpunkt über e″e′′ (rund um den Zyklus), alle innerhalb T.'T′ . Dann können wir einen Pfad aus konstruierenuu zu vv über e″e′′ im T.'T′ durch Zusammenführen dieser drei Pfade und Entfernen der Überlappung (obwohl ein Spaziergang für die Konnektivität ausreicht).
Nun, der wichtige Teil, wir möchten das beweisen T.'T′ ist ein minimaler Spannbaum fürG'G′ .
Fall 1 : Der Algorithmus fügt nicht hinzuee zum Baum. In diesem FallT.'=T.T′=T . Angenommen, es gibt einen minimalen SpannbaumH.H zum G'G′ das ist anders als T.'T′ . WennH.H hat das gleiche Gewicht wie T.'T′ , Wir sind fertig. Nehmen wir nun für den Widerspruch an, dass das Gewicht vonH.H ist weniger als das Gewicht von T.'T′ . Es muss eine Kante gebene'e′ des niedrigsten Gewichts, das in ist H.H aber nicht in T.'T′ (Es muss eine Kante geben, die es sonst besser macht GG wäre nicht von geringerem Gewicht als T.'T′ Außerdem können wir davon ausgehen, dass die Kante, die besser abschneidet, die Kante mit dem niedrigsten Gewicht ist, die nicht vorhanden ist T.'T′ - Wir können jeden nehmen H.'H′ das ist ein Baum mit geringerem Gewicht als T.'T′ und schauen Sie sich den Kandidaten für e'e′ , wenn es nicht kleiner als eine Kante in seinem Zyklus ist, dann auch nicht H.'H′ ist kein MST, oder wir können ein neues erstellen H.'H′ wo wir die tauschen e'e′ für einen Rand von T.'T′ Dieser Prozess muss mit einer Kante enden e'e′ welches die Eigenschaft hat, dass es die Kante ist, die es besser macht).
Fall 2 : Der Algorithmus fügt hinzuee zu T.'T′ . Lassenxx sei der Rand in T.T das wird vom Algorithmus entfernt (und damit nicht in T.'T′ ) Nehmen wir wieder an, wir haben eine andere MST H.H wie vorher. Wenn das Gewicht gleich ist, freuen wir uns. Nehmen Sie also für den Widerspruch an, dassH.H hat ein geringeres Gewicht und wie zuvor e'e′ ist die niedrigste Gewichtskante in H.H das ist nicht in T.'T′ . Wir können ähnliche Argumente wie zuvor mit vorbringenxx .
In jedem Fall leiten wir also einen Widerspruch ab, daher kann es keinen Spannbaum mit geringerem Gewicht geben T.'T′ daher T.'T′ ist ein minimaler Spannbaum für G'G′ .
quelle
Let SS be a spanning tree of an edge-weighted graph GG . We call SS a local-minimum spanning tree of GG if for any edge ee not in SS , ee is a heaviest edge in the cycle created when we add ee to SS .
Let me introduce a theorem about minimum spanning tree (MST).
A spanning tree is an MST if and only if it is a local-minimum spanning tree.
A proof of the above theorem by the OP herself/himself does not rely on any concrete MST algorithm.
In another proof of the above theorem but stated differently, you can also read the reason why such a spanning tree is called "local-minimum".
The above theorem enables us to verify an MST edge by edge although MST is defined with respect to all edges together.
Once we are armed with the above theorem, it becomes easy to prove the correctness of the algorithm in the question. It should be, in fact, easier to construct a proof by yourself than reading the rigorous proof below.
A simple proof of the algorithm in the question
Let us reuse all notations in OP's definition of the algorithm.
Note that TT is a local-minimum spanning tree of GG . To prove T′T′ is an MST of G′G′ , we will show T′T′ is a local-minimum spanning tree of G′G′ . There are two cases.
when w(e′)≤w′(e) and T′=T.
Since the only difference between T in G and T′ in G′ is the weight of edge e, we need to check e only. Since e′ is a heaviest edge in C with w, the condition w′(e)≥w(e′) means that e is a heaviest edge in C with w′. We are done in this case.
when w(e′)>w′(e) and T′=T∪{e}−{e′}.
Note that both the algorithm and the proof above work well regardless whether the weight of e is decreased, intact or increased.
On the equal weights of edges
It is a common practice to assume distinct weights of all edges for the sake of clearer exposition. However, this post works well with possibly equal edge-weights. In particular, we have been referring to "a heaviest edge" but never "the heaviest edge".
quelle