Algorithmische Geometrie: Lineare Optimierung (I) Nico Düvelmeyer WS 2009/2010, 17.11.2009
Überblick 1 Geometrie von Gießformen 2 Durchschnitte von Halbebenen 3 Inkrementeller Algorithmus
Überblick 1 Geometrie von Gießformen 2 Durchschnitte von Halbebenen 3 Inkrementeller Algorithmus
Gießprozess Plastik oder Metall verflüssigen in Form füllen auskühlen lassen aus der Form nehmen Ohne Zerstörung der (einteiligen) Form?
Definition 5.1: gießbare Körper existieren: Form F R 3, Richtung d R 3 \ {0}, gedrehter Körper P P F ist Quader P geradlinig bewegt in Richtung d schneidet nicht das Innere von F Oberseite von P: horizontale Oberfläche der Schmelze andere Seitenflächen: gewöhnliche Seiten von P
Gießproblem gegeben: Poyeder P o gesucht: Auswahl einer Oberseite, gedrehtes Polyeder P Lösungsrichtung d
Lemma 5.2 Das Polyeder P kann genau dann von seiner Form F in Richtung d gelöst werden, wenn d mit jeder Außennormalen η(f ) einer gewöhnlichen Seite f von P einen Winkel von mindestens π/2 bildet. Beweis. Bedingung notwendig: Anfang der Bewegung hinreichend: Zeitpunkt direkt vor der Kollision Folgerung: mehrere Translationen bringen nicht mehr als eine einzige!
Von 3D zu 2D d = (dx, d y, 1) Außennormale η = ( η x, η y, η z ) liefert Bedingung η x d x + η y d y + η z 0. ist meißt eine Halbenbene in R 2. η x d x + η y d y η z
Satz 5.3 Sei P ein Polyeder mit n Seiten. Entscheidung, ob P gießbar ist: O(n 2 ) erwartete Zeit Speicheraufwand in O(n) Wenn ja, Bestimmung Form F und zulässige Richtung d: O(n 2 ) erwartete Zeit Speicheraufwand in O(n)
Überblick 1 Geometrie von Gießformen 2 Durchschnitte von Halbebenen 3 Inkrementeller Algorithmus
Notation H = {h 1,..., h n } Halbebenen h i := { (x, y) : a i x + b i y c i } nicht a i = b i = 0
Algorithmus 5.4 (Prinzip Teile und Herrsche ) Eingabe: eine Menge H von n Halbebenen der Ebene Ausgabe: das konvexe polyhedrale Gebiet C := h H h 1: Funktion DURCHSCHNITTVONHALBEBENEN(H) 2: Wenn H = 1 dann 3: C h 1, wobei H = {h 1 }. 4: sonst 5: teile H in Teilmengen H 1 und H 2 mit n/2 beziehungsweise n/2 Halbebenen auf. 6: C 1 DURCHSCHNITTVONHALBEBENEN(H 1 ) 7: C 2 DURCHSCHNITTVONHALBEBENEN(H 2 ) 8: C DURCHSCHNITTKONVEXERGEBIETE(C 1, C 2 )
Einfache Laufzeitabschätzung DURCHSCHNITTKONVEXERGEBIETE: fast Spezialfall von Durchschnitt von Polygonen (Unbeschränktheit fehlt!) Folgerung 3.13: Laufzeit O((n + k) log n) k O(n) wegen Konvexität, höchstens 4 Schnittpunkte Zeit in O(n log n). Rekursion für Laufzeitabschätzung T { O(1), falls n = 1 T (n) = O(n log n) + 2T (n/2), falls n > 1 ergibt T (n) O(n(log n) 2 ) (siehe z.b. Akra-Bazzi-Theorem bzw. Verallgemeinerung vom Master-Theorem).
Satz 5.5 Der Durchschnitt zweier konvexer polyhedraler Gebiete der Ebene kann in Zeit in O(n) berechnet werden. Dabei ist n als Summe der Kantenanzahlen die Komplexität der Eingabe. Beweis. Gleitebenenverfahren für C = C 1 C 2 Darstellung: (je) zwei sortierte Listen Rand links/rechts Eckpunkte brauchen nicht gespeichert zu werden Status: 4 Positionen in Halbebenen-Listen Ereignisse: Ecken von C 1 und von C 2 lokale Operationen in konstanter Zeit
Beweisalgorithmus Satz 5.5 Beispiel: sei p oberer Endpunkt von Kante e aus C 1. Suchen Kanten von C mit Anfang p oder Schnitt von e mit Statuskanten l, r von C 2 p zwischen Kanten von C 2?
Beweisalgorithmus Satz 5.5 Beispiel: sei p oberer Endpunkt von Kante e aus C 1. Suchen Kanten von C mit Anfang p oder Schnitt von e mit Statuskanten l, r von C 2 p zwischen Kanten von C 2? Halbebene zu e zur linken Liste von C! e r = {q}?
Beweisalgorithmus Satz 5.5 Beispiel: sei p oberer Endpunkt von Kante e aus C 1. Suchen Kanten von C mit Anfang p oder Schnitt von e mit Statuskanten l, r von C 2 p zwischen Kanten von C 2? Halbebene zu e zur linken Liste von C! e r = {q}? Beginnen in q Kanten (p rechts Gerade von r)?
Beweisalgorithmus Satz 5.5 Beispiel: sei p oberer Endpunkt von Kante e aus C 1. Suchen Kanten von C mit Anfang p oder Schnitt von e mit Statuskanten l, r von C 2 p zwischen Kanten von C 2? Halbebene zu e zur linken Liste von C! e r = {q}? Beginnen in q Kanten (p rechts Gerade von r)? e zur linken Liste und r zur rechten Liste! e l = {q}?
Beweisalgorithmus Satz 5.5 Beispiel: sei p oberer Endpunkt von Kante e aus C 1. Suchen Kanten von C mit Anfang p oder Schnitt von e mit Statuskanten l, r von C 2 p zwischen Kanten von C 2? Halbebene zu e zur linken Liste von C! e r = {q}? Beginnen in q Kanten (p rechts Gerade von r)? e zur linken Liste und r zur rechten Liste! e l = {q}? p links Gerade von l? Ja: e zur linken Liste! Nein: l zur linken Liste!
Folgerung 5.6 Der gemeinsame Durchschnitt einer Menge von n Halbebenen kann in Zeit in O(n log n) und mit Speicherplatz in O(n) berechnet werden. Beweis. Rekursion T (n) = { O(1), falls n = 1 O(n) + 2T (n/2), falls n > 1. ergibt T (n) O(n log(n))
Folgerung 5.6 Der gemeinsame Durchschnitt einer Menge von n Halbebenen kann in Zeit in O(n log n) und mit Speicherplatz in O(n) berechnet werden. Beweis. Rekursion T (n) = { O(1), falls n = 1 O(n) + 2T (n/2), falls n > 1. ergibt T (n) O(n log(n)): Sei T (n) = f (n) + 2T (n/2) mit f (n) c 1 n falls n n 1. n 0 := max(2, n 1 ) c := max{c 1, T (n 0 )/(n 0 log n 0 ),..., T (2n 0 )/(2n 0 log(2n 0 )) ergibt sofort T (n) cn log n für n 0 n 2n 0 und per Induktion für n > 2n 0 T (n) f (n) + 2T ( n 2 ) c 1n + 2c n 2 log(n ) cn + cn(log n 1) = cn log n 2
Zufrieden mit Folgerung 5.6? Dualität: Zeitschranke O(n log n) für schlimmsten Fall Bestimmung konvexer Hüllen geht nicht besser nicht ganzer Durchschnitt notwendig geht es für durchschnittliche Probleminstanzen besser?
Überblick 1 Geometrie von Gießformen 2 Durchschnitte von Halbebenen 3 Inkrementeller Algorithmus
Lineare Optimierungsaufgabe (LOA) im R d Maximiere c 1 x 1 + c 2 x 2 + + c d x d unter den Bedingungen a 1,1 x 1 + + a 1,d x d b 1.. a n,1 x 1 + + a n,d x d b n Begriffe: zulässiger Bereich C, (un)zulässige Punkte p C (p / C), Zielfunktion optimaler Punkt
LOA (H, c) im R 2 Maximiere f c (x, y) := c x x + c y y unter den Bedingungen a i x + b i y c i i = 1... n c = (c x, c y ) h i := { (x, y) : a i x + b i y c i } H = {h 1,..., h n } C = h H h Randlinie l i := { (x, y) : a i x + b i y = c i }
Vier Lösungs-Fälle von (H, c) 1. Unzulässige LOA 2. Unbeschränkte LOA 3. Kante mit optimalen Punkten 4. eindeutige optimale Lösung
Ideen für inkrementellen Algorithmus Einschränkungen schrittweise hinzufügen aktuelle optimale Lösung des Teilsystems diese muss eindeutig sein
Problem Unbeschränkte Teil-LOA: zusätzliche Einschränkungen { { p : p x M } Wenn c x > 0 m 1 := { p : p x M } sonst { { p : p y M } Wenn c y > 0 m 2 := { p : p y M } sonst
Problem mehrdeutige optimale Lösungen: lexikographische Ordnung Bezeichnungen Maximiere (c x x + c y y, x, y) unter den Bedingungen (x, y) m 1, m 2, a i x + b i y c i i = 1... i max H i := {m 1, m 2, h 1,..., h i } C 0 := m 1 m 2, C i := C 0 h 1 h i v i : eindeutige optimale Lösung von (H i, c) C 0 C 1 C n = C
Lemma 5.7 1 Falls v i 1 h i ist, so ist v i = v i 1. 2 Falls v i 1 h i ist, dann ist entweder C i = oder v i l i. Beweis. Punkt 1 trivial wegen C i C i 1. Punkt 2 indirekt: C i und v i l i Strecke v i 1 v i : Zielfunktion streng monoton fallend v i 1 v i schneidet Gerade l i
Lemma 5.8 Eine 1-dimensionale lineare Optimierungsaufgabe kann in linearer Zeit gelöst werden. Beweis. LOA: x a i für i = 1,..., k und x b i für i = k + 1,..., n a := max{a 1,..., a k } und b := min{b k+1,..., b n } a > b: LOA nicht zulässig sonst x = a oder x = b Optimallösung.
Algorithmus 5.9 Eingabe: LOA (H {m 1, m 2 }, c) in der Ebene Ausgabe: Falls (H {m 1, m 2 }, c) nicht zulässig ist, soll dies gemeldet werden. Sonst wird die lexikographisch kleinste Optimallösung geliefert. 1: Funktion 2DBESCHRÄNKTELOA(H, c, m 1, m 2 ) 2: v 0 sei die Ecke von C 0. 3: h 1,..., h n seien die Halbebenen aus H. 4: Für i 1 bis n mache 5: Wenn v i 1 h i dann 6: v i v i 1 7: sonst 8: v i der Punkt p auf l i, der f c (p) maximiert, unter den Bedingungen in H i 1. 9: Wenn so es ein p nicht gibt, dann 10: melde, dass (H {m 1, m 2 }, c) nicht zulässig ist, Ende! 11: Liefere v n als Ergebnis.
Lemma 5.10 Algorithmus 5.9 bestimmt die Lösung einer beschränkten linearen Optimierungsaufgabe mit n Einschränkungen und 2 Variablen in einer Zeit in O(n 2 ) und mit Speicherplatz in O(n). Beweis. Induktiv mit Lemma 5.7: v i ist der optimale Punkt von C i Lemma 5.8: Schleifendurchlauf-Zeit O(i) Summe O(n 2 ).
Randomisierte Lineare Optimierung nächste Woche
Algorithmus 5.11 Eingabe: LOA (H {m 1, m 2 }, c) in der Ebene Ausgabe: Falls (H {m 1, m 2 }, c) nicht zulässig ist, soll dies gemeldet werden. Sonst wird die lexikographisch kleinste Optimallösung geliefert. 1: Funktion 2DRANDOMISIERTEBESCHRÄNKTELOA(H, c, m 1, m 2 ) 2: v 0 sei die Ecke von C 0. 3: Berechne eine zufällige Permutation h 1,..., h n der Halbebenen durch ZUFÄLLIGEVERTAUSCHUNG(H[1,..., n]). 4: Für i 1 bis n mache 5: Wenn v i 1 h i dann 6: v i v i 1 7: sonst 8: v i der Punkt p auf l i, der f c (p) maximiert, unter den Bedingungen in H i 1. 9: Wenn so es ein p nicht gibt, dann 10: melde, dass (H {m 1, m 2 }, c) nicht zulässig ist, Ende! 11: Liefere v n als Ergebnis.
Algorithmus 5.12 Eingabe: Array A[1,..., n]. Ausgabe: Das Array A[1,..., n] mit den selben Elementen, aber in einer zufälligen Anordnung neu sortiert, wobei alle Permutationen dabei gleich wahrscheinlich sind. 1: Funktion ZUFÄLLIGEVERTAUSCHUNG(A) 2: Für k n absteigend bis 2 mache 3: j RANDOM(k) RANDOM(k) liefert gleichverteilt ein Element aus {1,..., k}. 4: Vertausche A[k] mit A[j].
Lemma 5.13 Die spezielle 2-dimensionale lineare Optimierungsaufgabe (H {m 1, m 2 }, c) mit n Einschränkungen kann in O(n) randomisierter erwarteter Zeit immer mit linearem Speicherbedarf gelöst werden.