Eine Klasse von Problemen in O(n²) Hoang Nguyen März 2002 Einführung In dieser Seminarausarbeitung beweisen wir für einige Probleme, dass sie mindestens so schwer sind wie das folgende Basisproblem: Gibt es zu einer gegebenen Menge S von n ganzen Zahlen drei Elemente aus S, deren Summe 0 ist? Wir nennen solche Probleme 3SUMhart. Der beste bekannte Algorithmus für 3SUM benötigt Θ(n²) Zeit, was auch für die grosse Klasse der 3SUM-harten Probleme eine unüberwindbare Barriere zu sein scheint. Die Suche nach o(n²) Lösungen für diese Probleme ist hoffnungslos, solange das Basisproblem nicht schneller gelöst werden kann. 1 Reduktion Wir setzen die Komplexitäten zweier Probleme in Relation, wenn ein Problem das andere löst. Dies geschieht durch Transformation der Instanzen. Definition 1.1 Seien A und B Probleme. Wir sagen, dass A f(n)-lösbar durch B ist, genau dann wenn jede Instanz von A der Grösse n durch eine konstante Anzahl Instanzen (der Grösse O(n)) von B und O(f(n)) zusätzlicher Zeit (Transformationskosten) gelöst werden kann. Wir beschränken uns im Folgendem darauf, jede Instanz aus A zu jeweils nur einer Instanz aus B zu transformieren und notieren A<<f(n)B. Für A<< f(n)B und B<<f(n)A nennen wir A und B f(n)-äquivalent und schreiben A==f(n)B. Ist A f(n)-lösbar durch B, so ist B in gewisser Weise mindestens so schwer wie A. Das aus der Definition folgende Lemma macht dies explizit. Lemma 1.1 Seien f und g zwei Polynome und A<<f(n)B. Sei O( g (n)) obere Schranke für B und f (n) = O( g (n)) , dann ist O( g (n)) auch obere Schranke für A. Sei umgekehrt Ω( g (n)) untere Schranke für A und f (n) = o( g (n)) , dann ist Ω( g (n)) auch untere Schranke für B. 2 Das Basisproblem Problem: 3SUM. Instanz: Eine Menge S von n ganzen Zahlen. Frage: Gibt es a,b,c ∈ S mit a + b + c = 0 ? Der beste bekannte Algorithmus für 3SUM braucht Θ(n²) Zeit im Worst Case. 3SUM ist f(n)lösbar durch viele Probleme (für folgende Reduktionen genügen Transformationsschranken f(n)=O(n log n) ). Diese sind mindestens so hart wie 3SUM. 1 Definition 2.1 Wir nennen ein Problem A 3SUM-hart, genau dann wenn 3SUM f(n)-lösbar durch A ist, d.h. 3SUM<<f(n)A. Dabei ist f(n) = o(n²). Zur Durchführung von Reduktionen definieren wir ein äquivalentes Βasisproblem: Problem: 3SUM’. Instanz: Drei Mengen A, B, C von insgesamt n ganzen Zahlen. Frage: Gibt es drei Zahlen a∈A, b∈B, c∈C mit a + b = c ? Theorem 2.1 3SUM’==n3SUM. Beweis: 3SUM<< n3SUM’ ist trivial. Wir setzen einfach A=S, B=S, C=-S. Wenn a+b=c mit a∈A, b∈B, c∈C gilt, dann ist offensichtlich a∈S, b∈S, (-c)∈S und a+b+(-c)=0. Für die Umkehrung konstruieren wir eine Menge S, zu der es wenn 3 Elemente in der Summe 0 sind, 3 Elemente a∈A, b∈B und c∈C gibt, so dass a+b=c. Ohne Einschränkung seien A, B und C positiv (sonst bilde A+k, B+k und C+2k mit passender Konstante k). Sei m=2*max(A,B,C). Zu allen Elementen a∈A, b∈B, c∈C konstruieren wir Elemente a’=a+m, b’=b und c’=-c-m für S. Wenn a+b=c dann a’+b’+c’=0, wir müssen nur noch einsehen, dass a, b und c aus drei verschiedenen Mengen sind. Dies folgt aus der Konstruktion von S. ! 3SUM’ (und somit 3SUM) kann in O(n²) gelöst werden: Sortiere die Mengen B und C. Berechne für jedes a∈A die sortierte Menge B+a (plus a zu allen Elementen) in jeweils O(n) und suche dann in O(n) ein gemeinsames Element in B+a und C. Da wir dies mit allen O(n) Elementen a∈A wiederholen, ist die Laufzeit durch O(n²) beschränkt. Die geometrische Interpretation des Basisproblems wird Reduktionen erleichtern. Problem: GeomBase. Instanz: Eine Menge von n Punkten mit ganzzahligen Koordinaten auf drei Geraden y=0, y=1 und y=2. Frage: Gibt es eine nicht horizontale Gerade durch 3 dieser Punkte ? Theorem 2.2 GeomBase==n3SUM’. Beweis: Zuerst zeigen wir 3SUM’<<nGeomBase. Wir erzeugen für alle Element a∈A, b∈B und c∈C die Punkte (a,0), (b,2) bzw. (c/2,1). Offensichtlich sind drei Punkte (a,0), (b,2) und (c/2,1) kolinear genau dann wenn a+b=c. Für die Umkehrung erzeugen wir zu jedem Punkt (a,0) ein Element a∈A, zu jedem Punkt (b,2) ein Element b∈B und zu jedem Punkt (c,1) ein Element 2c∈C. ! • • B C/2 • A • • • • • • • • • • • • • Figur 1: Ein Beispiel für GeomBase. 2 3 Inzidenz Eine Reihe von Problemen in der algorithmischen Geometrie kann als Inzidenz-Probleme formuliert werden. Die Frage ist, ob es zu einer gegebenen Menge von Objekten ein Objekt aus einer bestimmten Klasse gibt, das eine geforderte Mindestzahl von Objekten in der Menge berührt (oder schneidet). Wenn zwei Objekte inzident sein sollen, ist das Problem normalerweise sehr effizient lösbar. Bei Inzidenz mit mindestens drei Objekten erweisen sich viele Probleme als 3SUM-hart. Problem: 3PointsOnLine. Instanz: Eine Menge von Punkten in der Ebene. Frage: Gibt es eine Gerade durch drei der Punkte? Theorem 3.1 3SUM<<n3PointsOnLine. Beweis: Wir transformieren jedes Element x∈S zu einem Punkt (x,x³). Es gilt a+b+c=0 genau dann wenn (a,a³), (b,b³) und (c,c³) kolinear sind, d.h. wenn eine Gerade (a,a³) und (b,b³) enthält, dann schneidet sie auch (-(a+b),-(a+b)³). Die Schnittgleichung a b − a − ( a + b) 3 + s 3 a b − a 3 = − ( a + b) 3 mit s = 2a + b a−b stimmt offensichtlich in der ersten Komponente. Für die zweite Komponente muss gelten a 3 + ( a + b) 3 + 2a + b 3 (b − a 3 ) = 0 bzw. (a − b)(a 3 + (a + b) 3 ) + (2a + b)(b 3 − a 3 ) = 0 . a−b Dies lässt sich leicht berechnen: a 4 − a 3b + (a − b)(a + b)(a + b) 2 + 2ab 3 − 2a 4 + b 4 − a 3b = b 4 − a 4 − 2a 3b + 2ab 3 + (a 2 − b 2 )(a 2 + 2ab + b 2 ) = 0 . ! -1 0.25 0.75 Figur 2: Transformation von 3SUM zu 3PointsOnLine. 3 Problem: PointOn3Lines. Instanz: Eine Menge von Geraden in der Ebene. Frage: Gibt es einen Schnittpunkt von mindestens 3 Geraden ? Dies ist das exakte Dual zu 3PointsOnLine, und somit folgt Theorem 3.2 PointOn3Lines==n3PointsOnLine. Auch wenn ein Inzidenzproblem mit drei Objekten 3Sum-hart ist, kann es bei k>3 Objekten 2 leichter werden. So ist z.B. ’kPointsOnLine’ in O nk log nk lösbar, also viel schneller als ( ) 2 O(n ) , wenn k mit n wächst. 4 Separatoren Definition 4.1 Sei S eine Menge von n Objekten in der Ebene. Eine Gerade g heisst Separator von S, falls g kein Objekt berührt und die beiden von g begrenzten Halbebenen nichtleere Teilmengen von S enthalten. Problem: Separator1. Instanz: Eine Menge S von n geschlossenen oder semi-infiniten horizontalen Geradensegmenten. Frage: Gibt es einen nicht horizontalen Separator von S ? Theorem 4.1 GeomBase<<n log nSeparator1. Beweis: Gegeben sei eine Menge von Punkten auf drei horizontalen Geraden A:y=0, B:y=2 und C:y=1. Die x-Koordinaten der Punkte auf A seien aufsteigend sortiert a1 ,..., ai . Analog für B b1 ,..., b j und C c1 ,..., c k . Wir transformieren die Punkte auf A zu horizontalen Geraden- segmenten mit den x-Intervallen [-∞, a1 -ε], [ a1 +ε, a 2 -ε], ..., [ ai +ε, ∞] mit ε= 14 und für B und C analog in O(n log n) . Sei g ein Separator, der die ’Lücken’ (a-ε, a+ε) in A, (b-ε, b+ε) in B und (c-ε, c+ε) in C an den Positionen (a+δ1), (b+δ2) und (c+δ3) passiert wobei -ε < δi < ε. Dann ist (a+δ1) + (b+δ2) = 2(c+δ3) und wegen − 12 < δ1+δ2, 2δ3 < 12 muss a+b=2c sein (weil a, b und c ganze Zahlen sind), d.h. es gibt eine Gerade durch Punkte auf A, B und C. ! Figur 3: Transformation von GeomBase zu Separator1. 4 Wenn man senkrechte Geradensegmente auch zulässt, gelingt obige Reduktion auch ohne Halbgeraden. Zudem erlaubt folgende Erweiterung auch horizontale Separatoren. Problem: Separator2. Instanz: Eine Menge S von n geschlossenen, disjunkten, achsenparallelen Geradensegmenten. Frage: Gibt es einen Separator von S ? Theorem 4.2 GeomBase<<n log nSeparator2. Beweis: Wir benutzen die Separator1-Instanz aus Figur 3 und ersetzen die 6 Halbgeraden durch lange Segmente mit 2 vertikalen Segmenten1 an den Rändern. Wenn man die Segmente passend wählt, sind die 6 seitlichen Lücken für Separatoren unpassierbar und der obige Separator schneidet die vertikalen Segmente nicht2. Wie oben existiert also ein Separator, genau dann wenn 3 Punkte kolinear sind. ! Figur 4: Transformation von GeomBase zu Separator2. 5 Covering In Covering Problemen fragt man sich, ob in der Ebene die Vereinigung einer Menge von Objekten ein spezielles Objekt überdeckt (beinhaltet). Die Einfachsten sind schon 3SUM-hart. Definition 5.1 In der Ebene ist eine Box ein achsenparalleles Rechteck. und ein Strip ist die Fläche zwischen 2 parallelen Geraden. Problem: StripCoverBox. Instanz: Eine Menge von Strips und eine Box in der Ebene. Frage: Überdecken die Strips die Box ? Figur 5: Die Box wird nicht von den Strips überdeckt. 1 2 Man beachte die Asymmetrie. Sie verhindert horizontale Separatoren. Siehe dazu Figur 4. Wenn man die Orientierung des Separators kennt, sind die Vertikalen passend ausgerichtet nie zu lang. 5 Für den folgenden Beweis notieren wir einige Eigenschaften der Point-Line-Duality: Das Dual einer nicht vertikalen Gerade ist ein Punkt. (i) (ii) Das Dual eines vertikalen Geradensegmentes ist ein Strip. (iii) Das Dual einer vertikelen Halbgerade ist eine Halbebene. Theorem 5.1 GeomBase<<n log nStripsCoverBox. Beweis: Zuerst transformieren wir die GeomBase-Instanz zu einer Menge von horizontalen Geradensegmenten wie in Figur 3. Wir rotieren die Menge vertikal und dualisieren die Segmente. Separatoren in der Primalebene sind dann Punkte (i) in der Dualebene, die in keinem Strip (ii) und keiner Halbebene (iii) liegen. Das durch die 6 Halbebenen begrenzte offene Polygon1 P ist in der Primalebene die Menge aller nicht vertikalen Geraden, die keine der 6 Halbgeraden schneiden. Wir legen eine Box R um P und machen die Halbebenen mit Geraden ausserhalb von R zu Strips. Zusammen mit den Dualen der geschlossenen Geradensegmente sind es n+3 Strips, da wir in Figur 3 drei Segmente mehr haben als Punkte (Lücken). Ein Punkt in R bzw. P, der von keinem Strip überdeckt wird, ist im Primalen einem Separator. Ist andererseits R und somit P überdeckt, gibt es keinen Separator. ! StripCoverBox löst offensichtlich Varianten mit beliebig orientierten Rechtecken. Noch allgemeiner ist Problem: TrianglesCoverTriangle. Instanz: Eine Menge S von Dreiecken und ein Dreieck T in der Ebene. Frage: Ist T in der Vereinigung der Elemente aus S enthalten ? Theorem 5.2 StripCoverBox<<nTrianglesCoverTriangle. Beweis: Zuerst zeigen wir StripsCoverBox==nStripsCoverTriangle dessen Definition klar ist. Das zweite Problem löst das erste Problem durch Spaltung der Box in zwei Dreiecke. Sind beide überdeckt, so auch die Box. Umgekehrt legt man eine Box R um das Dreieck T und fügt drei Strips hinzu, die R-T überdecken. Nun ist R überdeckt genau dann wenn T überdeckt ist. Ebenso trivial ist StripsCoverTriangle<<nTrianglesCoverTriangle. Man schneidet die Strips ausserhalb des Dreiecks zu Rechtecken und zerlegt sie jeweils in jeweils zwei Dreiecke. Nun überdecken die Dreiecke das Dreieck genau dann wenn die Strips das Dreieck überdecken. ! 6 Point Covering Wir betrachten einen weiteren Typ von Überdeckungsproblemen: Problem: PointCovering. Instanz: Eine Menge S von n Halbebenen und eine Zahl k. Frage: Gibt es einen Punkt p, der von mindestens k Halbebenen überdeckt wird. Für k ≤ n/2 lautet die Antwort einfach ja, für grössere k wird das Problem 3SUM-hart. Theorem 6.1 StripsCoverBox<<nPointCovering. 1 Komplement der Vereinigung der Halbebenen. 6 Beweis: Wir transformieren jeden Strip zu 2 Halbebenen durch Komplementbildung und erhalten eine Menge S von 2n Halbebenen. Jeder Punkt, der in keinem Strip liegt, ist in genau n Halbebenen enthalten (andere Punkte sind in weniger Halbebenen), da wir n Strips haben und ausserhalb eines Strips heisst in einer Halbebene. Diese Punkte können sowohl in der Box als auch ausserhalb sein. Um sie zu unterscheiden fügen wir S vier Halbebenen hinzu, die die Grenzen der Box markieren und nach innen zeigen. Ein Punkt, der durch n+4 Halbebenen (dies ist die maximale Überdeckungszahl) überdeckt ist, liegt also in der Box und in keinem Strip. Mit anderen Worten: Die Strips überdecken die Box nicht, genau dann wenn es einen Punkt gibt, der durch n+4 Halbebenen überdeckt wird. ! 7 Planar Visibility Sichtbarbarkeit von einem Punkt in der Ebene ist normalerweise einfach. Sichtbarkeit von einem Geradensegment dagegen ist schon in der folgenden einfachen Version 3SUM-hart. Problem: VisibilityBetweenSegments. Instanz: Eine Menge S von n horizontalen Geradensegmenten in der Ebene und zwei weitere horizontale Segmente s1 und s2 . Frage: Gibt es zwei Punkte auf s1 und s2 , die sich gegenseitig sehen ? (Das offene Segment zwischen ihnen schneidet kein Segment aus S) Theroem 7.1 GeomBase<<n log nVisibilityBetweenSegments. Beweis: Wegen Theorem 4.1 reicht es Separator1<<nVisibilityBetweenSegments zu zeigen. Wir benutzen die Separator1-Instanz aus Figur 3 und setzen passende Segmente s1 und s2 knapp über und unter die Menge der Lücken (siehe Figur 6). Nun sehen sich s1 und s2 genau dann wenn es einen Separator gibt. Man beachte, dass wir keine Halbgeraden mehr brauchen, weil entartete Separatoren s1 oder s2 nicht mehr schneiden. ! s1 s2 Figur 6: Transformation von GeomBase zu VisibilityBetweenSegments. 8 Planar Motion Planning Die Komplexität der Bewegungsplanungsprobleme neigt zur Abhängigkeit von der Anzahl der Freiheitsgrade. Ein Roboter z.B., der in der Ebene Translation und Rotation ausführen kann, hat 3 Freiheitsgrade. Die einfachsten Probleme mit 3 Freiheitsgraden sind schon 3SUMhart. 7 Problem: PlanarMotionPlanning. Instanz: Eine Menge von disjunkten, achsenparallelen Geradensegmenten (Hindernisse) in der Ebene und weiteres Segment als Roboter mit 3 Freiheitsgraden (Rotation und Translation) sowie Start- und Zielgebiet. Frage: Gelangt der Roboter vom Start zum Ziel ohne Kollision mit den Hindernissen ? Die beste bekannte Lösung ist durch O(n²) beschränkt. Theorem 8.1 GeomBase<<n log nPlanarMotionPlanning. Beweis: Wir benutzen die Konstruktion mit Segmenten wie in Figur 4. Der Roboter soll sich von einem Bereich über zu einem Bereich unter den Segmenten bewegen. Damit er die Segmente (eine löchrige Grenze zwischen Start- und Zielgebiet) nicht umgeht und für die Finitheit bauen wir einen Käfig wie in Figur 7. Die Gebiete müssen natürlich so umzäunt werden, dass der Roboter darin noch manövrieren kann. Nun kann der Roboter aus dem Startgebiet nicht entkommen ohne durch die Lücken zu schlüpfen, die aus der GeomBaseInstanz konstruiert wurden. Der Roboter soll so lang sein, dass beim erfolgreichen Grenzübergang ein Moment existiert, in dem er in beiden Regionen (teilweise) drin ist, d.h. er steckt in drei Lücken zwischen den Segmenten. Eine Lösung der GeomBase-Instanz existiert also genau dann wenn es eine Bewegung des Roboters vom Start zum Ziel gibt. ! der Roboter die Segmente Figur 7: Transformation von GeomBase zu PlanarMotionPlanning. 8 Literatur A. Gajentaan, M. H. Overmars. On a class of problems in computational geometry. Comput. Geom. Theory Appl., 5:165-185, 1995. 9