• Keine Ergebnisse gefunden

Geometrische Algorithmen   Punkt-in-Polygon-Suche

N/A
N/A
Protected

Academic year: 2022

Aktie "Geometrische Algorithmen   Punkt-in-Polygon-Suche"

Copied!
51
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Geometrische Algorithmen Punkt-in-Polygon-Suche

Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche

(2)

Punkt-in-Polygon-Suche Übersicht

l Praxisbeispiel/Problemstellung

l Zählen von Schnittpunkten

¡ Schnitt einer Halbgerade mit der Masche

¡ Aufwandsbetrachtung

l Streifenkarte

¡ Vorgehen und Eigenschaften

¡ Speicherung der Daten / Suche in den Daten

¡ Aufwandsbetrachtung

l Trapezkarte

Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche

(3)

Praxisbeispiel Rollover am Bildschirm

Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche

(4)

Lösungsansatz 1 Zählen

Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche

(5)

Problemstellung 1 In welcher Masche liegt Punkt P?

Allgemein:

l Gegeben ist eine räumliche

Datenbank und eine Klasse typischer Anfragen

l Gesucht wird eine Datenstruktur, die einen effizienten Algorithmus

unterstützt Konkret:

l Gegeben ist eine Landkarte S und ein Punkt P

l Gesucht wird die Masche M, die den Punkt P beinhaltet

Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche

(6)

Lösungsansatz 1 Halbgerade am Punkt anlegen

Aus dem >>Jordanschen Kurvensatz folgt:

l Konstruiere ausgehend von P eine Halbgerade in beliebiger Richtung

l P liegt außerhalb des begrenzten Gebietes, wenn eine gerade Anzahl von Schnittpunkten entsteht.

l P liegt innerhalb des begrenzten Gebietes, wenn eine ungerade

Anzahl von Schnittpunkten entsteht.

1x

Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche

(7)

Theorem Jordanscher Kurvensatz

Nach Jordan:

l Eine geschlossene Jordankurve S zerlegt die Ebene in zwei

zusammenhängende Gebiete, von denen genau eines nicht beschränkt ist.

l Zwei Punkte der Ebene können genau dann durch eine Jordankurve J

verbunden werden, die S nicht

schneidet, wenn sie entweder beide im Inneren oder beide im Äußeren von S liegen.

Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche

(8)

Lösungsansatz 1 Suchaufwand

Das Verfahren muss für jede Masche iteriert werden:

l Aufwand für ein Polygon mit n Kanten: O(n)

l Aufwand bei m Polygonen: O(m*n)

Der Aufwand für eine Suche nach dem Jordanschen Kurvensatz beträgt

O(m*n).

Mit welchem Verfahren kann der Suchaufwand verringert werden?

Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche

(9)

Praxisbeispiel Bundesrepublik Deutschland

In der Praxis kann die Anzahl der Maschen und Kanten sehr schnell hoch werden:

Bundesrepublik Deutschland:

1 Masche

Bundesländer:

16 Maschen mit 17.700 Kanten Kreise:

440 Maschen mit 75.000 Kanten Gemeinden:

13.900 Maschen mit 300.000 Kanten

Angaben für den Massstab 1:500.000 Quelle: ArcDeutschland 500, ESRI

Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche

(10)

Vorgehensweise 2 Konstruktion eines Index

Der Aufbau eines Index kostet Zeit. Diese amortisiert sich jedoch bei der Abfrage.

Allgemein:

l Gegeben: Räumliche Datenbank und eine Klasse typischer Anfragen

l Gesucht: Datenstruktur, die einen möglichst schnellen Algorithmus unterstützt

Konkret:

l Gegeben: Landkarte S und ein Punkt P

l Gesucht: Index für die schnelle Identifikation der zugeordneten Masche M .

Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche

(11)

Lösungsansatz 2 Zerschneiden

Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche

(12)

Lösungsansatz 2 Konstruktion der Streifenkarte S'

Vorgehen:

l Konstruktion einer Karte S' durch Aufteilung der Landkarte mit

vertikalen Geraden durch alle Knoten.

Folge:

l In allen Schnittpunkten der Geraden mit den Kanten entstehen neue

Knoten.

2x

Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche

(13)

Lösungsansatz 2 Eigenschaften von S'

S' hat folgende Eigenschaften:

l Die Maschen sind in Trapeze (ggf.

Dreiecke) zerlegt.

l Kanten sind in Teilkanten zerlegt.

2x

Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche

(14)

Lösungsansatz 2 Vorteil von S'

Die Karte erhält eine Struktur, die wir ausnutzen können:

l Die Streifen sind in x-Richtung angeordnet.

l Innerhalb eines Streifens sind die Teilkanten und damit die Trapeze in y-Richtung angeordnet.

2x

Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche

(15)

Lösungsansatz II Speicherung der Daten

Die Datenspeicherung erfolgt in Arrays:

l Ein Array enthält die x-Koordinaten der Streifen.

l Jeder Streifen enthält ein Array der y-Koordinaten der Teilkanten.

Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche

(16)

Lösungsansatz 2 Intervall-Bisektion

Zwei schnelle binäre Suchalgorithmen werden für die Suche nach der Masche hintereinander geschaltet:

l Binäre Suche im Array der x-

Koordinaten nach dem Streifen, der P enthält.

l Binäre Suche nach dem zugehörigen Trapez in diesem Streifen.

Sobald die Teilkante direkt >>unterhalb/

oberhalb von P gefunden ist, ist die gesuchte Masche gefunden.

3x

Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche

(17)

Bemerkungen Eigenschaften der Maschen

Es gilt:

l Jeder Abschnitt eines Streifens liegt genau in einer Masche.

l Jede Kante lässt sich einer in y-

Richtung folgenden Masche zuordnen.

l Die Fläche"Außen" muss ebenfalls als Masche angesehen werden.

Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche

(18)

Lösungsansatz 2 Suchaufwand

Der Suchaufwand dieses Lösungsansatzes entsteht durch:

l Binäre Suche im Array der x-Koordinaten nach dem Streifen, der P enthält:

Binäre Suche in einem Array mit maximaler Länge 2n: O(log n)

l Binäre Suche nach der Lage von P zu den Teilkanten im Array der y-Koordinaten:

Binäre Suche in einem Array mit maximaler Länge n: O(log n)

Der Aufwand für die binäre Suche in einer Streifenkarte beträgt O(log n).

Im >>Vergleich zum Lösungsansatz 1 hat sich der Suchaufwand verbessert.

Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche

(19)

Vergleich Suchaufwand der zwei Lösungsansätze

Der Aufwand für eine Suche nach dem Jordanschen Kurvensatz beträgt O(n).

Der Suchaufwand für die binäre Suche in einer Streifenkarte beträgt O(log n).

Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche

(20)

Lösungsansatz 2 Speicherbedarf

Es entsteht eine hohe Speicheranforderung durch:

l die sortierte Speicherung der x-Koordinaten der vertikalen Geraden in einem Array:

Array der x-Koordinaten: O(n)

l die sortierte Speicherung der y-Koordinaten der Teilkanten jedes Streifens von oben nach unten in einem Array:

Array der y-Koordinaten: O(n)

Die Speicheranforderung für die Daten dieses Lösungsansatzes beträgt O(n²)

Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche

(21)

Lösungsansatz 2 Worst Case Speicherbedarf

Der Worst Case tritt tatsächlich auf:

l In ungünstigen Fällen erfolgt mit diesem Verfahren eine sehr hohe Knoten- und Teilkantenbildung und damit ein hohes Datenaufkommen.

Wie kann der Speicherbedarf verringert werden?

1x

Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche

(22)

Problemstellung 3 Verringerung des Speicherbedarfs

Zwischenresümee:

l Die Zerlegung in Streifen führt zu einer schnellen Suche.

l Allerdings ist der Speicherbedarf unvertretbar hoch.

Problem:

l Gibt es eine bessere Zerlegung, die die Laufzeit erhält und den

Speicherbedarf verringert?

Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche

(23)

Lösungsansatz 3 Tranchieren

Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche

(24)

Lösungsansatz 3 Vereinfachung des Beispiels

Um im Folgenden die Übersicht zu wahren, wird die Beispielkarte geändert:

l Löschen zweier Knoten: Ersetzen von drei Kanten durch eine Kante

l Verschieben zweier Knoten

2x

Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche

(25)

Lösungsansatz 3 Vereinfachende Annahmen

l Umschließen der Karte durch ein achsenparalleles Rechteck R:

Vermeidung der unbeschränkte Masche "Außen"

l Es existieren keine Knoten mit gleicher x-Koordinate:

Scherung oder Rotation um den Winkel e um den Ursprung

¡ e ist sehr klein wodurch die Topologie erhalten bleibt

¡ Später wird gezeigt, dass diese Transformation rein virtuell ist

2x

Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche

(26)

Lösungsansatz 3 Konstruktion der Trapezkarte T(S)

Vorgehen:

l Bei der Salamikarte werden alle Kanten der Landkarte

durchschnitten. Beim Tranchieren endet der Schnitt an der Kante.

Dadurch werden nur die direkt betroffenen Kanten zerlegt.

2x

Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche

(27)

Lösungsansatz 3 Konstruktionsprinzip Trapezkarte

Gegeben ist eine Landkarte S, umschlossen von einem Rechteck R; es existieren keine Knoten mit gleicher x-Koordinate

l Konstruiere für jeden Knoten aus S eine obere und eine untere vertikale

Extension (Linie); diese Linien enden am Schnittpunkt mit der nächsten Kante aus S oder an R

Die Trapezkarte T(S) ist eine Zerlegung, bestehend aus der Landkarte S, dem Rechteck R und den vertikalen Extensionen

l T(S) besteht aus disjunkten Trapezen (Dreiecken), die von (höchstens) vier Seiten (Kanten) begrenzt werden:

¡ Ein oder zwei vertikale Seiten, gebildet aus den Extensionen

¡ Genau zwei nicht-vertikale Seiten, gebildet aus Segmenten von Kanten

Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche

(28)

Lösungsansatz 3 Eigenschaften von T(S)

5 Fälle für die vertikalen Kanten (in der Abbildung die linken Kanten):

1. Die Kante entartet zu einem Punkt 2. Die untere vertikale Erweiterung

trifft auf eine Kante von S

3. Die obere vertikale Erweiterung trifft auf eine Kante von S

4. Die Kante besteht aus oberer und unterer Extension

5. Die Kante besteht aus einer Kante des Rechtecks R (genau zwei

Trapeze)

5x

Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche

(29)

Lösungsansatz 3 Bezeichnungen

Ein Trapez ist durch vier Elemente eindeutig festgelegt:

l top( )

l bottom( )

l leftp( ): Linker Endpunkt von top( ) oder bottom( ) oder rechter Knoten einer dritten Kante (linke Kante eines Trapezes besteht aus oberer und

unterer Extension) oder einer der linken Knoten von R (Trapez ganz links

l rightp( ):

analog zu leftp( )

Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche

(30)

Lösungsansatz 3 Komplexität der Trapezkarte

Satz 1:

Eine Trapezkarte T(S) einer Landkarte S mit n Kanten enthält höchstens:

a) 6n + 4 Knoten und b) 3n + 1 Trapeze.

Beweis:

a) >>Addition der vorkommenden Knoten b) mit Eulers Formel aus a) (als Übung)

Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche

(31)

Lösungsansatz 3 Beweis zu Satz 1a

Satz 1:

Eine Trapezkarte T(S) einer Landkarte S mit n Kanten enthält höchstens:

(a) 6n + 4 Knoten

Beweis:

Ein Knoten der Trapezkarte ist entweder

Insgesamt: 6n + 4

l ein Eckpunkt von R

l ein Knoten der Karte S

l Endknoten einer Extension (n Kanten 2 · n Knoten

2 · 2 · n Endknoten)

4 2 · n 2 · 2 · n

Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche

(32)

Lösungsansatz 3 Adjazenz von Trapezen

Zwei Trapeze und ' heißen adjazent, wenn sie sich entlang einer vertikalen Linie berühren.

Es gilt entweder: top( ) = top( ') oder: bottom( ) = bottom( ')

Ein Trapez kann höchstens zu vier Trapezen adjazent sein.

Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche

(33)

Lösungsansatz 3 Datenstruktur für T(S)

l Möglich wäre eine doppelt verkettete Kantenliste

l Wegen der einfachen Struktur der Trapeze bietet sich folgende Alternative an:

¡ Elemente für Knoten (mit Koordinaten) von S (leftp( ), rightp( ))

¡ Elemente für Kanten (mit Referenzen auf Knoten) von S (top( ), bottom( ))

¡ Elemente für Trapeze von T(S) mit Referenzen auf:

n leftp( )

n rightp( )

n top( )

n bottom( )

n alle (maximal 4) adjazenten Trapeze

l Beachte: Die Geometrie der Trapeze ist nur implizit, kann aber in konstanter Zeit rekonstruiert werden

Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche

(34)

Lösungsansatz 3 Konstruktion und Suche

l Probleme:

¡ Konstruktion der Trapezkarte T(S)

¡ Unterstützung der Suche in einer Trapezkarte

l Idee für das weitere Vorgehen:

¡ Unterstützung der Suche durch eine Art „binärer Suchbaum“ D mit 2 Arten von Elementen

n X-Elemente für Knoten: Links oder Rechts?

n Y-Elemente für Kanten: Oben oder Unten?

¡ Trapezkarte und „Baum“ werden simultan konstruiert

Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche

(35)

Lösungsansatz 3 Beispiel für T(S) und D

Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche

(36)

Lösungsansatz 3 Aufbau des Beispiels

33x

Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche

(37)

Lösungsansatz 3 Zum Algorithmus

l T(S) und D werden simultan konstruiert

l Die Suchstrukur wird schrittweise aufgebaut: Nach "Einfügen" eines Elements in der Karte S erfolgt ein Update von Suchstruktur und Trapezkarte

l D ist kein Baum, sondern ein „DAG“, ein „directed acyclic graph“, ein gerichteter azyklischer Graph

l Dieser DAG ist zusammenhängend, hat genau eine Wurzel und genau ein Blatt für jedes Trapez von T(S)

l In der berechneten Suchstruktur referenzieren sich die Blätter von D und die Trapeze von T(S) gegenseitig

l Wie stets hängt die Tiefe (=Güte) des Baumes von der Reihenfolge der Bearbeitung der Segmente ab

l Idee: Zufällige Permutation der Segmente von S

Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche

(38)

Lösungsansatz 3 Pseudocode: Aufbau von T(S) & D

Input: Eine Landkarte S mit n Kanten

Output:Eine Trapezkarte T(S) und eine Suchstruktur D für T(S) in einem Rechteck R

1. Konstruiere ein umschließendes Rechteck R 2. Berechne eine Permutation s

1, s

2,...,s

n der Kanten von S 3.for i = 1 to n

4. do Finde die Trapeze

0,...,

k in T(S

i-1), die von s

i

geschnitten werden 5. Lösche

0,...,

k aus T(S

i-1) und ersetze sie durch neue Trapeze

6. Entferne die Elemente für

0,...,

k aus D

i-1 und füge neue innere Knoten und Blätter an

Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche

(39)

Lösungsansatz 3 Übergang von i-1 zu i

Offene Frage: Wie finden wir 0,..., k?

l Konstruktion von T(Si) und Di mit Si = {s1, ..., si} unter Verwendung von T(Si-1) und Di-1

l "Schleifeninvariante": T(Si-1) ist eine Trapezkarte und D(Si-1) ist eine Suchstruktur für diese Trapezkarte

l Der Unterschied zwischen "i - 1" und " i " betrifft genau die Trapeze in T(Si-1), die von si geschnitten werden

Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche

(40)

Lösungsansatz 3 Pseudocode: Finde Trapeze

Input: Das Segment si , T(Si-1) und D(Si-1)

Output: Die Trapeze 0, ..., k, die von si geschnitten werden.

1. Seien p

i und q

i linker und rechter Knoten von s

i

2. Punkt-in-Polygon für p

i in D

i-1: Finde

0 3. j = 0;

4.while q

i liegt rechts von rightp(

j) 5. do if rightp(

j) liegt oberhalb von s

i 6. then

j+1 ist der untere rechte Nachbar von

j 7. else

j+1 ist der obere rechte Nachbar von

j 8. j = j + 1

9.return

0, ...,

k Wir erhalten zwei Fälle

Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche

(41)

Lösungsansatz 3 Trapezfolge Fall 1

Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche

(42)

Lösungsansatz 3 Beispiel zum Fall 1

15x

Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche

(43)

Lösungsansatz 3 Trapezfolge Fall 2

Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche

(44)

Lösungsansatz 3 Beispiel für Fall 2

21x

Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche

(45)

Lösungsansatz 3 Effizienz I - Erwartungswerte

Der oben beschriebene Algorithmus hat folgende Erwartungswerte (gemittelt über alle Permutationen von n Segmenten):

l Konstruktion von T(S) und Aufbau von D(S): O(n log n)

l Speicherplatz von D(S): O(n)

l Punkt-in-Polygon-Suche mittels D(S): O(log n)

Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche

(46)

Lösungsansatz 3 Effizienz II - Bemerkungen

l Der Erwartungswert bezieht sich auf die Menge aller Permutationen

l Pech bei der Permutation kann zum Worst – Case O(n) für die Suche und zu entsprechender Tiefe der Suchstruktur führen

l Abhilfe durch Stop-Loss-Punkt setzen: Brich ab, falls D(S) zu tief wird, und fange neu an mit einer neuen Permutation

l Differenz zum Worst-Case O(n) für die Suche und O(n2) für die Konstruktion kann beliebig klein gemacht werden, ohne daß man von der O(n log n) – Laufzeit für die Konstruktion von D(S) sehr stark abweicht

Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche

(47)

Lösungsansatz 3 Sonderfallbetrachtung I

Annahme war : Keine zwei Knoten haben die gleiche x-Koordinate!

l Übung: An welcher Stelle im Algorithmus treten Probleme auf, falls zwei Punkte die gleiche x-Koordinaten haben?

l In der Praxis darf dieser Sonderfall natürlich nicht ausgeschlossen werden!

l Mögliche Lösung: Rotation der Achse um einen kleinen Winkel Schwierigkeit: Numerik bei der Rotation um kleine Winkel

l Lösung: >>Symbolische Transformation in Form einer Scherung entlang der x- Achse:

l ist so klein, dass die Reihenfolge der Knoten in x-Richtung erhalten bleibt

Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche

(48)

Lösungsansatz 3 Scherung

Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche

(49)

Lösungsansatz 3 Sonderfallbetrachtung II

Anwendung des Algorithmus "Trapezkarte" auf S := { s : s S } Problem: Numerik bei Punkten p = (x + y, y)

l Wir nutzen statt p = (x + y, y) die Repräsentation ( x, y):

¡ Es werden im Algorithmus keine geometrischen Objekte berechnet, auch wird nicht benötigt

¡ Es genügen qualitative Aussagen: rechts/links an x-Knoten bzw. oben/unten an y-Knoten

¡ Diese Aussagen lassen sich durch Betrachtung der Punkte (x, y) treffen

Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche

(50)

Lösungsansatz 3 Sonderfallbetrachtung III

Rechts/links-Vergleich zweier transformierter Punkte (xp + yp, yp) und (xq + yq, yq):

l xp!= xq : Vergleich von xp und xq ergibt Reihenfolge der Knoten in x-Richtung

l xp = xq : Reihenfolge der transformierten Knoten in x-Richtung hängt von den y- Koordinaten ab

Übung: Betrachtung des oben/unten-Vergleichs eines Knotens q = (x + y, y) an einer Kante s mit den Anfangs- bzw. Endknoten p1 = (x1 + y1, y1) und p2 = (x2 +

y2, y2)

Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche

(51)

Punkt-in-Polygon-Suche Literatur

De Berg, Mark et al.: Computational Geometry: Algorithms and Applications.

Springer Verlag Berlin, Heidelberg, 1997

Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche

Referenzen

ÄHNLICHE DOKUMENTE

Die Anzahl der Arrayzugriffe beim Suchen in einem Trie oder beim Einf¨ ugen eines Schl¨ ussels in einen Trie ist h¨ ochstens 1 plus der L¨ ange des Schl¨

Die verkettete Struktur (Form) eines Trie ist nicht abh¨ angig von der Schl¨ usselreihenfolge beim L¨ oschen/Einf¨ ugen: F¨ ur jede gegebene Menge von Schl¨ usseln gibt es

 Understand how search engines index and answer queries..  Make use of content, markup and metadata on

im linken Sohn im rechten Sohn ungerade Ebene alle Schlüssel  x alle Schlüssel > x gerade Ebene alle Schlüssel  y alle Schlüssel > y..

Ein feuriges Züngeln ging durch ihre Augen, ich konnte das Glühen stärker werden sehen, als wir in den Lichtstrahl traten, ihr Mund offen, wortlos als die Flut

nach einem Zimmer, einer WG oder einfach nach einer schönen ruhigen Wohnung für Dich?. Der Zuschuss soll dieses Jahr in Form einer einmaligen Auszahlung eines Betrages in der Höhe von

Ziel dieser Tagung ist es, die sich verstärkende Akzeptanz für alte und neue Mythologien unter fachlichen, didaktischen und pädagogischen Aspekten zu diskutieren und sich mit

Die Klasse Object enthält bereits eine Funktion clone() zu diesem Zweck Sie erzeugt aber nur eine. CloneNotSupportedException, es sei denn, eine Klasse implementiert die