2016-07-26 19 views
-2

Hier habe ich zwei zusammenhängende ungerichtete Graphen G1 = [V ; E1] and G2 =[V ; E2] auf der gleichen Menge von Vertices V. Und angenommen, die Kanten in E1 und E2 haben unterschiedliche Farben.Finde einen minimalen Spannbaum in verschiedenen Mengen

Sei w (e) das Gewicht der Kante e ∈ E1 ∪ E2.

Ich möchte einen minimalen Gewicht Spanning Tree (MSF) unter denen finden, die Bäume überspannen, die mindestens eine Kante in jedem Satz E1 und E2 haben. In diesem Zustand, Wie findet man einen geeigneten Algorithmus dafür? Ich bin eine ganze Nacht hier geblieben.

Antwort

1

Betrachten zwei Kanten e1 E1, E2 e2 ∈. Sie verbinden zwischen 2 und 4 verschiedenen Ecken in V. Wenn sie 3 oder 4 Eckpunkten verbinden an, dass Sie zuerst die Eckpunkte Vertrag, e1 Connects (das gleiche wie jeder Schritt in Kruskal's algorithm), dann diejenigen, die e2 verbindet, und dann eine beliebige minimum spanning tree algorithm auf der resultierende Graph laufen. Dann ist das Ergebnis der MST, der e1 und e2 enthält.

Daraus folgt, dass Sie die gesamte MST durch Schleifen über alle e1 ∈ E1 finden, e2 ∈ E2 (die nicht genau verbinden die gleichen beiden Ecken), und die leichteste Lösung zu finden. Der Beweis der Korrektheit kann leicht von dem von Kruskal's algorithm modifiziert werden.

In der Tat, aber können Sie diese effizienter gestalten, da entweder die leichteste Kante in E1 oder die leichteste Kante in E2 muss in einigen MST verwendet werden. Nehmen wir an, dass die leichteste Kante in E1, E'1 sagen ist nicht verwendet werden, und betrachten einen Schnitt Vereinbarung mit E'1. Das MST muss etwas e ≠ e'1 enthalten, das den Schnitt verbindet. Wenn und ∈ E1, dann kann e'1 anstelle von e verwendet werden. Wenn e ∈ E2, aber, und e nicht verwendet werden kann, dann e ist leichter als e'1. In diesem Fall jedoch führt die Wiederholung des Arguments für E2 dazu, dass die hellste Kante in E2 Teil des MST sein kann.

Folglich wird nur der leichtesten Rand der E1 zusammen mit jeder Kante in E2 oder die leichtesten Kante in E2 zusammen mit jeder Kante in E1 muß für die ersten beiden Kontraktionen erwähnen oben betrachtet werden.

Die Komplexität ist Θ (| E1 + E2 | f (V, E1 + E2)), wo f die Komplexität des MST-Algorithmus ist.

Verwandte Themen