Algorithmische Probleme in Funknetzwerken IV Christian Schindelhauer schindel@upb.de
Zellulare Netze (I) Ursprüngliche Problemstellung: Gegeben: Gesucht: Starres Frequenzmultiplexing für gegebene Menge von Basisstationen Gegeben: Positionen der Basisstationen Gesucht: Frequenzzuteilung, welche die Interferenzen minimiert Wie modelliert man zulässige Frequenzzuteilungen?
Voronoi-Diagramme Definition (I) Best-Station-Problem nur unter Berücksichtung von Path Loss führt zu Voronoi-Diagrammen Abstandsmaß: Euklidischer Abstand = L2-Norm p=(p1,p2), q=(q1,q2) R2 Bisektor B(p,q)
Voronoi-Diagramme Definition (II) Bisektor Zerlegt Ebene in Halbebenen D(p,q) und D(q,p) Für gegebene Punktmenge V definiere Voronoi-Region VR(p,V) eines Punkts vV:
Voronoi-Diagramme Definition (III) Voronoi-Region VR(p,V) Voronoi-Diagramm VD(V) Alle Voronoi-Regionen sind konvex Beweis: Übung Voronoi-Diagramme bestehen aus Strecken, Halbgeraden und Punkten
Voronoi-Diagramme Struktur Voronoi-Diagramme bestehen aus Strecken, Halbgeraden und Punkten Betrachte benachbarte Voronoi-Regionen VR(p,V) und VR(q,V) Dann muß jeder Punkt des gemeinsamen Rands im Bisektor B(p,q) liegen, weil Jede Voronoi-Region ist konvex + Randstücke bestehen aus endlich vielen Geradenstücken Voronoi-Diagramm ist ein geometrischer Graph
Geometrischer Graph Geometrische Realisierung eines ungerichteten Graphen in R2 Knoten werden auf Punkte abgebildet Kanten werden auf einfache Wege abgebildet Keine Überschneidung zwischen verschiedenen einfachen Wegen Planarer Graph Zusammenhangskomponente Maximaler Teilgraph indem jeder Knoten einen Weg zu jedem anderen Knoten besitzt
Kreis-Lemma Beweis: Übung…
Konvexe Hülle Voronoi-Diagramme stehen in enger Beziehung zur konvexen Hülle CH(V) einer Punktmenge V
Eulersche Formel
Größe des Voronoi-Diagramms
Zeitkomplexität I (untere Schranke) In welcher Zeit kann man das Voronoi-Diagramm berechnen? Trivial O(n2) Kann man es in Linearzeit berechnen? Zum Vergleich:
Zeitkomplexität II (untere Schranke) Wenn man verlangt, dass der Algorithmus eine Adjazenzliste ausgibt
Effiziente DS für Geom. Graphen (Zwischenspiel) Adjazenzliste Für jeden Knoten, Liste benachbarter Knoten Doubly Connected Edge List (DCEL) Für jede Kante Adjazente Knoten Nächste Kante im Uhrzeigersinn an den Endknoten Benachbarte Fläche Quad Edge Data Structure (QEDS) Wie DCEL nur ergänzt durch Kanten gegen den Uhrzeigersinn
Zeitkomplexität III (untere Schranke) Wenn QEDS-DS von VD(V) gegeben ist
Duale Graphen
Delaunay-Triangulation I Endliche Punktmenge V in allgemeiner Lage: Keine drei Punkte sind auf einer Gerade Keine vier Punkte auf einem Kreisbogen Erhält man indem man jeden Punkt um einen infinitesimal kleinen Vektor in zufällige Richtung verschiebt Delaunay-Triangulation Gegeben Menge V und Voronoi-Diagramm VD(V) Falls für p,qV die Regionen VR(p,V) und VR(q,V) als Rand eine Strecke besitzen, füge (p,q) zur Delaunay-Triangulation
Delaunay-Triangulation II Da V in allgemeiner Lage, d.h. Keine vier Punkte auf einem Kreisbogen Kein Voronoi-Punkt hat mehr als drei Kanten (wegen Kreislemma) Damit hat jeder Fläche des Dualen Graphen nur drei benachbarte Kanten Delaunay-Triangulation besteht nur aus Dreiecken
Sweep-Technik (I) Betrachte Bisektor zwischen Punkt (a,0) und Linie y=0 Ergibt Parabel mit x2 + (y-a)2 = y2 y = x2/ (2a) + a/2 Nun bewegt sich die Sweep-Line von Punkt (a,0) weg
Sweep-Technik (II) Mehrere Punkte Ereignisse Nur vordere Wellenfront ist von Interesse Unterteilung der Wellenfront in Parabelstücke Ereignisse Entstehen eines Parabelstücks Nur wenn die Wellenfront einen Punkt streift Verschwinden eines Parabelstücks Dadurch entsteht Voronoi-Punkt
Sweep-Technik (III) Schnittpunkte der Wellenfront fahren das Voronoi-Diagramm ab Treffen sich zwei Parabeln an der Wellenfront, verschwindet ein Parabelstück Nur benachbarte Spikes kommen als nächster Treffpunkt in Frage Die Anzahl der Parabelstücke in der Frontlinie ist linear
W = { x H | p V H : |x,p| = minuL |x,L| } Die Wellenfront Sei H Halbebene über parallel abwärts bewegender Gerade L inklusive L W = { x H | p V H : |x,p| = minuL |x,L| } Alle Punkte über B haben nächsten Nachbarn in B Alle Punkte zwischen B und L können nächsten Nachbarn sowohl in VH oder V \ H haben Die Parabel ist y-monoton, d.h. jede senkrechte Gerade schneidet B höchstens in einem Punkt Die Schnittpunkte von Parabeln heißen Bruchpunkte Fakt: Ein Punkt p ist ein Bruchpunkt gdw. p VD(V)
Ereignis A: Einfügen neuer Parabel Sweep-Linie trifft auf Punkt pV Parabel beginnt als Halbgerade Halbiert bestehendes Parabelstück (falls Sweep-Linie in allgemeiner Position) Da keine ander Operation Parabeln erzeugt, höchstens 2n-1 Parabelstücke Die beiden Schnittpunkte mit der alten Wellenfront definieren eine beginnende Voronoi-Kante Die Verlängerung der Kante über die Wellenfront hinaus, wird Spike genannt Die Schnittpunkte der Parabeln bewegen sich auf diesen Spikes bis sie einen Voronoi-Punkt treffen Treffpunkte möglicher Spikes zeigen mögliche Voronoi-Punkte an
Ereignis B: Löschen einer Parabel Bewegung der Sweep-Linie läßt Bruchpunkte aufeinanderlaufen Parabel zwischen Bruchpunkten verschwindet Voronoi-Region der verschwundenen nun hinter Sweep-Linie Da Region konvex ist dies Voronoi-Region abgearbeitet Der Treffpunkt der Bruchpunkte muß ein “bekannter” Spike sein Berechne frühesten “Zeitpunkt”, an dem die Sweep-Linie eine Parabel löscht Hierfür müssen nur benachbarte Parabelstücke berücksichtigt werden Nach Löschen, aktualisiere mögliche Treffpunkte
Notwendige Datenstrukturen Bisher konstruiertes Voronoi-Diagramm Speicherung als QEDS Technische Schwierigkeit: Unbeschränkte Kanten Verwende “bounding box” Wellenfront Wörterbuch mit Punkten aus V die relevante Parabeln beschreiben sortiert nach x-Koordinaten Jede Suche, Einfüge-Operation in Zeit O(log n) Ereignis-Warteschlange als Priority-Queue Priorität ergibt sich durch y-Koordinate der Sweep-Linie L Aktualisiere Warteschlange bei jedem Ereignis
Ereignis-Warteschlange Priorität ergibt sich durch y-Koordinate der Sweep-Linie L Erzeugen Parabel: Priorität = y-Koordinate der Punkte aus V Löschen Parabel: Priorität = y-Koordinate der Sweep-Linie, die den Kreis mit Mittelpunkt des Spike-Schnittpunkts s und Radius |s,u| von unten berührt, wobei u beteiligter Knoten eines Spikes ist. Aktualisiere Warteschlange bei jedem Ereignis Zeitaufwand O(log n) (amortisiert) für Einfügen in Warteschlange Löschen eines Elements der Warteschlange