370 likes | 393 Vues
Well Separated Pair Decomposition. 16 GigaYears and 3.3 Million Light Years Playing. Applications. Astronomy Molecular Dynamics Fluid Dynamics Plasma Physics And Guess What: Surface Reconstruction. N-Body Simulation.
E N D
Well Separated Pair Decomposition 16 GigaYears and 3.3 Million Light Years Playing
Applications • Astronomy • Molecular Dynamics • Fluid Dynamics • Plasma Physics • And Guess What: Surface Reconstruction
N-Body Simulation How do I do it Provably Fast?? Trees!! Trees!! Trees!! A Simple, Provable and Powerful Algorithm (Callahan-Kosaraju, FMM)
The Galactic Empire Enough of Sci-Fi
Well Separated Pair Decomposition A Decomposition of the complete Eucledian Graph into O(n) pairs. The Curse of Dimensionality/Constants Can be used to do Surface Reconstruction In O(nlogn) theoretically! Practically????
Well Separated Pair Dumbbells !!
An Example of WSPD 100 points On a Circle
Another Picture An Output of my implementation that computes D-dimensional WSPD’s
The Fair Split Tree The tree on which the Well Separated Pairs Are computed. An adaptation of QuadTrees to give theoretical Guarantees Notion: R(P) minimum bounding hyper-rectangle That encloses the point set P The FST, breaks R(P) in the longest dimension
FST Algorithm CreateTree(vector<points> P){ if( P.size() == 1) return Leaf(P); Cut = Plane that cuts the longest dim of R(P) P1 = Points on left of Cut P2 = Points on right of Cut Node-> left = CreateTree(P1) Node->right= CreateTree(P2) }
The Fair Split Tree Guarantees that at least one point is split O( ) by Trivial Algorithm O( ) by pre-sorting in every dimension For O(nlogn) uses Partial Fair Split Tree Computation.<Double Sided pointer chasing>
Partial Fair Split Tree • Keep points d- list<points> sorted in every dimension • In selected dimension, walk from both sides • Remove cut elements and recurse till the largest • size of the set is less than (2/3)n • Create subsets and make recursive call
WSPD Algorithm • On Each Internal node of FST • Call Find_Pairs(Node->Left,Node->Right)
Find_Pairs(N1,N2) If Well-Separate(N1,N2) return pair<> If Lmax(N1) > Lmax(N2) Find_Pairs(N1->left,N2) Find_Pairs(N1->right,N2) Else Find_Pairs(N1,N2->left) Find_Pairs(N1,N2->right) endif
Existence Does a WSPD for a point set always Exist?? Yes!!! Just take all pairs of points in P, they are well separated by definition What about Linear Size?? O(n) pairs?
Another Picture Not too many disjoint “good/big” rectangles can intersect a cube
Packing cubes Lemma: A hypercube C which overlaps with a set S of disjoint hypercubes of length l’ follows:
Canonical Realization If A,B are well separated (Notation for Lmax(A) < Lmax(B))
Lemma 4.1 If C be a d-cube, and S={Ai} be a set of disjoint nodes in T and Lmax(p(Ai))>=l(C)/c and R(Ai) overlaps C, then: If u recall here l(C)/l’ is replaced by 3c here
Where did that 3 come from? Hint for Imagination: Think in 1D , use Induction for d-dimension
Bounding the size of Canonical Realization Lemma: Let P={p1,p2,…,pn} with FST T , For any node A in T , there are O(1) canonical pairs of the form (A,B) Proof: We know that p(A) and B are not well separated , so
Rewriting Intuitively, means a constant factor enlargement of R(p(A)) intersects with all B well separated from A.
Bounding the size of Canonical Realization We know that Lmax(p(B)) > Lmax(p(A)) We know that all B are disjoint We know that B overlaps an enlargement of R(p(A)) We know that |SB| is bounded in these conditions by a constant K(c,d) Implies there can only be O(1) B’s well separated from A’s, which in turn implies there are only O(n) WS-Pairs!!!
Closest Pair Theorem: Suppose that there is a k-nearest neighbor pair (a,b) such that
Closest Pair By the previous theorem, putting k = 1 the Closest pair : {{a},{b}} is a well separated pair in the WSPD. Hence Given the WSPD, we can find the closest Pair of a d-dimensional point set in O(n) time.
K-nearest neighbors Put Yao’s cones on every point, and uses inheritance on the FST in these cones. In one cone, only k-neighbors needs to be maintained. Then a selection algorithm picks the nearest k-neighbors in O(nk) time.
General Idea of Applications Any application where one object affects every other object in a set of objects, is susceptible to WSPD paradigm. N-Body simulation is a glaring example. If there is a lower bound of O(n^2) for the problem, it might be susceptible to an Approximation algorithm using WSPD paradigm.
Applications II Nearest Neighbour queries Answering what is close in a r-radius ball Clustering Applications Dynamic Nearest Neighbor queries Approximate Voronoi diagrams Mesh Generation Combinatorics MST Approximations/Spanners N-Body Simulation…
Approximate Voronoi • May not be a perfect Voronoi Diagram but each cell is some kind of Approximation • May not be a decomposition of the entire space. • Of Theoretical Interest • Till date no Implementation exists!
Another Nice Picture Courtesy Sariel Har Pelad
Open Problems • Is there a way to sort the edges of a complete • graph in O(n^2) time? • Is there a way to compute LFS(p) on a manifold • in O(nlogn) using WSPD’s? • How practical is it for k-nearest neighbour queries? • How about dimensions >= 5?? • Compute Medial Axis in O(nlogn)
Medial Axis Approximation Lfs Approximation isnt so easy!!
That’s All Folks! --Piyush