Das Gewicht eines MST schätzen Johannes Bender 3. Juli 2007 Zusammenfassung Zuerst werden wir erläutern, wie das Gewicht eines minimal aufspannenden Baumes (MST) eines Graphen mit der Anzahl der Zusammenhangskomponenten (ZHK) in gewissen Untergraphen von G zusammenhängt. Entwickelt wird ein (erwartet) sublinearer Algorithmus zur Bestimmung der Anzahl der ZHK, durch dessen Zuhilfenahme wir das Gewicht eines MST befriedigend präzise in (erwartet) sublinearer Zeit schätzen können. Unter sublinearer Laufzeit verstehen wir o(m), wobei m die Anzahl der Kanten bezeichnet. Es wird skizziert, dass es die Laufzeit des Algorithmus nahezu optimal ist. Einführung Wir definieren einen MST eines gewichteten Graphen folgendermassen. Definition 1. MST eines natürlich gewichteten Graphen Sei G = (V, E) ein zusammenhängender Graph mit einer Gewichtsfunktion c : E −→ {1, ..., w}. Ein MST ist ein Untergraph T = (V, E T ), E T ⊆ E dergestalt, dass folgendes gilt: 1. T = (V, E T ) zusammenhängend. 2. ¬∃ E ∗ ⊂ E: (a) T ∗ = (V, E ∗ ) zusammenhängend P P (b) e∈E ∗ c(e) < e∈E T c(e) 1 Zu beachten ist dabei folgendes. Bemerkungen 1. 1. Das Gewicht eines MST T = (V, E T ) von G = (V, E) ist definiert als die Zahl P M (G) := C(E T ) := e∈E T c(e) 2. Ab jetzt gelte stets |V | = n, |E| = m. 3. Im folgenden sei die Zahl w ∈ N beliebig, aber fest: Also nicht etwa wachsend mit n. Viele der folgenden Überlegungen fussen auf dem folgenden bekannten Lemma. Lemma 1. Anzahl der Kanten eines MST Sei T = (V, E T ) ein MST von G = (V, E) ⇒ E T = n − 1. Beweisskizze 1. Beweis durch vollständige Induktion nach n. Es gibt viele Algorithmen, die das Gewicht eines MST genau bestimmen, unter anderem diese: 1. Algorithmus von Kruskal mit einer Laufzeit von O(mlogn). 2. Algorithmus von Prim mit einer Laufzeit von O(m + nlogn). 3. Algorithmus von Chazelle, der uns eine Laufzeit von O(mα(m, n)) garantiert. 4. Der randomisierte Algorithmus von Karger, Klein und Tarjan, dessen erwartete Laufzeit O(m) ist. 2 Zusammenhangskomponenten und das Gewicht eines MST In diesem Abschnitt zeigen wir, wie das Gewicht eines MST von G von der Anzahl der Zusammenhangskomponenten in speziellen Untergraphen von G abhängt. Dazu benötigen wir folgende Definitionen. Definition 2. Sei G = (V, E), l ∈ N 1. Gl := (V, Ei ), wobei c(e) ≤ i ∀e ∈ El 2. cl := c(Gl ) :=, wobei c die Anzahl der Zusammenhangskomponenten bezeichne. 3. Sei T = (V, E T ) ein MST von G = (V, E), dann bezeichne αi die An- T zahl der Kanten mit Gewicht i aus E , formal αi (T ) = v ∈ E T : c(v) = i 4. Z(G) := Z1 , ...Zt , wobei Zs , s = 1, ..., t die Zusammenhangskomponenten von G bezeichne. Für den Fall w = 2 kann man den Zusammenhang von Gewicht des Baumes und Anzahl der Zusammenhangskomponenten vom Gewicht 1 schnell erkennen. Lemma 2. Sei G = (V, E), w = 2, P i ⇒ M (G) = n + c1 − 2(= n − w + w−1 i=1 c ) Beweisskizze 2. Wegen Lemma 1 gilt α1 + α2 = n − 1. Betrachte c1 (G), wievieler Kanten vom Gewicht 2 bedarf es? Elementar ist die folgende Beobachtung. Beobachtung 1. Das Gewicht eines MST T Sei T = (V, E P ) ein MST von G = (V, E). ⇒ M (G) = i · αi (T ) 3 Gegeben zwei MST T1 , T2 eines Graphen, dann ist nicht klar, dass αi (T1 ) = αi (T2 ) ∀i (*) Dass (*) gilt, folgt direkt aus dem folgenden Satz, der darüberhinaus viel über die Struktur von MST aussagt. Satz 1. Seien T1 = (V, E1T ), T2 = (V, E2T ) zwei MST von G, dann gilt Z(T1i ) = Z(T2i ) Beweisskizze 3. Wiederholung: Z(T1i ) = Z(T2i ) ⇔ Z(T1i ) ⊆ Z(T2i ) ∧ Z(T1i ) ⊇ Z(T2i ) Angenommen, die Behauptung sei falsch, dann ist (o.B.d.A.) ∃ Zs1 ∈ Z(T1i ) : Zs1 ∈ / Z( T1i ). Sei i minimal sodass dies gilt. Dann finden wir einen billigeren Baum. Ein Widerspruch. Korollar 1. Seien T1 = (V, E1T ), T2 = (V, E2T ) zwei MST von G = (V, E). Dann ist αi (T1 ) = αi (T2 ). Zum Abschluss dieses Kapitels folgender Satz, der die Abhängigkeit des MST-Gewichts von ci genau fixiert. Theorem 1. Zusammenhangskomponenten und Gewicht Gegeben ein Graph G = (V, E), w ≥ 2, dann gilt M (G) = n − w + w−1 X ci i=1 Beweisskizze Pn 4. M (G) =P i=1 i · αi Wegen i>l αi = cl − 1 P Pw Pw−1 l Pw−1 i ⇒ M (G) = w−1 l=0 i=l+1 αi = l=0 (c − 1) = n − w + i=1 c Unsere weitere Strategie ist, ci für alle i zu schätzen, um damit das MSTGewicht zu schätzen. 4 Anzahl der Zusammenhangskomponenten schätzen Das Ziel dieses Abschnitts ist, einen Algorithmus zu finden, der für einen beliebigen Graphen G und ein Fehlermass mit hoher Wahrscheinlichkeit die Anzahl der Zusammenhangskomponenten hinreichend präzise (in bezug auf ) in (erwartet) sublinearer Zeit schätzt. Formal: o(m) input G, → output ĉ : P (|c − ĉ|) ≥ n ≤ 14 Definition 3. Gegeben ein Graph G = (V, E) und eine Ecke u ∈ V , die in der Zusammenhangskomponente U liegt. 1. Der Grad eines Knoten ist definiert als d(u) = du := |{w ∈ V : (u, w) ∈ E|} 2. Der Durchschnittsgrad ist d = 2m n 3. Wir definieren mu := |{e ∈ U }| Als Grundlage für unsere Schätzung dient folgende Tatsache. Lemma 3. Gegeben G = (V, E) ohne isolierte Ecken, U eine Zusammenhangskompodv 1P nente von G und u ∈ U ⇒ 2 v∈V mv = c P Beweisskizze 5. u∈U du = 2 · m Folgendes sollte man beachten. Bemerkungen 2. du 1. Um auch Graphen mit isolierten Ecken zuzulassen, setzen wir m =0 u falls du = 0. P du 2. Wir können c also dadurch schätzen, dass wir u∈U m schätzen. Geu nau das tut Algorithmus 1. 3. Man beachte im folgenden, dass d = o(m); d · log(d) = o(m) 5 Algorithmus 1. approx-number-connected-components (G, , W, d∗ ) 1 uniformly choose r = O( 12 ) vertices u1 , ..., ur 2 for i=1,...,r 3 set βi = 0 4 take the first step of a BFS from ui 5 (*) flip a coin 6 if(heads) ∧ (# vertices visited in BFS < W) 7 ∧ (no visited vertex has degree > d∗ (= O( d )) 8 then resume BFS to double number of visited edges 9 if this allows BFS to complete 10 then if mui = 0 set βi = 2 |coinf lips| 11 else set βi = dui · |edges 2visited in BF S| 12 else go to (*) n Pr 13 output ĉ = 2r i=1 βi Analyse des Algorithmus Um die Schätzung unseres Algorithmus zu untersuchen, bedarf es der Kenntnis der Definitionen von Erwartungswert und Varianz. Diese wird vorausgesetzt. Erwartungswert und Varianz von βi 1. Verstehen wir d=0 als das Ereignis, dass BFS vorzeitig abbricht und d=1 als das Ereignis, dass BFS endet, dann ist der Erwartungswert von (der P Zufallsvariablen) βi E(βi ) = d∈{0,1} P (d) · βi (d) 2. Die Varianz von βi ist V ar(βi ) = E((βi − E(βi ))2 ) = E(βi2 ) − (E(βi ))2 Erwartungswert und Varianz von ĉ Die Menge S sei die Menge aller Knoten, für die in Zusammenhangskomponenten mit weniger als W Knoten liegen höchstens Grad d∗ haben. Mit anderen Worten: die Menge der Knoten, bei denen BFS nur durch Zufall oder durch Komplettierung abbricht. d Sei ui ∈ S ⇒ E(βi ) = muui i 6 W und d∗ sind so gewählt, dass höchstens ·n 2 Komponenten Knoten haben, die nicht in S liegen, womit folgt, dass c − ·n 2 ≤ E(ĉ) ≤ ĉ. Darüberhinaus gilt V ar(ĉ) ≤ n·c r . Markowsche und Tschebyscheffsche Ungleichung Zur genaueren Untersuchung bedarf es weiterer Werkzeuge. Wegen der Markowschen bzw. der Tschebyscheffschen Ungleichung gilt. Aussage 1. Sei a > 0; a ∈ R. Dann gilt P (βi ≥ a) ≤ E(βi )/a P (βi − E(βi )) ≥ a ≤ E(βi )/a2 Mit Tschebyscheff und der Beschränkung der Varianz folgt, dass für eine geeignete Konstante P (|ĉ − E(ĉ)|) > n 2 ) beliebig klein wird. Daraus folgt |c − ĉ| ≤ n mit hoher Wahrscheinlichkeit. d Die Analyse der Laufzeit ergibt O(d−2 log( −2 ), wobei wir die Berechnung ∗ von d unterschlagen haben, die mit einer Laufzeit von O( d ) nicht ins Gewicht fällt. Die Analyse von Algorithmus führt somit zu folgendem Theorem. Theorem 2. Der Algorithmus approx-connected-components (G, , W, d∗ ) berechnet in erwarteter Laufzeit o(m)( genauer O(d−2 log( d )) eine Schätzung von ĉ(G) von c(G), die sich mit hoher Wahrscheinlichkeit höchstens um n von c(G) unterscheidet. Approximation von M (G) Unter Zuhilfenahme des Algorithmus approx-connected-components sind wir nun in der Lage, das Gewicht eines MST hinreichend präzise zu schätzen. Formal bedeutet das: o(m) input (G, ) → M̂ (G), sodass P (M (G) − M̂ (G)) ≥ M (G) ≤ 14 7 Betrachte folgenden Algorithmus: Algorithmus 2. approx-MST-weight(G, ) 1 for i=1,...,w-1 2 approx-number-connected-components (Gi , , 4w/, d∗ ) Pw−1 i 3 output M̂ (G) = n − w + i=1 ĉ Folgendes Theorem ist die zentrale Erkenntnis dieses Vortrages, der Hauptteil der Arbeit wurde bei der Analyse von approx-connected-components erledigt. Theorem 3. Gegeben ein Graph G und ein Fehlermass, dann berechnet Algorithmus 2 in o(m) eine Schätzung M̂ (G), für die gilt: P (M (G) − M̂ (G)) ≥ M (G) ≤ 14 Beweisskizze 6. Pw i P i Betrachte C := w i=1 ĉ i=1 c und Ĉ := n·c ⇒ C − ·n ≤ E Ĉ ≤ C und V ar( Ĉ) ≤ 2 r Mit Tschebyscheff folgt die Behauptung. Untere Schranken Wir bemerken, dass jeder Algorithmus, der das Gewicht eines MST schätzt mit dem Fehlermass , mindestens Ω(dw−2 ) Kanten anschaut. Man stelle sich Strings mit Elementen aus {0, 1}, wobei an jeder Stelle des Strings mit Wahrscheinlichkeit q(1 + (−1)s ) eine 1 steht, ansonsten eine 0. Angenommen, wir kennen s nicht und versuchen es zu schätzen, indem wir uns den String anschauen, dann müssen wir uns Ω(d−2 ) Kanten anschauen. Das kann man beweisen (Zeitaufwand ca. 45 Minuten). Wählen wir einen Pfad, assoziieren mit den Kanten die Bits des Strings und geben einer Kante Gewicht 1, falls ihr assoziiertes Bit 0 ist und ansonsten Gewicht w. Mit jedem Algorithmus, mit dem wir M(G) schätzen können, können wir auch s schätzen und müssen folglich Ω(d−2 ) Kanten anschauen. Für höhere Durchschnittsgrade kann man einfach neue hochbewertete Kanten hinzufügen, die in einem MST nicht vorkommen würden, uns jedoch dazu zwingen, mehr Kanten anzuschauen. 8