So, guten Morgen. Wir beschäftigen uns mit der algorithmischen Geometrie
. Und zwar ganz konkret mit der Berechnung des Wochenneudiagramms.
Ich habe ihn in der letzten Vorlesung schon gezeigt, worum es geht.
Wir haben eine Menge von Pumpen, die hier durch diese
Person repräsentiert werden. Und das Ziel unseres Algorithmus ist es,
den Raum, also in diesem Fall die Fläche hier,
so in Regionen aufzuteilen,
dass die Punkte nächster Nachbarn jedenfalls jeweils zugeordnet sind zu einem
der Endpunkte,
der einen Personen
Die quasi die Eingabe darstellen. Wir haben schon
eine Reihe von Eigenschaften gesehen, die diese Wohneudiagramme haben.
Also hier nochmal ein Beispiel mit Punkten, sechs Punkte.
Das sind die entsprechenden Niveau neu. Regionen und das Wurrneue Diagramm,
was wir sehen, was aus diesen Linien hier besteht.
Und wir sehen, dass die Aufteilung des Raums genau so erfolgt ist,
dass wir in jeder Zelle hier schauen können.
Und das sind genau die Punkte,
die am dichtesten an diesem Punkt
sind in Bezug
Zu den anderen Punkten hier. Wie entstehen diese Wochen
neue Regionen? Das ist ganz einfach für jeden Punkt,
den wir hier haben, können wir alle anderen Punkte betrachten,
für jeden weiteren anderen Punkt kommen wir jeweils eine Halbebene beschreiben.
Und diese Halbebene besagt, welche Punkte näher an P1 sind
als an P2, beziehungsweise umgekehrt.
Und die Worenoregion zu einem Punkt P ist dann nichts weiter
als der Schnitt all dieser Halbebenen.
Also alles, was immer näher an diesem Punkt ist,
als an den entsprechenden anderen.
Und davon bilden wir einfach nur den Schnitt.
Okay, so sieht das aus und dann entstehen entsprechend
diese Worenoregionen
Wenn wir jetzt ein Wohn-Neudiagramm berechnen wollen,
werden wir das natürlich nicht tun, indem wir diese ganzen Halbebenen schneiden,
sondern wir wollen quasi diese Art von Graf,
also diesen geometrischen Graf hier konstruieren, mit irgendwelchen Schnittpunkten,
da, wo solche Liniensegmente aneinander stoßen und dann den entsprechenden Kanten,
wo zwei Wohn-Neuregionen hier aneinander stoßen.
Das würden wir gerne berechnen. Diese Topologie. Gut,
dazu haben wir auch schon gesehen,
welche Eigenschaften diese Elemente, dieses Grafen haben,
also der besteht jetzt aus den Wohn-Neurekanten und den Wochen
neue Knoten
Und eine ganz wichtige Eigenschaft der Woche neu kannten, ist,
dass alle Punkte, die hier auf diesem Liniensegment liegen,
gleichweit entfernt sind von zwei Punkten P1 und P2. Okay, so.
Und was natürlich noch hinzukommen darf, ist, dass diese Punkte,
wenn sie dann tatsächlich im Woche neue Diagramme erscheinen,
nicht näher an einem dritten Punkt P3 liegen dürfen.
Sonst würden wir die entsprechend hier nicht sehen. Okay,
so, irgendwann hören dann diese Liniensegmente auf und
sie stoßen dann an so einem Schnittpunkt von mehreren,
in unserem Fall eigentlich immer drei Liniensegmenten.
Und dieser Punkt Hier, dieser Schnittpunkt, der hat jetzt die Eigenschaft,
dass dieser Punkt von drei Punkten gleichweit entfernt ist.
Deswegen treffen hier entsprechend die drei Schnittliniensegmente aufeinander. Und er
hat zudem die Eigenschaft, dass in dem entsprechenden umschließenden Kreis,
den wir hier sehen, kein weiterer Punkt enthalten sein darf.
Weil wenn hier jetzt noch ein weiterer Punkt wäre,
dann wäre der ja näher dran, als P1, P2, P3.
Und dann könnte dieser Punkt eben nicht an die Eckpunkte
oder an die Wohneuregion von P1, P2,
P3 grenzen
Deswegen diese Eigenschaft, dass der umschließende Kreis von den drei Punkten P1,
P2, IP3, keinen weiteren Punkt mehr enthalten darf.
Und dann entsteht genau hier im Mittelpunkt dieses Kreises
so ein Wochenneuknoten. Diese Eigenschaft mit dem umschließenden Kreis,
die wird im folgenden noch relativ wichtig.
So, dann, das haben wir auch schon gesehen,
gibt es einen Bezug zwischen wo Neudiagrammen und Konvechsen, Hüllen.
Wir sehen, dass diese worenneue Regionen in den Worenneudiagrammen
entweder geschlossen oder offen sein kann.
Das ist also eine geschlossene worenneue Region hier,
um den Punkt
Während zum Beispiel P2 hier eine offene Woche neue Region hat,
das geht hier so hoch, und das geht in diese Richtung weiter nach unendlich.
Wenn so eine Wocheneuregion offen ist, dann bedeutet das ja,
dass hier oben kein weiterer Punkt ist,
der näher an dem Raum hier liegt, als dieser Punkt P2.
Und man kann recht einfach zeigen, dass die Punkte,
die offene Wocheneuregion haben, genau die Punkte sind,
die auf der kondexen Höhle der Punktmenge liegen.
Also man sieht hier P2, P6,
P5 und was ist das hier, P4,
die bilden die Kondexe Hülle und gleichzeitig sind das auch die Punkte mit den offenen Worneu-Regionen.
Und wenn man sich überlegt, wie das zustande kommt,
man kann sich einfach mal überlegen,
man verschiebt ja immer so einen Punkt und überlegt dann, was passiert.
Ja, und wenn der Punkt hier auf dieses trennende Linie-Segment,
also auf diese Kante von der konvexen Hülle trifft,
in dem Augenblick gibt es zwei Kantenparallele oder zwei parallele Kanten,
die dann entsprechend P6 von P1 und P1 von P2 trennen würden,
der rutscht hier so langsam hoch.
Und dann würde, in diesem Augenblick würde sich dann die diese Wochenneuzelle öffnen.
Also solange der hier noch drunter liegt, hätten wir hier
zwei so Spitzekanten, die so laufen wie diese beiden hier.
Je weiter P1 hier hochwandern würde,
umso spitzer würde dieses Dreieck immer weiter nach oben rauswandern.
Und wenn P1 hier diese Linie durchdringt,
dann wird es Teil der konvexen Hülle.
Und dann öffnet sich eben auch die Wochenneuzelle in Erinnerung.
Okay, gut, das hatten wir auch schon gesehen in der letzten Vorlesung.
Und das Nächste, was wir uns dann angeschaut haben,
ist die Größe von Wochenneudiagramm.
Das haben wir
schon gemacht, oder
Nein, oh, aber das hatten wir schon gemacht, oder?
Okay, gut, ich weiß nicht ganz genau, wann.
Okay, der nächste Punkt ist jetzt, wie groß ist
so ein Waren-Neudiagramm? Weil das ist natürlich das Erste,
was wir uns überlegen müssen, wenn wir das berechnen,
dann ist natürlich immer die Frage, wie groß ist die Ausgabe,
weil das ist schon mal eine Schranke für die Laufzeit, die wir überhaupt erreichen können.
Und hier können wir die Anzahl der Knoten und Kanten in dem Wohnneudiagramm relativ gut abschätzen. Da hilft uns ein Theorie von Herrn Euler,
der sehr ähnliche Fragestellungen schon einmal betrachtet hat,
was man zeigen kann, ist,
wenn wir jetzt also so ein Warneu-Diagramm haben als sein Graf mit Knoten und Kanten,
ja, Kanten sind dann die Liniensegmente,
Knoten diese Schnittpunkte, dann können wir zeigen,
wenn wir also eine Punktmenge P haben mit mindestens drei,
mit mindestens drei, vier,
mit mindestens drei Punkten,
dann ist die Anzahl der Knoten in dem Wochenneudiagramm beschränkt durch zweimal Betrag von P minus fünf und die Anzahl der Kanten ist beschränkt durch dreimal Anzahlpunkte minus sechs.
Wie kann man das herleiten, der Grundlage davon ist Eulers Formel.
Euler hat eine Formel angegeben und hat gezeigt, dass in Planaren Grafen,
also wenn man eine Fläche nimmt und sozusagen so Regionen umkreist,
zeichnet, dann gibt es eine Beziehung zwischen der Anzahl der Knoten,
also da, wo so Grenzlinien aufeinander stoßen,
der Anzahl der Kanten, also Grenze, in denen man hat und der Anzahl der Facetten.
Also Facetten ist das, was man umschließt mit einem Kantenzug.
Nach Eulers Formel gilt dann das MV,
also Anzahl Knoten minus ME, Anzahl Kanten plus Anzahl Facetten
, gleich zwei sein muss
So, Eulers Formel, wenn man die erstmal hier so sieht,
dann kann man die relativ leicht auch beweisen mit Induktionsbeweisen.
Man kann sich auch schnell überlegen, dass das gilt.
Also wenn ich zum Beispiel eine Kante hinzufüge, ja,
dann würde ich ja eine Facette teilen in zwei Facetten und
dann erhöht sich also die Anzahl der Facetten um eins und dann
hebt sich das gerade wieder auf, ja.
Und auf diese Art und Weise kann man Induktionsbeweis konstruieren.
Das ist was,
was man typischerweise irgendwann mal in der Mathematik macht,
wenn man sich mit solchen Beweisen beschäftigt und mit dem man
genau diese Formel hier zeigt
So, das hat natürlich sehr viel mit Wochen neue Diagrammen
zu tun, weil wir haben genauso eine Konstruktion.
Wir haben so ein Bild mit entsprechenden Facetten. Das sind
die Regionen, die so um einen der Punkte liegen.
Wir haben die Kanten, das sind hier die Bekannten im Wohnneudiagramm,
die Facetten voneinander trennen. Und wir haben die Knoten,
das sind eben genau auch die Knoten hier in dem Wohnneudiagramm, wo drei Kanten aufeinanderstoßen.
Ja, das Ganze passt nicht ganz, weil,
also hier, das sind die Eckpunkte plus diesen V unendlich,
also einer mehr, als die, die wir im Wohnneudiagramm haben.
Die Anzahl erkannten in dem Diagramm,
entspricht der Anzahl der Kanten im Wohn neue Diagramm,
die sind ja nur hier so verlängert nach unendlich.
Und die Anzahl der Facetten, die wir haben,
entspricht gerade der Anzahl der Punkte,
weil wir in jeder Facette genau einen der Punkte stehen haben.
So, und dann wissen wir, mit dem Handshake-Lemmer,
dass zweimal die Anzahl der Kanten nichts weiter ist als die Summe der Knoten gerade.
Ja, also wenn wir jedem Knoten nehmen und den Grad bestimmen,
das alles aufverdieren, dann kriegen wir gerade,
zählen wir jede Kante genau zweimal.
Das haben wir schon häufig benutzt in dieser Vorlesung als Kriterium.
Und wenn wir wissen, dass jeder Knoten mindestens mal
Grad drei hat, dann ist das größer,
gleich dreimal Betrag von
Plus 1. So, damit haben wir eine Beziehung zwischen
der Anzahl der Kanten und der Anzahl der Knoten.
Und die müssen wir jetzt nur noch hier oben einsetzen in
diese Gleichung und das entsprechend umformen.
Und wenn wir das machen, dann ergibt sich diese Gleichung hier.
Ja, also wir setzen das einfach nur ein.
Und das können wir auflösen. Und wenn sie das auflösen,
dann steht da genau diese Formel. Da steht da,
dass die Anzahl der Knoten, kleiner gleich zweimal Betrag von P minus 5 ist.
Also müssen wir das nur noch hier nach V auflösen.
Okay, oder nach E können sie sich aussuchen.
Dann kommen entsprechend diese beiden Gleichungen daraus
So, das ist schon mal eine sehr gute Nachricht. Das bedeutet nämlich,
dass die Größe des Wochen neue Diagramms ausgehend von der Eingabe unseres Problems,
nämlich der Anzahl der Punkte, linear ist.
Ja, also das heißt, wir brauchen nicht,
müssen nicht erwarten, dass wir jetzt irgendwie eine riesige,
ein riesiges Diagramm erzeugen.
Wenn Sie zum Beispiel mal an das allererste Problem denken,
was wir in der algorithmischen Geometrie angeschaut haben,
so ein einfaches Schnittproblem, da galt das nicht.
Also da hatten wir schon die Situation,
dass bis zu N-Quadrat viele Schnitte entstehen könnten.
Ja, also wo wir sehen, da ist die Ausgabe
von vornherein relativ groß. Hier ist sie überschaubar.
Es ist also linear mit der Eingabe
So, wie können wir ein Wohneudiagramm dann am Ende speichern?
Also wir müssen es ja irgendwie so ablegen. Das ist mehr
jetzt so eine praktische Erwägung, wie man das macht.
Kann man sich Gedanken darüber machen, wie man es genau macht,
so eine typische Beschreibung, sind solche doppelt verketteten Kantenlisten?
Man muss sich überlegen, wie greift man auf dieses Wohneudiagramm zu?
Und typischerweise macht man natürlich, dass man hier an Knoten schaut,
welche Kanten gehen da ab? Also eine typische sowas wie Adjazenz-Listen,
was man aber ganz häufig braucht, ist,
dass man hier diese Facetten umläuft,
um sie zu beschreiben und die Region entsprechend zu beschreiben
Deswegen baut man so eine Datenstruktur, die entsprechende Kanten hat,
die gehen von einem Anfangsknoten zu einem Endknoten,
also von V nach V. Strich zum Beispiel.
Und zu so einer Kante merkt man sich dann
einen Verweis auf die Fläche, die links davon liegt.
Also hier oben, die Fläche, Fläche F und die Fläche,
die rechts davon liegt, das ist die Fläche F-Strich.
Und die Kanten verkettet man dann doppelt,
also doppelte Verkettung ist hier nicht mit vorwärts und rückwärts gemeint,
sondern mit zwei weiteren Zeigern, indem man dann zum einen sagt,
was ist denn die nächste Kassente,
wenn wir die Facette F umlaufen?
Der Umlaufsinn bleibt dann gleich, das heißt,
dann laufen wir hier so rum
Das wäre dann E1. Und was ist dann die nächste Kante,
die wir brauchen, wenn wir die Facette F-Strich durchlaufen?
Und das wäre von FV-Strich ausgesehen wie Kante E2.
Und dann verkettet man die entsprechend und hat dann eine Dahnenstruktur,
mit der man das Wohnen-Neudiagramm hervorragend abspeichern kann.
Da kann man dann also entsprechend die Facetten umlaufen und kennt
dann genau die geometrische Struktur.
Ja, also das ist so im Groben die Datenstrukturen,
die man verwendet, um woreneue Diagramme zu beschreiben.
So, zum Algorithmus, ich werde ihn ganz grob
nur ein Algorithmus zeigen,
der die Wohnneudiagramme berechnet
Wir werden dann die Wohnneudiagramme einen kurzen Augenblick zur Seite legen
und werden danach indirekt ein wesentlich besseres Verfahren sehen,
mit dem wir die Wochenneudiagramme bestimmen können.
Also ein Algorithmus, der Wohnneudiagramme direkt berechnen kann,
ist ein Divide-and-Konka-Verfahren. Und ja, das funktioniert wie folgt.
Wir nehmen also unsere Punktmenge hier und wir teilen die,
wir teilen die Punktmenge in eine linke und eine rechte Hälfte,
so wie man das beim Devide-and-Konka-Verfahren erwarten würde.
Das ist so ungefähr die gleiche Anzahl Punkte links und recht sind.
Dann, die White and Conquer, würden wir von dieser
halbierten Punktemenge auf der linken und rechten Seite jeweils das worenneue Diagramm berechnen.
Das wäre hier also das rote Diagramm für die drei Punkte auf
der linken Seite und das grüne Diagramm für die drei Punkte auf der rechten Seite.
Und im Anschluss kommt dann der Merging-Schritt bei die White and Conquer,
der quasi diese beiden Diagramme zusammenbauen muss.
Der entscheidende Schritt ist natürlich dann dieses Merging,
also wie kann man dann aus diesen zwei Diagrammen ein Diagramm machen?
Und die Art und Weise, wie das geht,
ist wie was man feststellen kann, ist,
dass wenn man diese Teildiagramme so generiert, wie wir die gesehen haben,
dann gibt es einen sogenannten monoton fallenden Kantenzug.
Das ist die blaue Linie hier. Die schneidet quasi die unendlichen Facetten,
also die, die hier nach unendlich weitergehen,
auf der Seite in der Nähe dieser Schnittlinie ab.
Und zwar so, dass sie genau die trennenden Linie von diesen Punkten ergeben.
Also diese beiden Punkte hier erzeugen dieses Liniensegment,
diese beiden Punkte dann dieses, diese beiden Punkte,
dieses, diese beiden, dieses.
Und dann kommt das Stück hier runter
So, dieser Linienzug, von dem kann man zeigen,
dass der monoton fallend ist, ja, und dass man den berechnen kann,
indem man quasi die wochenneue Diagramme umläuft, indem man quasi die konvexen Hüllen,
die Punkte auf den konvexen Hüllen entlangläuft, ja,
kann man den entsprechend bestimmen.
Also das Ganze, die weiterhin Konka-Verfahren sieht dann so aus,
wir haben also eine Menge P von N-Punkten in der Ebene,
wir haben einen Teilungsschritt, das heißt,
wir teilen P durch eine vertikale Trennlinie in zwei etwa gleich große Teilmengen,
P1 und P2, die einen sind links,
die anderen sind rechts, Dann rufen wir das Verfahren rekusiv auf.
Und das machen wir so lange, bis wir nur noch drei Punkte haben.
Bei drei Punkten erzeugen wir einfach das Boroneue Diagramm.
Das können wir direkt berechnen. Wir müssen ja
nur den umschließenden Kreis bestimmen von drei Punkten.
Dann kennen wir den Mittelpunkt und dann die drei Liniensegmente.
Wenn wir das getan haben, dann kriegen wir zwei Wochen Neudiagramme rekusiv zurück.
Also es wäre dann hier dieses Grüne und das Rote.
Und jetzt kommt der Merging Schritt. Und das ist das
Schwierige an diesem Algorithmus. Wir müssen jetzt diesen trennenden Kantenzug
berechnen, der entsteht, wenn man diese beiden Punktmengen zusammenfügt
Wie gesagt, macht man das, indem man entlang der
Punkte bezüglich ihres Umlaufsinns läuft, die konvexe Hülle bilden,
weil nur die können an diesem Kantenzug beteiligt sein.
Und wenn man den dann berechnet hat,
indem man sozusagen immer die linken und rechten Punktmenge weiterverfolgt hat,
kann man dann entsprechend das Woren-Neudiagramm zusammensetzen,
dann schneidet man alles,
was rechts von dem Kantenzug ist und zu P1 gehört ab und alles,
was links von diesem Kantenzug liegt und zu P2 gehört,
da schneidet man auch ab und dann fügt man alles zusammen
und kriegt das Woren-Neudiagramm der gesamten Punktmenge
Okay, das kann man sich wahrscheinlich so, hoffe ich mal,
inhaltlich ganz gut vorstellen, wie das irgendwie funktioniert.
Wir sehen aber auch, also mit einem gewissen geübten Auge,
wenn man sich da sofort vorstellt, okay,
jetzt müsste ich das mal programmieren, so ganz so trivial wird das nicht.
Ja, also die müssen natürlich erstmal noch beweisen,
dass es diesen vor allen Dingen Kanten so gibt und so,
aber unabhängig davon, wenn es dann an die Realisierung geht,
dann wird das schon ganz schön schwierig.
Also wir müssen irgendwie die Datenstruktur füllen für dieses Wurr-Neudiagramm
und wir müssen dann diesen Kantenzug berechnen,
wir müssen dann immer dieses Schnitt Punkte alle berechnen.
Und wir müssen vor allen Dingen dafür sorgen,
dass dieser Merging-Schritt in linearer Zeit geht,
weil sonst erreichen wir keine N-Log-N-Laufzeit für den Algorithmus.
Also das ist schon tricky, ja, das zu realisieren.
Der Algorithmus hat auch noch einen zweiten Nachteil. Es gibt
ja nicht nur worenneue Diagramme in der Ebene, ja.
Wir können uns ein Wochenneudiagramm, Problem ist auch im Dreidimensionalen
vorstellen, haben wir halt Punkte.
Und um den Punkten haben wir dann entsprechend so simplexartige Gebilde von Volumina,
die alle Punkte beschreiben, die diesen Punkt am nächsten sind.
Also auch im Dreidimensionalen machen die,
ergeben worenneue Diagramme sehr viel Sinn und werden da intensiv genutzt
Um Räume aufzuteilen. Und wenn sie sich jetzt diesen Algorithmus vorstellen,
dann sehen sie, dass die Zweidimensionalität der Eingabe hier schon ziemlich fest eingebettet ist.
Also diesen Algorithmus jetzt zu erweitern,
sodass sich das in dreidimensionalen Machen erscheint, eher schwierig.
Okay, deswegen werden wir den gar nicht so im Detail betrachten,
sondern uns lieber einen anderen Weg suchen,
um das Wocheneudiagramm zu berechnen.
Aber nur noch die letzte Randbemerkung dazu. Dieser Algorithmus ist
von der Laufzeit her optimal. Also er kann,
er schafft eine O von N-Log-N-Laufzeit
Und auch von N-Log-in ist auch tatsächlich das Beste,
was wir erreichen können, weil das,
weil wir aus dem Wurn-Neudiagramm immer die konvechse Hülle ableiten können.
Ja, wir wissen ja dann, welche Punkte liegen außen und bilden die Kornwechselhülle.
Diese konvechse Hülle stellt eine Sortierung der Punkte dar. Ja,
wir können ja hier eine Reihenfolge bestimmen. Das bedeutet,
wir können das Problem der Probleme des Sortierens zurückführen auf das
Problem der konvexen Hülle und auf die Berechnung des Wochenneudiagramms.
Deswegen können wir nicht schneller Wornneudiagramme generieren, als wir Zahlen sortieren können.
Und Zahlen sortieren, wissen wir schon, brauchen wir mindestens
Omega von N-Login, wenn wir vergleichen, das Sortierverfahren verwenden.
Und da wir hier Punkte in der Ebene haben,
die beliebige Koordinaten im R-Quadrat haben,
da können wir also nur vergleichend vorgehen, wissen wir schon,
okay, also das kann nur in N-Login-Zeit gehen.
Also insofern ist das ein optimales Verfahren erstmal
Ja, so, wir werden, wie gesagt,
jetzt die Wohnheudiagramme mal kurz beiseite schieben und uns mit einem
anderen Problem aus der algorithmischen Geometrie beschäftigen und gleich aber auch schnell sehen,
dass es eine enorme Hilfe ist bei der Berechnung von Wohnheudiagrammen.
Das Problem, mit dem wir uns beschäftigen wollen, ist Triangulierung.
Das heißt, wir haben wieder eine Menge von Punkten in der Ebene
und wir wollen die Ebene jetzt wieder in Regionen aufteilen.
Allerdings in Dreiecke, die diese Punkte miteinander verbinden
Ich zeige Ihnen mal eben kurz ein Bild. Also hier sehen Sie
zum Beispiel so ein Objekt, was Sie wahrscheinlich sofort erkennen.
Und wenn Sie solche komplexen Objekte beschreiben wollen und als Oberfläche irgendwie charakterisieren wollen,
dann können Sie das machen, in diese Punkte abtasten.
Und diese Punkte zu Dreiecken entsprechend verbinden. Hier sind gar nicht überall Dreiecke,
aber im Prinzip wissen Sie, was gemeint ist.
Das ist die Art und Weise, wie wir in
der Geometrie und auch in der Visualisierung komplexe Oberflächen visualisieren.
Also wenn wir so eine komplexe Oberfläche haben hier und wollen visualisieren,
dann kann die Visualisierungs-Engine, also die Maschinerie,
im Hintergrund eigentlich nur Polygone visualisieren und keine gekrümmten Oberflächen. Ja,
und die Art und Weise, wie man dann eine gekrümmte Oberfläche,
wie zum Beispiel dieses Gesicht hier, approximiert ist,
dass man einfach eine Oberfläche nimmt, eine gekrümmte Oberfläche,
sie durch Punkte approximiert und die Punkte trianguliert, also durch Dreiecke verbindet,
hat man kleine Polygone, die kann man entsprechend mit der Visualisierungsmaschinerie entsprechend darstellen.
Ja, das ist also der Grund, warum wir Triangulierungen
benötigen und das ist das, was wir erreichen wollen.
Wir wollen also eine Menge von Punkten nehmen und die
durch so ein Netz von Dreiecken miteinander verbinden
So, was ist eine Triangulierung?
Etwas formeller? Dazu brauchen wir den Begriff einer Subdivision.
Wir haben also eine Menge von N-Punkten im Zwei-dimensionalen Raum.
Und so eine Subdivision ist eine Aufteilung der Ebene durch Liniensegmente,
die wir in diesem Fall jetzt auch Kanten nennen, genau wie bei Grafen.
Und diese Liniensegmente, die berühren sich immer nur in den Endpunkten.
So, diese Subtivision kann die Fläche noch in sehr komplexe Gebilde einteilen.
Was wir als nächstes machen, ist, dass wir fordern,
dass diese maximal und planaten ist und seine maximal Planare-Subtivision hat
jetzt eben die Eigenschaft, dass sich keine Liniesegmente schneiden.
Deswegen ist die Planar, wie bei den Grafen.
Und sie ist maximal, das bedeutet,
sie können keine weiteren Liniensegmente mehr hinzufügen. Ja,
das ist also das Maximum Maline-Segmente, was sie da reinkriegen können.
So eine maximale Planare-Subtivision, die die Eigenschaft hat,
dass dann die Endpunkte der Liniesegmente aus der Menge P besteht,
der eingegebenen Punkte, die bezeichnen wir als Triangulierung.
Jetzt ist natürlich die Frage, dass in dem Begriff
steckt ja jetzt Dreieck drin in den Begriff Triangulierung.
Sind das jetzt
auch Dreiecke
Das sind immer Dreiecke, weil dadurch, dass die maximal ist,
können sie durch ein weiteres Liniensegment keine Teilung mehr hervorrufen.
Und das ist eben eine Eigenschaft,
die geht nur bei Dreiecken, also nur bei einer Triangulierung.
Wenn sie noch irgendwie ein Viereck hätten, könnten sie noch
eine weitere Kante einziehen und das Viereck ins Zwei-Dreieck unterteilen.
Okay, also die Triangulierung besteht in der Tat aus Dreiecke,
das heißt in einer Subtivision, in so einer Aufteilung ist jede,
ist jede Facette, die entsteht, ein Polygon.
Und wenn sie eine weitere Stile-Segment hinzunehmen,
dann können sie ein Dreieck entsprechend abspalten. Sie können auch
ein weiteres Dreieck bilden. Deswegen geht das für maximale,
für maximale Subtivisionen nur so, dass sie Dreiecke haben müssen.
Und ja, wir haben da noch eine begrenzende Facette außen drumherum.
Das ist in dem Fall dann die konvexe Hülle von P. Okay,
das ist also unsere Triangulierung, die wir berechnen wollen.
Und dafür gibt es natürlich jetzt offensichtlich viele Möglichkeiten,
wie wir triangulieren können. Ja, also es gibt viele Möglichkeiten,
wie wir also eine Punktmenge dann durch Linien miteinander verbinden,
sodass wir Dreiecke kriegen
Okay. So, das ist unser Ziel.
Und wie bei den Wochenordiagrammen sollten wir erst mal überlegen,
wie groß ist denn diese Triangulierung,
ausgehend von einer Menge von Punkten.
Das können wir mit Eulers Formel wieder ganz schnell abschätzen.
Und zwar können wir zeigen, dass wenn wir endviele Punkte haben in allgemeiner Lage.
Ja, das bedeutet also keine Endpunkte auf einer geraden und so.
Also dann, und es sind K von diesen Punkten auf der Convexenhülle,
dann können wir angeben,
wie viele Dreiecke
die Triangulierung hat
Das sind nämlich 2N minus 2, minus K. Und wir
können auch sagen, wie viele kannten die Triangulierung hat.
Das sind 3N minus 3, minus K. So,
wie kommt man da drauf? Das kann man relativ,
ja, man kann das einfach in Eulers Formel wieder einsetzen.
Diese K-Punkte, die auf der konvexen Hülle liegen,
die bilden halt dieses eine große äußere Polygon,
was die Triangulierung selber von dem Rest der Fläche trennt.
Deswegen spielt das hier eine Rolle. Und ansonsten haben sie
natürlich mit P die Anzahl der Punkte oder der Anzahl der Knoten in Eulers Formel
Und sie wissen dadurch, dass es Dreiecke ist,
haben sie eine Eigenschaft zwischen der Anzahl der Facetten und der Anzahl erkannten.
Und das setzen die alles da ein. Das habe ich
jetzt hier nicht mehr ausgerechnet. Das können sie gerne mal machen.
Das ist eine ganz einfache Übung. Und sie können dann
aus Eulers Formel direkt ableiten, wie viele Dreiecke diese Trengulierung hat.
Es hängt nicht nur von N-Up, aber eine obere Schranke hängt von N-Up.
Das hängt noch von der Anzahl der Punkte auf der konvexen Hülle
ab. Aber wenn wir mal davon ausgehen,
dass wir mindestens drei Punkte auf der konvexen Hülle haben,
müssen wir,
dass es auf alle Fälle die Anzahl der Dreiecke kleiner gleich
zwei in minus fünf ist oder hier drei in minus sechs
für die Anzahl erkannten
Okay, so, das heißt, die ist auch linear,
genauso wie die Wohnneudiagramme linear sind.
Und in der Größe meine ich jetzt bezüglich der Anzahl der
Punkte in der Eingabe. Und jetzt stellt sich die Frage,
was ist eine gute Triangulierung und was ist eine schlechte Triangulierung,
wenn es viele Möglichkeiten gibt, das zu tun?
Hier sind mal zwei Möglichkeiten dargestellt, wie wir vier Punkte triangulieren können.
Also wir haben hier die vier Punkte, eins, zwei,
drei, vier. Und das ist die Konvechselhöhle hier,
ja, und damit ergibt sich eigentlich nur zwei Möglichkeiten zu Triangulierung.
Also entweder ich kann so eine Linie hier reinziehen oder ich kann so eine Linie einziehen.
Da nennt es, hier habe ich also diese zwei,
drei Ecke und hier habe ich diese zwei,
drei Ecke
Ja, was man jetzt möchte, ob man das möchte
oder das möchte, ist jetzt ja eigentlich Geschmackssache.
Für die allermeisten Anwendungen hätte man gerne eher so eine Triangulierung und nicht so eine.
Woran liegt das? Also wenn wir so triangulieren,
haben wir ja extrem lange Kanten und sehr spitze Dreiecke.
Und wenn wir uns vorstellen, dass so eine Triangulierung eine
Oberfläche approximieren soll, dann macht die das natürlich besser,
wenn die Kanten eher kurz sind.
Wenn wir eher so einigermaßen gleichmäßige Dreiecke haben.
Also für viele Anwendungen ist das sozusagen die gewünschte Triangulierung und
nicht die mit diesen extrem langen Kanten da drin
So, und die Frage ist jetzt, wie können wir das beschreiben?
Also wie können wir ein Kriterium angeben, um zu sagen,
das ist die Triangulierung, die wir eigentlich haben wollen?
Was ist die Eigenschaft,
die diese Triangulierung irgendwie intuitiv auch hübscher, schöner macht,
als vielleicht diese mit diesen extrem langen Spitzen kann?
Naja, es hängt mit den Winkeln zusammen. Wir sehen,
also hier sind die Winkel irgendwie so gleichmäßiger in den Dreiecken.
Hier haben wir sehr spitze Winkel oder ja, der spitze Winkel hier.
So, und das ist eher ungünstig. Das heißt,
die Winkel, die Innenwinkel in den Dreiecken
sagen uns etwas über die Qualität der Triangulierung
Deswegen machen wir es wie folgt,
wir erzeugen jetzt für eine Triangulierung einen Winkelvektor, so ein Winkelvektor,
da ist nichts weiter als die Menge aller Innenwinkel,
also für jedes Dreieck haben wir drei Innenwinkel und die schreiben
wir alle auf und die sortieren wir jetzt entsprechend aufsteigend.
Also eine sortierte Liste der 3M vielen Innenwinkel,
wenn wir M-Dreiecke haben. Und dann sagen wir,
eine Triangulierung ist dann eine gute Triangulierung,
wenn dieser Vector möglichst große Winkel enthält,
weil dann haben wir eher so eine Triangulierung und
nicht so eine mit so Spitzenwinkel,
wenn man
möglichst große Winkel haben
Die Vergleichsfunktion, die wir da nehmen, ist die Folgen.
Wir sagen dann, wenn wir jetzt zwei verschiedene Triangulierungen haben,
der gleichen Punktmenge, T- und T-Strich,
dann haben die ja die gleiche Anzahl Dreiecke,
die gleiche Anzahl von Innenwinkeln.
Und dann sagen wir, dass AT größer ist als AT-Strich.
Wir haben jetzt zwei Vektoren mit Winkeln. Genau dann,
wenn wir irgendein I finden, sodass für alle J
die kleiner sind als I, die Innenwinkel gleich sind.
Und der Itewinkel ist dann größer als der I,
der Itewinkel in der Triangulierung T ist dann größer als
der Itewinkel in T-Strich
Ja. Das bedeutet einfach nichts weiter,
wie wir sortieren jetzt also die Winkel aufsteigend und wir gucken uns dann,
dann sind am Anfang dieser Liste, sind viele gleich,
viele Innenwinkel und dann kommt der erste Innenwinkel,
wo sich die Beintriangulierung unterscheiden.
Das können ja viele Dreiecke auch gleich sein in den beiden.
Dann kommt der erste, wo sie sich unterscheiden und wenn sie sich unterscheiden,
dann bevorzugen wir die Triangulierung, die dann den größeren Winkel hat.
Ja, und dadurch erhalten wir eine Triangulierung,
die tendenziell eher große Innenwinkel hat und so eine Eigenschaft hat.
Gut, warum betrachten wir dann immer nur lexikografisch so den nächsten Winkel,
der das entscheidet, naja, wir müssen ja eh maximieren über alle möglichen Triangulierungen.
Und in so einer Triangulierung ändern wir meistens was lokal.
Wir haben also hier so zwei benachbarte Dreiecke,
wir können so eine Kante ändern und dann machen wir eine lokale Änderung,
die dazu führt, dass dieser Winkel weckt da sich auch null lokal in einigen Winkeln unterscheidet.
Und dann nehmen wir eben die, die zu einem größeren Winkel
weg da führt und wenn wir dann weitere lokale Änderungen machen,
können wir das langsam dann maximieren.
Das ist die Art und Weise, wie wir das
machen werden
Ja, bei der Betrachtung,
welche Dreiecke denn jetzt gute Dreiecke sind und große Innenwinkel hat,
hilft uns, ein Theorie,
was ihn vielleicht irgendwann mal in der Schule über den Weg gelaufen ist, von Herrn Thalis.
Das lernt man da in der Geometrie irgendwann mal in der,
weiß ich nicht, achten, neunten Klasse.
Allerdings nicht in dieser allgemeinen Form. Also das Thalistheorien,
was man so in der Schule lernt, ist,
dass wenn man also eine Gerade hat und die geht durch
den Mittelpunkt eines Kreises und dann bildet man ein Dreieck zwischen dem einen Schnittpunkt und einem dritten Punkt,
dann ist das ein rechtwinkliges Dreieck.
Das ist so das, was man aus der Schule so
kennt als Talestheorie. Talestheorium ist aber eigentlich etwas weitreichender.
Und zwar bezieht sich das nicht nur auf den Fall,
dass dieses Liniensegment durch den Mittelpunkt des Kreises geht.
Tadestheorien besagt folgendes. Wir haben also einen Kreis C,
der ist hier dargestellt und wir haben eine gerade L,
die den Kreis schneidet und zwar in zwei Punkten A und B.
Also hier geht die lang und das ist A,
das wären die beiden Schnittpunkte. Okay, so,
jetzt betrachten wir eine Reihe von weiteren Punkten und der,
was wichtig ist, ist,
dass alle diese weiteren Punkte auf der gleichen Seite der
geraden L liegen
Die liegen jetzt alle hier auf der linken Seite von L.
Könnten auch alle auf der rechten liegen, ist egal,
aber die müssen alle auf der gleichen Seite von El liegen.
So, und dann haben wir zum einen mal zwei Punkte P und Q,
die liegen auf dem Kreis, da und da, ja.
Und dann haben wir noch einen Punkt R,
der liegt innerhalb des Kreises und dann haben wir noch
einen Punkt S, der liegt außerhalb des Kreises.
So, und jetzt können wir uns die Innenwinkel anschauen,
wenn wir A mit diesem Punkt verbinden und den Punkt dann
anschließend mit B, also mit dem zweiten Schnittpunkt.
Was man dann sieht, ist, dass alle Punkte,
die hier auf dem Kreis liegen,
P und Q zum Beispiel,
haben genau
den gleichen Innenwinkel
Und das ist genau das,
was man aus der Schule auch kennt mit dem rechten Winkel,
dass egal wo der Punkt auf diesem Kreisbogen liegt,
hat man dann einen rechten Winkel.
Okay, also Sie haben alle in den gleichen Innenwinkel.
Und wenn der Punkt weiter innen liegt,
also innerhalb des Kreises, dann haben wir einen größeren Innenwinkel.
Ja, also der Innenwinkel ist größer als dieser hier.
Sobald der Punkt weiter außerhalb liegt, haben wir einen kleineren Innenwinkel.
Ja, da ist Spitzer, ja. Das ist genau Talistheorie.
Also das heißt, der Innenwinkel ARB ist größer als der Innenwinkel
APGB und der ist gleicht im Innenwinkel AQB und der
ist größer als der Innenwinkel ASB.
Wobei er innerhalb und S außerhalb des Kreises liegt und P
und Q
auf dem Kreisbogen
Okay, so, Talestheorien werden wir benutzen,
um diese Winkeloptimalität herzustellen, ohne dass wir diese ganzen Winkel ausrechnen müssen.
Das wäre total nervig. Alle Innenwinkel ausrechnen mit Cosinus und so,
oh Gott, also wir nehmen nie da Talestheorien,
damit geht das dann viel besser gleich.
Was wir jetzt machen, um die Winkeloptimalität herzustellen,
ist, wir nehmen eine Operation,
mit der wir zwei benachbarte Dreiecke überführen in zwei andere Dreiecke.
Und zwar so, wie ich es ihnen gerade schon gezeigt habe.
Wir nehmen also zwei Dreiecke,
die eine gemeinsame Kante haben, die geht jetzt hier
von PI nach PJ
Hier lang. Und die haben dann natürlich noch zwei andere Punkte.
Also das eine Dreieck ist jetzt PI, PJ-PK.
Und das andere ist PI, PJ-PL, zweite Dreiecke.
So, und wenn die eine gemeinsame Kante haben,
dann können wir die Triangulierung an der Stelle leicht ändern,
indem wir diese gemeinsame Kante per IPJ entfernen.
Und dafür PL und PK miteinander verbinden. Also hier.
Diese Operation ist also eine lokale Änderung in der Triangulierung,
bezeichnen wir als Edge-Flip.
Also wir nehmen eine Kante und flippen die innerhalb der Triangulierung
um. Und dann passiert natürlich was an den Innenwinkeln
Wir haben also, wir können ja jetzt die ganzen Innenwinkel aufzählen.
Also in der Triangulierung, da kommt in diesen langen Winkelvektor,
kommt irgendwo, kommen hier Alpha 1, Alpha 2,
Alpha 3 vor und auch Alpha 4, Alpha 5,
Alpha 6. Wir sind also Teil von einem großen Vektor,
wo alle Innenwinkel drin stehen.
Wenn wir diesen Edge-Flip gemacht haben,
dann entfallen diese sechs Winkel und diese sechs Winkel kommen dafür hinein,
Alpha 1 Strich 2 Strich 3 Strich und so weiter.
Alle anderen Winkel bleiben natürlich gleich,
weil den Rest der Triangulierung haben wir ja nicht geändert.
Wir haben ja
nur diese
eine Kante umgedreht
Und wenn wir jetzt wissen wollen, was die bessere Triangulierung ist,
können wir einfach diese sechs Winkel miteinander vergleichen und gucken,
wo die größeren Innenwinkel entstehen.
Und genau da hilft uns jetzt Talistheorien, um zu sehen,
wo die größeren Innenwinkel sind. Also, die beiden Winkelvektoren
unterscheiden sich also nur in den Winkeln, Alpha 1 bis Alpha 6.
Die sind irgendwo in dem Winkelwerk dort drin,
aber das sind die einzigen, die unterschiedlich sind.
Und nur die entscheiden dann darüber, welcher Winkelvektor größer und kleiner ist.
Und wir bezeichnen eine Kante E als illegal,
wenn die Die Liste dieser Innenwinkel, wenn wir davon das Minimum nehmen,
kleiner ist als das Minimum der Innenwinkel der anderen Winkel.
Dann ist die genau illegal. Ja, die Edgeflip-Operation ändert jetzt
also die Triangulierung, die geht von Tee zu Tee-Strich.
Und wenn wir eine illegale Kante ersetzen durch so eine Operation,
dann vergrößert sich der Winkel, der Winkelvektor.
Das heißt, wenn wir eine Edgeflip-Operation auf einer illegalen Kante
durchführen, dann kriegen wir eine neue Reangulierung T-Strich.
Die unterscheidet sich, wie gesagt, nur in diesen sechs Winkeln.
Und dadurch, dass das Minimum größer geworden ist,
gilt dann, dass die Triangulierung einen größeren Winkelvektor hat.
Okay, das heißt, wir müssen irgendwie diese Kanten identifizieren,
die illegal sind und die ersetzen.
Illegale Kanten haben was mit Umkreise zu tun. Das ist
genau das, was uns Talistheorien jetzt sagt. Also,
wenn wir jetzt mal so eine illegale Kante nehmen und wir haben hier die Punkte,
PI, PKPL, PJ, Dann haben wir folgende Eigenschaft.
Und zwar sehen Sie hier, also das ist der Umkreis
von dem Dreieck PIPJPK. Und da drin liegt der Punkt PL.
Und wenn innerhalb dieses Umkreises ein Punkt liegt,
dann ist das ein Zeichen dafür, dass die Kante illegal ist.
Das sagt folgendes Lämmer, wenn da seine Kante betrachten,
PIPJ und das ist eine gemeinsame Kante von zwei Dreiecken,
also PI, PJPK und PIPJPL.
Die Kante E ist illegal, genau dann,
wenn der Punkt PL im Umkreis C von PIPJPK liegt,
auch sagen, dass PK im Umkreis von PI, PJPL liegt.
Das ist symmetrisch, können Sie auch sagen. Einen Beweis dafür,
den führen wir jetzt nicht, aber das Volk direkt aus Thalestheorien.
Also Thalestheorien können Sie ja benutzen und können genau zeigen,
dass das die Eigenschaft ist, die Illegalität macht.
Indem Sie einfach zeigen, wenn der Radius wird dann kleiner von dem Umkreis.
Und Sie sehen auch hier, wenn wir also diese Triangulierung wählen,
dann hätten wir den Umkreis PI, PL,
PK und da ist natürlich dann das PJ nicht mehr enthalten.
Oder wir haben dann dieses Dreieck hier,
dann hätten wir PL, PK, PJ, der Umkreis,
da ist das PI an, auch nicht mehr enthalten.
Okay, also so ein Edgeflip auf einer illegalen Kante,
eine illegale Kante hat die Eigenschaft, ein weiterer Punkt liegt in dem Umkreis.
Der Edgeflip, der reduziert dieses Problem und entfernt diese illegale Kante
, führt eine weitere Kante ein. Und dadurch haben wir
kleinere Umkreise und die enthalten dann entsprechend den Punkt nicht mehr.
Wir machen jetzt also Folgendes um die Winkel optimale Triangulierung zu
finden, können wir sukzessive Edgeflip-Operationen ausführen.
Wir gucken einfach, gibt es irgendwo eine illegale Kante,
wenn es eine illegale Kante gibt,
dann werden wir einfach den Edgeflip machen, dann verschwindet die illegale Kante
Und wir haben eine Triangulierung mit einem größeren Winkelvektor.
Dieser Algorithmus würde vollkommen ausreichen und funktionieren und er würde auch terminieren,
warum? Weil wir wissen, dass mit jeder Edge-Rip-Operation
eine illegale Kante ja, naja, entfernt wird.
Wir wissen nicht hundertprozentig, ob die Kante, die dann entsteht,
nicht auch illegal ist, aber es wird erstmal eine entfernt.
Und wir wissen, dass der Winkelvektor größer wird.
Der wird explizit größer. Es gibt aber nur endlich
viele Triangulierungen
Weil ich meine, es ist ja ein diskretes Problem.
Wir haben ja nun diskret viel, also eine endliche Einzahl
von Möglichkeiten, die Punkte zu Dreiecken miteinander zu verbinden.
Wenn aber in einer Operation wir ein echt größeren Winkelvektor finden,
dann wissen wir, dass dieser Algorithmus auf alle Fälle terminieren wird.
Und danach keine illegalen Kanten mehr enthält. Kann er ja
nicht, weil jede illegale Kante könnten wir ja noch flippen
und hätten dann wieder einen größeren Winkelvektor.
Also dieses Verfahren, was ihr in einem Satz beschrieben steht,
also sukzessive einfach Kenntnisflippen, erzeugt eine Winkel optimale Triangulierung.
Wir müssen jetzt natürlich noch eine geschickte Strategie finden.
Wir können ja nicht jedes Mal alle Kanten angucken.
Das wäre sehr langsam. Also wir müssen noch eine
gute Strategie finden, welche Kanten wir betrachten,
um sie dann zu flippen
Okay, zunächst mal machen wir jetzt wieder einen Sprung zurück und überlegen uns,
was diese ganzen Winkel optimalen Triangulierungen denn jetzt mit dem Worneudiagramm zu tun haben.
Vielleicht ist sie ein Hip schon eine Analogie aufgefallen.
So ein Kriterium haben wir eben auch schon gesehen bei den Worneudiagrammen.
Denn Worneudiagramme hatten auch etwas mit Umkreisen zu tun.
Bei Worneudiagramme kamen auch Umkreise von Punkten vor und da hatten wir die Eigenschaft,
dass drei Punkte genau dann ein Worneuknoten bilden,
wenn in dem Umkreis dieser drei Punkte kein weiterer Punkt
enthalten ist
Hier wissen wir, dass drei Punkte zu einer Delawney-Triangulierung gehören,
wenn in dem Umkreis kein weiterer Punkt enthalten ist.
Das heißt, die Lawney, oh, Entschuldigung,
die Leute, also eine Winkel optimale Triangulierung,
da sind wir ja erst, ja, eine Winkel optimale Triangulierung,
hat offensichtlich etwas zu tun mit einer, mit einem Wochen-Noll-Diagramm.
So, was machen wir jetzt? Also wir können ein
Dual beschreiben eines Planarengrafen und wir werden gleich sehen, dass diese Tringulierung ein Dual des Worneudiagramms ist.
Was wir machen, ist einfach folgendes. Wenn wir irgendeinen Planaren Grafen haben,
also irgendeinen Graf, den wir in der Ebene malen können,
dann erzeugen wir ein Dual, in dem wir einfach sagen,
jeder Punkt, nein, jede Facette in dem Grafen,
also wir betrachten diesen gestrichelten Graf, ja,
das ist ein Graf in der Ebene.
Jede, jede Fläche, die wir hier haben,
jede Facette bildet jetzt einen Punkt, ja,
also einen neuen,
einen Knoten im Dual und wenn zwei Facetten benachbart sind durch so
eine Kante,
dann werden die mit einer Kante verbunden
Ist einfach nur eine Definition, wie wir aus einem Planarengrafen einen anderen Planarengrafen erzeugen.
Und den nennen wir das Dual. Das ist der duale Planaregraf,
nur eine Definition an dieser Stelle. Also das heißt,
für einen Planarengrafen G können wir einen dualen Grafen erzeugen.
Der duale Graf hat wieder Knoten und Kanten,
die Knoten sind dann die Facetten des ursprünglichen Grafen,
also der ursprüngliche Graf sind die Gestrichelten hier,
der durchgezogene hier mit den Knoten,
mit dem Knubbeln ist der duale Graf und dann sehen wir,
okay,
also jede Facette hat hier so einen Knoten und Kanten
entstehen genau dann,
wenn die Facetten benachbart sind
Ja. So, und das macht dieser Begriff der Dualität,
der ist ja mal wichtig, dass man ihn,
wenn man ihn zweimal anwendet, auch wieder das Gleiche kriegt.
Also damit das auch wirklich das mit uns sowas hat wie das Gegen,
was Gegensätzliches, genauso wie wenn man zweimal negiert, mal wieder die positive Zahl hat.
Und so ist es ja natürlich auch,
wenn sie jetzt den Dick, den durchgezogenen Grafen,
den fetten Grafen hier nehmen und würden von dem wieder das Dual bilden,
dann sehen sie jede Facette, die sie hier haben,
hat einen Punkt, ja,
und die Kantenbeziehung ist natürlich wieder genau umgekehrt.
Also wenn hier die beiden Facetten benachbart sind,
haben wir dann hier entsprechend die Kante.
Das heißt, wenn wir dann das Dual des Duals bilden,
haben wir wieder einen ursprünglichen Grafen
Ja. Okay, wie sieht der duale Graf zu einem Worneudiagramm aus?
Vorausgesetzt, muss ich immer sagen, Punkte sind in allgemeiner Lage.
Das bedeutet, wir haben immer nur drei Punkte, die ein Wohnneuknoten treffen.
Wie sieht es aus? Also wir haben jetzt also das Worneudiagramm,
das sind jetzt, das haben sie wahrscheinlich schon erkannt,
das sind die gestrichelten Linien, um diese schwarzen,
dicken Knoten, also die schwarzen Punkte im Raum,
das ist das Wochenneudiagramm dieser Pumpmenge.
Und jetzt haben wir also im dualen Graf die Knoten,
das sind also die ursprünglich folglichen Punkte im Wohnneuediagramm.
Das sind die Ausgangspunkte. Und dann haben wir Kanten,
die verbinden diese ursprünglichen Punkte und bilden dann hier entsprechend Dreiecke.
Dass sie hier kein Dreieck sehen,
sondern so geschwungene Linien, das hat damit zu tun,
dass ich in dem Bild deutlicher machen wollte, wie das Dual aussieht.
Also diese geschwungene Linie können sie natürlich auch durch gerade Linien
ersetzen und dann hätten sie auch entsprechend so eine Triangulierung.
Ja? Okay, dieser Fläche. So, also das ist das Dual.
Wenn es so eine einfache Operation gibt zwischen den Grafen,
dann können wir die auch einfach ineinander überführen.
Das heißt, wenn wir ein Worneudiagramm berechnen wollen,
dann können wir diese komplizierte Geschichte mit der Berechnung dieses Graphen
erstmal außen vor lassen und sagen, hey, wir berechnen einfach die Triangulierung.
Die Regulierung ist ja viel einfacher,
weil wir haben die Punkte im Raum gegeben,
wir müssen ja nur bestimmen, welchen Punkten wir mit welchen verbinden.
Und wenn wir dann die Triangulierung haben, dann können wir
die Regel anwenden zur Bildung des dualen Graphen und dann können wir auch das Worneudiagramm erzeugen.
Weil dann können wir sagen, okay, hier haben wir ein Dreieck,
dann berechnen wir von den drei Punkten den Mittelpunkt,
dann haben wir entsprechend den Punkt hier,
der in Worneudiagramm zum Worneudiagramm gehört und dann können wir die Kanten reinziehen.
Wir entkoppeln Mit dieser Geschichte die geometrische Berechnung, nämlich zu entscheiden,
wo liegen hier Punkte im Raum von der Kombinatorik.
Welche Punkte muss ich wie miteinander verbinden? Indem wir erstmal die Punkte miteinander verbinden,
also die ursprünglichen zu seiner Triangulierung und im zweiten Schritt durch
die Bildung des Duals, einfach dann das Wochenneujäagramm erzeugen.
Ja, okay, jetzt haben wir also das Problem,
dass wir genau diese Triangulierung suchen,
die dann auch zum Wochenneudiagramm gehört,
weil es gibt ja
viele Triangulierungen
So, die Triangulierung, die genau
das Dual des Woronordiagramms ist, die hat einen Namen.
Das ist die Delawney-Triangulierung. Die Delawney-Triangulierung ist wie folgt definiert.
Wir haben also eine Menge P von Punkten in der Ebene,
in allgemeiner Lage. Das heißt, keine vier Punkte auf
einem Umkreis, damit wir auch immer Dreiecke bekommen.
Und der duale Graf des Woronneudiagramms zu dieser Punktmenge heißt Delawney Graph.
Und der Delawney, die Graph,
beschreibt eine Triangulierung in der Ebene und das
ist die Delawney-Triangulierung
Okay, was hat das jetzt alles mit unserem Winkel optimalen Triangulierung zu tun,
die wir uns gerade die ganze Zeit angeguckt haben?
Ja, eine Menge. Die sind nämlich identisch. Also,
die, die zunächst mal zur Delawney-Triangulierung, die Frage,
ist sie wohl definiert? Ist das überhaupt eine Triangulierung?
Das ist das Erste, was wir uns mal überlegen müssen.
Also nicht, dass wir mit dem Graf,
mit dem Namen einfach irgendwas suggerieren, was dann nicht stimmt.
Aber es ist eine Triangulierung, denn die Punkte sind in
allgemeiner Lage.
Damit ist der Grad von allen Wohneuknoten
Und damit besteht die Triangulierung auch tatsächlich aus Dreiecken. Ja,
wenn die Punkte nicht mehr in allgemeiner Lage sind,
haben wir die Situation, dass das dann nicht mehr gilt.
Also wenn sie, wenn wir vier Punkte hätten,
zum Beispiel diese hier, die alle auf einem Umkreis liegen,
dann würden diese vier Punkte im Voreneudiagramm die folgende Situation erzeugen,
dass sich vier Punkte an genau einer Stelle treffen,
wie Sie sehen, so ungefähr.
Das ist der Mittelpunkt. Und dann hätten wir natürlich auch keine Triangulierung mehr,
weil dieser Punkt wäre jetzt im Wohnneudiagramm ein Knoten von Grad 4.
Und wir hätten keine Triangulierung, weil wir hätten hier jetzt
so ein Viereck, wenn wir das Dual bilden.
Das wollen wir natürlich nicht haben. Deswegen gehen wir davon
aus, die Punkte sind in allgemeiner Lage.
Das heißt, keine vier Punkte liegen auf einem gemeinsamen Umkreis.
Dann haben wir immer drei Ecke. Und dann ist
das Dual vom Wohnneudiagramm auf alle Fälle auch eine Triangulierung.
Okay, ist sie
auch Planar
Die nächste Frage. Es könnte ja sein, dass sich
irgendwelche Kanten einfach schneiden. Es darf natürlich nicht passieren.
Wir wollen ja eine Planare-Tringulierung haben. Man kann schnell zeigen,
dass das tatsächlich so ist, also dass die Triangulierung Planar ist,
die da rauskommt. Das sagt, das folgende Theorien,
das ist die Planarität, der die Nornie-Triangulierung, wenn Tee,
also eine D-Donnie-Triangulierung ist, der Punktmenge P,
dann gibt es keine zwei Kanten, die sich schneiden.
Also PIPJ und PKPL, die dann einen Schnittpunkt haben.
Das heißt, der Schnitt von den beiden Kanten hier ist
ungleich der leeren Menge. Sowas darf es nicht geben.
Es dürfen sich nie zwei Kanten
irgendwie kreuzen
Ja, wie kann man das zeigen, dass sowas nicht existieren kann?
Wir können einfach mal zwei Kanten nehmen. Also eine Folge
geht von I nach J und eine geht von K nach
L. Also hier ist seine von I nach J,
hier ist eine von K nach L.
So, die kommen jetzt beide in der Triangulierung vor.
Die dürfen nicht, also so ist okay,
wie die hier liegen, aber die dürfen sich nicht kreuzen.
Ja, das müssen wir zeigen. So, wir wissen,
das sind jetzt Das sind Kanten, der die Lawney-Triaguierung,
das heißt, es gibt eine passende Wohnneukante,
also jede Kante der Trigulierung hat ja eine passende zugeordnete Kante hier,
eben durch die Dualität.
Und jetzt nehmen wir einen Punkt CEJ,
der auf der entsprechenden Wochenneukante liegt zwischen PI und PJ.
Also hier würde ja die Kante durchlaufen und da nehmen wir
so einen Punkt. Und der Punkt, der hat jetzt
einen Umkreis, auf dem PI und PJ liegen.
Das ist dieser Kreis CEJ. Okay,
weil dieser Punkt auf der Wocheneukante liegt,
gibt es keinen weiteren Punkt,
der da drin liegt
Ja, weil sonst wäre der ja nicht Teil des Wocheneudiagramms, dieser Punkt.
Es geht ja nur, wenn da kein weiterer Punkt drin liegt.
Okay, also das heißt, hier ist kein Punkt drin in diesem Kreis.
So, wir machen das Gleiche für den für KL,
also hier haben wir wieder zwei, eine Kante,
senkrecht dazu wäre die Wocheneukante.
Dann nehmen wir irgendeinen Punkt drauf, der im Diagramm existiert,
da können wir den Kreis bilden,
der K und L enthält und auch hier wird kein weiterer Punkt enthalten sein.
Ja. Okay, mit dieser Eigenschaft können wir jetzt sehen,
dass sich die beiden Kanten gar nicht schneiden können.
Warum? Naja, wir haben ja
zwei Kreise
Hier, ja, und wir wissen,
dass in dem Kreis von IJ, in dem CEJ,
es weder K noch Älteren liegen können,
weil er ist ja kein anderer Punkt drin, ja.
Und gleichzeitig kann auch in dem Kreis CKL nicht I und nicht J
drin liegen, weil da liegt ja kein anderer Punkt drin.
Wenn wir jetzt aber zwei Kreise haben, in denen keine Punkte liegen,
liegt insbesondere gar nichts in der Schnittmenge und wir können eine gerade bilden durch die Schnittpunkte der beiden Kreise, so.
Und wenn wir hier so eine gerade bilden können,
dann wissen wir,
dass I und J auf der linken Seite liegen müssen und K und L auf der rechten Seite,
weil die liegen ja auf dem Kreisbogen und das ist ja der Teil des Kreisbogens der in dem anderen Kreis enthalten ist.
So, und wenn wir eine gerade bilden können, die die Punkte,
PI und PJ von den Punkten PK und PL trennen,
dann können sie auch keinen Schnittpunkt haben.
Kann es sein, dass ein Punkt auf dem Kreis CIU liegt?
Also ein Drittel einfach wird oder eine Mittelpunktin der.
Also hier soll noch ein weiterer dritter Punkt drauf liegen.
Also sie meinen, dass der da drauf liegt?
Ja, natürlich noch mit der gleichen Eigenschaft,
dass es dann kein weiterer Nehmen fressen kann.
Weil der Kreis ist doch so konstruiert, dass er irgendwo neu ist, Nein.
Ja, wenn der PK, also wenn der jetzt,
wenn der PK jetzt noch auf dem Kreis drauf liegen würden...
Ja, klar, da kann ein dritter Punkt drauf liegen,
dann würden die drei am Ende ein Wocheneuknoten bilden.
Ja, das stimmt. Also der könnte dann auch drauflegen.
Aber es ändert tatsächlich an dem Beweis nichts. Okay,
damit wissen wir, die Lawney-Training-Lügung ist eine Triangulierung.
Also wir haben Dreiecke und wir haben keine Schnitte.
Sie ist Planner.
Das Wochenneudiagramm hat ja Eigenschaften, die wir uns genau angeschaut haben.
Und wir können uns jetzt überlegen,
was bedeuten diese Eigenschaften denn für die Triangulierung?
Nehmen wir mal eine Kante aus der Delawney-Triangulierung.
Zwischen PI und PJ. Also hier ist jetzt so eine,
das sind jetzt drei Punkte hier, die zu der gesamten Punktmenge gehören.
Das Schwarze, was Sie sehen, ist das Warneu-Diagramm.
Und das Rote ist ein Dreieck der Triangulierung
So, PEPJ ist eine Kante, der die Lordi-Triangulierung hier genau dann,
wenn es hier natürlich eine Kante, eine entsprechende Kante in dem Wohnordiagramm gab.
Ja, weil jede Kante im Warner Diagramm überführen wir in eine Kante der Triangulierung. So,
wenn es aber eine Kante gibt, in dem Warner Neudiagramm,
dann gibt es auch einen Kreis, der, oh,
ich zeige die ganze Zeit auf I und K,
also I und J,
dann gibt es auch einen Kreis,
der I und K enthält auf dem Kreisbogen und keinen weiteren Punkt.
Das war die Eigenschaft von Kanten im Wohnordiagramm
Wenn wir jetzt ein Dreieck nehmen in der Delawnie-Triangulierung per IPJPK,
das rote Dreieck hier, dann wissen wir,
dass es hier einen Wohnneuknoten gibt, der quasi zu den drei Knoten gehört.
Dann sehen wir, dass es einen Umkreis gibt,
p-I-PjPK, in dem kein weiterer Punkt liegt.
Da darf kein weiterer Punkt liegen. Das ist genau die Eigenschaft
eines Wohnneuknotens. Genauso haben wir das definiert. Das heißt,
diese Delawnie-Triangulierung ist eine Triangulierung von P,
die die Eigenschaft hat, dass alle Dreiecke,
die wir sehen, in ihrem Umkreis keine weiteren Punkte enthalten.
Es ist nur eine Überführung der Eigenschaft des Wocheneudiagramms auf die Triangulierung,
weil zu dem Dreieck gehört ja ein Wocheneuknoten. Okay,
und wir können genauso gut sagen,
wenn wir jetzt keine Kreise haben, die weitere Punkte enthalten,
dann bedeutet das, wir haben nur legale Kanten,
weil das ist genau die gleiche Eigenschaft,
die wir für die Winkeloptimalität gefordert haben.
Das heißt, wenn P eine Punktmenge ist in allgemeiner Lage,
Tee ist eine Delawney-Triangulierung von P, genau dann,
wenn Tee nur aus legalen Kanten besteht.
Und wenn sie nur aus legalen Kanten besteht,
dann ist sie optimal bezüglich der Größe des Winkelvektors.
Das heißt, die Delawney-Triangulierung sorgt, also das Dual,
ist automatisch die Triangulierung mit größtmöglichen Innenwinkeln.
Ja, das heißt, die beiden hängen fest miteinander zusammen. Nein,
dieser Bewohner, Klausus, Kreuzungspunkt, sie meinten,
das vom Mittelpunktenbereich ist das Landschaft,
der Mittelpunkt dieses 3. Nein, nein,
also das ist der Mittelpunkt,
also es ist erstmal der Mittelpunkt des Umkreises hier
Wir müssen nicht in drei... Genau, das ist ein
super Punkt. Ich zeige Ihnen nochmal das Bild.
In der Tat müssen die nicht in dem Dreieck liegen.
Also hier sehen Sie, hier sehen Sie noch diese Bürgen,
die ich Ihnen da reingemalt habe, damit sie die Dualität sehen.
Wenn man die mal durch Graden verbindet,
das ist diese Variante, dann sehen Sie,
dass die Punkte tatsächlich nicht notwendigerweise im Dreieck liegen.
Das ist der Mittelpunkt des Umkreises des Dreiecks,
aber der muss nicht im Dreieck liegen.
Also wenn die Dreiecke hier spitz werden,
so wie dieses Dreieck, der Mittelpunkt dieses,
das ist dieser hier, das ist so.
Ja, das ist ein guter Punkt
Okay, damit haben wir die Beziehung hergestellt zwischen Winkeloptimalität und
Daddy the Orny-Triangolierung. Es gibt da so gute Gründe,
die Dorny-Triangolierung berechnen zu können. Wenn wir das können,
dann können wir erstens für zum Beispiel die Visualisierung eine Winkeloptimale Regulierung berechnen.
Und zweitens, wenn wir die berechnen können, können wir sofort
das Wurnheu-Diagramm bestimmen, indem wir einfach das Dual bilden.
Also die Berechnung, der die Dorny-Triangulierung ist quasi ein Schlüsselalgorithmus
in der algorithmischen Geometrie. Ja, hier noch die Beziehung
zwischen den legalen Kanten und die Lonny-Triangulierung
Ich habe es argumentativ gerade schon gesagt,
also das Theorien besagt, wenn PNP Punktmenge ist,
in allgemeiner Lage, Tees, eine Dilonie-Triagolierung von P,
genau dann, wenn sie nur aus lekalen Kanten besteht.
Hier ist nochmal das Bild des Edgeflips, der die illegale Kante zeigt.
Ja, und wir sehen diese illegale Kante,
hat genau die Eigenschaft, dass sie einen weiteren Punkt enthält.
Also, wieso hängen die beiden Dinge genau miteinander zusammen,
wenn wir also eine Dilonie-Triagulierung haben, dann können wir zeigen,
Tee ist legal, das heißt, hat keine illegalen Kanten.
Warum? Wir betrachten eine beliebige Kante PIPJ, zwischen zwei Dreiecken,
PI, PJPK und PIPJPL, das ist hier dargestellt, eine beliebige Kante.
Die Umkreise, CIJK und CIJL enthalten keine weiteren Punkte.
Das ist hier nicht der Fall, ja,
aber es ist der Fall, wenn einer Delony-Triangulierung,
denn das war die Eigenschaft des Wochenordiagramms, was wir übertragen haben,
ja, und damit ist die Kante von PIPJ legal.
Das heißt, alle Kanten sind legal, ja.
Wenn Tee keine Delony-Triangulierung ist, dann können wir auch zeigen,
dass Tee illegal ist, also mindestens eine illegale Kante hat,
denn wenn Tee keine Delony-Triangulierung ist,
dann gibt es mindestens ein Dreieck,
sodass CEJK
einen weiteren Punkt enthält
Das ist genau die Eigenschaft, die Lawny-Triangulierung, die jetzt negiert ist.
Dass es jetzt ein Dreier gibt, was diese Eigenschaft hat.
So, wo liegt jetzt dieser Punkt PL?
Der liegt nicht innerhalb des Dreiecks PIPJPK. Der muss irgendwie weiter
außen liegen. Und wir können annehmen, dass der auf
der anderen Seite liegt, ohne Beschränkung der Allgemeinheit. So,
und wenn wir das machen, dann haben wir genau diese Konstellation,
die wir auch bei dem Talistheorium gesehen haben und woraus wir erkennen,
dass eine Kante illegal ist.
Also PIPJ wird in diesem Augenblick illegal
Okay, wir müssen also die Lonitriangulierung berechnen,
weil wir dann eine wieviel optimale Triangulierung haben und weil wir
daraus das Wohnordiagramm berechnen können.
Und wir kamen sogar schon einen Weg gesehen, wie wir
das machen können. Wir müssen nämlich nur gucken,
dass unsere Kanten alle legal sind. Wir müssen schrittweise überprüfen,
dass alle Kanten legal sind und wenn sie alle legal sind,
haben wir eine Winkel optimale Triangulierung.
Und wenn sie Winkel optimal ist, haben wir auch eine Lila-Only-Triangulierung gefunden.
Okay, jetzt zeige ich Ihnen den Algorithmus,
der das Ganze tut
Der Algorithmus ist eigentlich nicht schwierig. Er ist auch nicht
so kompliziert zu implementieren. Also das kann man gut machen.
Der ist sogar leicht erweiterbar, auch auf drei Dimensionen, auf drei Dimensionen.
Das ist also ein wirklich toller Algorithmus. Laufzeittechnisch,
wir haben ja schon gesehen, dass das Wohnortdiagramm im Zweidimmensional,
konnten wir in O von N-Log N berechnen.
Das war der Algorithmus, den wir gerade gesehen haben.
Laufzeittechnisch verliert dieser Algorithmus ein bisschen, weil es ist ein randomisiertes Verfahren.
Und dieser randomisierte Algorithmus, den wir sehen werden,
der wird eine erwartete Laufzeit von O von N-Log N
Das heißt, sie können theoretisch eine Punktfolge konstruieren, sodass dieses Verfahren quadratisch wird.
Aber die erwartete Laufzeit ist immer noch O von N-Login.
Und solche Verfahren haben wir in der algorithmischen Geometrie sehr viel,
die einfach dadurch bestechen, dass sie in der Praxis eigentlich genauso schnell sind,
sogar schneller wegen niedriger Konstanten,
dass sie in der Worst-Case-Analyse ein klein bisschen verlieren.
Aber dass man dadurch enorm gewinnt an Einfachheit auch der Realisierung.
So, der Algorithmus stand von Guibas und der
geht wie folgt vor
Wir haben mal so eine gegebene Punktmenge, die wir triangulieren wollen.
Das sind diese Punktwolke in der Mitte. Und das erste,
was der Algorithmus macht, ist, er berechnet drei zusätzliche Punkte.
Das ist P minus eins, P minus zwei und P
minus drei, die die Punktmenge komplett umschließen.
Das ist diese Punktmenge. Das ist also irgendwie so
ein riesen Dreieck um unsere eigentlichen Punkte drumherum.
Das liegt daran, weil der Algorithmus jetzt,
der will jetzt sukzessive Punkte einfügen und der braucht immer ein Dreieck,
wo er einen Punkt einfügen kann.
Deswegen brauchen wir am Anfang so ein umschließendes Dreieck. Okay,
wir haben mal so ein künstliches, umschließendes Dreieck hier gebildet.
Jetzt nehmen wir nacheinander die Punkte aus der Punktmenge heraus.
Das ist jetzt ein Punkt, PR. Wir bestimmen das
Dreieck DIJK, welches den Punkt PR enthält. Ja,
am Anfang ist das natürlich automatisch dieses hier, ja,
das Große. Und dann fügen wir den Punkt ein,
wenn wir den eingefügt haben, dann triangulieren wir,
also der ist ja jetzt in irgendeinem Dreieck drin,
also zum Beispiel in dem hier, ne?
Dann triangulieren wir diese Fläche, dieses Dreieck in drei neue Dreiecke.
Wir bilden also diese drei neuen Dreiecke, dann haben wir es wieder trianguliert.
Aber diese Triangulierung könnte natürlich illegale Kanten haben.
Könnte sein, dass die illegale Kanten hat.
Deswegen müssen wir im nächsten Schritt alle Kanten legalisieren,
die dadurch illegal geworden sind,
dass wir PR eingefügt haben
So, jetzt gibt es noch einen weiteren Fall,
der bei Punkt in allgemeiner Lage eigentlich ja nicht vorkommt,
aber der jetzt hier tatsächlich auch berücksichtigt ist,
wenn der Punkt PR auf der Graden liegt,
zwischen PI und PJ, dann können wir das natürlich auch machen,
dann entstehen aus zwei,
drei Ecken vier neue Dreiecke.
Ist einfach nur noch ein Sonderfall. So, dann legalisieren
wir alle Kanten und haben dann eine Triangulierung mit einem weiteren Punkt.
Und danach nehmen wir den nächsten Punkt und den fügen wir wieder ein.
Finden wir wieder ein Dreieck, wo der reingehört.
Wir legalisieren wieder alle Kanten und machen das nach und nach.
Und am Ende haben wir
alle Punkte eingefügt
Der Algorithmus ist auch aus einem weiteren Grund ganz toll,
weil er ermöglicht natürlich auch einen gutsten Update. Das heißt,
wenn sie eine Punktmenge haben und sie machen noch einen zusätzlichen Punkt rein,
dann zeigt ihnen der Algorithmus gleich, was sie tun müssen.
Um dann die Triangulierung zu aktualisieren. Okay, Schritt eins
. Wir brauchen als erstes mal das umschließende Dreieck.
Das berechnen wir wie folgt. Wir berechnen einfach für alle Punkte,
die wir haben, die maximale Koordinate in X- und Y-Richtung.
Und wenn wir die haben, wir können ja davon ausgehen,
dass es ungefähr ist diese Punktwolke.
Dann erzeugen wir die folgenden drei Punkte, 3M0. Das ist
also ein Punkt, der ganz weit nach rechts liegt.
03M, das ist einer, der ganz oben liegt,
also dreimal so weit weg wie die maximale Koordinate, die wir haben.
Und den Punkt minus drei, minus 3M,
der ist hier unten links. Also das ist die Punktwolke,
die maximal Koordinate, die wir sehen, hat, dieser Punkt,
das mal drei multipliziert, zack, zack, ist hier.
Und da können wir jetzt das Dreieck drum rumbilden.
Das ist P minus 1, P minus 2 und hier unten ist P minus 3.
Es ist einfach nur so konstruiert, dass das umschließende Quadrat,
wo alle Punkte drin sind, auf alle Fälle enthalten ist.
Sie können das Dreieck auch auf 100 andere Arten und Weisen
berechnen. Das ist jetzt einfach so gemacht. Okay,
also wir haben ein Dreieck, liegen alle Punkte drin und
wir haben quasi das Äußere unserer Triangulierung schon gefunden,
wenn wir diese drei Punkte mal hinzunehmen.
Wir müssen jetzt ein bisschen aufpassen,
wenn wir gleich Legalität überprüfen, dann müssen wir so tun,
als wenn diese Punkte unendlich weit weg sind. Ja,
wir können nicht auch mit diesen Koordinaten können wir nicht rechnen,
sondern wir müssen dann immer prüfen und so tun,
als wenn der jetzt so bei minus unendlich liegt,
der Punkt
Oder plus oder endlich, je nachdem. Okay, so,
wenn wir dieses, dieses dann triangulieren, dann kriegen wir
genau diese Triangulierung raus. Also das ist die Triangulierung,
die wir einfach suchen, das Schwarze in der Mitte.
Und dann sehen wir noch diese grünen Linien und die grünen Linien
hier beschreiben die Triangulierung der gesamten Fläche inklusive diesem umschließenden Dreieck.
Und wenn wir dann das Ergebnis haben wollen,
dann müssen wir nur die roten und die grünen Kanten
löschen und dann bleibt genau die Triangulierung hier übrig.
Okay, so, das ist nur, damit wir mit dem Dreieck anfangen.
So, warum müssen wir diesen Legalitätstest anpassen?
Ich habe hier mal einen Fall hier aufgemalt,
also Schauen Sie sich zum Beispiel mal dieses Dreieck an, dieses hier.
Ja, das hat jetzt diesen einen Punkt P minus 3 dabei und die beiden.
Das Dreieck hier, das bildet einen Dreieck der Dilonitriangulierung.
Und das ist der umschließende Kreis, der keinen weiteren Punkt mehr enthält.
Wenn Sie jetzt mal, jetzt wird es ein bisschen klein,
wenn Sie sich jetzt mal vorstellen, dieser Punkt hier,
der würde noch weiter nach außen wandern und der würde
hier reinwandern zwischen diesem Kreisbogen und der Linie.
Ja, was würde dann passieren? Dann würde dieser Punkt,
der wäre jetzt so nah an dem Rand,
dass er quasi hier einen Edgeflip verursachen würde, die Kante würde flippen
Und wir hätten also hier zwei, drei Ecke,
die so gehen und die Kante der Konvexen,
Hülle würde nicht mehr dazugehören.
Das wollen wir natürlich nicht. Und das liegt an
diesem Spalt zwischen der Kante und dem Umkreis.
Wenn wir uns vorstellen, dass dieser Punkt unendlich weit rausgezogen ist,
dann wird dieser Abstand hier unendlich klein.
Ja, und dann kann das nicht mehr passieren.
Deswegen müssen wir aufpassen, also hier könnte der Punkt immer
noch dazwischen liegen und dann würde ein Fehler bei der Berechnung passieren.
Deswegen müssen wir immer gucken, wenn wir einen Edgeflip machen,
müssen wir so tun,
als wenn diese Eckpunkte hier einfach
unendlich weit wechseln
So, jetzt müssen wir Kanten legalisieren, wie funktioniert das?
Also, wir haben ja jetzt ein Dreieck genommen,
das Dreieck war vorher ein Dreieck, der Delony-Triangulierung.
Also, bevor wir den Punkt PR eingefügt haben, war alles gut.
Jetzt haben wir den einen Punkt eingefügt, PR hier.
Und haben jetzt sozusagen was verändert. Also, wir haben
diese Dreiecke verändert. Also, die gab es ja vorher
nicht. Und weil dadurch das PR hier reingerutscht ist,
müssen wir natürlich theoretisch auch diese Kanten überprüfen,
ob die jetzt alle hier wieder jetzt legal sind.
Das Dreieck hat sich ja verändert.
Also, und die Umkreise haben sich verändert. Also,
dieses Dreieck zum Beispiel, PI-PK, PK, PR,
PJ, hätte ja jetzt einen großen Umkreis.
Er würde hier so rumgehen. Und da könnt ihr ein anderer Punkt
dran liegen. Also das Erste, was man sich anschaut,
sind mal die Kanten hier zwischen PR und PI.
Ja, also diese neue eingezogen kann. Was man nämlich
jetzt sieht, ist, die können nicht illegal sein.
Ja, die Kante ist garantiert nicht illegal hier.
Also die kannten, die den Knoten PR verlassen.
Warum sind die nicht illegal? Das kann man
wie folgt sehen. Also das ist das Lämmer,
die kannten die Inzidenzen zu PR,
also die gestrichelten Linien hier,
die sind nach dem dritten Schritt
automatisch legal
Wir zeigen nur,
ich zeige Ihnen das nur hier für die linke Seite,
für die rechte Seite, kann sich das dann analog überlegen.
Wir gucken uns mal den Umkreis an, CICJCK, also hier der.
Der enthält keinen weiteren Punkt, richtig? Ja,
also da ist ja keiner drin, weil das war ja eine Delawney-Triangulierung,
da kann ja in diesem Umkreis kein weiterer Punkt drin halten.
So, wenn wir jetzt diesen Umkreis,
den können wir jetzt schrumpfen zu diesem roten Kreis hier,
und der rote Kreis enthält jetzt PI und PR,
ja,
und der enthält keinen weiteren Punkt
Weil der ist ja in dem grünen Kreis enthalten und in
dem grünen Kreis ist ja kein weiterer Punkt.
Deswegen ist es in dem roten Kreis ja auch kein weiterer Punkt.
So, jetzt können wir den Punkt, den Kreis PIPR
langsam größer machen, bis er wieder einen dritten Punkt PL berührt.
Irgendeinen. Und sobald er den dritten Punkt berührt,
wissen wir, dass das Dreieck legal ist.
Und das enthält die Kante von PI nach PR. Das heißt,
die ist auf alle Fälle legal. Was passieren kann,
ist allerdings, dass diese äußeren vier Kanten, die drei Kanten,
die es vorher gab, von PI nach PJ,
PJPK, PKPI illegal sind.
Und die müssen wir reparieren
Das machen wir mit dem folgenden rekrusiven Verfahren. Das ist
Legalize Edge. Wir nehmen also jetzt einen Punkt PR,
den fügen wir ein und wir schauen uns die kannte PIPJ
an und gucken, ob die noch legal ist.
Und wenn nicht, dann machen wir einen Edge-Flip.
So, wenn wir diese Legalize Edge-Funktion aufrufen,
dann suchen wir uns als erstes mal den Punkt PK.
Das ist der dritte Punkt des Dreiecks mit der Kante PIPJ.
Also hier war PIPJ. Hier haben wir den Punkt PR
eingefügt und dann muss es ja irgendwie noch eine andere Kante,
einen anderen Punkt geben, der das gegenüberliegende Dreieck hier bestimmt.
Den müssen wir finden. Das müssen wir irgendwie rausfinden,
welcher Punkt das ist. Jetzt gucken wir,
ob die Kante PIPJ illegal ist bezüglich PR und PK,
indem wir den Umkreis bilden und gucken,
ob PR da drin liegt
Wenn er da drin liegt, dann ist sie illegal,
dann entfernen wir die Dreiecke P-I-P-J-P-R, P-I-P-J-P-K,
also diese beiden Dreiecke, und fügen dafür P-E-R-P-K-P-J und PK-P-R-P-I zu.
Also wir ziehen diese Kante rein, haben diese beiden Dreiecke dabei.
Damit haben wir wieder etwas verändert. Wir wissen jetzt wieder,
dass die Kante, die von PR ausgeht, nicht illegal ist.
Aber die Kante von PI nach PK kann jetzt illegal geworden sein.
Die müssen wir wieder überprüfen und das machen wir rekrusiv.
Genauso wie wir die Kante vom PK nach PJ rekrusiv überprüfen
Okay, und wie macht man diesen Illegalitätstest?
Wir bilden einfach den Umkreis zwischen den drei Punkten und gucken,
ob der Punkt PR dahin enthalten ist.
Das ist alles. Ja? Okay, die Kante kommt dann
entsprechend rein. Okay, hier ist nochmal der Fall,
wenn wir jetzt eine Kante legalisieren können,
wie wir das anwenden, hier für das Einfügen des Punktes,
das müssen wir jetzt einfach dreimal machen.
Und hier müssen wir es entsprechend viermal machen. Das heißt,
was wir jetzt machen für den dritten und vierten Schritt,
wir haben uns den Punkt eingefügt und wir rufen,
wir löschen dieses äußere Dreieck,
wir fügen diese drei inneren Dreiecke ein,
das macht diese Zeile
Und wir rufen dreimal Legalize Edge auf.
Für diese Kante, für diese Kante und für diese Kante.
Und dann reparieren wir das. Und hier unten ist der Fall,
wenn der Punkt auf der Mitte darauf liegt. Gut,
hier ist mal ein Beispiel, wo man sehen kann,
wie das funktioniert. Also das ist ein ganz schönes Beispiel,
das ist sehr aufwendig konstruiert, damit man das,
damit das auch sehr lehrreich ist.
Also das ist eine gültige Triangulierung dieser Punktmenge, die Sie hier sehen.
Und jetzt kommt unser Punkt PR. Und der liegt an dieser Stelle her,
die markiert ist, da kommt dieser Punkt rein.
Und das Erste, was jetzt passieren würde, wäre,
dass dieses relativ spitze klinklige Dreieck hier, drei neue Dreiecke entstehen lässt.
Und dann würden diese, kann diese, diese und diese auf Legalität überprüft.
Bier unten, die wäre legal. Ja, also hier passiert nichts.
Aber diese hier wird illegal durch das Einfügen dieses Punktes,
weil der Punkt darin enthalten ist, wenn sie in Umkreis bilden würden. Das heißt,
diese Kante ist illegal und wir machen ein Edgeflip und dann würden wir die Kante,
die Ränder überprüfen, das wären diese und diese Kante,
diese Kante wäre wieder illegal,
wir machen wieder einen Edgeflip,
diese Kante ist immer noch illegal,
wir machen wieder einen Edgeflip und wir haben entsprechend das und
auf der anderen Seite genauso und das wäre die Triangulierung,
die entsteht
Ja. Das Entscheidende, was man hier sieht,
ist, dass alle Dreiecke, die jetzt entstehen,
die neu entstehen, sind benachbart zu dem Punkt PR.
Das hat dieser Algorithmus so an sich.
Also sie können das in dem Algorithmus auch sehen,
dass sie immer relativ zur PR gucken.
Also und das ist eine ganz entscheidende Eigenschaft,
die man braucht, um diese Aufzeit zu analysieren.
Also man fügt einen Punkt ein und man retrianguliert quasi die Umgebung,
aber alle Dreiecke, die neu entstehen,
werden quasi an dem Punkt PR anstoßen.
Die werden PR als Eckpunkt haben
Okay, so, um die Laufzeit zu analysieren,
müssen wir jetzt überlegen, wie viele Dreiecke entstehen denn da tatsächlich?
Und wir müssen zeigen, dass das linear ist. Also es sind jeden Schritt,
nur linear viele Dreiecke oder eine konstante Anzahl von Dreiecken entsteht,
damit es in der Summe über den gesamten Algorithmus linear bleibt.
Das ist unser Ziel. Das ist die erwartete Anzahl von
Dreiecken, die entsteht. Also die erwartete Anzahl Dreiecke,
die während der Ausführung des Algorithmus auf Endpunkten erzeugt werden,
ist höchstens 9 N plus 1. Also das heißt,
wenn wir die Punkte nach und nach einfügen,
kommen wir am Ende höchstens auf 9 N plus 1
Dreiecke,
die wir einfügen
Okay, wie kann man das sehen?
Wir betrachten also jetzt das Einfügen dieses Ertenpunktes.
Also TR ist die Lawney-Triangulierung nach Einfügung des Ertenpunktes.
Und wir schauen uns den Knotengrad an, weil wir sehen,
der Knotengrad hat offensichtlich etwas damit zu tun,
wie viele Dreiecke eingefügt wurden.
So, wie viele neue Dreiecke? Delta Air heißen die jetzt,
sind durch das Einfügen entstanden. Im ersten Schritt drei bzw. vier,
also Hier sind drei neue entstanden und hier sind vier neue Dreiecke entstanden.
Dadurch, dass wir PR eingefügt haben, so wie wir weiter.
Das ist klar. So, jetzt machen wir Legal
Ice Edge, immer auf den Kanten.
Immer wenn Legal Ice Edge erfolgreich ist, entstehen zwei neue Dreiecke.
Ja, wir machen einen Edge-Flip. Also zwei werden entfernt.
Zwei neue Dreiecke entstehen. Aber der Knoten gerade von PR
, der wächst um eins. Also mit jeder Legal
Ice Edge-Operation kriegt PR eine neue Kante. Das heißt,
der Knotengrad sagt uns etwas über die Anzahl der Dreiecke,
die entstanden ist. Das heißt,
die Anzahl der neuen Dreiecke ist für den Fall,
dass wir mit einem Dreieck starten,
drei plus zweimal kminus drei
Also Carminus 3 ist die Anzahl der Kanten an dem Knoten PR,
die nicht im ersten Schritt entstanden sind.
Und dann würde ich sagen, okay, mit jedem,
jeder kannte die noch an PR drankommt.
Also wir haben, wir haben irgendwie, wo ist er?
Ja. Wir haben unseren Knoten PR, ja,
und nachdem wir den eingefügt haben,
hatte der drei Kanten
So, und mit jeder Legalize-Edge-Operation kriegt er eine neue Kante
und es werden zwei neue Dreiecke erzeugt. Das heißt,
wir haben Knotengrad minus diese drei, die wir vorher hatten.
Ja, und dafür jeweils zwei neue Dreiecke, die wir einfügen,
plus die drei, die wir am Anfang neu eingefügt haben.
Ja, und das ist der Fall wiederum,
dass der Punkt auf der Graden liegt.
Und das ist immer kleiner, gleich 2K minus drei.
Wir wissen ja, wir wissen ja,
wie viele kannten die Triangulierung insgesamt haben,
haben wir die ja mit Eulers-Theorien schon ausgerechnet.
Das sind nämlich dreimal R plus drei minus sechs.
Ja,
kann man ausrechnen
Drei Kanten von dieser Triangulierung, die gehören zu dem umschließenden
großen Dreieck, was hier außen drumherum war.
Dazu gehören drei. Zu die werden nie benachbart zu dem PR.
Die können wir rausnehmen. Und dann können wir den erwarteten Knoten gerade ausrechnen,
indem wir einfach sagen, naja,
wir kennen ja die Gesamtzahl, und der erwartete Knotengrad,
das ist ja nichts weiter als der durchschnittliche Knotengrad.
Das heißt, eins durch eher mal die Summe über
alle Punkte der Triangulierung, Knotengrad von P.
Und der Knotengrad von P,
den kennen wir
Ja, den können wir jetzt hier einsetzen.
Die drei ziehen wir noch ab und dann kommen sechs raus.
Ja, der erwartete Knoten gerade für einen Punkt,
den wir einfügen, ist sechs.
Und damit wissen wir auch, wie viele neue Dreiecke entstehen können.
Setzen wir nämlich einfach jetzt hier ein für das K
und dann kommen neun raus. Ja, das heißt,
es entstehen durch das Einfügen eines Knoten im Schnitt neun neue Dreiecke.
Und wenn wir dann alle Knoten eingefügt haben,
kommen wir auf neun N. Ja. So,
der letzte Teil des Algorithmus, der uns noch fehlt und
dann fehlt uns noch was von der Analyse.
Aber der wichtige Teil des, der letzte Teil des Algorithmus
ist, wie finden wir denn eigentlich dieses Dreieck
Wenn wir uns jetzt dumm anstellen und müssen alle Dreiecke angucken,
um zu finden, wo liegt der denn jetzt drin,
der Punkt? Das wäre schlecht, ja, das wäre sehr teuer.
Wir müssen also einen Algorithmus oder eine Datenstruktur haben,
die uns sagt, wie wir den Punkt finden.
Das machen wir mit der folgenden Struktur und zwar bauen wir etwas,
was so ähnlich ist wie ein Suchbaum, aber nur so ähnlich,
weil es wird kein Baum sein, sondern ein Deck.
Was wir machen ist, wir bauen den sogenannten Delta-Deck,
also das ist die Datenstruktur,
die zu dem Grübers-Algorithmus gehört und die sieht wie folgt aus,
wir haben Knoten für die Dreiecke,
also hier haben wir zum Beispiel mal so eine Triangulierung,
da hätten wir dann drei Dreiecke,
das sind dann irgendwie
so drei Knoten
Und wenn, was jetzt passiert ist im Laufe des Algorithmus,
fügen wir ja Knoten rein und dann spalten wir diese Dreiecke auf.
Dann würden wir also dieser Knoten hier,
der liegt jetzt in dem Delta Delta 1,
er zaugt drei neue Dreiecke und wir erzeugen jetzt,
wie in einem Suchbaum, drei Kinder,
die gehören zu den drei neuen Dreiecken,
die wir hier erzeugt haben.
Jetzt kommt aber noch die Legalize Edge-Operation,
die würde jetzt zum Beispiel aus diesem neuen Dreieck und dem Delta 2
durch diesen Kantenflip zwei neue Dreiecke, Delta 4 und Delta 5 machen.
Und deswegen, die verknüpfen wir entsprechend,
wir erzeugen also neue Dreiecke, Delta 4,
Delta 5 und sagen,
aus welchen Dreiecken
die entstanden sind
Weil die aus zwei, drei Ecken entstehen, bei der Legal als Edge-Operation,
kriegen wir keinen Baum, sondern wir kriegen einen Deck.
Ja, hier entsprechend. Okay, so,
die Quelle von dem Ganzen in der Datenstruktur ist einfach das
umschließende Dreieck, mit dem wir anfangen.
Und dann laufen wir in diesem Baum und wir können in dem Baum einfach mal gucken,
wie, in welchem, also wenn wir jetzt einen neuen Knoten haben,
fangen wir an, der ist dann in dem umschließenden Dreieck enthalten.
Wir können dann die Kinder angucken und gucken,
in welchem dieser Dreiecke ist der.
Und dann laufen wir in diesem Deck so lange,
bis wir eine Senke erreicht haben
Okay, so, der Delta-Deck hier hat eine beschränkte Größe für Endpunkte.
Es ist die erwartete Anzahl Knoten in O von N.
Und der Knotengrad ist kleiner gleich drei.
Ja, das können wir schon direkt zeigen.
Warum ist die Anzahl der Knoten in O von N?
Naja, also jeder Knoten gehört zu einem Dreieck,
was wir erzeugen. Und wir wissen schon,
das sind ja neun N plus eins, viele erwartet.
Also haben wir auch nur erwartet,
neun N plus eins, viele Dreiecke.
Es macht also O von
So, wir können jetzt Kanten entstehen, Kanten entstehen,
dadurch, dass wir ein Dreieck aufteilen, wenn wir es aufteilen,
entstehen neue Dreiecke und wir fassen das Dreieck nie wieder an.
Das heißt, wir können nur drei Nachfolger haben und durch
Legalized Edge kriegen immer zwei Nachfolger. Das heißt,
der Knotengrad ist immer kleiner, gleich drei in der Datenstruktur. So,
jetzt kommt der richtig schwierige Teil und den werden wir dann gleich geschickt überspringen,
der richtig schwierige Teil ist zu zeigen,
dass während der Algorithmus läuft und wir in diesem Delta-Back immer das Dreieck suchen,
wo wir den Punkt einfügen müssen,
dass das in der Summe beschränkt ist,
durch O von N-Login,
erwartete Laufzeit
Das ist dieses Lämmer 9 und der Beweis dafür,
den finden Sie hier oder auch in diesem Buch
auf den nächsten 1, 2, 3 Folien.
Und das ist eine Menge Rechenrei, die überspringen wir jetzt mal geschickt.
Wir können sich das gerne mal durchlesen. Ich würde Ihnen aber gleich raten,
es nicht zu versuchen, an den Folien zu machen,
sondern lieber in das Buch reinzugucken, wenn Sie den Beweis verstehen wollen,
weil auf den Folien ist es wirklich extrem knapp zusammengefasst.
Es ist ein Zählargumente. Man zählt immer,
wie viele Punkte liegen da drin und wie viele liegen
entsprechend draußen
Okay, also wir gehen davon aus, dass das ist
die Laufzeitanalyse, die ich jetzt mal überspringe aus Sidegründen.
Und der letzte Schritt, den wir noch draußen ist,
den Legalitätstest anzupassen. Wir müssen jetzt noch gucken,
dass wenn wir dieses umschließende Dreieck haben und wir das Legalize Edge machen,
dass wir nie einen Fehler machen,
wenn wir diese Eckpunkte hier haben.
Das steht hier, was man da tun muss.
Da gibt es sieben Fälle, die man unterscheiden muss.
Je nachdem, wo welcher Eckpunkt auftritt.
Und hier stehen sozusagen die Fälle aufgelistet. Ich habe das
aber auch nochmal als ein Bild. Also, naja,
Fall 0 ist der Fall, dass alle Punkte einen positiven Index haben.
Das heißt, wir haben den Knoten eingefügt,
die irgendwo im Inneren der Triangulierung
Das ist der Normalfall. Da müssen wir nichts ändern. Wenn,
jetzt kann ein Punkt I,
ein Index kleiner Null haben, dann ist es also,
das waren die mit dem Index Kleiner Null, sind die Eckpunkte.
Der Punkt J kann einen Index kleiner haben als Null.
Das sind die Fälle 1 und 2. Und I und K
werden dann größer als Null.
So, die sehen so aus. Also der Punkt liegt hier,
der Punkt I liegt auf dem äußeren Rand auf diesem und
die anderen Punkte liegen hier im Innern.
Und wenn wir den Fall haben,
dann müssen wir auf alle Fälle immer
ein Edgeflip machen
Ja, das ist einfach nur die Annahme, dass der Punkt unendlich weit rausgeht.
Dann überlegen wir uns, was kommt raus aus der Rechnung?
Wir rechnen dann gar nicht mehr. Wenn J kleiner Null ist,
I und K größer, gleich Null, machen wir auch einen H-Flip.
Wenn I und J größer, gleich Null ist und K,
K kleiner Null, machen wir nichts,
dann wissen wir, die Kante ist legal.
Wenn IK kleiner Null ist und J größer, gleich Null,
arbeiten wir mit den realen Koordinaten und triangulieren damit den Raum irgendwie hier in dieser Grenzfläche.
Nehmen wir nachher eigentlich eh nicht brauchen. Und wenn I und J
kleiner Null ist und J und Karl Kleiner 0 und I
größer gleich mal, können wir wieder mit realen Koordinaten arbeiten,
wenn I und J beides kleiner 0 ist,
ist die Kante auf alle Fälle legal.
Dann haben wir diese äußere Kante am Rand, da müssen wir nichts mehr machen.
Das ist einfach nur die Anpassung der Legalize Edge-Operation,
damit wir hier an den Kanten,
den bis umschließenden Dreiecks, keinen Fehler mehr machen.
Ja, das muss man noch tun. Okay,
so, damit kam man nun zeigen,
dass Grübers Algorithmus für Endpunkt in der Ebene,
die die Lawly Triangulierung berechnet,
mit einer Worst Case erwarteten Laufzeit von O von N-Log N unter Verwendung von O von N Speicher.
Den entscheidenden Schritt der Analyse,
den habe ich jetzt hier mal weggelassen
Die Korrektheit folgt eben aus den, was haben wir denn
im Laufe der Zeit, den Schritten gesehen?
Dieser Algorithmus ist für mich persönlich, kann andere Leute anders sehen,
die Methode der Wahl zu berechnen, die Lorny-Triangulierung.
Wenn sie sich die algorithmische Struktur angucken,
dann sehen sie, der ist relativ einfach zu implementieren.
Und den können sie zudem auch noch in höheren Dimensionen machen.
Den können sie auch noch das Edgeflip, können sie formulieren im Dreidimensionalen.
Da machen sie eben einen, dann flippen sie eben eine Fläche.
Dann haben sie zwei benachbarte Tetraeder und flippen daran
eine Fläche
Okay, also cool übers Algorithmus, ist einfach zu implementieren.
Der Delta-Deck, den muss man natürlich realisieren,
aber der ist von der Struktur her auch nicht kompliziert.
Und es ist natürlich entscheidend für die Effizienz.
Den kann man nicht weglassen. Man kann nicht einfach sagen,
ich gucke mir einfach alle Dreiecke an und gucke mal,
wo der Punkt reinpasst. Den muss man haben. Die
erwartete optimale Laufzeit ist so gut, wie die Worst-Case-Laufzeit,
also O von N-Log-End, aber es ist eine erwartete optimale Laufzeit.
Also dieses randomisiert. Der Algorithmus lässt sich gut auf höhere Dimensionen
erweitern und ist damit also eine sehr schöner, eleganter Algorithmus.
Zur Berechnung der Didony-Triangulierung und damit auch zur Berechnung der des Wohnalliergams.
Okay, damit wären wir hiermit durch. Wir haben nächste Woche,
wir haben am Mittwoch noch eine weitere Vorlesung und da möchte
ich Ihnen auf alle Fälle noch ein weiteres Problem zeigen.
Deswegen habe ich das jetzt ein bisschen komprimiert hier.
Und zwar werden wir uns am Mittwoch nochmal anschauen,
wie man kleinste, umschließende Kreise berechnet.
Und das war es auf alle Fälle jetzt für heute