Das Maßproblem von Klee

Slides:



Advertisements
Ähnliche Präsentationen
Algorithmentheorie 08 – Dynamische Programmierung (1)
Advertisements

Punkt-in-Polygon-Verfahren III (R/R+-Baum)
Kap. 13 Sweep-Line Algorithmen Kap Schnittprobleme
Vorbereitung: struct knoten { int x; struct knoten *l, *r; } *b, *bh, **bp; b: Zeiger auf Wurzel bh: Hilfszeiger bp: Zeiger auf Zeiger auf knoten b bp.
Man bestimme den „minimalen aufspannenden Baum“ des Graphen.
Minimum Spanning Tree: MST
DNA-Array oder DNA-Chip
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (26-Graphenalgorithmen: Wiederholung und Übung) Prof. Th. Ottmann.
Algebraische Zahlen: Exaktes Rechnen mit Wurzeln
Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Claudio Moraga; Gisbert Dittrich
WS 03/041 Algorithmentheorie 01 - Einleitung Prof. Dr. S. Albers Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (22 – B-Bäume)
FH-Hof Der B-Baum Richard Göbel. FH-Hof Wahl des Verzweigungsgrad Verzweigungsgrad kann größer als 2 sein v Nachfolger für einen Knoten v-1 Werte in einem.
Kapitel 6: Klassifizierung von Sortiertechniken
7. Natürliche Binärbäume
Suche in Texten (Stringsuche )
Sortieren mit Binären Bäumen
Sortierverfahren Richard Göbel.
Effizienz: Indexstrukturen
Suche in Texten: Suffix-Bäume
WS Algorithmentheorie 05 - Treaps Prof. Dr. Th. Ottmann.
Algorithmen und Datenstrukturen
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (03 – Verschiedene Algorithmen für dasselbe Problem) Prof. Dr. Th. Ottmann.
WS Algorithmentheorie 01 – Divide and Conquer (Segmentschnitt) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (10 - Suchverfahren) T. Lauer.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (03 – Verschiedene Algorithmen für dasselbe Problem) Prof. Dr. Th. Ottmann.
WS Prof. Dr. Th. Ottmann Algorithmentheorie 09 - Suche in Texten Suffix –Tree –Konstruktion Ukkonen Algorithmus.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (27 – Kürzeste Wege) Prof. Th. Ottmann.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 4 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (17 – Bäume: Grundlagen und natürliche Suchbäume) Prof. Th. Ottmann.
Algorithmentheorie 03 – Randomisierung (Closest Pair)
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (21 – Kürzeste Wege) T. Lauer.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (03 – Verschiedene Algorithmen für dasselbe Problem) Prof. Dr. Th. Ottmann.
Algorithmen und Datenstrukturen
WS Prof. Dr. Th. Ottmann Algorithmentheorie 09 - Suche in Texten Suffix - Bäume.
Geometrisches Divide and Conquer
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 12 Claudio Moraga, Gisbert Dittrich FBI Unido
Institut für Kartographie und Geoinformation Dipl.-Ing. J. Schmittwilken Diskrete Mathe II Übung
Externe Datenstruktur lineare Liste
Katja Losemann Chris Schwiegelshohn
Minimum Spanning Tree: MST
Theorie und Praxis geometrischer Algorithmen
Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Splay Trees Von Projdakov Benjamin.
Eine Implementierung einer effiziente externe geordnete (!) lineare Liste Operationen: Search(x) Insert(x) Delete(x)
Einführung in die Programmierung
Effiziente Algorithmen
Diskrete Mathematik II
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
Einführung in die Programmierung Wintersemester 2009/10 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Algorithmen und Datenstrukturen 1 SS 2002
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Geoinformation II 6. Sem. Vorlesung April 2000 AVL-Bäume.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung Datenstrukturen für den Algorithmus von.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Foliendesign: Jörg Steinrücken & Tobias Kahn Vorlesung
Diskrete Mathe II Übung IKG - Übung Diskrete Mathe II – Jörg Schmittwilken 2 Übung5 Prüft, ob sich folgende Segmente schneiden: –P1(1/7) P2(3/1)
Binärer Suchbaum IV AVL-Baum I
Geoinformation II 6. Sem. Vorlesung April 2000 Geometrische Algorithmen - ein einführendes, größeres Beispiel für ein Semester-begleitendes Programmier.
Konvexe Hüllen (Convex Hulls)
Binärbäume.
Tutorium Software-Engineering SS14 Florian Manghofer.
AVL-Bäume.
Vorlesung AVL-Bäume/Algorithmen-
Vorlesung AVL-Bäume/Algorithmen-
 Präsentation transkript:

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

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

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

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

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

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

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

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))

Das zweidimensionale Maßproblem

Das zweidimensionale Maßproblem Gegeben: n Rechtecke

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

Scanline Speicherung der Rechtecke Scanline Berechnung der Fläche

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

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

Scanline

Scanline

Scanline

Scanline

Berechnung der Fläche

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

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

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

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

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.

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

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

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

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

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.

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

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

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

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

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:

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

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

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

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

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)

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

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

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)

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

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

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

Einfügen

Einfügen

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); }

Einfügen

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);

Einfügen

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);

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))

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

Löschen Analog zum Einfügen

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

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))

Beispiel

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

Beispiel

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

Beispiel

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

Beispiel

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

Beispiel

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

Beispiel

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

Beispiel

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

Das mehrdimensionale Maßproblem d-Dimensionen Scanlineansatz Kosten: