www.wikidata.de-de.nina.az
QuickHull ist ein Algorithmus zur Berechnung der konvexen Hulle einer beliebigen endlichen Menge von Punkten im zwei oder dreidimensionalen Raum Die konvexe Hulle einer Menge von Punkten wird beschrieben durch einen geschlossenen Polygonzug der die Verbindung aller Extremalpunkte der Menge darstellt und somit alle Punkte der Menge einschliesst Eine haufig verwendete intuitive Erklarung dieser Hulle ist ein Gummiband welches sich um die Punktemenge spannt Dieses bildet wenn es straff auf allen ausseren Punkten aufliegt die konvexe Hulle der Punktemenge Animation des QuickHull Algorithmus Inhaltsverzeichnis 1 Namensgebung und Entstehung 2 Grundidee 3 Pseudocode 4 Beispiel 5 EinzelnachweiseNamensgebung und Entstehung BearbeitenDer Name QuickHull leitet sich aus der Ahnlichkeit zu Quicksort ab einem Algorithmus zum Sortieren beliebiger Mengen Er findet zum ersten Mal Erwahnung im Buch Computational geometry von Franco Preparata und Michael Shamos 1 in dem die beiden Autoren den hier beschriebenen Algorithmus vorstellen der die Ideen anderer Autoren aufgreift 2 3 4 Grundidee BearbeitenDie algorithmische Idee zu QuickHull kommt aus dem Prinzip Teile und Herrsche das in der Informatik haufig zum Einsatz kommt Es beschreibt die Vorgehensweise das Problem in mehrere kleine Probleme zu unterteilen und diese dann durch Anwendung des gleichen Algorithmus rekursiv zu losen In diesem Zusammenhang wird oft versucht die Teilung so geschickt zu wahlen dass durch diese bereits eine grosse Anzahl von ungultigen Losungsmengen herausfallen Durch diese Art des Aufbaus konnen Algorithmen die nach diesem Prinzip entworfen worden haufig einfach und gut lesbar implementiert werden da sie eine verstandliche rekursive Struktur besitzen Pseudocode BearbeitenBezeichnungen S ist die Menge der gegebenen Punkte Sk ist die Menge der Punkte auf einer Seite der Geraden durch die Punkte P und Q 5 Funktion QuickHull S Bestimmt die konvexe Hulle der Menge S Convex Hull A Punkt ganz links B Punkt ganz rechts Fuge die Punkte A und B der konvexen Hulle hinzu Die Gerade AB teilt die verbleibenden n 2 Punkte in die Teilmengen S1 und S2 S1 Menge der Punkte in S die auf der rechten Seite von AB sind S2 Menge der Punkte in S die auf der linken Seite von AB sind FindHull S1 A B FindHull S2 B A Ausgabe Convex Hull Funktion FindHull Sk P Q Bestimmt die Punkte auf der konvexen Hulle der Menge Sk die auf der rechten Seite der Geraden PQ sind Wenn Sk keine Punkte enthalt dann Ausgabe Convex Hull C Der Punkt in Sk der den grossten Abstand von der Geraden PQ hat Fuge den Punkt C in die konvexe Hulle zwischen den Punkten P und Q ein Die drei Punkte P Q und C teilen die verbliebenen Punkte von Sk in die Teilmengen S0 S1 und S2 S0 Die Punkte innerhalb des Dreiecks PCQ S1 Die Punkte auf der rechten Seite der Geraden PC S2 Die Punkte auf der rechten Seite der Geraden CQ FindHull S1 P C FindHull S2 C Q Ausgabe Convex Hull Beispiel Bearbeiten nbsp 1 Initiale PunktmengeDer Algorithmus operiert auf einer beliebigen endlichen Menge von Punkten Es bestehen keinerlei besondere Anforderungen an die Anordnung oder Anzahl der Punkte Eine symmetrische Anordnung der Punkte besitzt jedoch eine hohere Wahrscheinlichkeit die Best Case bester Fall Laufzeitschranke von O n log n displaystyle mathcal O n cdot log n nbsp zu verlassen und deutlich langsamer zu sein nbsp 2 Linke und rechte ExtremalpunkteZur Bestimmung der ersten Aufteilung der Menge werden die beiden Extremalpunkte der X Achse gesucht Also diejenigen Punkte welche am weitesten links und am weitesten rechts liegen Diese Punkte konnen bereits dem Polygonzug der Konvexen Hulle hinzugefugt werden da sie als Extrempunkte garantiert Bestandteil derselben sind nbsp 3 Aufteilung in linke und rechte PunktmengeDie beiden gefundenen Punkte bilden eine Gerade welche die Punktmenge in zwei Bereiche teilt Alle Punkte links von der Geraden reprasentieren eine Menge und alle Punkte rechts von der Gerade die andere Rechts und links ergeben sich in diesem Zusammenhang aus dem Winkel zwischen dem Richtungsvektor der Trennungsgeraden und dem Vektor definiert durch den Anfangspunkt der Geraden und den zu uberprufenden Punkt Ist dieser Winkel kleiner als 180 dann wird der Punkt als rechts von der Geraden betrachtet bei Winkeln grosser 180 als links von ihr Die beiden durch diese Gerade getrennten Punktmengen werden nun rekursiv mit dem QuickHull Algorithmus weiter verarbeitet In diesem Beispiel wird lediglich der linke Teil der Punktemenge weiter betrachtet Alle gemachten Aussagen treffen aquivalent auch auf den rechten Teil zu nbsp 4 Punkt mit maximaler Distanz von der GeradenInnerhalb der betrachteten Punktmenge wird jener Punkt bestimmt der die maximale Distanz von der Geraden besitzt Dieser ist offensichtlich ebenfalls ein Bestandteil des gesuchten Polygonzugs Zusammen mit dem Start und Endpunkt der Geraden entsteht ein Dreieck nbsp 5 Punkte innerhalb des Dreiecks werden ignoriertDas Dreieck setzt sich zusammen aus drei Punkten von denen alle Bestandteil des Konvexen Hulle Polygons sind Aus diesem Grund konnen alle Punkte im Inneren dieses Dreiecks nicht Bestandteil dieses Polygons sein da sie ja bereits in seinem Inneren liegen Alle Punkte innerhalb dieses Dreiecks konnen also bei weiteren rekursiven Aufrufen des Algorithmus ignoriert werden nbsp 6 Erneute Aufteilung und rekursiver AufrufDie sich als Seiten des Dreiecks ergebenden Geraden werden nun als erneute Trenngeraden der Punktemenge betrachtet Alle Punkte links von dem Dreieck reprasentieren eine Menge alle Punkte rechts von dem Dreieck die andere nbsp 7 Das fertige Konvexe Hulle PolygonDiese rekursive Aufteilung und Bestimmung weiterer Punkte wird so lange wiederholt bis nur noch der Start und Endpunkt der Trenngeraden Bestandteil der zu betrachtenden Punktmenge sind denn in diesem Fall ist klar dass diese Gerade ein Segment des gesuchten Polygonzugs darstellt Einzelnachweise Bearbeiten Franco P Preparata Michael Ian Shamos Computational Geometry An Introduction 1 Auflage Springer Verlag 1985 ISBN 0 387 96131 3 William F Eddy A New convex Hull Algorithm for Planar Sets In ACM Transactions on Mathematical Software 3 Jahrgang 1977 S 393 403 Alex Bykat Convex Hull of a Finite Set of Points in Two Dimensions In Information Processing Letters 7 Jahrgang 1978 S 296 298 P J Green B W Silverman Constructing the Convex Hull of a Set of Points in the Plane In Computer Journal 22 Jahrgang 1979 S 262 266 OpenGenus IQ Quick Hull Algorithm to find Convex Hull Abgerufen von https de wikipedia org w index php title QuickHull amp oldid 226173050