graph - Die Umsetzung der Aktualisierung der Minimum-Spanning-Tree nach dem hinzufügen einer neuen Kante

Hier ist eine Verbrauchsteuer

Nehmen wir an, wir sind angesichts der minimalen spannenden Baum T von einem gegebenen Graphen G
(mit n Ecken und m Kanten) und eine neue Kante e = (u, v) mit Gewicht w
wir werden hinzufügen. B. Geben Sie einen effizienten Algorithmus zu finden, die minimale
spanning tree des Graphen G + e. Ihr Algorithmus ausgeführt werden soll in O(n)
Zeit bekommen Sie den vollen Kredit.

Habe ich diese Idee:

In the MST, just find out the path between u and v. Then find the edge (along the path) with maximum weight; if the maximum weight is bigger than w, then remove that edge from the MST and add the new edge to the MST.


Der schwierige Teil ist, wie dies in O(n) Zeit und ist es auch ich stecken.

Die Frage ist, dass, wie die MST gespeichert ist. Im normalen Prim ' s Algorithmus MST gespeichert ist, als einen übergeordneten array, d.h., jedes element ist das übergeordnete Element des nach vertex.

Also nehmen wir an, die Verbrauchsteuern, geben Sie mir einen übergeordneten array, der angibt, der MST, wie kann ich die Veröffentlichung des obigen Algorithmus in O(n)?

Ersten, wie kann ich identifizieren, den Pfad zwischen u und v von der übergeordneten array? Ich kann zwei Vorgänger-arrays für u und v, dann schauen Sie auf die gemeinsamen Vorfahren, dann bekomme ich die Weg, obwohl in umgekehrter. Ich glaube, für dieses Teil zu finden, den gemeinsamen Vorfahren, zumindest habe ich es in O(n^2), richtig?

Dann haben wir das Weg. Aber wir müssen noch finden, das Gewicht jeder Kante auf dem Pfad. Da ich vermute, dass der graph verwenden Nachbarschaft-Liste für Prim ' s Algorithmus, haben wir O(m) (m ist die Anzahl der Kanten), um jedes Gewicht von der Kante.

...

So, ich sehe es nicht möglich ist, den Algorithmus in O(n). Bin ich falsch?

InformationsquelleAutor Jackson Tale | 2012-05-01

Schreibe einen Kommentar