Rheinische Friedrich-Wilhelms-Universität Bonn Institut für Informatik I Christoph Koch Approximationsalgorithmen für eine ’Rasenmäher-’ oder eine ’Fräsetour’ 22. Mai 2006 Seminararbeit im SS 2006 Betreuer: Thomas Kamphans Zusammenfassung In dieser Ausarbeitung geht es um die Probleme eine möglichst kurze ’Rasenmäher-’ oder ’Fräsetour’ zu finden . Dabei ist eine Fläche (Wiese) als Polygon in der Ebene gegeben, welche durch einen Kreis oder ein Quadrat (Rasenmäher) abgefahren werden muß, so dass jeder Punkt des Polygons mindestens einmal besucht wurde. Beim Fräsen wird im Gegensatz zum Rasen mähen das Übertreten des Polygonrandes verboten. Ausserdem werden wir weiter gute Approximationen für eine TSP-Tour (Traveling Salesman Problem) erhalten. Inhaltsverzeichnis 1 Einführung 2 2 Voraussetzungen 2 3 Approximation der Rasenmäher-Tour 3 4 Approximation des Fräse-Problems 10 5 TSP auf dem Gitterpraph 12 6 Zusammenfassung 19 1 1 Einführung Betrachten wir folgendes Problem. Wer kennt das nicht, man kommt nach Hause von der Arbeit/Schule/Uni und man will noch etwas schönes machen. Dann erinnert man sich oder bekommt es aufgetragen, von der Mutter oder vom Vater, dass man doch noch den Rasen mähen soll, bevor man geht. Man will also schnell fertig werden und überlegt sich den vermutlich kürzesten Weg, damit man dementsprechend auch schneller fertig ist. Nur wie sieht jetzt der tatsächlich kürzeste Weg aus und ist es mir erlaubt mit dem Rasenmäher über die Ränder zu fahren oder ist dort ein Blumenbeet und deshalb nicht zugelassen (siehe Fräseproblem). Beide Probleme lassen wahrscheinlich keine effiziente Berechnung eines kürzesten Pfades zu (Fräseproblem ist NP-hart für Flächen ohne Löcher, mit Löcher noch schwieriger und das Rasenmäherproblem ist ebenfalls NP-hart), jedoch werden wir Algorithmen kennen lernen [1], die eine gute Approximation an den kürzesten Pfad berechnen. In dieser Ausarbeitung werden wir uns erst mit dem Rasenmäher- Problem befassen, bevor wir uns das Fräsen und auch das TSP genauer anschauen. 2 Voraussetzungen Wir haben eine planare Region (Wiese) R, sowie einen Mäher χ, der entweder ein Kreis oder ein achsenparalleles Quadrat ist, gegeben. Dabei bezeichnet im Folgenden n die Anzahl an Eckpunkten und δR die Grenze von R. Ohne die Generalität zu verletzen können wir annehmen, dass χ ein Einheitskreis oder ein Einheitsquadrat ist. Der Referenzpunkt des Mähers ist dabei der Mittelpunkt. χ(p) bezeichnet die vom Mäher überdeckte Fläche, wenn der Referenzpunkt auf p liegt. Des Weiteren gibt es zwei mögliche Bewegungsarten für den Mäher. Bei der rechtwinkligen Bewegung bewegt sich der Mäher entlang von Liniensegmenten, die parallel zu einer Koordinatenachse liegen, während die willkürliche Bewegung eine geradlinige Bewegung mit einer willkürliche Richtung ist. Im Folgenden sprechen wir von einer einfachen Umgebung, wenn die Region R keine Löcher hat. Es kann vorausgesetzt werden, daß die Region als Menge von Liniensegmenten gegeben ist. Für einige Beweise ist es nötig die Region zu rastern. Dafür wird ein Gitternetz über die Region gelegt, wobei die Schnittpunkte der Gitterlinien, also die Gitterpunkte, Ganze Zahlen als Koordinaten haben. Eine Möglichkeit die Lage des Gitternetzes zu bestimmen, wäre z.B. die Ausgangsposition des Mähers als Position für eine Gitterzelle zu nehmen. Im Folgenden sprechen wir von einer Fläche, wenn wir die 1x1 Quadrate meinen, die vom Gitternetz eingerahmt sind. Eine Zelle ist dagegen ein 1x1 Quadrat das einen Gitterpunkt als Mittelpunkt hat (vgl. Abbildung 1). 2 Abbildung 1: Der Unterschied zwischen einer Zelle und einer Fläche. 3 Approximation der Rasenmäher-Tour Eine Rasenmäher-Tour ist eine Tour T , so dass jeder Punkt der Region R mindestens einmal von dem Mäher χ überdeckt wurde, d.h.: R⊆ S χ(p) p∈T Topt sei eine optimale Rasenmäher-Tour und |Topt | seine Länge. S sei die Menge der Mittelpunkte derjenigen Zellen, die einen nichtleeren Schnitt mit der Region R haben. Das heißt, dass alle Zellen mit Mittelpunkten aus S die Region R überdecken. Wir müssen also bei unserer Tour nur alle Punkte aus S besuchen und haben somit schon eine gültige Rasenmäher-Tour. Dies gleicht dem Problem eine TSP-Tour für S zu finden. Dies bringt uns zu unserem ersten Lemma. Lemma 1 Jede Tour auf der Punktmenge S ist eine Rasenmäher-Tour für einen (Einheitsquadrat) Mäher χ. Das Ziel des nächsten Lemmas ist es zu zeigen, dass es hinreichend ist, nach Touren auf dem Gitternetz zu suchen. Dafür brauchen wir die eingeführten Flächen (Flächen des Gitternetzes). Lemma 2 Für einen quadratischen Mäher mit der Seitenlänge 1, dem nur achsenparallele Bewegungen erlaubt sind, existiert eine Tour TG auf dem Gitternetz mit |TG | ≤ |Topt und TG schneidet dieselben Flächen wie Topt . Um dies zu beweisen zeigen wir ein Verfahren, mit dem man eine optimale Tour auf das Gitternetz legen könnte ohne die Länge der Tour zu erhöhen. Dabei bleibt die Menge an Flächen die durch die Tour geschnitten werden gleich. Beweis. Wenn die optimale Tour Topt komplett durch einen Block von 4 Zellen laufen würde, die eine gemeinsame Ecke teilen, dann muss TG diese 3 eine Ecke beinhalten (vgl. Abbildung 2). Man beachte, dass es bei diesem Lemma erst einmal nur um dieselbe Schnittmenge der Flächen mit Topt und der Flächen mit TG geht, TG ist nicht notwendigerweise eine RasenmäherTour. Abbildung 2: Eine Tour die P enthält schneidet dieselben Flächen wie die Tour π in dieser Abbildung Sollte Topt nicht komplett in einem Block von 4 Flächen liegen, dann legen wir nacheinander die Wendepunkte und die Toursegmente auf das Gitternetz. Wendepunkte sind Punkte, bei denen die Tour die Richtung ändert. Sollte ein solcher Punkt im Inneren einer Zelle liegen, also nicht auf dem Gitternetz, dann können wir diesen auf das Gitternetz legen ohne die Länge der Tour zu verlängern. Dazu betrachten wir folgendes Beispiel: Der Punkt p liegt innerhalb einer Fläche und ist ein Wendepunkt der Tour mit ’L’-Form. Der Punkt a ist der Punkt an dem die Tour die Fläche von p betritt und der Punkt b ist der Punkt an dem die Tour die Fläche wieder verlässt. Die Tour kann dann ’umgeklappt’ werden, so daß diese auf dem Gitternetz liegt und aus Symmetriegründen nicht länger ist (vgl. Abbildung 3). Wenn wir dieses Verfahren für alle Wendepunkte anwenden, dann erhalten wir eine Tour T 0 , bei der alle Wendepunkte auf dem Gitternetz liegen. Als nächstes müssen noch die Toursegmente, die nicht auf dem Gitternetz liegen, auf das Gitternetz geschoben werden, um eine vollständig auf dem Gitternetz liegende Tour zu erhalten. Sollte T 0 schon auf dem Gitternetz liegen, so sind wir schon fertig. Ansonsten braucht man lediglich die Wendepunkte die noch nicht auf den Gitterpunkten liegen eben auf solche verschieben. Dabei gibt es zwei Fälle die wir betrachten müssen. Sei b ein Wendepunkt auf einer vertikalen Gitterlinie (der Fall einer horizontalen Gitterlinie ist äquivalent, nur gespiegelt) dann kann in b die Tour um 90◦ die Richtung ändern (1), oder um 180◦ (2)(Kehrtwende). zu (1): Wir betrachten eine von b ausgehende, horizontale Kante ab. Zu a und b gibt es je eine inzidente, vertikale Kante, die a mit einem weiteren Punkt 4 Abbildung 3: Der Teilpfad von a nach b über p kann auf das Gitternetz geklappt werden. d und b mit einem weiteren Punkt c verbindet. Abhängig von der Lage von c und d sind 2 Fälle zu unterscheiden:(i) c und d liegen auf verschiedenen Seiten von ab und (ii) c und d liegen auf derselben Seite von ab. (i) In diesem Fall können wir das Segment ab einfach horizontal verschieben bis es auf einer horizontalen Gitterlinie liegt oder auf einen weiteren Wendepunkt trifft. Wir verändern die Länge der Tour dadurch nicht. Sollte ein Wendepunkt getroffen werden so reduzieren wir dadurch die Anzahl an Wendepunkten (vgl. Abbildung 4). (b) Wir verschieben in diesem Fall ab horizontal in die Richtung, bei der die Länge der Tour reduziert wird. Auch dabei gibt es wieder die zwei Möglichkeiten (treffen auf Wendepunkt oder horizontale Gitterlinie) mit denen genauso verfahren wird (vgl. Abbildung 4). zu (2): Bei den Kehrtwenden gibt es ebenfalls 2 Unterfälle: (i) Das Toursegment liegt bereits auf dem Gitternetz, d.h. wir müssen nur noch dieses Segment verkürzen bis b auf einem Gitterpunkt liegt. (II) Das Toursegment liegt nicht auf dem Gitternetz, dann verschieben wir dieses Segment parallel zu sich selber, bis b auf einem Gitterpunkt und dementsprechend auch das Segment auf dem Gitternetz liegt. (vgl. Abbildung 5) Sobald dieses Verfahren terminiert, erhalten wir die gewünschte Tour TG die komplett auf dem Gitternetz verläuft und die dieselben Flächen wie Topt besucht. 2 Wenn wir diese Tour betrachten, dann ist sie maximal genauso lang, wie die optimale Tour, also |TG | ≤ |Topt | (vgl. Lemma 2), aber es muss nicht 5 Abbildung 4: Links ist der Fall (1(i)) und rechts (1(ii)). unbedingt eine Rasenmäher-Tour sein, denn durch das Verschieben der Tour auf das Gitternetz, kann es Regionen geben, die nicht gemäht wurden (vgl. Abbildung 6). Sollte allerdings die Menge SG , die Menge an Gitterpunkten die durch TG besucht werden, mindestens die Punkte aus S beinhalten, so haben wir eine Rasenmäher-Tour. Ansonsten werden wir eine Möglichkeit kennenlernen, die Tour TG in eine Rasenmäher-Tour umzuwandeln, und zeigen, dass diese Tour maximal 3 mal so lang ist, wie eine optimale Tour. Im Folgenden beschreibt Π den Pfad den wir erhalten, wenn man von TG ein Teilstück, also eine Kante auf dem Gitternetz der Länge 1, entfernt. Weiter bezeichnet F die Region die überdeckt bzw. gemäht wurde, wenn ein quadratischer Mäher mit Seitenlänge 2 dem Pfad Π folgt. Lemma 3 Jeder Mittelpunkt aus S wird entweder von der Tour Π besucht oder ist in der L∞ Distanz von 1 von der Tour Π entfernt, d.h. S ⊆ Π ∪ δF . Beweis. Sei p ∈ S ein Mittelpunkt einer Zelle und P eine von den 4 Flächen, die p als Eckpunkt haben. π ist nun der Abschnitt der optimalen Tour Topt , der in P liegt. Der Bereich der gemäht wird, wenn man π mit dem Mäher abfährt liegt komplett in der Vereinigung der Zellen C1 ...C4 , dessen Mittelpunkte die Eckpunkte der Fläche P sind (vgl. Abbildung 7). Da wir aber schon gezeigt haben, dass TG und folglich auch Π dieselbe Menge an Flächen durchläuft, können wir folgern, dass mindestens eine Ecke von P in SG liegt. Dies wiederum führt uns dahin, dass alle 4 Eckpunkte von P in der Vereinigung von Π und δF liegen. Diese Vereinigung beinhaltet alle Punkte von SG und alle weiteren Mittelpunkte der Zellen die einen L∞ -Abstand 1 6 Abbildung 5: Links ist der Fall (2(i)) und rechts (2(ii)). Abbildung 6: Die blaue Tour erhalten wir nach Anwenden des o.g. Verfahren. Nur die lila Fläche wird gemäht und der Rest nicht. von Π haben. Dadurch hätten wir auch die Punkte wieder aufgesammelt, die durch vorheriges verschieben verloren gegangen sind. 2 0 Die folgende Menge SG = S ∩ (Π ∪ δF ) hilft uns, den Faktor von 3 zu zeigen. 0 (folglich auch S) abläuft, mit Lemma 4 Es existiert eine Tour, die SG einer maximalen Länge von 3|TG | + 6 (folglich 3|Topt | + 6) Beweis. Der Beweis dafür nimmt einen bestehenden Ansatz aus [3] für den schon gezeigt wurde, dass für einen Pfad der Länge l und eine Scheibe mit Umfang c ein Weg existiert, der maximal 2l + c lang ist. Wir wissen, dass unsere L∞ Scheibe mit Radius 1 einen Umfang von 8 hat und wir wissen, dass es eine Tour T 0 gibt, die δF abfährt, und deren Länge maximal 2lΠ +8 = 2(|TG |−1)+8 = 2|TG |+6 beträgt. Allerdings müssen die Touren T 0 7 Abbildung 7: Ein Mäher der auf π langfährt schneidet die 4 Flächen. und TG noch zu einer Tour zusammengesetzt werden. Da es aber mindestens eine Stelle gibt, an der Π und δF parallel zueinander verlaufen und einen Abstand von 1 haben, kann man dort 2 Teilstücke swappen, also jeweils eine Kante von δF und von Π nehmen und als Überbrückung benutzen (vgl. Abbildung 8). Somit haben wir T 0 und TG kombiniert, erhalten eine Länge von 2|TG | + 6 + |TG | = 3|TG | + 6 und wir überdecken dabei alle Punkte von 0 und S. Π und δF und folglich auch alle Punkte von SG Abbildung 8: Die rote und die blaue Tour werden durch einen Swap an der grün markierten Stelle zu einer Tour zusammengefügt. 2 Die Tour TG zu berechnen ist allerdings NP-hart. Da wir aber gesehen haben, daß es einer TSP-Tour gleicht, können wir durch schon bekannte Verfahren die Tour approximieren. Wir haben zusätzlich noch einen Approximationsfaktor αT SP der mit dem bisherigen Ergebnis multipliziert werden muss um die Tour TG zu approximieren. Z.B. kann man die Tour approximieren in dem wir den MST (Minimal Spanning Tree) 2 mal abfahren (vgl. Abbildung 8 9) und hätten dabei also den Wert αT SP = 2 und dementsprechend eine Tour TG von αT SP ∗ 3|Topt | = 6|Topt |. Rao und Smith [5] haben eine bessere Approximation von (1 + ) gezeigt, was wiederum eine Approximation von TG von (3 + ) zuläßt. Abbildung 9: Eine TSP-Approximation die den MST benutzt hat einen Faktor von 2. Für den Fall, daß dem Rasenmäher willkürliche Bewegungen erlaubt sind kann man die approximierte Länge mit einem zusätzlichen Faktor β = √ 2 √ ≈ 1.08. Dieser Faktor kommt zustande, indem wir eine optimale Tour 2+ 2 Topt auf ein Gitternetz mit Diagonalen legen. Dabei sind alle Gitterpunkte mit horizontalen und vertikalen Nachbarn√der Entfernung 1 und mit allen diagonalen Nachbarn mit der Entfernung 2 verbunden. Sollte der Rasenmäher nun die Form eines Einheitskreises haben, so müssen wir eine andere Form der Zelle wählen, nämlich ein reguläres Sechseck mit Durchmesser 2. Die Mittelpunkte dieser Zellen werden wieder zu einem Gitternetz verbunden, √ welches nun Flächen definiert, die gleichseitigen Dreiecken mit Seitenlänge 3 entsprechen. Ein Pfad√kann gefunden werden, der die approximierte Länge um einen Faktor γ = 2 3 3 ≈ 1.15 erweitert. Insgesamt bringt uns das zu folgendem Theorem: Theorem 5 Es gibt für das Rasenmäher Problem einen Approximationsalgorithmus mit konstantem Faktor, der in polynomieller Zeit ausgeführt werden kann (je nach Wahl der TSP-Heuristik). Für den Fall, daß der Rasenmäher ein achsenparalleles Einheitsquadrat ist, haben wir einen Approximationsfaktor von 3αT SP für rechtwinklige Bewegungen und 3βαT SP für willkürliche Bewegungen mit β = √ 2 √ ≈ 1.08. Sollte der Rasenmäher 2+ 2 ein Einheitskreis sein, so haben wir einen Approximationsfaktor von 3γαT SP √ 2 3 mit γ = 3 ≈ 1.15. 9 4 Approximation des Fräse-Problems Betrachten wir nun das Problem des Fräsen bei dem der Mäher immer innerhalb der Region R bleiben muss. Das heißt, eine Fräser-Tour ist eine Tour π, bei der jeder Punkt der Region R mindestens ein mal von dem Mäher χ überdeckt wurde ohne dass ein Punkt ausserhalb des Polygons überdeckt wurde, d.h.: R= S χ(p) p∈T Theorem 6 In Zeit O(n log n) kann entschieden werden, ob eine zusammenhängende Region mit n Kanten von einem Einheitskreis- oder Einheitsquadrat Mäher gefräst werden kann. In derselben Zeit kann auch eine Tour mit einer Länge maximal 2.5 mal so lang wie eine optimale Tour gefunden werden. Abbildung 10: Ein Polygon und ihre Fräsetouren. Beweis. Man kann in Zeit O(n log n) feststellen ob eine Region gefräst werden kann oder nicht. Dies kann man mit Hilfe des inneren und des 10 äusseren Offsets lösen, indem man diese nacheinander erst berechnet und dann mit dem Originalpolygon vergleicht. Sollten die beiden nicht übereinstimmen, so haben wir einen Flaschenhals oder eine spitze Ecke, was eine Fräsetour nicht zulässt. Deshalb können wir voraussetzen, daß die Region R ’gefräst’ werden kann. Wir werden sehen, dass sich die von 2.5 * |Topt | aus 3 Teilen zusammensetzt. B ist die Region, in die wir den Mittelpunkt der Fräse legen können, ohne den Rand zu schneiden. Weiter bezeichnen wir δB als den Rand von B, der alle Punkte enthält, bei denen die Fräse, bei Platzierung auf diesen Punkten, den Rand berühren würden (vgl Abbildung 10) und können die Länge von δB als |δB| bezeichnen. |δB| ist aber gerade eine untere Schranke für |Topt |. Zu beachten bleibt dabei, dass sich δB aus mehreren Teilen zusammensetzen kann, wenn die Region Löcher enthält. Wir bezeichnen RδB als die Region die schon gefräst wurde, wenn die Fräse δB entlang fährt. Wie schon erwähnt, kann sich RδB aus mehreren Teilen zusammensetzen, wenn R Löcher enthält. Wenn R \ RδB nicht leer ist, dann gibt es noch Fläche die noch nicht gefräst wurde und wir können diese mit horizontalen Streifen (Strip Lines) Si mit vertikaler Breite 1 und disjunktem Inneren bedecken (vgl. Abbildung 10). Jeder dieser Streifen hat dabei eine Mittellinie und jeder Streifen liegt nur innerhalb von R. So benötigen wir mindestens die Länge der Summe aller Streifenlängen, d.h. Lstr = s P LSi i=1 um die Region R komplett zu fräsen, entspricht höchstens |Topt |. Schauen wir uns die Menge der Endpunkte der Mittellinen der Streifen an, dann stellen wir fest, dass es sich dabei um eine Menge mit gerader Anzahl hält. Nehmen wir auf der Grenze δB nur jeden zweiten Punkt dieser Menge, dann können wir die Menge der Endpunkte in zwei disjunkte Mengen M1 (δB) und M2 (δB) unterteilen. Dadurch dass wir einen Mäher mit Radius 1 haben überdecken wir gleich 2 Streifen und können bei einer ZickZack-Tour jeden zweiten Endpunkt überspringen. M ∗ (δB) ist das bessere Matching mit Länge |M ∗ (δB)|. Da wir den ganzen Weg δB mit |Topt | abgeschätzt haben und wir nun das bessere Matching nehmen (im worst case genau die Hälfte) folgt: |M ∗ (δB)| ≤ Lδ B 2 ≤ |Topt 2 Unsere Tour setzt sich also aus folgenden drei Teilen zusammen. Erstens sind wir einmal den Rand abgefahren um zu gewährleisten, dass dort auch wirklich jeder Punkt gefräst wurde, denn gerade die Tour M ∗ (δB) fräst nicht die ganze Region RδB (vgl. Abbildung 11). Die Tour |δB| haben wir mit 11 Abbildung 11: Sollte der Rand von R abgefahren werden durch die Fräse, so entstehen diese Lücken O. |Topt | als obere Schranke abgeschätzt. Als zweites brauchten wir die Tour, die den Innenraum des Polygons fräst. Lstr haben wir ebenfalls mit |Topt | als obere Schranke abgeschätzt. Zusätzlich um die Streifen zu verbinden haben wir noch das bessere Matching der Mengen M1 (δB) und M2 (δB) genommen |T und mit 2opt als obere Schranke abgeschätzt. Dies bringt uns in der Summe zu einer Approximation von 2.5 ∗ |Topt |. Damit ist aber noch nicht gezeigt, dass es sich auch wirklich um eine Tour handelt, die nicht noch einmal neu ansetzen muss oder einen Weg doppelt geht. Betrachten wir also einmal den Graphen, der aus den Endpunkten der Mittellinen der Streifen und den Punkten, wo eine solche Linie δB berührt besteht. Diese Punkte/Knoten haben den Grad 4 (vgl. Abbildung 11), denn die Mittellinie eines Streifens geht von da aus weg, δB geht durch den Punkt und M ∗ (δB) geht von dort aus weg. Daraus folgt dass wir eine Euler Tour haben und wir daraus eine berechenbare Fräse-Tour generieren können, die nicht länger als 2.5 ∗ |Topt | ist. 2 5 TSP auf dem Gitterpraph Nachdem wir eine 2.5-Approximation des Fräse-Problems kennengelernt haben, zeigen wir eine weitere Approximation für einen Spezialfall dessen. Nehmen wir als Werkzeug ein Einheitsquadrat an, das achsenparallele Bewegungen machen darf. Weiterhin sei die Region R einfach mit nur rechtwinkligen 12 Kanten, deren Punkte auf dem Mittelpunkten der Flächen liegen. Wie man feststellen kann, ist das Fräse-Problem in diesem Fall äquivalent zu dem Problem, eine optimale TSP Tour auf dem Gittergraph G zu finden, der sich zusammensetzt aus den Knoten bzw. Mittelpunkten derjenigen Zellen, die R bedecken. Definition 7 Ein Knoten v auf einem Gittergraph G heisst Schnittknoten, wenn beim entfernen von v der Graph G nicht mehr zusammenhängend ist. Für die weiteren Berechnungen setzen wir voraus, dass G keine solche Schnittknoten hat. Dies können wir tun, denn sollte G einen solchen Knoten v haben, dann können wir das Approximationsproblem zerlegen, indem wir für jede Komponente die wir erhalten, wenn wir v entfernen, das Problem lösen und dann die Touren zusammensetzen. Ntafos [4] hatte dieses Problem bereits behandelt und eine 43 -Approximation vorgestellt, auch unter der Annahme, dass keine Schnittknoten existieren. Wir wollen jetzt in dem nächsten Abschnitt diese Approximation auf 65 verbessern, was uns zu folgendem Theorem führt. Theorem 8 Sei G ein einfacher Gittergraph, mit der Knotenmenge V , die die Mittelpunkte der Zellen sind, welche ein einfaches rechtwinkliges Polygon R mit n Kanten beschreiben und sei N die Anzahl von V . Wir setzen voraus, dass G keine Schnittknoten hat. In Zeit O(n) kann eine Tour gefunden werden, die alle N Knoten von G besucht und maximal 6N5−4 lang ist. Abbildung 12: Hier sieht man die Kontur und ein Beispiel für einen Flaschenhals. Für den Beweis teilen wir die Knoten V in zwei Teile, nämlich die Zellen VI , die innerhalb von R liegen und die Zellen VB , die auf einer oder mehreren Seiten den Rand von R berühren. 13 Definition 9 Existiert ein Gittergraph G zu einer Region R ohne Schnittknoten und sei VB die Menge der Knoten deren Zellenränder den Rand von R berühren, dann gibt es einen einfachen Zyklus, der die Menge VB abfährt und jeden Knoten genau einmal besucht. Einen solchen Zyklus nennen wir Kontur von G (vgl. Abbildung 12). Definition 10 Wir sprechen von einem Flaschenhals, wenn zwei Kanten e und f von der Kontur C (1) parallel sind und den Abstand 1 haben und (2) es keine Kante g gibt so dass e, g und f einen Teilpfad der Länge 3 bilden (vgl. Abbildung 12). Abbildung 13: Die Aufteilung von G an der Stelle des Flaschenhalses. Um in unserem Beweis fortzufahren zeigen wir erst, dass es ausreicht nur den Fall ohne Flaschenhälse zu betrachten. Dazu beweisen wir folgendes Lemma. Lemma 11 Betrachten wir einen einfachen Gittergraphen G mit N Ecken, der keinerlei Schnittknoten hat. Wenn wir annehmen, dass eine Tour, für jeglichen Gittergraphen ohne Flaschenhälse existiert, die maximal 6N5−4 lang ist, und dass jeder Knoten von Grad 2 mit seinen Nachbarn verbunden ist, dann können wir auch eine Tour dieser Länge für einen einfachen Gittergraphen ohne Schnittknoten in der jeder Knoten mit Grad 2 ist mit seinen Nachbarn verbunden ist. Beweis. Das Lemma lässt sich mit Hilfe einer Induktion über die Anzahl an Flaschenhälsen beweisen. Seien e = (v1 , v2 ) und f = (v3 , v4 ) zwei Kanten, die einen Flaschenhals bilden, der G in die beiden Teilgraphen G1 und G2 zerlegt. G1 beinhaltet dabei N1 und G2 N2 viele Knoten. Daraus ergibt sich, 14 dass die komplette Anzahl an Knoten N = N1 + N2 + 4 ist (vgl. Abbildung 13). Wir können somit G in folgende beiden Teile zerlegen: H1 bestehend aus G1 , v1 , v2 ,v3 ,v4 und H2 bestehend aus G2 , v1 ,v2 ,v3 , v4 . In H1 sind jetzt allerdings die Knoten v2 und v4 wieder von Grad 2 genau wie in H2 die Knoten v1 und v3 . Daraus folgt, dass wir eine Tour für H1 haben, die aus dem Pfad π1 von v1 bis v3 und den Kanten (v2 , v4 ), e und f besteht und die Länge 6(N1 +4)−4 = 5 6N1 +20 hat. Gleiches gilt für eine Tour für H bestehend aus dem Pfad π 2 2 5 von v2 nach v4 und den Kanten (v1 , v3 ), e und f . Betrachtet man nun die Tour die sich aus π1 , π2 , e und f zusammensetzt, dann sieht man dass dies eine Tour für G ist in der alle Knoten von Grad 2 mit ihren Nachbarn verbunden sind und man spart dabei noch 4 Kanten im Vergleich zu den beiden einzelnen Touren. Es ergibt sich also eine resultierende Länge von maximal : (6N1 +20)+(6N2 +20) 5 −4= 6(N1 +N2 +4)−4 5 = 6N −4 5 2 Wir können also nun für den Rest des Beweises von Theorem 5 annehmen, dass wir keine Flaschenhälse haben. Kommen wir also zur Konstruktion einer Tour die wir mit 65 N Kanten abschätzen können. Die Idee besteht darin, dass die Kontur C entlanggelaufen wird und bei bestimmten Ereignissen ein ’Abstecher’ in das Innere gemacht wird. Wir werden sehen, dass wir nie mehr als einen Knoten pro 5 Knoten doppelt besuchen werden. Das Ziel ist es also so wenig wie möglich Kanten zu verwenden. Klar ist auch dass N ≤ |Topt |. Da wir uns im Gittergraphen bewegen, liegen die inneren Knoten VI auf ganzzahligen y-Koordinaten. Wir zerlegen weiterhin die Menge VI in kleinere Mengen, die aus den Knoten bestehen, die eine Doppelreihe GjI bilden. D.h. alle Knoten mit der Y-Koordinate 2j und 2j + 1 liegen dabei auf so einer Doppelreihe. Betrachten wir eine solche Doppelreihe, dann stellen wir fest, dass jede vertikale Reihe entweder 0, 1 oder 2 innere Knoten hat. Beachte, dass die Knoten von VB , die auf der Kontur liegen, keine inneren Knoten sind. Wir sprechen in diesem Zusammenhang von einer leeren Spalte, wenn kein innerer Knoten in der Spalte ist oder von einem Einfachspalte (ein innerer Knoten) oder einer Doppelspalte (2 innere Knoten). Nun gibt es eine Reihe von Modifikationen die wir an unserer bestehenden Tour C (Kontur) vornehmen werden, um alle Knoten V zu besuchen. Diese Tour nennen wir C 0 . Wir behalten die Invariante bei, dass C 0 eine geschlossene Tour sein muss. Initial ist C 0 = C. Sollte C 0 alle Knoten V besucht haben, so ist 15 C 0 = T unsere resultierende Tour. Des Weiteren bezeichnet VI0 die Menge aller inneren Knoten, die noch nicht besucht wurden. Definition 12 Eine Modifikation einer Kontur C 0 heisst frei, wenn durch die Modifikation keine Doppelbesuche von Knoten entstehen. Es gibt zwei Arten von Modifikationen, die frei sind. Beachte, dass die Modifikationen jeweils nur an Doppelreihen durchgeführt werden. Abbildung 14: Die beiden Möglichkeiten einer freien Modifikation. (I) Wenn eine leere Spalte eine Doppelspalte als Nachbarn hat und die Knoten der Doppelspalte über eine Kante (u, v) verbunden sind, modifziere die Tour indem die Kante (u, v) gelöscht wird und anstelle dessen der Umweg von u über die beiden inneren Knoten aus VI0 hin zu v als neue Kanten in C 0 eingeführt werden. Dieser Vorgang kann so lange durchgereicht werden, bis keine leeren Spalten mehr Nachbarn von C 0 in dieser Doppelreihe sind (vgl Abbildung 14(I)). (2) Wenn 2 benachbarte Einfachspalten einen inneren Knoten von VI0 in derselben Zeile haben und es eine Kante (u, v) gibt die die beiden Knoten die bereits zu C 0 gehören verbindet, dann löschen wir die Kante (u, v) und gehen wieder den Umweg von u über die beiden inneren Knoten zu v. Auch dieser Vorgang kann fortgesetzt werden, bis kein solcher Fall mehr in dieser Doppelreihe auftritt (vgl. Abbildung 14(II)). Wir führen diese beiden freien Modifikationen so lange durch, bis wir keine solche mehr durchführen können. Sollte die Menge VI0 jetzt leer sein, so sind wir fertig. Ist dem nicht so, so haben wir noch keine fertige Tour C 0 die auch alle inneren VI0 besucht. VI0 zerfällt dabei in mehrere Zusammenhangskomponenten H die wir für die einzelnen Doppelreihen GjI (den Doppelreihen) separat betrachten und für die folgende Bedingungen gelten: 1. Es kann keine Doppelspalte aus H mit einer vertikalen Kante von C 0 benachbart sein. 2. Es gibt keine drei aufeinander folgende Einfachspalten, die den inneren Knoten aus VI0 in derselben Zeile haben. 16 3. Die einzige Möglichkeit in der H zwei aufeinander folgende Einfachspalten haben darf, ist wenn H nur eine einzige horizontale Kante besitzt und diese die beiden Knoten aus den Einfachspalten verbindet. Bis jetzt haben wir also für jeden Knoten aus V genau eine Kante eingefügt. Es gibt jetzt aber noch 6 weitere Fälle, die auftreten können, wenn wir die beiden freien Modifikationen durchgeführt haben. Bei denen kommt es allerdings zu Doppelbesuchen von Knoten, wobei wir nie mehr als einen Knoten pro 5 Knoten doppelt besuchen werden: Abbildung 15: Weitere Fälle für die Modifikation von C 0 . (a) H besteht aus einem einzigen Knoten aus VI0 . In diesem Fall müssen 5 Knoten aus C 0 in der Nachbarschaft von jenem Knoten aus H liegen. Wir verbinden also diesen Knoten aus H mit einem beliebigen Nachbarknoten mit Hin- und Rückweg und haben somit einen Knoten doppelt besucht. Demnach haben wir für 6 Knoten einen doppelt besucht und sind immer noch besser als unser gewünschtes Ergebnis (vgl. Abbildung 15(a)). 17 (b) H besteht aus 2 horizontal benachbarten Knoten. Die Knoten von C 0 in diesen beiden Einfachspalten können keine gemeinsame Kante haben, da wir sonst hier schon eine freie Modifikation vorgenommen hätten. Diese beiden Knoten haben also eine vertikale Kante in entgegengesetzter Richtung zu H und die beiden Endpunkte sind wiederum verbunden, da wir vorausgesetzt haben, dass es keine Flaschenhälse gibt, und somit auf C 0 (vgl. Abbildung 15(b)). Wir modifizieren also C 0 so, dass die beiden Knoten aus H miteinander verbunden werden (Hin und Rückweg) und einer der beiden mit einem Knoten aus C 0 in derselben Zeile verbunden wird (Hin und Rückweg). Wir haben also bei 10 Knoten 2 doppelt besucht, dementsprechend bei 5 Knoten einen. (c) H besteht nur aus Doppelspalten. Um diese Knoten zur Tour C 0 hinzuzufügen verbinden wir alle Knoten aus H zu einem Zyklus und verbinden dann einen beliebigen Knoten aus H der eine Kantenlänge von C 0 entfernt ist mit C 0 durch Hinzufügen einer Hin- und einer Rückkante (vgl. Abbildung 15(c)). (d) H besteht aus einer oder mehreren Doppelspalten und genau einer Einfachspalte. Die Tour wird so modifiziert, dass wir aus den Knoten aus H und dem Knoten aus C 0 der auf der Einfachspalte liegt einen Zyklus bauen (vgl. Abbildung 15(d)). (e) H besteht aus einer oder mehreren Doppelspalten und genau zwei Einfachspalten dessen Knoten in derselben Zeile liegen. Verbinde alle Knoten aus H, außer einem der beiden aus den Einfachspalten mit dem Knoten aus C 0 der in der Einfachspalte liegt, von dem Knoten, den wir mitverbinden wollen, zu einem Zyklus. Der noch nicht verbundene Knoten wird mittels Hin- und Rückkante mit dem Zyklus verbunden (vgl. Abbildung 15(e)). (f) H besteht aus einer oder mehreren Doppelspalten und genau einer Einfachspalte dessen Knoten auf unterschiedlichen Zeilen liegen. Modifiziere genau wie bei (e)(vgl. Abbildung 15(f)). Bei keinem dieser Fälle haben wir mehr Knoten doppelt besucht als bei (b) also pro 5 Knoten genau einen. Daraus folgt, dass wir 56 N Kanten haben. Um Lemma 5 abzuschliessen sind wir aber noch nicht ganz fertig. Wir müssen noch zeigen, dass wir für 4 Knoten keine Kante verschwenden um 6N −4 zu erhalten. Dabei betrachten wir die Unterteilung in oben erwähnte 5 Doppelreihen. Dabei kann man entweder oben anfangen die Knotenreihen in Doppelreihen zu unterteilen oder unten. Im schlechtesten Fall kommt eine Konstellation zustande, in der mindestens 3 Knoten aus VB als Rand ganz unten oder ganz oben liegen, je nachdem wie man unterteilt hat. Dies kommt daher, da wir angenommen haben, dass es keine Flaschenhälse gibt. Weiterhin bildet die Doppelreihe über dieser Zeile eine Doppelreihe vom 18 Fall (a)(vgl. Abbildung 16). In diesem Fall haben wir für 6 Knoten einen Knoten doppelt besucht. Wenn wir die Approximation von 65 nehmen, dann haben wir zusätzlich noch einen Knoten der nicht mehr doppelt besucht werden muss. Zusammen mit den 3 Knoten vom Rand haben wir in diesem schlechtesten Fall 4 Knoten die wir definitiv nicht doppelt besuchen müssen oder in einem weiteren Fall eine Rolle spielen. Wir können somit die −4 aus dem Nenner wieder streichen und erhalten letztendlich den Approximationsfaktor von 56 N . Abbildung 16: Die beiden oberen Zeilen bilden den Fall (a) wobei der Knoten unten links nie mehr besucht wird, wie die drei in der untersten Zeile. 6 Zusammenfassung In dieser Ausarbeitung wurden Algorithmen vorgestellt, die Approximationen für entweder das Rasenmäher-Problem oder das Fräse-Problem liefern. Wir haben gezeigt dass für das Rasenmäher-Problem eine Approximation von (3 + ) und für das Fräse-Problem eine 2.5-Approximation möglich ist. Des Weiteren haben wir einen Spezialfall des Fräse-Problems betrachtet und dafür eine Approximation von 65 N geliefert. 19 Literatur [1] E. M. Arkin, S. P. Fekete, and J. S. B. Mitchell. Approximation algorithms for lawn mowing and milling. Comput. Geom. Theory Appl., 17:25–50, 2000. [2] S. Arora. Nearly linear time approximation schemes for Euclidean TSP and other geometric problems. In Proc. 38th Annu. IEEE Sympos. Found. Comput. Sci., pages 554–563, 1997. [3] S. P. Fekete and W. R. Pulleyblank. Traveling the boundary of minkowski sums. Inform. Process. Lett., 66:171–174, 1998. [4] S. Ntafos. Watchman routes under limited visibility. Comput. Geom. Theory Appl., 1(3):149–170, 1992. [5] S. B. Rao and W. D. Smith. Approximating geometrical graphs via “spanners” and “banyans”. In Proc. 30th Annu. ACM Sympos. Theory Comput., pages 540–550, 1998. 20