Konvexe Hülle Definition konvexe Menge: Für je zwei beliebige Punkte, die zur Menge gehören, liegt auch stets deren Verbindungsstrecke ganz in der Menge. Abbildung: [Wikipedia]: Nicht-konvexe Menge (links), konvexe Menge (rechts) KIT – Institut für Theoretische Informatik 510 Konvexe Hülle Definition konvexe Menge: Für je zwei beliebige Punkte, die zur Menge gehören, liegt auch stets deren Verbindungsstrecke ganz in der Menge. Abbildung: [Wikipedia]: Nicht-konvexe Menge (links), konvexe Menge (rechts) Definition konvexe Hülle CH(S): Kleinste konvexe Menge, die S enthält. KIT – Institut für Theoretische Informatik 510 Obere konvexe Hülle Entwurfsprinzip: Teile und herrsche (divide and conquer) I I Gegeben: Punktmenge S = {p1 , . . . , pn } ⇢ R2 Gesucht: Konvexe Hülle von S CH(S) = Bereich, der von blauen Kanten umschlossen ist KIT – Institut für Theoretische Informatik 511 Obere konvexe Hülle Annahmen Annahmen oBdA: I Sortieren geht mit EREW-PRAM in T (n) = O(log n) und W (n) = O(n log n) I Vereinfachung: n = 2k für k 2 N, Koordinaten sind eindeutig KIT – Institut für Theoretische Informatik 512 Obere konvexe Hülle Algorithmische Idee I Punkte p und q mit minimaler/maximaler x-Koordinate sind Teil der CH I p und q partitionieren CH in UCH und LCH (lower convex hull) I OBdA: Betrachten Upper Convex Hull (UCH) KIT – Institut für Theoretische Informatik 513 Obere konvexe Hülle Algorithmische Idee I Punkte p und q mit minimaler/maximaler x-Koordinate sind Teil der CH I p und q partitionieren CH in UCH und LCH (lower convex hull) I OBdA: Betrachten Upper Convex Hull (UCH) Vorgehen: Teile und herrsche (divide and conquer) I Sortiere Punkte aufsteigend nach x-Koordinate I Seien S1 = {p1 , . . . , pn/2 } und S2 = {pn/2+1 , . . . , pn } KIT – Institut für Theoretische Informatik 513 Obere konvexe Hülle Algorithmische Idee I Punkte p und q mit minimaler/maximaler x-Koordinate sind Teil der CH I p und q partitionieren CH in UCH und LCH (lower convex hull) I OBdA: Betrachten Upper Convex Hull (UCH) Vorgehen: Teile und herrsche (divide and conquer) I Sortiere Punkte aufsteigend nach x-Koordinate I Seien S1 = {p1 , . . . , pn/2 } und S2 = {pn/2+1 , . . . , pn } I I Angenommen, UCH(S1 ) und UCH(S2 ) sind bekannt Dann: Brauchen obere gemeinsame Tangente (Stützgerade) von UCH(S1 ) und UCH(S2 ) KIT – Institut für Theoretische Informatik 513 p pn 1 Obere konvexe Hülle Veranschaulichung der oberen gemeinsamen Tangente Upper common tangent S2 S1 http://www.cs.yale.edu/homes/arvind/cs424/readings/pram.pdf, 06.07.2015 Figure 5: Determining the convex hull of a set of points. KIT – Institut für Theoretische Informatik 514 Obere gemeinsame Tangente I Bestimmung geht sequentiell in O(log n) Zeit I Verfahren: Binäre Suche auf beiden Seiten, jeweils 9 Fälle testen KIT – Institut für Theoretische Informatik 515 Obere gemeinsame Tangente I Bestimmung geht sequentiell in O(log n) Zeit I Verfahren: Binäre Suche auf beiden Seiten, jeweils 9 Fälle testen Schraffiert: Für binäre Suche uninteressant KIT – Institut für Theoretische Informatik 515 Algorithmus UCH Pseudocode Eingabe: Menge S von n Punkten in der Ebene (mit obigen Annahmen) Ausgabe: Obere konvexe Hülle von S assert x(p1 ) < x(p2 ) < · · · < x(pn ) if n 4 then 1) Brute Force zur Bestimmung von u , der oberen konvexen Hülle von S else 2a) Teile S in S1 = (p1 , . . . , pn/2 ) und S2 = (pn/2 , . . . , pn ) 2b) Parallel: u1 := UCH(S1 ) und u2 := UCH(S2 ) 3a) Berechne sequentiell uct (obere gemeinsame Tangente) von u1 und u2 3b) Bestimme u, die obere konvexe Hülle von S, mit Hilfe von uct return u KIT – Institut für Theoretische Informatik 516 Algorithmus UCH Beispiel Siehe Animation! KIT – Institut für Theoretische Informatik 517 Algorithmus UCH PRAM-Analyse Rekurrenz für T (n): 1. T (n) = O(1), W (n) = O(1) 2. T (n) = T (n/2) + c, W (n) = 2W (n/2) 3. Sequentiell O(log n) Zeit für Bestimmung der oberen Tangente, dazu T (n) = O(1) und W (n) = O(n) fürs Kombinieren der beiden oberen Hüllen KIT – Institut für Theoretische Informatik 518 Algorithmus UCH PRAM-Analyse Rekurrenz für T (n): 1. T (n) = O(1), W (n) = O(1) 2. T (n) = T (n/2) + c, W (n) = 2W (n/2) 3. Sequentiell O(log n) Zeit für Bestimmung der oberen Tangente, dazu T (n) = O(1) und W (n) = O(n) fürs Kombinieren der beiden oberen Hüllen Also (für Konstanten a, b, c): T (n) T (n/2) + a log n + c W (n) 2W (n/2) + bn 2 O(log2 n) 2 O(n log n) KIT – Institut für Theoretische Informatik 518 Algorithmus UCH PRAM-Analyse Rekurrenz für T (n): 1. T (n) = O(1), W (n) = O(1) 2. T (n) = T (n/2) + c, W (n) = 2W (n/2) 3. Sequentiell O(log n) Zeit für Bestimmung der oberen Tangente, dazu T (n) = O(1) und W (n) = O(n) fürs Kombinieren der beiden oberen Hüllen Also (für Konstanten a, b, c): T (n) T (n/2) + a log n + c W (n) 2W (n/2) + bn 2 O(log2 n) 2 O(n log n) Achtung: T (n) ist hier nicht optimal, W (n) schon! KIT – Institut für Theoretische Informatik 518 Algorithmus UCH PRAM-Analyse Rekurrenz für T (n): 1. T (n) = O(1), W (n) = O(1) 2. T (n) = T (n/2) + c, W (n) = 2W (n/2) 3. Sequentiell O(log n) Zeit für Bestimmung der oberen Tangente, dazu T (n) = O(1) und W (n) = O(n) fürs Kombinieren der beiden oberen Hüllen Also (für Konstanten a, b, c): T (n) T (n/2) + a log n + c W (n) 2W (n/2) + bn 2 O(log2 n) 2 O(n log n) Achtung: T (n) ist hier nicht optimal, W (n) schon! Brauchen für optimales T (n) schnelleres Conquer! KIT – Institut für Theoretische Informatik 518 Zusammenfassung I Parallele Algorithmen sind nützlich I PRAM: Abstraktes Shared-Memory-Modell I Work-Time-Prinzip KIT – Institut für Theoretische Informatik 519 Zusammenfassung I Parallele Algorithmen sind nützlich I PRAM: Abstraktes Shared-Memory-Modell I Work-Time-Prinzip I Parallele Entwurfskonzepte: I I I Baumparadigma Teile und herrsche ... (! Vorlesung Parallele Algorithmen von Prof. Sanders) KIT – Institut für Theoretische Informatik 519 Kap. 14: Zusammenfassung I Datenstrukturen I Algorithmen I Entwurfstechniken I Analysetechniken KIT – Institut für Theoretische Informatik 520 Zusammenfassung – Datenstrukturen I (doppelt) verkettete Listen, unbeschränkte (zyklische) Felder, Stapel, FIFOs, deques I (beschränktes) Hashing: verketten (universell) / lin. Suche I sortiertes Feld I Prioritätslisten (binärer Heap) (addressierbar) I Implizite Repräsentation vollständiger Bäume I Suchbäume: binär, (a, b)-Baum I Graphen: Adjazenzfeld / Listen / Matrix I Union-Find KIT – Institut für Theoretische Informatik 521 Zusammenfassung – Algorithmen I Langzahlmultiplikation I Insertion-, Merge-, Quick-, Heap-, Bucket-, Radix-sort, Selektion I BFS, DFS, topologisches Sortieren I Kürzeste Wege: Dijkstra, Bellman-Ford I MST: Jarník-Prim, Kruskal I Parallele Summe I Konvexe Hülle auf der PRAM KIT – Institut für Theoretische Informatik 522 Zusammenfassung – Entwurfstechniken I I Iteration/Induktion/Schleifen, Teile-und-Herrsche I Schleifen- und Datenstruktur-Invarianten I Randomisierung (universelles Hashing, Quicksort,. . . ) I Graphenmodelle I Trennung Mathe $ Funktionalität $ Repräsentation $ Algorithmus $ Implementierung I Sonderfälle vermeiden I Zeigerdatenstrukturen I Datenstrukturen augmentieren (z.B. Teilbaumgrößen) I Datenstrukturen unbeschränkt machen I Implizite Datenstrukturen (z.B. Intervallgraphen) KIT – Institut für Theoretische Informatik 523 Zusammenfassung – Entwurfstechniken II I Algebra (Karatsuba, univ. Hashfkt., Matrixmultiplikation für Graphen) I Algorithmenschemata (z.B. DFS, lokale Suche) I Verwendung abstrakter Problemeigenschaften (z.B. Schnitt/Kreis-Eigenschaft bei MST) I Black-Box-Löser (z.B. lineare Programmierung) I Greedy I Dynamische Programmierung I Systematische Suche I Metaheuristiken (z.B. Lokale Suche) I Parallelität KIT – Institut für Theoretische Informatik 524 Zusammenfassung – Analysetechniken I Summen, Rekurrenzen, Induktion, Master-Theorem, Abschätzung I Asymptotik (O(·), . . . , w(·)), einfache Modelle I Analyse im Mittel I Amortisierung (z.B. unbeschränkte Felder) I Linearität des Erwartungswertes, Indikatorzufallsvariablen I Kombinatorik (⇡ Zählen): univ. Hashfunktionen, untere Sortierschranken (Informationsmenge) I Integrale als Summenabschätzung I Schleifen/Datenstruktur-(In)varianten (z.B. (a, b)-Baum, Union-by-rank) KIT – Institut für Theoretische Informatik 525 Zusammenfassung – weitere Techniken I Algorithm Engineering I Parameter-Tuning (z.B. Basisfallgröße) I High-Level-Pseudocode I Dummys und Sentinels (Listen, insertion sort,. . . ) I Speicherverwaltung KIT – Institut für Theoretische Informatik 526
© Copyright 2024 ExpyDoc