Musterlösung zur 3. Aufgabe

Werbung
Musterlösung zur 3. Aufgabe
Jens Fangerau & Bastian Rieck
Folgende Auflistung beschreibt den 3-Färbungsalgorithmus in linearer Zeit:
• Input: Triangulierung TP eines einfachen Polygons P mit n Knoten.
• Output: 3-Färbung des Graphen.
• Erzeuge dualen Graphen G(TP ), der n − 2 Knoten besitzt, da P n − 2
Dreiecke hat.
Bekannt ist, dass G(TP ) ein Baum mit n − 3 Kanten ist.
• Durchlaufe Kanten in einer verknüpften Halbkantenstruktur.
• Betrachte Kanten ~e und Twin(~e) und speichere
IncidentFace(~e) und IncidentFace(Twin(~e)).
• Wende Tiefen- oder Breitensuche an, um den Baum zu durchlaufen, da
dies durchführbar ist in:
O(|V | + |E|) = O(n − 2 + n − 3) = O(n).
• Für einen beliebigen Knoten µ ∈ G(TP ) des dualen Graphen färben wir
die Knoten des dazugehörigen Dreiecks t(µ) schwarz, wei und grau ein.
Jetzt gehen wir zum nächsten Knoten v ∈ G(TP ) von µ aussgehend. Das
heit, dass die Dreiecke t(µ) und t(v) eine gemeinsame Kante haben. Da
nun zwei Farben schon an den Endpunkten dieser Kante vergeben sind,
bleibt nur noch eine Farbe für den dritten Knoten übrig. Da wir einen
Baum haben, sind anderen benachbarte Knoten zu v noch nicht besucht
und wir können so immer wieder die fehlende Farbe hinzufügen.
• Insgesamt haben wir nie eine Laufzeit größer als O(n).
1
Herunterladen