Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Das Maßproblem von Klee

Ähnliche Präsentationen


Präsentation zum Thema: "Das Maßproblem von Klee"—  Präsentation transkript:

1 Das Maßproblem von Klee
Jörg Bruder Benjamin Drayer Joachim Krempel Daniel Schüssele

2 Übersicht Problem 1-dimensional Problem 2-dimensional
Scanline (Bentley) Naive Lösung Segmentbaum Lösung Problem d-dimensional

3 Das eindimensionale Maßproblem
Gegeben: n Intervalle auf einer Geraden.

4 Das eindimensionale Maßproblem
Gegeben: n Intervalle auf einer Geraden.

5 Das eindimensionale Maßproblem
Gegeben: n Intervalle auf einer Geraden. Gesucht: Länge der Vereinigung über alle n Intervalle

6 Das eindimensionale Maßproblem
Gegeben: n Intervalle auf einer Geraden. Gesucht: Länge der Vereinigung über alle n Intervalle

7 Das eindimensionale Maßproblem
Gegeben: n Intervalle auf einer Geraden. Gesucht: Länge der Vereinigung über alle n Intervalle Platzbedarf: O(n)

8 Das eindimensionale Maßproblem
Gegeben: n Intervalle auf einer Geraden. Gesucht: Länge der Vereinigung über alle n Intervalle Platzbedarf: O(n) Zeitkomplexität: O(n log(n))

9 Das zweidimensionale Maßproblem

10 Das zweidimensionale Maßproblem
Gegeben: n Rechtecke

11 Das zweidimensionale Maßproblem
Gegeben: n Rechtecke Gesucht: Die von den Rechtecken überdeckte Fläche

12 Scanline Speicherung der Rechtecke Scanline Berechnung der Fläche

13 Speicherung der Rechtecke
q = (x-low, x-high, y-low, y-high)

14 Scanline Sortiere x-Werte aufsteigend Verschmelze gleiche x-Werte
Analog y-Werte Speichere die v als Listen bei den u

15 Scanline

16 Scanline

17 Scanline

18 Scanline

19 Berechnung der Fläche

20 Berechnung der Fläche m(i)=Maß der aktiven Segmente

21 Naiver Ansatz Verwende die Scanline
Berechne m(i) als eindimensionales Maßproblem Achtung: Worstcaselaufzeit

22 Segmentbaum Idee Blätter q-voll, q-partiell 1-Umbrella count(x)
Delta(x) Einfügen Löschen Gesamtalgorithmus

23 Segmentbaum Idee Blätter q-voll, q-partiell 1-Umbrella count(x)
Delta(x) Einfügen Löschen Gesamtalgorithmus

24 Idee Speichere nicht die Fragmente aus denen ein Segment besteht sondern markiere bestimmte Knoten. Der Unterbaum, der von jedem Knoten ausgeht überdeckt gewisse Segmente. Das Maß der aktiven Segmente soll in den Knoten gespeichert werden. Wenn dies realisiert ist, dann kann man an der Wurzel des Baumes das Gesammtmaß für die gerade aktiven Segmente ablesen.

25 Segmentbaum Idee Blätter q-voll, q-partiell 1-Umbrella count(x)
Delta(x) Einfügen Löschen Gesamtlgorithmus

26 Blätter Speichere alle y-Werte bis auf und doppelt,
da sie einmal als Anfang und einmal als Ende eines Segments auftreten.

27 Segmentbaum Idee Blätter q-voll, q-partiell 1-Umbrella count(x)
Delta(x) Einfügen Löschen Gesamtlgorithmus

28 q-voll, q-partiell Knoten A ist q-voll, wenn das Segment von A ganz in q liegt

29 q-voll, q-partiell Knoten A ist q-partiell, wenn A nicht q-voll ist aber einen Sohn hat, der q-voll oder q-partiell ist.

30 Segmentbaum Idee Blätter q-voll, q-partiell 1-Umbrella count(x)
Delta(x) Einfügen Löschen Gesamtalgorithmus

31 1-Umbrella Konstrukt um Infomationen effizient in den Knoten zu halten
1-Umbrella für Segment q: -Tip t

32 1-Umbrella Konstrukt um Infomationen effizient in den Knoten zu halten
1-Umbrella für Segment q: -Tip t - high-line, low-line, high-tip, low-tip

33 1-Umbrella Konstrukt um Infomationen effizient in den Knoten zu halten
1-Umbrella für Segment q: -Tip t - high-line, low-line, high-tip, low-tip - q-volle Knoten an der high- oder low-line

34 1-Umbrella Konstrukt um Infomationen effizient in den Knoten zu halten
1-Umbrella für Segment q: -Tip t - high-line, low-line, high-tip, low-tip - q-volle Knoten an der high- oder low-line Analyse:

35 1-Umbrella Konstrukt um Infomationen effizient in den Knoten zu halten
1-Umbrella für Segment q: -Tip t - high-line, low-line, high-tip, low-tip - q-volle Knoten an der high- oder low-line Analyse: - O(log(n)) Knoten

36 1-Umbrella Konstrukt um Infomationen effizient in den Knoten zu halten
1-Umbrella für Segment q: -Tip t - high-line, low-line, high-tip, low-tip - q-volle Knoten an der high- oder low-line Analyse: - O(log(n)) Knoten - O(log(n)) Zeit

37 Segmentbaum Idee Blätter q-voll, q-partiell 1-Umbrella count(x)
Delta(x) Einfügen Löschen Gesamtalgorithmus

38 count(x) Idee war das Maß in den Knoten zu speichern nicht die Umbellas Gefahr: Das Maß soll sich nur erhöhen, wenn ein noch nicht ganz enthaltenes Segment eingefügt wird Gefahr: Beim Löschen muß berücksichtigt werden ob es noch andere Segmente gibt, die das gelöschte Intervall überdecken Lösung: Zusatzinformation in den Knoten

39 count(x) Informationen in den Knoten
Speichere im Knoten x das aktuelle Maß val(x) Speichere im Knoten x, wie oft x als q-voller Knoten in einem 1-Umbrella vorkommt als count(x)

40 Segmentbaum Idee Blätter q-voll, q-partiell 1-Umbrella count(x)
Delta(x) Einfügen Löschen Gesamtalgorithmus

41 Delta(x) Aktualisiert val(x) und count(x) im Knoten x, wenn ein Segment eingefügt wird und gibt Änderung zurück Fall 1: Fall 2: - count(x)++ - Änderung=Segmentgröße - val(x) - val(x)=Segmentgröße - count(x)++ - Änderung=0 - val(x) bleibt

42 Delta(x) Algorithmus: if(val(x)=Segmentgröße){ count(x)++; return 0; }
else{ f=Segmetgröße-val(x); val(x)=Segmentgröße; return f; Laufzeit: O(1)

43 Segmentbaum Idee Blätter q-voll, q-partiell 1-Umbrella count(x)
Delta(x) Einfügen Löschen Gesamtlgorithmus

44 Einfügen Berechnen des 1-Umbrellas
Von low- und high-tip bis t mit Delta(x) updaten Bei t Informationen verschmelzen Information zur Wurzel propagieren

45 Einfügen Algorithmus: incr=Delta(low-tip); x=father(low-tip);

46 Einfügen

47 Einfügen

48 Einfügen Algorithmus: incr=Delta(low-tip); x=father(low-tip);
while(x!=t){ f=0; if(x hat einen q-vollen Sohn y){ f=Delta(y); }

49 Einfügen

50 Einfügen Algorithmus: incr=Delta(low-tip); x=father(low-tip);
while(x!=t){ f=0; if(x hat einen q-vollen Sohn y){ f=Delta(y); } if(val(x)=Wert des gesammten von x aufgespannten Segments){ incr=0; else{ incr=incr+f; val(x)=val(x)+incr; x=father(x);

51 Einfügen

52 Einfügen Algorithmus: incr=Delta(low-tip); x=father(low-tip);
while(x!=t){ f=0; if(x hat einen q-vollen Sohn y){ f=Delta(y); } if(val(x)=Wert des gesammten von x aufgespannten Segments){ incr=0; else{ incr=incr+f; val(x)=val(x)+incr; x=father(x);

53 Einfügen Die Hilfsfunktion Delta(x) wird in konstanter Zeit abgearbeitet. Die Berechnung des 1-Umbrellas O(log(n)). Die Schleifendurchläufe der while-Schleife O(log(n)) Propagieren ebenfalls in O(log(n)) => Einfügen in O(log(n))

54 Segmentbaum Idee Blätter q-voll, q-partiell 1-Umbrella count(x)
Delta(x) Einfügen Löschen Gesamtalgorithmus

55 Löschen Analog zum Einfügen

56 Segmentbaum Idee Blätter q-voll, q-partiell 1-Umbrella count(x)
Delta(x) Einfügen Löschen Gesamtalgorithmus

57 Gesamtalgorithmus Scanline ist an
Lese aktive Segmente m(i) an der Wurzel ab, berechne Fläche mit Hilfe von Lösche Segmente die inaktiv werden Füge Segmente ein, die aktiv werden Analyse: - Scanline O(n) - m(i) berechnen O(1) - Löschen/Einfügen O(log(n)) => Gesamtlaufzeit O(n log(n))

58 Beispiel

59 Beispiel x-Werte: 2<4<7<8<9<10
y-Werte: 2<3<4<5<8

60 Beispiel

61 Beispiel Füge Segement a=[4,8] ein

62 Beispiel

63 Beispiel Fläche=4(4-2)=8 Füge Segement b=[3,5] ein

64 Beispiel

65 Beispiel Fläche=5(7-4)+8=23 Entferne a=[4,8]

66 Beispiel

67 Beispiel Fläche=2(8-7)+23=25 Entferne b=[3,5]

68 Beispiel

69 Beispiel Fläche=0(9-8)+25=25 Füge c=[2,3] ein

70 Beispiel

71 Beispiel Fläche=1(10-9)+25=26 Entferne c=[2,3]

72 Das mehrdimensionale Maßproblem
d-Dimensionen Scanlineansatz Kosten:


Herunterladen ppt "Das Maßproblem von Klee"

Ähnliche Präsentationen


Google-Anzeigen