Überblick Kap. 5: Graph Coloring • 5.1 Einführung – Definition und Motivation – Sudoku • 5.2 ILP-Formulierungen für Sudoku Professor Dr. Petra Mutzel – Branch-and-Cut Algorithmus – Praxistest für Sudoku-Instanzen Lehrstuhl für Algorithm Engineering, LS11 • 5.3 ILP-Formulierungen für Färbungsprobleme 10./11. VO 18.12.06 / 8.1.07 – Spaltengenerierung zur Lösung des ILP mittels maximum weight independent set 2 Literatur 5.1 Einführung • V. Kaibel und T. Koch: Mathematik für den Volkssport, ZIB-Report 06-28, Mai 2006 (Sudoku) • Sei G=(V,E) ein ungerichteter Graph. • Eine (Knoten-)Färbung (Coloring) von G ist eine Zuordnung von je einer Farbe zu jedem Knoten, so dass die Endknoten jeder Kante unterschiedlich gefärbt sind. • A. Mehrotra und M.A. Trick: A column generation approach for graph coloring, INFORMS Journal on Computing, vol. 8, no. 4, 344-354, 1996 • Die kleinste Anzahl von Farben die für einen gegebenen Graphen G benötigt wird, heißt die chromatische Zahl von G: χ(G). • (nur für aktuelle Literatur☺ P. Hansen, M. Labbe, und D. Schindl, Set covering and packing formulations of graph coloring: algorithms and first polyhedral results, 2005) • Das Problem: „Existiert für G eine Färbung mit höchstens k Farben?“ (Kurzform: „Ist G k-färbbar?“) ist NP-vollständig. 3 • Landkartenfärbung: Länder sollen so eingefärbt werden, dass zwei benachbarte Länder unterschiedliche Farben erhalten. Es gilt: • • • • • 4 Anwendungen Eigenschaften • • Das Problem bleibt NP-vollständig für planare Graphen mit Maximalgrad 4. χ(G) = 1 ⇔ E=∅ χ(G) ≥ 3 ⇔ G besitzt einen ungeraden Kreis χ(G) ≥ Cliquenzahl ω(G) χ(G) ≤ Δ(G)+1 χ(G) ≤ Δ(G) ⇔ (G ist nicht vollständig) und (G ist nicht ungerader Kreis) χ(G) ≤ 4 für planare Graphen • Berühmt wurde der Beweis zum Vierfarbensatz: „Jeder planare Graph ist 4-färbbar“. Der Beweis von Appel und Haken 1976 war der erste weltweit anerkannte Computerbeweis. • Frequenzzuordnung in Telekommunikationsnetzen • Computer Register Allokationsproblem • Stundenplanerstellung (time tabling) 5 6 1 Sudoku 5.2 Sudoku: Mathematische Formulierung Aufgabe: Vervollständige die Matrix, so dass in jeder Zeile, in jeder Spalte und in jedem der markierten 3x3 Quadrate jede der Zahlen 1,2,…,9 genau einmal vorkommt. Variablen: xijk für i,j,k=1,…,9 mit Zuordnungsproblem xijk=1 ⇔ Feld i,j wird mit Farbe k gefärbt. 8 2 Constraints: Für jede Farbe k muss für jede Zeile i gelten: 6 9 ∑ xijk = 1 für k,i=1,…,9. j =1 1 6 6 1 9 Für jede Farbe k muss für jede Spalte j gelten: 9 4 ∑ xijk = 1 für k,j=1,…,9. i =1 3 7 7 7 5 1 8 3 Ein Sudoku besitzt genau eine zulässige Lösung. Für jede Farbe k muss für die 3x3 Quadrate Q(a,b) gelten: ∑ xijk = 1 für k,j=1,…,9. Dabei ist a,b∈{1,2,3} i,j∈Q(a,b) Für jedes Feld i,j gelten: es muss eine Farbe erhalten: 9 ∑ xijk = 1 für i,j=1,…,9. 729 Variablen, 4x81=324 Gleichungen k=1 Visualisierung der Variablen xijk für unser Beispiel: dabei wird k als Höhe/Farbe dargestellt; die Einträge werden als Würfel (vorgegeben) oder Kugel angezeigt und repräsentieren die Einträge im unten liegenden Feld. In jedem der grauen Bereiche muss genau ein Würfel bzw. Objekt schweben. jedes k Sudoku: Formulierung als Färbungsproblem jedes i jedes j jedes Q(a,b) Sudoku: Mathematische Formulierung Die Knoten des Graphen entsprechen den zu färbenden Feldern. Es existiert eine Kante für alle Knotenpaare in der gleichen Zeile, in der gleiche Spalte, und im gleichen ausgezeichneten Quadrat. Variablen: xijk für i,j,k=1,…,9 mit xijk=1 ⇔ Knoten ij wird mit Farbe k gefärbt. kleines Beispiel mit 2x2 Quadraten Constraints: Für jede Kante in G eine Ungleichung der Form: xijk + xi´j´k ≤ 1 für alle adjazenten Paare (ij)(i´j´) und alle k=1,…,9. Denn: höchstens einer darf die Farbe k erhalten. Färbungsproblem in Graphen Für jeden Knoten ij gilt: er muss eine Farbe erhalten: Aufgabe: Finde Färbung mit 9 Farben (hier: 4 Farben), die konsistent mit der geg. Teilfärbung ist. 9 ∑ xijk = 1 für alle Knoten ij. k=1 Zielfunktion: beliebig ⇒ ganzzahliges lineares Programm 729 Variablen, 3(9x36)+81= 1035 Un-/Gleichungen 2 Branch & Cut (Grundidee) Sudoku als Graphenfärbungsproblem: unser Beispiel • Anwendung – NP-schwere Optimierungsprobleme • Branch & Cut – löst kombinatorische Optimierungsprobleme exakt (bzw. mit jeder vorgegebenen Approximationsgüte) – benötigt exponentielle Zeit – ist manchmal (oft) praktisch effizient 14 Branch & Cut (Grundidee) Branch & Cut (Grundidee) • Identifiziere die zulässigen Lösungen mit 0/1Vektoren • Beschreibe die konvexe Hülle dieser Vektoren möglichst gut durch lineare Ungleichungen 15 Branch & Cut (Grundidee) Menge der zulässigen Lösungen 16 Branch & Cut (Grundidee) Zielfunktion Konvexe Hülle über diese Menge 17 Die Beschreibung der konvexen Hülle durch lineare Un-/gleichungen ist i.A. nicht bekannt. 19 3 Branch & Cut (Grundidee) Lösung: stattdessen Relaxierung der ILP-Formulierung Branch & Cut (Grundidee) 20 Branch & Cut (Grundidee) 21 Branch & Cut (Grundidee) • Identifiziere die zulässigen Lösungen mit 0/1Vektoren • Beschreibe die konvexe Hülle dieser Vektoren möglichst gut durch lineare Ungleichungen • Finde möglichst gute Algorithmen, die für einen gegebenen Punkt von diesem verletzte Ungleichungen finden bzw. feststellen, dass keine solchen existieren. Lösungspunkt über die LP-Relaxierung ist aber nicht zulässig für unser Originalproblem Separierung 22 Branch & Cut (Grundidee) 23 Branch & Cut (Grundidee) Schnittebene für Separierung 25 26 4 Branch & Cut (Grundidee) neuer Lösungspunkt der LP-Relaxierung Branch & Cut (Grundidee) 28 Branch & Cut (Grundidee) 29 Branch & Cut (Grundidee) Schnittebenenverfahren (Cutting Plane Method) Hinzufügen einer Schnittebene: „schneidet den Punkt weg“ 30 Branch & Cut (Grundidee) neuer Lösungspunkt der LP-Relaxierung → zulässig und damit optimal 32 Branch & Cut (Grundidee) Separierungsproblem • Löse Relaxierungen mit Schnittebenenverfahren. Cut • Verzweige, wenn keine Schnittebenen gefunden werden, aber die Lösung nicht ganzzahlig ist. Branch • Finde gute zulässige Lösungen basierend auf fraktionellen Lösungen. Exploit Bound • Schneide nichtprofitable Teilbäume weg. Bound Cut Branch 33 5 Eine typische B&C Berechnung Sudoku: Mathematische Formulierung Variablen: xijk für i,j,k=1,…,9 mit xijk=1 ⇔ Knoten ij wird mit Farbe k gefärbt. Maximierungs Problem Färbungsproblem in Graphen Constraints: Für jede Kante in G eine Ungleichung der Form: xijk + xi´j´k ≤ 1 für alle adjazenten Paare (ij)(i´j´) und alle k=1,…,9. Denn: höchstens einer darf die Farbe k erhalten. Für jeden Knoten ij gilt: er muss eine Farbe erhalten: 9 ∑ xijk = 1 für alle Knoten ij. k=1 Zielfunktion: beliebig ⇒ ganzzahliges lineares Programm 729 Variablen, 3(9x36)+81= 1035 Un-/Gleichungen 35 Sudoku: Strong Branching Strong Branching: Fixiere eine Variable testweise auf 0 oder 1: Falls die LP-Relaxierung keine zulässige Lösung mehr besitzt, dann wissen wir: diese Variable muss genau den anderen Wert annehmen. Dieser Test wird für beide möglichen Werte aller Variablen durchgeführt. Die so ermittelten Werte werden dann fixiert. Danach wird die LP-Relaxierung berechnet. Praxistest für Sudoku: In allen Fällen von 15.000 berechneten Instanzen war der Wert der LP-Relaxierung ganzzahlig und damit das Sudoku gelöst. Sudoku in der Praxis In Praxis genügt bereits: Ersetzung von Strong Branching durch approximative Verfahren, wie z.B. Presolving bzw. Probing (Ableitung von einfachen Implikationen aus dem ILP). Praxistest für Sudoku: Das Lösen aller getesteten Instanzen erfolgte innerhalb weniger Sekundenbruchteile. Sudoku-Server: http://www.matheon.de Frohe Weihnachten Offenes Problem: Gilt das für alle möglichen Sudokus? 5.3 ILP-Formulierungen für Graphfärbung Variablen: xik∈{0,1} für i=1,…,|V| und k=1,…,K mit xik=1 ⇔ Knoten i wird mit Farbe k gefärbt. Constraints: Für jede Kante in G eine Ungleichung der Form: xik + xjk ≤ 1 für alle adjazenten Knoten i und j und alle k=1,…,K. Denn: höchstens einer darf die Farbe k erhalten. Für jeden Knoten i gilt: er muss eine Farbe erhalten: K ∑ xik = 1 für alle Knoten i∈V. k=1 G ist mit K Farben färbbar, wenn das System eine zulässige Lösung besitzt Bestimmen des kleinsten K mittels Binäre Suche K|V| Variablen und K|E|+|V| Ungleichungen Probleme bei dieser Formulierung LP-Relaxierung des ILPs ist ziemlich fraktional (also nicht nur 0,5-Werte): z.B. xik=1/K für i=1,…,|V| und k=1,…,K ist eine zulässige Lösung für die LP-Relaxierung. Viele Symmetrien : Die Variablen für jedes k sind in der Formulierung absolut identisch → Jeder Lösungswert hat exponentiell viele Repräsentationen (bzgl K) → Branching an einer Variablen xi1 führt dazu, dass einfach eine andere Repräsentation der gleichen Lösung gewählt wird → keine Fortschritte → beide Tatsachen erschweren die Lösung durch Branch&Bound bzw. Branch&Cut 6 ILP-Formulierung über Unabhängige Mengen Variablen: Sei S die Menge aller maximalen unabhängigen Mengen von G. Dann sind die Variablen xs∈{0,1} für alle s∈S mit xs=1 ⇔ die unabhängige Menge s∈S wird als eine Farbe der Graphfärbungslösung interpretiert. „maximal“ bzgl. Inklusion: d.h. es gibt keine andere unabhängige Menge, die s enthält (wenn s maximale unabhängige Menge ist) Constraints: Für jeden Knoten wird gefordert, dass ∑ xs ≥ 1 für alle Knoten i∈V. {s:i∈s} Bemerkungen zur ILP-Formulierung Jeder Knoten kann in mehreren unabhängigen Mengen auftauchen → dies ist aber kein Problem: um eine gültige Knotenfärbung zu erhalten, wähle einfach eine dieser Farben für die jeweiligen Knoten aus. Alternativ könnte man auch die Menge aller unabhängigen Mengen als Variablen zulassen, aber dann hätte man sehr viel mehr Variablen → dann könnte man auch Ungleichungen durch Gleichungen ersetzen. Problem bei der Formulierung: exponentiell viele Variablen Zielfunktion: Minimiere ∑ xs Lösung durch Spaltengenerierung s nur |V| Ungleichungen, aber exponentiell viele Variablen Spaltengenerierung für ILPFormulierung Idee: 1. Beginne nur mit einem kleinen Teil der Variablen: S´⊆S (dies entspricht einer Teilmenge der Spalten des ILPs). 2. Löse die LP-Relaxierung LPRel bzgl. S´ 3. Nun muss man testen, ob diese Lösung auch eine gültige Lösung der LP-Relaxierung bzgl. S ist. „Pricing“ 4. 5. 6. Falls dies nicht der Fall ist, müssen zusätzliche Spalten hinzugefügt werden → Re-Optimierung über dem jetzigen S´ → gehe zu 3. Sonst: Falls die Lösung von LPRel ganzzahlig ist → Optimallösung gefunden Sonst: Branching „Branch&Cut&Price“ Pricing-Problem Geg. ist eine Lösung x* von LPRel bzgl. S´ ⊆ S. Ist diese optimal auch bzgl. S? Minimiere ∑ xs s ∑ xs ≥ 1 für alle i∈V {s:i∈s} 0 ≤ xs ≤1 Suche also eine Spalte t, für die der Wert ct - π At = 1 - π At < 0. ⇔ π At > 1. Suche also eine maximale unabhängige Menge T (entspricht Spalte t in A) für die gilt π At > 1. Bemerkung: Für alle Spalten, die bereits in S´ enthalten sind gilt: die reduzierten Kosten von Lösung x* sind ≥ 0, sie werden also nicht wieder ausgewählt. Pricing-Problem Geg. ist eine Lösung x* von LPRel bzgl. S´ ⊆ S. Ist diese optimal auch bzgl. S? Minimiere ∑ xs s ∑ xs ≥ 1 für alle i∈V {s:i∈s} 0 ≤ xs ≤1 Eine neue Spalte t∈S\S´ kann den Lösungswert nur dann verbessern, wenn die reduzierten Kosten der dazugehörigen Variablen kleiner als 0 sind. Reduzierte Kosten für neue Variable t: ct - π At , wobei – At die Spalte t der Matrix bezeichnet – ct der dazugehörige Kostenkoeffizient, und – π der Lösungswert der dualen Variablen zu Zeile i. Pricing-Lösung Pricing kann durch folgendes Problem gelöst werden. Dabei sei πi die Lösung von LPRel der dualen Variablen zu Zeile i. Maximiere ∑ πi zi i∈V Maximum weight s.t. zi+zj ≤1 für alle i und j mit ij∈E independent set zi ∈ {0,1} problem Falls die optimale Lösung dieses maximum gewichteten unabhängigen Menge Problems größer als 1 ist, dann müssen diejenigen zi mit Wert 1 zu S´ hinzugefügt werden. Andernfalls: die Lösung bzgl. S´ ist auch bereits optimal bezüglich S (d.h. alle notwendigen unabhängigen Mengen sind bereits in S´ enthalten). 7 Maximum Independent Set Branching Auch das maximum independent set problem ist NPschwierig, aber es wurde bisher sehr gut studiert und es gibt viele exakte Verfahren, die relativ grosse Instanzen beweisbar optimal lösen können. z.B. Branch&Cut Klassisches Branching ist problematisch, weil: - wird eine Variable für s auf 1 gesetzt → Markiere alle Knoten in s mit einer neuen Farbe und entferne diese aus G. -wird eine Variable für s auf 0 gesetzt → die Lösung des maximum independent set problems könnte genau diese Variable wieder ausgeben → Problem! Auch muss das Problem meist nicht exakt gelöst werden, es genügt, nur eine Menge T zu finden mit Zielfunktionswert > 1. z.B. Greedy Exakte Lösung ist nur dann notwendig, wenn Heuristiken keine solche Menge finden bzw. um zu beweisen, dass keine solche Menge existiert (am Ende). „Maximum weight independent set problem“ ist äquivalent zum „maximum weighted clique problem“ im Komplementärgraphen. Branching DIFFER(i,j) kann erreicht werden, indem eine Kante ij eingefügt wird. SAME(i,j) kann erreicht werden indem beide Knoten miteinander kontrahiert werden. Die aktuelle Lösung ist für beide neuen Subprobleme nicht mehr zulässig, wird also dadurch abgeschnitten. Deswegen: Branching: Seien S1 und S2 zwei maximal unabhängige Mengen und i,j Knoten mit i∈S1∩S2 und j∈S1\S2 und mindestens einer der beiden Werte ist fraktional. Dann erzeuge 2 neue Subprobleme: DIFFER(i,j): d.h. beide müssen verschiedene Farben erhalten SAME(i,j): beide müssen die gleiche Farbe erhalten. Experimentelle Resultate Zufällige Graphen: bis zu |V|=70, |E|=2180, Zeit: ≤ 585s (73 s) Register Allokationsgraphen: bis zu |V|=864, |E|=18707, Zeit: ≤ 31s. Schwierige Graphen: bis zu |V|=23, |E|=71, Zeit: ≤ 9s, aber nicht |V|=47, |E|=236 innerhalb einer Stunde. ENDE COLORING 8