270 likes | 436 Views
Algorithmische Probleme in Funknetzwerken IV. Christian Schindelhauer schindel@upb.de. Zellulare Netze (I). Ursprüngliche Problemstellung: Starres Frequenzmultiplexing für gegebene Menge von Basisstationen Gegeben: Positionen der Basisstationen Gesucht:
E N D
Algorithmische Probleme in FunknetzwerkenIV Christian Schindelhauer schindel@upb.de
Zellulare Netze (I) • Ursprüngliche Problemstellung: • 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-DiagrammeDefinition (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-DiagrammeDefinition (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-DiagrammeDefinition (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-DiagrammeStruktur • 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
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
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 • 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
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