Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

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

Ähnliche Präsentationen


Präsentation zum Thema: "Das Maßproblem von Klee Jörg Bruder Benjamin Drayer Joachim Krempel Daniel Schüssele."—  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 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

17

18

19 Berechnung der Fläche

20 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 aufund 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: - count(x)++ - Änderung=0 - val(x) bleibt Fall 2: - count(x)++ - Änderung=Segmentgröße - val(x) - val(x)=Segmentgröße

42 Delta(x) Algorithmus: if(val(x)=Segmentgröße){ count(x)++; return 0; } else{ count(x)++; 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

48 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 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 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 Analyse: 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 - Scanline O(n) - Löschen/Einfügen O(log(n)) - m(i) berechnen O(1) => Gesamtlaufzeit O(n log(n))

58 Beispiel

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

60 Beispiel

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

62 Beispiel

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

64 Beispiel

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

66 Beispiel

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

68 Beispiel

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

70 Beispiel

71 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 Jörg Bruder Benjamin Drayer Joachim Krempel Daniel Schüssele."

Ähnliche Präsentationen


Google-Anzeigen