Approximationsalgorithmen für eine `Rasenmäher-`

Werbung
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
Herunterladen