Organisatorisches Kapitel 6: Geometrische Algorithmen

Werbung
Organisatorisches
ƒ Anmeldung Prüfung ist eröffnet
• Anmeldung möglich bis 16.06.04
Kapitel 6: Geometrische
Algorithmen
ƒ Abgabe der Programmieraufagabe:
• 21-23.6.04
• 20 Minuten Abgabegespräch
• Näheres auf Webseite
ƒ Programmierwettbewerb:
• Einreichung der Lösungen bis 14.06.04 um
12:00
• Siegerehrung in Vorlesung am 14.06.04
Technische Universität Wien
Technische Universität Wien
1
Institut für Computergraphik und Algorithmen
Das Scan-Line Prinzip
Geometrische Problem
ƒ Eingabedaten sind Elemente im ddimensionalen Raum
ƒ Beispiele: Landkarten, Chip-Layouts,
Konstruktionspläne...
ƒ Geometrische Algorithmen nutzen
geometrische Eigenschaften der Elemente
aus um Lösungen zu finden
ƒ Hier betrachtete Themen:
• Scan-Line Prinzip
• Mehrdimensionale Bereichssuche
Technische Universität Wien
3
Institut für Computergraphik und Algorithmen
ƒ
ƒ
Eingabe: Menge von Elementen in 2D
Idee: Wandle statisches 2D-Problem in
dynamisches 1D-Problem um
Vorgehensweise: Bewege vertikale Linie
(Scan-Line) von links nach rechts über
Objektmenge
Scan-Line teilt Objekte in 3 Gruppen:
1. Tote Objekte: Liegen komplett links von L
2. Aktive Objekte: Werden von L geschnitten
3. Inaktive Objekte: Liegen komplett rechts von L
Technische Universität Wien
4
Beispielproblem
ƒ Gegeben: Menge S={s1,...,sn} von
insgesamt n vertikalen und horizontalen
Liniensegmenten in 2D
ƒ Gesucht: Alle Paare sich schneidender
Segmente
ƒ Naive Lösung: Teste alle Paare von
Segmenten auf Schnitt testen
ƒ Laufzeit: Θ(n2)
ƒ Optimal falls Θ(n2) Schnittpunkte, aber
schlecht wenn weniger Schnittpunkte
Institut für Computergraphik und Algorithmen
ƒ
ƒ
Institut für Computergraphik und Algorithmen
Beispiel 1: Schnitt Isoorientierte Liniensegmente
Technische Universität Wien
2
Institut für Computergraphik und Algorithmen
5
Kreuzende Paare: 3
Wieviele Schnittpunkte kann es bei n Segmenten
maximal geben?
Hälfte der Segmente senkrecht, Hälfte
waagerecht, alle möglichen Schnittpunkte:
Technische Universität Wien
6
Institut für Computergraphik und Algorithmen
1
Vereinfachende Annahmen
Beobachtungen
ƒ Alle Anfangs- und Endpunkte der
horizontalen Segmente und vertikale
Segmente haben paarweise
verschiedene x-Koordinaten
ƒ Erspart viele Fallunterscheidungen im
Algorithmus
ƒ In unserem Beispiel treffen Annahmen
zu.
ƒ
Technische Universität Wien
7
Institut für Computergraphik und Algorithmen
ƒ
Man muss Scan-Line nicht kontinuierlich
über Ebene ziehen
Es gibt nur 3 Arten von interessanten
Stellen (X-Koordinaten):
1. Start von horizontalem Segment
2. Ende von horizontalem Segment
3. Vertikales Segment
ƒ
Triff Scan-Line auf vertikales Segment, so
kann sich das nur mit aktiven horizontalen
Segmenten kreuzene3
Technische Universität Wien
8
Institut für Computergraphik und Algorithmen
Algorithmus:
Beispiel
L
A
D
E
Technische Universität Wien
9
Institut für Computergraphik und Algorithmen
Technische Universität Wien
10
Institut für Computergraphik und Algorithmen
Anforderungen an die
Datenstruktur für L
Realisierung durch balancierte
Bäume
ƒ
ƒ Einfügen und Löschen in Zeit O(log n)
ƒ Bereichsabfrage nach [l,h]
Horizontale Elemente werden in L mit ihrer
Y-Koordinate als Schlüssel gespeichert
ƒ Folgende Operationen müssen effizient
unterstützt werden:
1. Einfügen von neuen Elementen
2. Löschen von Elementen
3. Ausgeben aller enthaltenen Elementen
deren Schlüssel in bestimmtem Bereich
liegt
Technische Universität Wien
Institut für Computergraphik und Algorithmen
11
1. Finde das Element x mit kleinsten
Schlüssel ≥ l
2. Gib x aus falls Schlüssel · h
3. Durchlaufe Baum in inorder Reihenfolge
von x aus und gib alle erreichten Knoten
aus solange Schlüssel · h
Technische Universität Wien
12
Institut für Computergraphik und Algorithmen
2
Suchen von Knoten p mit
kleinstem Schlüssel ≥ x
Technische Universität Wien
Beispiel: Suche Knoten mit
Schlüsseln in [8,21]
Technische Universität Wien
13
Institut für Computergraphik und Algorithmen
14
Institut für Computergraphik und Algorithmen
Beispiel: Suche Knoten mit
Schlüsseln in [8,21]
Laufzeitanalyse
ƒ Bereichssuche:
•
•
•
•
Sei r Anzahl Elemente in [yu,yo]
Suchen nach yu: O(log n)
Durchlaufen Baum bis Knoten größer yo: O(r)
Laufzeit insgesamt Bereichssuche: O(log n + r)
ƒ Scanline gesamt:
• Sortieren Haltepunkte: O(n log n)
• Scan: Für jeden Haltepunkt pi O(log n + ri) wobei ri
Anzahl Kreuzungen bei pi
• Also insgesamt O(n log n + R) (R Gesamtzahl
Kreuzungen)
Technische Universität Wien
Technische Universität Wien
15
Institut für Computergraphik und Algorithmen
Schnitt von allgemeinen
Liniensegmenten
Bemerkungen
ƒ Wenn R langsamer als quadratisch wächst
ist Scanline Verfahren dem naiven Verfahren
überlegen
ƒ Man kann zeigen: Es gibt Probleminstanzen,
für die O(n log n + R) Schritte nötig sind, um
alle Kreuzungen auszugeben ⇒ Scanline
Verfahren ist Worst Case optimal
Technische Universität Wien
Institut für Computergraphik und Algorithmen
16
Institut für Computergraphik und Algorithmen
17
ƒ
ƒ
ƒ
Gegeben: Menge von n Liniensegmenten s1,...,sn in
der Ebene
Gesucht: Menge aller echten Schnittpunkte
(Schnittpunkte, die nicht gleichzeitig Endpunkte sind)
Annahme: Allgemeine Lage
1.
2.
3.
4.
Kein Segment senkrecht
Schnitt zweier Segmente leer oder genau ein Punkt
In einem Punkt schneiden sich nie mehr als 2 Segmente
Alle Endpunkte und Kreuzungen haben paarweise
verschiedene x-Koordinaten
Technische Universität Wien
18
Institut für Computergraphik und Algorithmen
3
Beispiel
Vorgehensweise
ƒ Prinzip wie bei senkrechten und horizontalen
Segmenten
ƒ Scanline von links nach rechts
ƒ Beobachtung 1:
• Seien si und sj Segmente die sich bei Pi,j=(x,y)
kreuzen. Dann sind si und sj auf Scanline
benachbart wenn sich Scanline auf Position x-ε
befindet (für kleines ε).
Technische Universität Wien
19
Institut für Computergraphik und Algorithmen
Technische Universität Wien
20
Institut für Computergraphik und Algorithmen
Beispiel
Vorgehensweise
si
ƒ Beobachtung 2:
• An einem Schnittpunkt
vertauscht sich Reihenfolge der
betroffenen Segmente auf
Scanline
sj
x
x-ε
Technische Universität Wien
21
Institut für Computergraphik und Algorithmen
Technische Universität Wien
22
Institut für Computergraphik und Algorithmen
Beispiel
Folgerung:
si
sj
Technische Universität Wien
Institut für Computergraphik und Algorithmen
ƒ Müssen Scanline-Datenstruktur aktualisieren
wenn Kreuzung erreicht damit Reihenfolge
der Segmente auf Scanline korrekt bleibt
ƒ Auch Kreuzungen müssen Haltepunkte der
Scanline sein
ƒ Kreuzungen sind Haltepunkte, die erst
während Durchführung des Scans in
Haltepunkt-Datenstruktur eingefügt werden
sj
si
23
Technische Universität Wien
24
Institut für Computergraphik und Algorithmen
4
Drei Arten von Ereignissen
1.
2.
3.
ƒ
Segmentanfang (am Anfang bekannt)
Segmentende (am Anfang bekannt)
Kreuzung (erst während Scan berechnet)
Datenstruktur Ereignis enthält:
• X-Koordinate
• ID der betroffenen Elemente (eine bei Anfang
oder Ende, zwei bei Kreuzung)
Technische Universität Wien
25
Institut für Computergraphik und Algorithmen
ƒ
1. Nächstes_Ereignis(): Liefert nächstes
Ereignis rechts vom aktuellen Ereignis
2. Füge_Ein(Ereignis E): Fügt ein
Kreuzungs-Ereignis in ES ein
ƒ Implementierung:
• Heap oder balancierter Baum
• Laufzeit jeder Operation O(log |ES|)
Technische Universität Wien
26
Institut für Computergraphik und Algorithmen
Scanline-Status-Struktur
SSS
ƒ
Operationen EreignisDatenstruktur ES
Implementierung SSS
Speichert Segmente geordnet nach yKoordinate des Schnittpunkts mit Scanline
Operationen:
ƒ Blattorientierter balancierter binärer
Suchbaum mit zusätzlicher Verkettung der
Vorgänger und Nachfolger
1. FügeEin(Segment s): Bei Anfang Segment
2. Entferne(Segment s): Bei Ende Segment
3. Vorg(Segment s): Segment oberhalb von s auf
Scanline
4. Nachf(Segment s): Segment unterhalb von s auf
Scanline
5. Vertausche(Segment s_1, Segment s_2):
Vertauscht Positionen von Segmenten auf
Scanline
Technische Universität Wien
27
Institut für Computergraphik und Algorithmen
Technische Universität Wien
28
Institut für Computergraphik und Algorithmen
Funktion
TesteSchnittErzeugeEreignis(s1,s2)
Teil 1 Algorithmus
ƒ Nimmt zwei benachbarte Segmente s1
und s2 auf Scanline
ƒ Testet ob Schnitt existiert
ƒ Falls ja, erzeugt neues Ereignis mit xKoordinate des Schnittpunkts und ID
der Segmente
ƒ Ansonsten wird leeres Ereignis
zurückgeliefert
Technische Universität Wien
Institut für Computergraphik und Algorithmen
29
Technische Universität Wien
30
Institut für Computergraphik und Algorithmen
5
Teil 2 Algorithmus
Teil 3 Algorithmus
Technische Universität Wien
31
Institut für Computergraphik und Algorithmen
Technische Universität Wien
32
Institut für Computergraphik und Algorithmen
Beispiel
Laufzeit
ƒ Sortieren 2n Endpunkte nach x-Koordinate:
O(n log n)
ƒ Gesamtzahl Ereignisse: 2n+k (k Kreuzungen)
ƒ Nie mehr als O(n2) Ereignisse gleichzeitig in
ES (weil maximal O(n2) Kreuzungen)
ƒ Also jede Operation auf ES Laufzeit O(log n)
ƒ In SSS nie mehr als n Elemente
ƒ Jeder Zugriff auf SSS in Zeit O(log n)
s1
s5
s2
s3
s4
Technische Universität Wien
33
Institut für Computergraphik und Algorithmen
Technische Universität Wien
34
Institut für Computergraphik und Algorithmen
Laufzeit
ƒ Schleife wird maximal O(2n+k) mal
durchlaufen
ƒ In jedem Durchlauf maximal 5 Operationen
auf ES und SSS
ƒ Gesamtlaufzeit: O((n+k) log n)
ƒ Speicherplatzbedarf: O(n2) weil maximal
quadratisch viele Kreuzungen in ES
Technische Universität Wien
35
Institut für Computergraphik und Algorithmen
6
Herunterladen