18.09.2013 Aufrufe

Skript in PDF - Theoretische Informatik - Technische Universität ...

Skript in PDF - Theoretische Informatik - Technische Universität ...

Skript in PDF - Theoretische Informatik - Technische Universität ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

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.

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!