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