Prof. Dr. I. Schiermeyer, B.Sc. C. Brause Institut für Diskrete Mathematik und Algebra Heuristiken Problem TSP Ein Handlungsreisender hat n Städte zu besuchen, jede Stadt dabei genau einmal, und kehrt danach wieder zur Ausgangsstadt zurück. Die Reiselänge (-zeit, -kosten) ist zu minimieren. Algorithmus SB Eingabe Ein Graph G, der die Dreiecksungleichung erfüllt. Schritt 1 Bestimme ein Minimalgerüst T für G. Schritt 2 Verdopple alle Kanten von T und erhalte so einen eulerschen Graphen. Schritt 3 Bestimme eine Eulertour in G. Schritt 4 Streiche aus der Eulertour alle doppelt besuchten Knoten und erhalte eine TSP-Tour. Ausgabe Eine TSP-Tour. Algorithmus NEAREST INSERTION Eingabe Ein Graph G, der die Dreiecksungleichung erfüllt. Schritt 1 Starte mit einer beliebigen Stadt s1 und setze k = 1, T1 = (s1 ). Schritt 2 Sei Tk = (s1 , s2 , . . . , sk , s1 ) die aktuelle (Teil)Tour mit k Städten. Wähle eine Stadt sk+1 , die noch nicht zu Tk gehört, und eine Stadt si aus Tk , so dass d(si , sk+1 ) minimal ist. Streiche eine der Kanten von Tk , die mit si inzidieren und verbinde deren Endknoten mit sk+1 . Füge sk+1 zu Tk hinzu und setzte k = k + 1. Schritt 3 Ist k < n gehe zu Schritt 2, sonst STOP. Ausgabe Eine TSP-Tour. Algorithmus NEAREST NEIGHBOUR Eingabe Ein Graph G, der die Dreiecksungleichung erfüllt. Schritt 1 Starte mit einer beliebigen Stadt s1 und setze k = 1, T1 = (s1 ). Schritt 2 Sei Tk = (s1 , s2 , . . . , sk ) der aktuelle Weg mit k Städten. Wähle eine Stadt sk+1 , die noch nicht zu Tk gehört, so dass d(sk , sk+1 ) minimal wird. Verbinde sk mit sk+1 und füge sk+1 zu Tk hinzu. Setze k = k + 1. Schritt 3 Ist k < n gehe zu Schritt 2, sonst verbinde s1 mit sn und STOP. Ausgabe Eine TSP-Tour. Problem VC In einem Graphen G = (V, E) soll eine Teilmenge C der Knotenmenge V so bestimmt werden, dass für jede Kante e = {x, y} ∈ E gilt, x ∈ C ∨ y ∈ C. [email protected] 1/3 Prof. Dr. I. Schiermeyer, B.Sc. C. Brause Institut für Diskrete Mathematik und Algebra Algorithmus LARGEST DEGREE / MAXIMUM DEGREE Eingabe Ein Graph G. Schritt 1 Setze C = ∅. Schritt 2 Wähle einen Knoten v ∈ V mit maximalem Knotengrad und füge ihn zu C hinzu. Lösche v und alle zu ihm inzidenten Kanten aus G. Schritt 3 Ist E 6= ∅ gehe zu Schritt 2, sonst STOP. Ausgabe Eine Knotenüberdeckung C. Problem MM In einem Graphen G = (V, E) soll eine Teilmenge M der Kantenmenge E so bestimmt werden, dass für jeden Knoten v ∈ V eine zu v inzidente Kante in M existiert. Algorithmus APPROX-MATCHING Eingabe Ein Graph G mit V = {v1 , v2 , . . . , vn }. Schritt 1 Setze M = ∅ und i = 1. Schritt 2 Gibt es eine Kante e = {vi , w}, welche mit keiner Kante aus M einen gemeinsamen Knoten hat, füge e zu M hinzu. Setze i = i + 1. Schritt 3 Ist i < n gehe zu Schritt 2, sonst STOP. Ausgabe Ein gesättigtes Matching M. Problem Bin Packing Gegeben ist eine Menge von Gütern {a1 , . . . , an }, die in Kisten Bj verpackt Pwerden soll. Dabei sind die ai ∈ Q ∩ (0, 1] Gewichte und es gilt für alle in die Kiste Bj gepackten Güter ai ∈Bj ai 6 1. Es ist also eine Partition {B1 , . . . , Bk } der ai ’s so zu finden, dass k minimal wird. NEXT FIT Eingabe {a1 , . . . , an } mit ai ∈ Q ∩ (0, 1]. Schritt 1 Setze j = 1, i = 1. Schritt 2 Sei Bj die zuletzt befüllte Kiste. Dann packe ai in Bj , falls |Bj | + ai 6 1, sonst packe ai in Bj+1 und setze j = j + 1. Schritt 3 Falls i < n, setze i = i + 1 und gehe zu Schritt 2, sonst STOP. Ausgabe Eine Partition {B1 , . . . , Bk } der ai ’s. Problem Knotenfärbung Die Knoten eines Graphen G sollen so gefärbt werden, dass adjazente Knoten unterschiedlich gefärbt sind. Gesucht ist die kleinst mögliche Anzahl von benötigten Farben. Damit ein approximierender Algorithmus möglich ist, betrachten wir nicht das eigentliche Minimierungsproblem, sondern das folgende Maximierungsproblem: Zur Färbung eines Graphen G mit n Knoten haben [email protected] 2/3 Prof. Dr. I. Schiermeyer, B.Sc. C. Brause Institut für Diskrete Mathematik und Algebra wir n Farben zur Verfügung. Ziel ist es nun möglichst viele der Farben nicht zu benutzen, also ein c zu finden, sodass n−c maximal wird und G mit c Farben färbbar ist. Daraus ergibt sich, dass OPT (G) = n−χ(G) und für einen Färbungsalgorithmus A, der χA (G) Farben verwendet, ist A(G) = n − χA (G). Somit berech(G) n−χ(G) net sich die Approximationsgüte aus OPT A(G) = n−χA (G) . Algorithmus 1 Eingabe Ein Graph G mit n Knoten. Schritt 1 Bestimme im Komplementärgraphen G ein gesättigtes Matching M mit |M| = z. Schritt 2 Sei M = {e1 , . . . , ez }, dann färbe die Endknoten jeder Kante ei mit der Farbe i. Schritt 3 Färbe die restlichen Knoten in G paarweise disjunkt mit den Farben {z + 1, . . . , n − z}. Ausgabe Eine Knotenfärbung des Graphen G mit n − z Farben. Algorithmus 2 nach R. Hassin und A. Lahar Eingabe Ein Graph G mit n Knoten. Schritt 1 Bestimme eine nicht erweiterbare Menge Z von disjunkten, 3-elementigen, unabhängigen Mengen in G (|Z| = z). Die Menge der restlichen Knoten in G sei X. Schritt 2 Bestimme in maximales Matching M in G[X] Schritt 3 Sei M = {e1 , . . . , ek }, dann färbe die Endknoten jeder Kante ei mit der Farbe i. Schritt 4 Färbe alle verbleibenden Knoten in X mit den Farben {k + 1, . . . , x}, wobei x = χ(G[X]). Schritt 5 Färbe alle Knoten aus jeder unabhängigen Menge in Z so, dass Knoten aus verschiedenen Mengen in Z unterschiedlich gefärbt sind. Ausgabe Eine Knotenfärbung des Graphen G mit x + z Farben. Erstellt durch Dr. Stephan Matos Camacho [email protected] 3/3