Skript in PDF - Theoretische Informatik - Technische Universität ...
Skript in PDF - Theoretische Informatik - Technische Universität ...
Skript in PDF - Theoretische Informatik - Technische Universität ...
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
6.1. BEISPIELE EFFIZIENTER ALGORITHMEN 137<br />
25: {3. Ausgabe}<br />
26: Falls ROT oder BLAU e<strong>in</strong>e Kante aus E enthalten, ist die Ausgabe e<strong>in</strong> Code<br />
dafür, dass G ke<strong>in</strong>e 2-Färbung hat. Falls weder ROT noch BLAU e<strong>in</strong>e Kante<br />
enthält, ist dies die gesuchte 2-Färbung.<br />
Korrektheit: In jedem Schritt des Algorithmus gilt für jeden Knoten v: entweder<br />
v ∈ V oder v ∈ ROT oder v ∈ BLAU. Da am Ende V = ∅ gilt, ist also jeder<br />
Knoten entweder rot oder blau gefärbt. Falls weder ROT noch BLAU e<strong>in</strong>e Kante<br />
enthält, haben wir e<strong>in</strong>e 2-Färbung gefunden.<br />
Es bleibt zu zeigen, dass G Zyklen ungerader Länge hat, falls ROT e<strong>in</strong>e Kante<br />
enthält (analog für BLAU). Sei v der Knoten <strong>in</strong> 7. Wir beweisen, dass jeder Knoten,<br />
der <strong>in</strong> 17. rot (oder <strong>in</strong> 15. blau) gefärbt wird, e<strong>in</strong>en Weg von gerader (oder ungerader)<br />
Länge nach v hat, wobei die Länge des ” leeren Weges“ von v nach v gleich 0 gesetzt<br />
wird. Am Anfang der Schleife ab 11. ist das klar, denn der e<strong>in</strong>zige roten Knoten ist<br />
v, und blaue gibt es nicht. Jeder Durchgang dieser Schleife erhält diese Eigenschaft:<br />
falls w rot ist und also e<strong>in</strong>en Weg der Länge 2k nach v hat, wird jeder blau zu<br />
färbende Knoten u (für den e<strong>in</strong>e Kante (u, w) gegeben ist) e<strong>in</strong>en Weg der Länge<br />
2k + 1 nach v haben. Analoges gilt, falls w blau ist.<br />
Sei (u, u ′ ) e<strong>in</strong>e Kante <strong>in</strong> ROT. Wir haben e<strong>in</strong>en Kreis, der mit e<strong>in</strong>en Weg der Länge<br />
2k von u nach v beg<strong>in</strong>nt, dann mit e<strong>in</strong>em Weg der Länge 2k ′ von v nach u ′ weitergeht<br />
und mit der Kante (u ′ , u) endet. Dieser Kreis hat die ungerade Länge 2k + 2k ′ + 1<br />
und enthält also e<strong>in</strong>en Zyklus ungerader Länge (denn e<strong>in</strong> Kreis, der nur Zyklen von<br />
gerader Länge enthält, hat selbst gerade Länge). Analog läßt sich für e<strong>in</strong>e Kante <strong>in</strong><br />
BLAU argumentieren.<br />
Zeitkomplexität: Falls Graphen als Adjazenzlisten implementiert werden und die<br />
mengentheoretischen Operationen konstante Zeit erforden, hat dieser Algorithmus<br />
e<strong>in</strong>e l<strong>in</strong>eare Zeitkomplexität O(n+k) (wobei n die Zahl aller Knoten und k die Zahl<br />
aller Kanten ist).<br />
In der Tat benötigt die Initialisierung die Zeit O(1). Die Färbung e<strong>in</strong>er Komponente<br />
K (die Zeilen 8.–23.), deren Zahl von Kanten k(K) ist, dauert O(k(K)), da jede<br />
Kante nur e<strong>in</strong>mal durchsucht wird. Falls der Graph G genau r Komponenten hat,<br />
gilt k = k(K1) + · · · + k(Kr) und die r Durchgänge der Schleife 6.–24. dauern<br />
O(n + k) Schritte.<br />
Die Überprüfung, ob ROT oder BLAU e<strong>in</strong>e Kante enthalten, benötigt auch die<br />
l<strong>in</strong>eare Zeit O(n + k). Insgesamt wird der Algorithmus also <strong>in</strong> O(n + k) Schritten<br />
durchgeführt.<br />
Beispiel 4 (3-FÄRBUNG). Die analoge Aufgabe, e<strong>in</strong>en gegebenen Graphen mit<br />
drei Farben zu färben, ist viel schwieriger. Ke<strong>in</strong> effizienter Algorithmus ist bekannt<br />
– und später werden wir Gründe dafür kennenlernen, weshalb es unwahrsche<strong>in</strong>lich<br />
ist, dass e<strong>in</strong> effizienter Algorithmus existiert.<br />
Ineffizient können wir e<strong>in</strong>fach alle möglichen Färbungen ausprobieren. Das ist bestimmt<br />
e<strong>in</strong> Algorithmus – aber er braucht O(3 n ) Schritte, da es 3 n Färbungsmöglichkeiten<br />
gibt. Und das ist sehr aufwendig.<br />
Beispiel 5 (GERICHTETER WEG). Für zwei Knoten v und w e<strong>in</strong>es gerichteten<br />
Graphen ist e<strong>in</strong> Weg der Länge d von v nach w e<strong>in</strong>e Liste<br />
von Knoten, so dass<br />
v = v0, v1, . . . , vd = w<br />
(vi−1, vi) e<strong>in</strong>e Kante für i = 1, . . .,d ist.