Betrachte einen Graphen . Jede Kante hat zwei Gewichte und . Suchen Sie einen Spanning Tree, der das Produkt . Der Algorithmus sollte in Bezug auf in Polynomzeit ablaufen .e A e B e ( ∑ e ∈ T A e ) ( ∑ e ∈ T B e ) | V | , | E |
Ich finde es schwierig, einen der traditionellen Algorithmen auf Spanning Trees (Kruskal, Prim, Edge-Deletion) anzupassen. Wie man es löst? Irgendwelche Hinweise?
Antworten:
Ich gehe davon aus, dass Sie keine negativ gewichteten Kanten erhalten, da dies bei negativen Gewichten möglicherweise nicht funktioniert.
Algorithmus
Beschriften Sie sie für jede Ihrer Kanten mit bisn1 n
Es sei Gewicht A der Kantennummer iai i
Es sei Gewicht B der Kantennummer ibi i
Stellen Sie diese Tabelle auf
Dabei ist jedes Tabellenelement das Produkt aus Zeile und Spalte.
Summieren Sie für jede Kante die entsprechende Tabellenzeile und -spalte (und denken Sie daran, das Element in der Schnittmenge zu entfernen, da es zweimal summiert wurde).
Suchen Sie die Kante mit der größten Summe, und löschen Sie diese Kante, wenn das Diagramm dadurch nicht getrennt wird. Markieren Sie die Kante als wesentlich, ansonsten. Wenn eine Kante gelöscht wurde, füllen Sie ihre Zeilen und Spalten mit 0.
Richtigkeit
Das Ergebnis ist offensichtlich ein Baum.
Das Ergebnis ist offensichtlich überspannend, da keine Eckpunkte getrennt werden.
Das Ergebnis ist minimal? Wenn es eine andere Kante gibt, deren Löschung am Ende des Algorithmus einen kleineren Spannbaum erzeugt, dann wäre diese Kante zuerst gelöscht und auf Null gesetzt worden. (Wenn mir jemand helfen könnte, dieses Beispiel etwas strenger und / oder gegnerischer zu gestalten, dann wäre das großartig.)
Laufzeit
Offensichtlich Polynom in.|V|
bearbeiten
Dann
Beenden Sie mit(2,11),(4,6)=6∗17=102
Andere Spannbäume sind
quelle
Dies ist die Lösung von http://www.cnblogs.com/autsky-jadek/p/3959446.html .
Wir können jeden Spannbaum als einen Punkt in der Ansicht - Ebene, wobei x die Summe des Gewicht Σ e ∈ T A e , y ist die Summe des Gewicht Σ e ∈ T B e . Das Ziel ist es, x y zu minimieren .x−y x ∑e∈TAe ∑e∈TBe xy
Finden der minimalen Spanning - Tree nach Gewicht und das Gewicht B . So haben wir zwei Punkte in der xy - Ebene A , B . In allen Spannbaumpunkten in der Ebene hat A das Minimum x , B das Minimum y .A B A,B A x B y
Nun wollen wir einen Punkt im Dreieck O A B finden , der den maximalen Abstand zur Linie A B hat , so dass wir den x y -Wert für C für alle Punkte im Dreieck A B C minimieren können .C OAB AB xy C ABC
quelle